From 41a16bc2375aa04a9a92514f594b668362647fb0 Mon Sep 17 00:00:00 2001 From: DAM <43420467+DAMcraft@users.noreply.github.com> Date: Sun, 7 Jan 2024 15:48:54 +0100 Subject: [PATCH] Save settings --- .../serverseeker/country/CountrySetting.java | 5 +++-- .../gui/FindNewServersScreen.java | 22 +++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/damcraft/serverseeker/country/CountrySetting.java b/src/main/java/de/damcraft/serverseeker/country/CountrySetting.java index 524288c..2e60e76 100644 --- a/src/main/java/de/damcraft/serverseeker/country/CountrySetting.java +++ b/src/main/java/de/damcraft/serverseeker/country/CountrySetting.java @@ -64,12 +64,13 @@ protected boolean isValueValid(Country value) { @Override protected NbtCompound save(NbtCompound tag) { - return null; + tag.putString("value", get().code); + return tag; } @Override protected Country load(NbtCompound tag) { - return null; + return ServerSeeker.COUNTRY_MAP.get(tag.getString("value")); } public static class Builder extends SettingBuilder { diff --git a/src/main/java/de/damcraft/serverseeker/gui/FindNewServersScreen.java b/src/main/java/de/damcraft/serverseeker/gui/FindNewServersScreen.java index e3721b9..ec4f135 100644 --- a/src/main/java/de/damcraft/serverseeker/gui/FindNewServersScreen.java +++ b/src/main/java/de/damcraft/serverseeker/gui/FindNewServersScreen.java @@ -23,12 +23,14 @@ import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen; import net.minecraft.client.network.ServerAddress; import net.minecraft.client.network.ServerInfo; +import net.minecraft.nbt.NbtCompound; import java.util.List; import static de.damcraft.serverseeker.ServerSeeker.gson; public class FindNewServersScreen extends WindowScreen { + public static NbtCompound savedSettings; private int timer; public WButton findButton; private boolean threadHasFinished; @@ -274,8 +276,11 @@ public FindNewServersScreen(MultiplayerScreen multiplayerScreen) { @Override public void initWidgets() { + loadSettings(); + onClosed(this::saveSettings); settingsContainer = add(theme.verticalList()).widget(); settingsContainer.add(theme.settings(settings)); + add(theme.button("Reset all")).expandX().widget().action = this::resetSettings; findButton = add(theme.button("Find")).expandX().widget(); findButton.action = () -> { ServersRequest request = new ServersRequest(); @@ -486,4 +491,21 @@ private void handleThreadFinish() { this.locked = false; } + + public void saveSettings() { + savedSettings = sg.toTag(); + } + + public void loadSettings() { + if (savedSettings == null) return; + sg.fromTag(savedSettings); + } + + public void resetSettings() { + for (Setting setting : sg) { + setting.reset(); + } + saveSettings(); + reload(); + } }