diff --git a/libjf-config-ui-tiny-v1/src/client/java/io/gitlab/jfronny/libjf/config/impl/ui/tiny/TinyConfigScreen.java b/libjf-config-ui-tiny-v1/src/client/java/io/gitlab/jfronny/libjf/config/impl/ui/tiny/TinyConfigScreen.java index eac3f96..ec36485 100644 --- a/libjf-config-ui-tiny-v1/src/client/java/io/gitlab/jfronny/libjf/config/impl/ui/tiny/TinyConfigScreen.java +++ b/libjf-config-ui-tiny-v1/src/client/java/io/gitlab/jfronny/libjf/config/impl/ui/tiny/TinyConfigScreen.java @@ -39,7 +39,7 @@ public class TinyConfigScreen extends Screen { } private final Screen parent; private final ConfigCategory config; - public final List> widgets; + public final List> widgets; // Filled in from TinyConfigTab private final Placeholder placeholder; private final TabManager tabManager = new TabManager(a -> selectTab(((TinyConfigTabWrapper)a).getTab()), a -> {}); private List tabs; @@ -107,7 +107,7 @@ public class TinyConfigScreen extends Screen { if (tabs.size() == 1 && !config.getPresets().isEmpty()) { this.addDrawableChild(ButtonWidget.builder(Text.translatable("libjf-config-v1.presets"), - button -> Objects.requireNonNull(client).setScreen(new PresetsScreen(this, config))) + button -> Objects.requireNonNull(client).setScreen(new PresetsScreen(this, config, this::afterSelectPreset))) .dimensions(4, 6, 80, 20) .build()); } @@ -120,6 +120,12 @@ public class TinyConfigScreen extends Screen { reload = true; } + public void afterSelectPreset() { + for (WidgetState widget : widgets) { + widget.updateCache(); + } + } + private void selectTab(TinyConfigTab tab) { placeholder.setChild(tab.getList()); } diff --git a/libjf-config-ui-tiny-v1/src/client/java/io/gitlab/jfronny/libjf/config/impl/ui/tiny/TinyConfigTab.java b/libjf-config-ui-tiny-v1/src/client/java/io/gitlab/jfronny/libjf/config/impl/ui/tiny/TinyConfigTab.java index 4f934c4..366bb13 100644 --- a/libjf-config-ui-tiny-v1/src/client/java/io/gitlab/jfronny/libjf/config/impl/ui/tiny/TinyConfigTab.java +++ b/libjf-config-ui-tiny-v1/src/client/java/io/gitlab/jfronny/libjf/config/impl/ui/tiny/TinyConfigTab.java @@ -41,7 +41,7 @@ public class TinyConfigTab implements Tab { } else { if (!config.getPresets().isEmpty()) { this.list.addReference(Text.translatable("libjf-config-v1.presets"), - () -> new PresetsScreen(screen, config)); + () -> new PresetsScreen(screen, config, screen::afterSelectPreset)); } } for (WidgetState info : widgets) { diff --git a/libjf-config-ui-tiny-v1/src/client/java/io/gitlab/jfronny/libjf/config/impl/ui/tiny/presets/PresetsScreen.java b/libjf-config-ui-tiny-v1/src/client/java/io/gitlab/jfronny/libjf/config/impl/ui/tiny/presets/PresetsScreen.java index dd45288..f51d31b 100644 --- a/libjf-config-ui-tiny-v1/src/client/java/io/gitlab/jfronny/libjf/config/impl/ui/tiny/presets/PresetsScreen.java +++ b/libjf-config-ui-tiny-v1/src/client/java/io/gitlab/jfronny/libjf/config/impl/ui/tiny/presets/PresetsScreen.java @@ -16,12 +16,14 @@ import java.util.Objects; public class PresetsScreen extends Screen { private final Screen parent; private final ConfigCategory config; + private final Runnable afterSelect; private PresetListWidget list; - public PresetsScreen(Screen parent, ConfigCategory config) { + public PresetsScreen(Screen parent, ConfigCategory config, Runnable afterSelect) { super(Text.translatable("libjf-config-v1.presets")); this.parent = parent; this.config = config; + this.afterSelect = afterSelect; } @Override @@ -34,6 +36,7 @@ public class PresetsScreen extends Screen { LibJf.LOGGER.info("Preset selected: " + entry.getKey()); entry.getValue().run(); config.fix(); + afterSelect.run(); Objects.requireNonNull(client).setScreen(parent); }) .dimensions(width / 2 - 100, 0, 200, 20)