diff options
author | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2024-05-11 14:47:57 -0400 |
---|---|---|
committer | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2024-05-11 14:47:57 -0400 |
commit | 5591340b63c1abfd2f3657ee423ba16005503704 (patch) | |
tree | decb87987d8a4246007e1cfff89d53a3b4970d1c /src/main/java/de/hysky | |
parent | c608913fbce34ace0b5087172fe7961b69928401 (diff) | |
download | Skyblocker-5591340b63c1abfd2f3657ee423ba16005503704.tar.gz Skyblocker-5591340b63c1abfd2f3657ee423ba16005503704.tar.bz2 Skyblocker-5591340b63c1abfd2f3657ee423ba16005503704.zip |
Refactor ConfigDataFixer
Diffstat (limited to 'src/main/java/de/hysky')
3 files changed, 19 insertions, 14 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java index c591ba14..b7a711ab 100644 --- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java @@ -5,7 +5,7 @@ import dev.isxander.yacl3.config.v2.api.SerialEntry; public class SkyblockerConfig { @SerialEntry - public int version = 2; + public int version = SkyblockerConfigManager.CONFIG_VERSION; @SerialEntry public GeneralConfig general = new GeneralConfig(); diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java index c85e0bb4..688b85aa 100644 --- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java +++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java @@ -26,10 +26,11 @@ import java.lang.StackWalker.Option; import java.nio.file.Path; public class SkyblockerConfigManager { - private static final Path PATH = FabricLoader.getInstance().getConfigDir().resolve("skyblocker.json"); + public static final int CONFIG_VERSION = 2; + private static final Path CONFIG_FILE = FabricLoader.getInstance().getConfigDir().resolve("skyblocker.json"); private static final ConfigClassHandler<SkyblockerConfig> HANDLER = ConfigClassHandler.createBuilder(SkyblockerConfig.class) .serializer(config -> GsonConfigSerializerBuilder.create(config) - .setPath(PATH) + .setPath(CONFIG_FILE) .setJson5(false) .appendGsonBuilder(builder -> builder .setFieldNamingPolicy(FieldNamingPolicy.IDENTITY) diff --git a/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigDataFixer.java b/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigDataFixer.java index 915710f7..97261c76 100644 --- a/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigDataFixer.java +++ b/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigDataFixer.java @@ -10,6 +10,7 @@ import com.mojang.logging.LogUtils; import com.mojang.serialization.Dynamic; import com.mojang.serialization.JsonOps; import de.hysky.skyblocker.SkyblockerMod; +import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.utils.datafixer.JsonHelper; import net.fabricmc.loader.api.FabricLoader; import org.slf4j.Logger; @@ -23,7 +24,6 @@ public class ConfigDataFixer { protected static final Logger LOGGER = LogUtils.getLogger(); private static final Path CONFIG_DIR = FabricLoader.getInstance().getConfigDir(); public static final DSL.TypeReference CONFIG_TYPE = () -> "config"; - public static final int VERSION = 2; public static void apply() { apply(CONFIG_DIR.resolve("skyblocker.json"), CONFIG_DIR.resolve("skyblocker.json.old")); @@ -35,7 +35,7 @@ public class ConfigDataFixer { //Should never be null if the file exists unless its malformed JSON or something in which case well it gets reset JsonObject oldConfig = loadConfig(configDir); - if (oldConfig == null || JsonHelper.getInt(oldConfig, "version").orElse(1) == VERSION) return; + if (oldConfig == null || JsonHelper.getInt(oldConfig, "version").orElse(1) == SkyblockerConfigManager.CONFIG_VERSION) return; JsonObject newConfig = apply(oldConfig); @@ -47,21 +47,25 @@ public class ConfigDataFixer { } public static JsonObject apply(JsonObject oldConfig) { - DataFixerBuilder builder = new DataFixerBuilder(VERSION); - builder.addSchema(1, ConfigSchema::new); - Schema schema2 = builder.addSchema(2, Schema::new); - builder.addFixer(new ConfigFix1(schema2, true)); - DataFixer dataFixer = builder.buildUnoptimized(); + long start = System.currentTimeMillis(); - long start = System.currentTimeMillis(); - - JsonObject newConfig = dataFixer.update(CONFIG_TYPE, new Dynamic<>(JsonOps.INSTANCE, oldConfig), JsonHelper.getInt(oldConfig, "version").orElse(1), VERSION).getValue().getAsJsonObject(); + JsonObject newConfig = build().update(CONFIG_TYPE, new Dynamic<>(JsonOps.INSTANCE, oldConfig), JsonHelper.getInt(oldConfig, "version").orElse(1), SkyblockerConfigManager.CONFIG_VERSION).getValue().getAsJsonObject(); long end = System.currentTimeMillis(); - LOGGER.info("[Skyblocker Config Data Fixer] Applied datafixers in {} ms!", (end - start)); + LOGGER.info("[Skyblocker Config Data Fixer] Applied datafixers in {} ms!", end - start); return newConfig; } + private static DataFixer build() { + DataFixerBuilder builder = new DataFixerBuilder(SkyblockerConfigManager.CONFIG_VERSION); + + builder.addSchema(1, ConfigSchema::new); + Schema schema2 = builder.addSchema(2, Schema::new); + builder.addFixer(new ConfigFix1(schema2, true)); + + return builder.buildUnoptimized(); + } + private static JsonObject loadConfig(Path path) { try (BufferedReader reader = Files.newBufferedReader(path)) { return JsonParser.parseReader(reader).getAsJsonObject(); |