From d47d1c3cff82fe7b61801ddacb5045f5493922ae Mon Sep 17 00:00:00 2001 From: Rosa Date: Sat, 20 Jun 2026 17:11:08 -0400 Subject: port to 26.2 --- .../customlevelcolour/ConfigScreen.java | 145 ++++++++++----------- 1 file changed, 68 insertions(+), 77 deletions(-) (limited to 'src/main/java/net/inyourwalls/customlevelcolour/ConfigScreen.java') diff --git a/src/main/java/net/inyourwalls/customlevelcolour/ConfigScreen.java b/src/main/java/net/inyourwalls/customlevelcolour/ConfigScreen.java index f7fea4f..8b137b8 100644 --- a/src/main/java/net/inyourwalls/customlevelcolour/ConfigScreen.java +++ b/src/main/java/net/inyourwalls/customlevelcolour/ConfigScreen.java @@ -1,22 +1,23 @@ package net.inyourwalls.customlevelcolour; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.widget.ButtonWidget; -import net.minecraft.client.gui.widget.TextFieldWidget; -import net.minecraft.text.Text; +import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.components.EditBox; +import net.minecraft.client.gui.layouts.CommonLayouts; +import net.minecraft.client.gui.layouts.HeaderAndFooterLayout; +import net.minecraft.client.gui.layouts.LinearLayout; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TextColor; +import net.minecraft.util.ARGB; import java.util.regex.Pattern; -import static net.minecraft.client.gui.widget.ButtonWidget.DEFAULT_HEIGHT; -import static net.minecraft.client.gui.widget.ButtonWidget.DEFAULT_WIDTH; -import static net.minecraft.client.gui.widget.ButtonWidget.DEFAULT_WIDTH_SMALL; - public class ConfigScreen extends Screen { - private static final Text TITLE = Text.translatable("gui.customlevelcolour.title"); - private static final Text OUTLINE_COLOUR_LABEL = Text.translatable("gui.customlevelcolour.outlineColour"); - private static final Text TEXT_COLOUR_LABEL = Text.translatable("gui.customlevelcolour.textColour"); - private static final Pattern HEX_COLOUR_REGEX = Pattern.compile("[0-9a-fA-F]{0,6}"); + private static final Component TITLE = Component.translatable("gui.customlevelcolour.title"); + private static final Component OUTLINE_COLOUR_LABEL = Component.translatable("gui.customlevelcolour.outlineColour"); + private static final Component TEXT_COLOUR_LABEL = Component.translatable("gui.customlevelcolour.textColour"); + private static final Component BACK_BUTTON_LABEL = Component.translatable("gui.back"); + private static final Component SAVE_BUTTON_LABEL = Component.translatable("gui.customlevelcolour.saveConfig"); private final Screen previous; private final CustomLevelColourConfig config; private int previewOutlineColour; @@ -34,75 +35,65 @@ public class ConfigScreen extends Screen { @Override public void init() { - TextFieldWidget outlineField = new TextFieldWidget( - this.textRenderer, - this.width / 2 + 4, - 25, - DEFAULT_WIDTH_SMALL, - DEFAULT_HEIGHT, - OUTLINE_COLOUR_LABEL - ); - outlineField.setTextPredicate(HEX_COLOUR_REGEX.asMatchPredicate()); - outlineField.setChangedListener(text -> { - try { - this.previewOutlineColour = Integer.parseInt(text, 16); - } catch (NumberFormatException ex) { - // fail silently - } - }); - outlineField.setText(String.format("%x", config.outlineColour)); - TextFieldWidget textField = new TextFieldWidget( - this.textRenderer, - this.width / 2 + 4, - 55, - DEFAULT_WIDTH_SMALL, - DEFAULT_HEIGHT, - TEXT_COLOUR_LABEL - ); - textField.setTextPredicate(HEX_COLOUR_REGEX.asMatchPredicate()); - textField.setChangedListener(text -> { - try { - this.previewTextColour = Integer.parseInt(text, 16); - } catch (NumberFormatException ex) {} - }); - textField.setText(String.format("%x", config.textColour)); + this.previewOutlineColour = this.config.outlineColour; + this.previewTextColour = this.config.textColour; + Button saveButton = Button.builder(SAVE_BUTTON_LABEL, btn -> { + this.config.textColour = this.previewTextColour; + this.config.outlineColour = this.previewOutlineColour; + CustomLevelColour.saveConfig(); + }).build(); - ButtonWidget backButton = ButtonWidget.builder(Text.translatable("gui.back"), thisButton -> this.close()) - .size(DEFAULT_WIDTH, DEFAULT_HEIGHT) - .position(this.width / 2 - DEFAULT_WIDTH - 4, this.height - 28) - .build(); - ButtonWidget saveButton = ButtonWidget.builder(Text.translatable("selectWorld.edit.save"), thisButton -> { - try { - config.outlineColour = Integer.parseInt(outlineField.getText(), 16); - config.textColour = Integer.parseInt(textField.getText(), 16); - } catch (NumberFormatException ex) {} - CustomLevelColour.saveConfig(); - }) - .size(DEFAULT_WIDTH, DEFAULT_HEIGHT) - .position(this.width / 2 + 4, this.height - 28) - .build(); + Button backButton = Button.builder(BACK_BUTTON_LABEL, btn -> { + this.onClose(); + }).build(); - this.addDrawableChild(outlineField); - this.addDrawableChild(textField); - this.addDrawableChild(backButton); - this.addDrawableChild(saveButton); - } + EditBox textColourInput = new EditBox(this.font, TEXT_COLOUR_LABEL); + textColourInput.setValue(String.format("%x", this.previewTextColour)); + textColourInput.setResponder(v -> { + try { + this.previewTextColour = Integer.parseInt(v, 16); + textColourInput.setTextColor(ARGB.white(1.0f)); + if (!v.matches("[0-9a-fA-F]{6}")) { + textColourInput.setTextColor(ARGB.opaque(TextColor.YELLOW.getValue())); + } + } catch (NumberFormatException ex) { + textColourInput.setTextColor(ARGB.opaque(TextColor.RED.getValue())); + } + }); - @Override - public void close() { - this.client.setScreen(this.previous); + EditBox outlineColourInput = new EditBox(this.font, OUTLINE_COLOUR_LABEL); + outlineColourInput.setValue(String.format("%x", this.previewOutlineColour)); + outlineColourInput.setResponder(v -> { + try { + this.previewOutlineColour = Integer.parseInt(v, 16); + textColourInput.setTextColor(ARGB.white(1.0f)); + if (!v.matches("[0-9a-fA-F]{6}")) { + outlineColourInput.setTextColor(ARGB.opaque(TextColor.YELLOW.getValue())); + } + } catch (NumberFormatException ex) { + outlineColourInput.setTextColor(ARGB.opaque(TextColor.RED.getValue())); + } + }); + + HeaderAndFooterLayout root = new HeaderAndFooterLayout(this); + root.addTitleHeader(TITLE, this.font); + + LinearLayout contents = LinearLayout.vertical().spacing(4); + contents.addChild(CommonLayouts.labeledElement(this.font, textColourInput, TEXT_COLOUR_LABEL)); + contents.addChild(CommonLayouts.labeledElement(this.font, outlineColourInput, OUTLINE_COLOUR_LABEL)); + root.addToContents(contents); + + LinearLayout footer = LinearLayout.horizontal().spacing(4); + footer.addChild(backButton); + footer.addChild(saveButton); + root.addToFooter(footer); + + root.arrangeElements(); + root.visitWidgets(elem -> this.addRenderableWidget(elem)); } @Override - public void render(DrawContext context, int mouseX, int mouseY, float delta) { - super.render(context, mouseX, mouseY, delta); - context.drawCenteredTextWithShadow(this.textRenderer, TITLE, this.width / 2, 5, 0xffffff); - - int labelX = this.width / 2 - Math.max( - this.textRenderer.getWidth(TEXT_COLOUR_LABEL), - this.textRenderer.getWidth(OUTLINE_COLOUR_LABEL) - ) - 4; - context.drawTextWithShadow(this.textRenderer, OUTLINE_COLOUR_LABEL, labelX, 30, 0xffffff); - context.drawTextWithShadow(this.textRenderer, TEXT_COLOUR_LABEL, labelX, 60, 0xffffff); + public void onClose() { + this.minecraft.setScreenAndShow(this.previous); } } -- cgit v1.3.1