From d9cb0528f1fe7f8b19cec31bb333f2a493873db4 Mon Sep 17 00:00:00 2001 From: Sollace Date: Wed, 12 Oct 2022 19:30:06 +0200 Subject: [PATCH] Use the new config format and fix serialization of races --- .../com/minelittlepony/unicopia/Config.java | 47 ++++++++++--------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/minelittlepony/unicopia/Config.java b/src/main/java/com/minelittlepony/unicopia/Config.java index 8ba097dc..0321e45b 100644 --- a/src/main/java/com/minelittlepony/unicopia/Config.java +++ b/src/main/java/com/minelittlepony/unicopia/Config.java @@ -1,37 +1,40 @@ package com.minelittlepony.unicopia; -import java.util.HashSet; import java.util.Set; +import com.google.gson.GsonBuilder; import com.minelittlepony.common.util.GamePaths; -import com.minelittlepony.common.util.settings.JsonConfig; -import com.minelittlepony.common.util.settings.Setting; +import com.minelittlepony.common.util.settings.*; -public class Config extends JsonConfig { - /*private final String speciesWhiteListComment = - "A whitelist of races permitted on the server. " + - "Races added to this list can be used by anyone, whilst any ones left off are not permitted. " + - "An empty list disables whitelisting entirely.";*/ +public class Config extends com.minelittlepony.common.util.settings.Config { + private static final Adapter ADAPTER = new HeirarchicalJsonConfigAdapter(new GsonBuilder() + .registerTypeAdapter(Race.class, RegistryTypeAdapter.of(Race.REGISTRY)) + ); - public final Setting> speciesWhiteList = value("server", "speciesWhiteList", new HashSet<>()); + public final Setting> speciesWhiteList = value("server", "speciesWhiteList", Set.of()) + .addComment("A whitelist of races permitted on the server") + .addComment("Races added to this list can be used by anyone,") + .addComment("whilst any ones left off are not permitted") + .addComment("An empty list disables whitelisting entirely."); - public final Setting enableCheats = value("server", "enableCheats", false); + public final Setting enableCheats = value("server", "enableCheats", false) + .addComment("Allows use of the /race, /disguise, and /gravity commands"); - /*private final String preferredRaceComment = - "The default preferred race. " + - "This is the race a client requests when first joining a game. " + - "It is the default used both when Mine Little Pony is not installed and when they respond with a human race.";*/ + public final Setting preferredRace = value("client", "preferredRace", Race.EARTH) + .addComment("The default preferred race") + .addComment("This is the race a client requests when first joining a game") + .addComment("It is the default used both when Mine Little Pony is not installed") + .addComment("and when they respond with a human race."); - public final Setting preferredRace = value("client", "preferredRace", Race.EARTH); + public final Setting ignoreMineLP = value("client", "ignoreMineLP", false) + .addComment("If true Mine Little Pony will not be considered when determining the race to use") + .addComment("The result will always be what is set by this config file."); - /*private final String ignoreMineLPComment = - "If true Mine Little Pony will not be considered when determining the race to use. " + - "The result will always be what is set by this config file.";*/ - public final Setting ignoreMineLP = value("client", "ignoreMineLP", false); - - public final Setting disableWaterPlantsFix = value("compatibility", "disableWaterPlantsFix", false); + public final Setting disableWaterPlantsFix = value("compatibility", "disableWaterPlantsFix", false) + .addComment("Disables this mod's built in fix for making sea plants waterlogged") + .addComment("Turn this ON if you're using another mod that does something similar of if you encounter copatibility issues with other mods."); public Config() { - super(GamePaths.getConfigDirectory().resolve("unicopia.json")); + super(ADAPTER, GamePaths.getConfigDirectory().resolve("unicopia.json")); } }