From e0695aa290533ed2e8be91c1ffeafe94055244bd Mon Sep 17 00:00:00 2001 From: legoraft Date: Fri, 24 Apr 2026 21:49:58 +0200 Subject: [PATCH] feat: now using OptionsSubscreen correctly --- .../java/com/armorhud/config/config.java | 17 +++++--- .../com/armorhud/config/configScreen.java | 43 +++++++++++++++---- 2 files changed, 46 insertions(+), 14 deletions(-) diff --git a/src/client/java/com/armorhud/config/config.java b/src/client/java/com/armorhud/config/config.java index 590a81a..f0e4e31 100644 --- a/src/client/java/com/armorhud/config/config.java +++ b/src/client/java/com/armorhud/config/config.java @@ -22,13 +22,18 @@ public class config { private static final Path CONFIG_PATH = FabricLoader.getInstance().getConfigDir().resolve("armorhud.properties"); public enum Position { - FOODBAR, - HEALTHBAR, - HOTBAR_LEFT, - HOTBAR_RIGHT; + FOODBAR("config.armorposition.foodbar"), + HEALTHBAR("config.armorposition.healthbar"), + HOTBAR_LEFT("config.armorposition.hotbar_left"), + HOTBAR_RIGHT("config.armorposition.hotbar_right"); + + private final String key; + Position(String key) { + this.key = key; + } - public Component displayName() { - return Component.translatable("config.armorposition." + name().toLowerCase()); + public Component getDisplayName() { + return Component.translatable(this.key); } } diff --git a/src/client/java/com/armorhud/config/configScreen.java b/src/client/java/com/armorhud/config/configScreen.java index c46d067..add67d5 100644 --- a/src/client/java/com/armorhud/config/configScreen.java +++ b/src/client/java/com/armorhud/config/configScreen.java @@ -3,6 +3,7 @@ package com.armorhud.config; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.Minecraft; +import net.minecraft.client.OptionInstance; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.CycleButton; @@ -12,6 +13,8 @@ import net.minecraft.client.gui.screens.options.OptionsSubScreen; import net.minecraft.client.gui.layouts.*; import net.minecraft.network.chat.Component; +import javax.swing.text.html.Option; + @Environment(EnvType.CLIENT) public class configScreen extends OptionsSubScreen { private final Screen parent; @@ -31,6 +34,7 @@ public class configScreen extends OptionsSubScreen { public Button doneButton; + /* @Override protected void init() { doubleHotbarToggle = CycleButton.onOffBuilder(config.DOUBLE_HOTBAR) @@ -72,20 +76,43 @@ public class configScreen extends OptionsSubScreen { addRenderableWidget(doneButton); } + */ @Override - protected void addOptions() { } - - @Override - public void extractRenderState(GuiGraphicsExtractor context, int mouseX, int mouseY, float delta) { - context.centeredText(this.font, Component.translatable("config.title"), this.width / 2, 12, 0xffffff); - super.extractRenderState(context, mouseX, mouseY, delta); + protected void addOptions() { + assert this.list != null; + + OptionInstance armorPositionOptions = new OptionInstance<>( + "config.armorposition", + OptionInstance.noTooltip(), + (component, value) -> value.getDisplayName(), + new OptionInstance.Enum<>(java.util.List.of(config.Position.values()), null), + config.position, + value -> config.position = value + ); + + this.list.addHeader(Component.translatable("config.header.general")); + this.list.addSmall( + OptionInstance.createBoolean("config.armorvisible", config.ARMOR_HUD, v -> config.ARMOR_HUD = v), + OptionInstance.createBoolean("config.disablearmorbar", config.DISABLE_ARMOR_BAR, v -> config.DISABLE_ARMOR_BAR = v) + ); + + this.list.addHeader(Component.translatable("config.header.compatibility")); + this.list.addSmall( + OptionInstance.createBoolean("config.doublehotbar", config.DOUBLE_HOTBAR, v -> config.DOUBLE_HOTBAR = v), + OptionInstance.createBoolean("config.bettermounthud", config.BETTER_MOUNT_HUD, v -> config.BETTER_MOUNT_HUD = v) + ); + + this.list.addHeader(Component.translatable("config.header.display")); + this.list.addSmall( + OptionInstance.createBoolean("config.righttoleft", config.RTL, v -> config.RTL = v), + OptionInstance.createBoolean("config.trimemptyslots", config.TRIM_EMPTY_SLOTS, v -> config.TRIM_EMPTY_SLOTS = v), + armorPositionOptions + ); } @Override public void onClose() { - assert this.minecraft != null; - config.save(); this.minecraft.setScreen(this.parent); } -- 2.51.2