aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-07-03 09:42:08 +0800
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-07-17 12:55:25 +0800
commitb4882519e945f5d4a03fb3c11c21e871f5d28cbb (patch)
tree5057cdb6da505026ce6e74f4240b648380458229 /src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut
parent6e1dcf2861e6f084e75a9602cc270aaecb151bdc (diff)
downloadSkyblocker-b4882519e945f5d4a03fb3c11c21e871f5d28cbb.tar.gz
Skyblocker-b4882519e945f5d4a03fb3c11c21e871f5d28cbb.tar.bz2
Skyblocker-b4882519e945f5d4a03fb3c11c21e871f5d28cbb.zip
Only save when the done button is pressed
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigListWidget.java32
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java13
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);