diff options
author | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2023-07-03 09:42:08 +0800 |
---|---|---|
committer | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2023-07-17 12:55:25 +0800 |
commit | b4882519e945f5d4a03fb3c11c21e871f5d28cbb (patch) | |
tree | 5057cdb6da505026ce6e74f4240b648380458229 /src | |
parent | 6e1dcf2861e6f084e75a9602cc270aaecb151bdc (diff) | |
download | Skyblocker-b4882519e945f5d4a03fb3c11c21e871f5d28cbb.tar.gz Skyblocker-b4882519e945f5d4a03fb3c11c21e871f5d28cbb.tar.bz2 Skyblocker-b4882519e945f5d4a03fb3c11c21e871f5d28cbb.zip |
Only save when the done button is pressed
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigListWidget.java | 32 | ||||
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java | 13 |
2 files changed, 24 insertions, 21 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigListWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigListWidget.java index 210f0bd6..9fe30a87 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigListWidget.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigListWidget.java @@ -11,20 +11,18 @@ import net.minecraft.client.gui.widget.TextFieldWidget; import net.minecraft.text.Text; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Optional; public class ShortcutsConfigListWidget extends ElementListWidget<ShortcutsConfigListWidget.AbstractShortcutEntry> { private final ShortcutsConfigScreen screen; - protected final List<ShortcutCategoryEntry> categories = new ArrayList<>(); + protected final List<ShortcutCategoryEntry> categories; public ShortcutsConfigListWidget(MinecraftClient minecraftClient, ShortcutsConfigScreen screen, int width, int height, int top, int bottom, int itemHeight) { super(minecraftClient, width, height, top, bottom, itemHeight); this.screen = screen; ShortcutCategoryEntry commandCategory = new ShortcutCategoryEntry("skyblocker.shortcuts.command.target", "skyblocker.shortcuts.command.replacement"); - categories.add(commandCategory); addEntry(commandCategory); if (!Shortcuts.isShortcutsLoaded()) { addEntry(new ShortcutLoadingEntry()); @@ -32,13 +30,13 @@ public class ShortcutsConfigListWidget extends ElementListWidget<ShortcutsConfig Shortcuts.commands.keySet().stream().sorted().forEach(commandTarget -> addEntry(new ShortcutEntry(commandCategory, commandTarget, Shortcuts.commands.get(commandTarget)))); } ShortcutCategoryEntry commandArgCategory = new ShortcutCategoryEntry("skyblocker.shortcuts.commandArg.target", "skyblocker.shortcuts.commandArg.replacement", "skyblocker.shortcuts.commandArg.tooltip"); - categories.add(commandArgCategory); addEntry(commandArgCategory); if (!Shortcuts.isShortcutsLoaded()) { addEntry(new ShortcutLoadingEntry()); } else { Shortcuts.commandArgs.keySet().stream().sorted().forEach(commandArgTarget -> addEntry(new ShortcutEntry(commandArgCategory, commandArgTarget, Shortcuts.commandArgs.get(commandArgTarget)))); } + categories = List.of(commandCategory, commandArgCategory); } @Override @@ -75,10 +73,7 @@ public class ShortcutsConfigListWidget extends ElementListWidget<ShortcutsConfig } protected void addShortcutAfterSelected() { - getCategory().ifPresent(category -> { - children().add(children().indexOf(getSelectedOrNull()) + 1, new ShortcutEntry(category)); - getShortcutsMap(category).put("", ""); - }); + getCategory().ifPresent(category -> children().add(children().indexOf(getSelectedOrNull()) + 1, new ShortcutEntry(category))); } @Override @@ -86,6 +81,18 @@ public class ShortcutsConfigListWidget extends ElementListWidget<ShortcutsConfig return super.removeEntry(entry); } + protected void saveShortcuts() { + for (ShortcutCategoryEntry category : categories) { + getShortcutsMap(category).clear(); + } + for (AbstractShortcutEntry entry : children()) { + if (entry instanceof ShortcutEntry shortcutEntry && !shortcutEntry.target.getText().isEmpty() && !shortcutEntry.replacement.getText().isEmpty()) { + getShortcutsMap(shortcutEntry.category).put(shortcutEntry.target.getText(), shortcutEntry.replacement.getText()); + } + } + Shortcuts.saveShortcuts(MinecraftClient.getInstance()); // Save shortcuts to disk + } + protected static abstract class AbstractShortcutEntry extends ElementListWidget.Entry<AbstractShortcutEntry> { } @@ -177,7 +184,6 @@ public class ShortcutsConfigListWidget extends ElementListWidget<ShortcutsConfig protected final ShortcutCategoryEntry category; protected final TextFieldWidget target; protected final TextFieldWidget replacement; - private String oldTarget; protected ShortcutEntry(ShortcutCategoryEntry category) { this(category, "", ""); @@ -187,16 +193,8 @@ public class ShortcutsConfigListWidget extends ElementListWidget<ShortcutsConfig this.category = category; target = new TextFieldWidget(MinecraftClient.getInstance().textRenderer, width / 2 - 160, 5, 150, 20, category.targetName); replacement = new TextFieldWidget(MinecraftClient.getInstance().textRenderer, width / 2 + 10, 5, 150, 20, category.replacementName); - oldTarget = targetString; target.setText(targetString); replacement.setText(replacementString); - target.setChangedListener(newTarget -> { - Map<String, String> map = getShortcutsMap(category); - map.remove(oldTarget); - map.put(newTarget, replacement.getText()); - oldTarget = newTarget; - }); - replacement.setChangedListener(newReplacement -> getShortcutsMap(category).put(target.getText(), newReplacement)); children = List.of(target, replacement); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java index 49581761..72861493 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java @@ -16,6 +16,7 @@ public class ShortcutsConfigScreen extends Screen { private ButtonWidget buttonDelete; private ButtonWidget buttonNew; private ButtonWidget buttonDone; + private boolean initialized; private double scrollAmount; public ShortcutsConfigScreen() { @@ -30,7 +31,12 @@ public class ShortcutsConfigScreen extends Screen { @Override protected void init() { super.init(); - shortcutsConfigListWidget = new ShortcutsConfigListWidget(client, this, width, height, 32, height - 64, 25); + if (initialized) { + shortcutsConfigListWidget.updateSize(width, height, 32, height - 64); + } else { + shortcutsConfigListWidget = new ShortcutsConfigListWidget(client, this, width, height, 32, height - 64, 25); + initialized = true; + } addDrawableChild(shortcutsConfigListWidget); GridWidget gridWidget = new GridWidget(); gridWidget.getMainPositioner().marginX(5).marginY(2); @@ -48,12 +54,11 @@ public class ShortcutsConfigScreen extends Screen { if (client != null) { client.setScreen(null); } - Shortcuts.loadShortcuts(); // Cancel changes by reloading shortcuts from disk }).build()); buttonDone = ButtonWidget.builder(ScreenTexts.DONE, button -> { + shortcutsConfigListWidget.saveShortcuts(); if (client != null) { client.setScreen(null); - Shortcuts.saveShortcuts(client); // Save shortcuts to disk } }).tooltip(Tooltip.of(Text.translatable("skyblocker.shortcuts.commandSuggestionTooltip"))).build(); adder.add(buttonDone); @@ -66,7 +71,7 @@ public class ShortcutsConfigScreen extends Screen { private void deleteEntry(boolean confirmedAction) { if (client != null) { if (confirmedAction && shortcutsConfigListWidget.getSelectedOrNull() instanceof ShortcutsConfigListWidget.ShortcutEntry shortcutEntry) { - shortcutsConfigListWidget.getShortcutsMap(shortcutEntry.category).remove(shortcutEntry.target.getText()); + shortcutsConfigListWidget.removeEntry(shortcutEntry); } client.setScreen(this); // Re-inits the screen and creates a new instance of ShortcutsConfigListWidget shortcutsConfigListWidget.setScrollAmount(scrollAmount); |