diff --git a/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/HudTab.java b/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/HudTab.java index 8691b1dbfb..21236d2c1f 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/HudTab.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/HudTab.java @@ -10,6 +10,7 @@ import meteordevelopment.meteorclient.gui.tabs.Tab; import meteordevelopment.meteorclient.gui.tabs.TabScreen; import meteordevelopment.meteorclient.gui.tabs.WindowTabScreen; +import meteordevelopment.meteorclient.gui.widgets.containers.WContainer; import meteordevelopment.meteorclient.gui.widgets.containers.WHorizontalList; import meteordevelopment.meteorclient.gui.widgets.pressable.WButton; import meteordevelopment.meteorclient.gui.widgets.pressable.WCheckbox; @@ -37,6 +38,7 @@ public boolean isScreen(Screen screen) { } public static class HudScreen extends WindowTabScreen { + private WContainer settingsContainer; private final Hud hud; public HudScreen(GuiTheme theme, Tab tab) { @@ -48,7 +50,8 @@ public HudScreen(GuiTheme theme, Tab tab) { @Override public void initWidgets() { - add(theme.settings(hud.settings)).expandX(); + settingsContainer = add(theme.verticalList()).expandX().widget(); + settingsContainer.add(theme.settings(hud.settings)).expandX().widget(); add(theme.horizontalSeparator()).expandX(); @@ -77,6 +80,13 @@ protected void onRenderBefore(DrawContext drawContext, float delta) { HudEditorScreen.renderElements(drawContext); } + @Override + public void tick() { + super.tick(); + + hud.settings.tick(settingsContainer, theme); + } + @Override public boolean toClipboard() { return NbtUtils.toClipboard(hud); diff --git a/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/ProfilesTab.java b/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/ProfilesTab.java index 680e21d48c..635a8b3142 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/ProfilesTab.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/ProfilesTab.java @@ -236,6 +236,8 @@ public void initWidgets() { @Override public void tick() { + super.tick(); + profile.settings.tick(settingsContainer, theme); } diff --git a/src/main/java/meteordevelopment/meteorclient/settings/Settings.java b/src/main/java/meteordevelopment/meteorclient/settings/Settings.java index 6e4ca7d2d7..78bb596d93 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/Settings.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/Settings.java @@ -22,6 +22,8 @@ public class Settings implements ISerializable, Iterable { private SettingGroup defaultGroup; + private boolean invalidate; + public final List groups = new ArrayList<>(1); public void onActivated() { @@ -61,6 +63,12 @@ public void reset() { setting.reset(); } } + + invalidate(); + } + + public void invalidate() { + invalidate = true; } public SettingGroup getGroup(String name) { @@ -125,13 +133,18 @@ public void tick(WContainer settings, GuiTheme theme) { boolean visible = setting.isVisible(); if (visible != setting.lastWasVisible) { - settings.clear(); - settings.add(theme.settings(this)).expandX(); + invalidate(); } setting.lastWasVisible = visible; } } + + if (invalidate) { + settings.clear(); + settings.add(theme.settings(this)).expandX(); + invalidate = false; + } } @Override