From 7106c4196e35c867cd0eaa9f87a736be20314c68 Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Sun, 28 Apr 2024 00:05:31 +0200 Subject: [PATCH] refactor: Cleanups and preparing for mod options --- src/main/java/se/icus/mag/modsettings/Main.java | 6 ++++++ .../modsettings/gui/screen/ModSettingsScreen.java | 14 ++++++++++---- .../mag/modsettings/gui/widget/ModListWidget.java | 12 ++++++------ 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/main/java/se/icus/mag/modsettings/Main.java b/src/main/java/se/icus/mag/modsettings/Main.java index 74a103f..03a2fd0 100644 --- a/src/main/java/se/icus/mag/modsettings/Main.java +++ b/src/main/java/se/icus/mag/modsettings/Main.java @@ -12,6 +12,7 @@ public class Main implements ClientModInitializer { public static final Logger LOGGER = LogManager.getLogger("modsettings"); + public static final Options OPTIONS = new Options(); @Override public void onInitializeClient() { @@ -25,4 +26,9 @@ public void onInitializeClient() { } }); } + + public static class Options { + public String filterText = ""; + public boolean showIndirect = false; + } } diff --git a/src/main/java/se/icus/mag/modsettings/gui/screen/ModSettingsScreen.java b/src/main/java/se/icus/mag/modsettings/gui/screen/ModSettingsScreen.java index 73c8728..36ef346 100644 --- a/src/main/java/se/icus/mag/modsettings/gui/screen/ModSettingsScreen.java +++ b/src/main/java/se/icus/mag/modsettings/gui/screen/ModSettingsScreen.java @@ -32,19 +32,25 @@ protected void init() { // Put list between 32 pixels from top and bottom this.list = new ModListWidget(this.client, this.width, this.height - 64, 32, 25); - this.list.addAll(getAllModConfigOptions()); this.addSelectableChild(this.list); this.addDrawableChild(this.list); this.addDrawableChild(new Button(this.width / 2 - FULL_BUTTON_WIDTH / 2, this.height - 27, FULL_BUTTON_WIDTH, BUTTON_HEIGHT, ScreenTexts.DONE, button -> this.client.setScreen(this.previous))); + + updateModButtons(); initIsProcessing = false; } - private ModConfigInfo[] getAllModConfigOptions() { + private void updateModButtons() { + List visibleModIds = ModRegistry.getInstance().getVisibleModIds(Main.OPTIONS.showIndirect, Main.OPTIONS.filterText); + this.list.setModButtons(getModConfigInfo(visibleModIds)); + } + + private List getModConfigInfo(List modIds) { List options = new LinkedList<>(); - for (String modId : ModRegistry.getInstance().getVisibleModIds(true, "")) { + for (String modId : modIds) { try { Screen configScreen = ModRegistry.getInstance().getConfigScreen(modId, this); if (configScreen != null) { @@ -54,6 +60,6 @@ private ModConfigInfo[] getAllModConfigOptions() { Main.LOGGER.error("Error creating Settings screen from mod " + modId, e); } } - return options.toArray(new ModConfigInfo[0]); + return options; } } diff --git a/src/main/java/se/icus/mag/modsettings/gui/widget/ModListWidget.java b/src/main/java/se/icus/mag/modsettings/gui/widget/ModListWidget.java index 7134b79..9672faa 100644 --- a/src/main/java/se/icus/mag/modsettings/gui/widget/ModListWidget.java +++ b/src/main/java/se/icus/mag/modsettings/gui/widget/ModListWidget.java @@ -1,6 +1,7 @@ package se.icus.mag.modsettings.gui.widget; import com.google.common.collect.ImmutableList; +import java.util.List; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.Element; @@ -8,8 +9,6 @@ import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.ElementListWidget; import net.minecraft.text.Text; - -import java.util.List; import se.icus.mag.modsettings.gui.ModConfigInfo; public class ModListWidget extends ElementListWidget { @@ -30,9 +29,10 @@ protected int getScrollbarPositionX() { return super.getScrollbarPositionX() + 32; } - public void addAll(ModConfigInfo[] options) { - for (int i = 0; i < options.length; i += 2) { - addEntry(new ModEntry(options[i], i < options.length - 1 ? options[i + 1] : null)); + public void setModButtons(List options) { + clearEntries(); + for (int i = 0; i < options.size(); i += 2) { + addEntry(new ModEntry(options.get(i), i < options.size() - 1 ? options.get(i + 1) : null)); } } @@ -70,6 +70,6 @@ public void render(DrawContext context, int index, int y, int x, int entryWidth, } } - public static abstract class Entry extends ElementListWidget.Entry { + public abstract static class Entry extends ElementListWidget.Entry { } }