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(); + } }