aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2024-05-11 00:18:08 -0400
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2024-05-11 00:18:08 -0400
commit766de3513a9c6caa024dd446c2e9ba5e286455f4 (patch)
tree34f8c2636bfc6f325526cbfb13799e395f307bc5 /src/main
parent7c36617431a7b76d77c5eb9d04ec01fc9d2cb924 (diff)
downloadSkyblocker-766de3513a9c6caa024dd446c2e9ba5e286455f4.tar.gz
Skyblocker-766de3513a9c6caa024dd446c2e9ba5e286455f4.tar.bz2
Skyblocker-766de3513a9c6caa024dd446c2e9ba5e286455f4.zip
Add ConfigDataFixerTest
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/de/hysky/skyblocker/SkyblockerMod.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/config/datafixer/ConfigDataFixer.java (renamed from src/main/java/de/hysky/skyblocker/config/ConfigDatafixer.java)81
2 files changed, 47 insertions, 38 deletions
diff --git a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java
index d984c9fe..8d0e0a11 100644
--- a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java
+++ b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java
@@ -3,7 +3,7 @@ package de.hysky.skyblocker;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
-import de.hysky.skyblocker.config.ConfigDatafixer;
+import de.hysky.skyblocker.config.datafixer.ConfigDataFixer;
import de.hysky.skyblocker.config.ImageRepoLoader;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.debug.Debug;
@@ -102,7 +102,7 @@ public class SkyblockerMod implements ClientModInitializer {
@Override
public void onInitializeClient() {
ClientTickEvents.END_CLIENT_TICK.register(this::tick);
- ConfigDatafixer.apply();
+ ConfigDataFixer.apply();
Utils.init();
SkyblockerConfigManager.init();
SkyblockerScreen.initClass();
diff --git a/src/main/java/de/hysky/skyblocker/config/ConfigDatafixer.java b/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigDataFixer.java
index 7d0bb2d2..f680d592 100644
--- a/src/main/java/de/hysky/skyblocker/config/ConfigDatafixer.java
+++ b/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigDataFixer.java
@@ -1,4 +1,4 @@
-package de.hysky.skyblocker.config;
+package de.hysky.skyblocker.config.datafixer;
import java.io.BufferedReader;
import java.io.BufferedWriter;
@@ -21,60 +21,69 @@ import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.StringNbtReader;
-public class ConfigDatafixer {
+public class ConfigDataFixer {
private static final Logger LOGGER = LogUtils.getLogger();
private static final Path CONFIG_DIR = FabricLoader.getInstance().getConfigDir();
public static void apply() {
+ apply(CONFIG_DIR.resolve("skyblocker.json"), CONFIG_DIR.resolve("skyblocker.json.old"));
+ }
+
+ public static void apply(Path configDir, Path backupDir) {
//User is new - has no config file (or maybe config folder)
- if (!Files.exists(CONFIG_DIR) || !Files.exists(CONFIG_DIR.resolve("skyblocker.json"))) return;
+ if (!Files.exists(CONFIG_DIR) || !Files.exists(configDir)) return;
//Should never be null if the file exists unless its malformed JSON or something in which case well it gets reset
- JsonObject oldConfig = loadConfig();
+ JsonObject oldConfig = loadConfig(configDir);
if (oldConfig == null || JsonHelper.getInt(oldConfig, "version").orElse(1) != 1) return;
try {
- JsonObject newConfig = prepareNewFormat();
-
- DataFixer[] generalFixers = getGeneralDataFixerRules();
- DataFixer[] uiAndVisualsDataFixers = getUIAndVisualsDataFixerRules();
- DataFixer[] dungeonsFixers = getDungeonsDataFixerRules();
- DataFixer[] helpersFixers = getHelpersDataFixerRules();
- DataFixer[] crimsonFixer = getCrimsonIsleDataFixerRule();
- DataFixer[] miningFixers = getMiningDataFixerRules();
- DataFixer[] farmingFixers = getFarmingDataFixerRules();
- DataFixer[] otherLocationsFixers = getOtherLocationsDataFixerRules();
- DataFixer[] slayersFixers = getSlayersDataFixerRules();
- DataFixer[] chatFixers = getChatDataFixerRules();
- DataFixer[] quickNavFixers = getQuickNavDataFixerRules();
- DataFixer[] miscFixers = getMiscDataFixerRules();
-
- //Combine into 1 array
- DataFixer[] fixers = Stream.of(generalFixers, uiAndVisualsDataFixers, dungeonsFixers, helpersFixers, crimsonFixer, miningFixers, farmingFixers, otherLocationsFixers, slayersFixers, chatFixers, quickNavFixers, miscFixers)
- .flatMap(Arrays::stream)
- .toArray(DataFixer[]::new);
-
- long start = System.currentTimeMillis();
-
- for (DataFixer fixer : fixers) {
- fixer.apply(oldConfig, newConfig);
- }
+ JsonObject newConfig = apply(oldConfig);
//Write the updated file
- boolean success = writeConfig(CONFIG_DIR.resolve("skyblocker.json"), newConfig);
+ boolean success = writeConfig(configDir, newConfig);
if (!success) throw new IllegalStateException("Failed to write the new config to the file!");
-
- long end = System.currentTimeMillis();
- LOGGER.info("[Skyblocker Config Data Fixer] Applied {} datafixers in {} ms!", fixers.length, (end - start));
} catch (Throwable t) {
LOGGER.error(LogUtils.FATAL_MARKER, "[Skyblocker Config Data Fixer] Failed to fix up config file!", t);
- writeConfig(CONFIG_DIR.resolve("skyblocker-1.json"), oldConfig);
+ writeConfig(backupDir, oldConfig);
}
}
- private static JsonObject loadConfig() {
- try (BufferedReader reader = Files.newBufferedReader(CONFIG_DIR.resolve("skyblocker.json"))) {
+ public static JsonObject apply(JsonObject oldConfig) {
+ JsonObject newConfig = prepareNewFormat();
+
+ DataFixer[] generalFixers = getGeneralDataFixerRules();
+ DataFixer[] uiAndVisualsDataFixers = getUIAndVisualsDataFixerRules();
+ DataFixer[] dungeonsFixers = getDungeonsDataFixerRules();
+ DataFixer[] helpersFixers = getHelpersDataFixerRules();
+ DataFixer[] crimsonFixer = getCrimsonIsleDataFixerRule();
+ DataFixer[] miningFixers = getMiningDataFixerRules();
+ DataFixer[] farmingFixers = getFarmingDataFixerRules();
+ DataFixer[] otherLocationsFixers = getOtherLocationsDataFixerRules();
+ DataFixer[] slayersFixers = getSlayersDataFixerRules();
+ DataFixer[] chatFixers = getChatDataFixerRules();
+ DataFixer[] quickNavFixers = getQuickNavDataFixerRules();
+ DataFixer[] miscFixers = getMiscDataFixerRules();
+
+ //Combine into 1 array
+ DataFixer[] fixers = Stream.of(generalFixers, uiAndVisualsDataFixers, dungeonsFixers, helpersFixers, crimsonFixer, miningFixers, farmingFixers, otherLocationsFixers, slayersFixers, chatFixers, quickNavFixers, miscFixers)
+ .flatMap(Arrays::stream)
+ .toArray(DataFixer[]::new);
+
+ long start = System.currentTimeMillis();
+
+ for (DataFixer fixer : fixers) {
+ fixer.apply(oldConfig, newConfig);
+ }
+
+ long end = System.currentTimeMillis();
+ LOGGER.info("[Skyblocker Config Data Fixer] Applied {} datafixers in {} ms!", fixers.length, (end - start));
+ return newConfig;
+ }
+
+ private static JsonObject loadConfig(Path path) {
+ try (BufferedReader reader = Files.newBufferedReader(path)) {
return JsonParser.parseReader(reader).getAsJsonObject();
} catch (Throwable t) {
LOGGER.error("[Skyblocker Config Data Fixer] Failed to load config file!", t);