aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/config/datafixer
diff options
context:
space:
mode:
authorKevin <92656833+kevinthegreat1@users.noreply.github.com>2024-05-20 16:46:18 -0400
committerGitHub <noreply@github.com>2024-05-20 16:46:18 -0400
commit53668124dfcb53beba92b54062ae25315d5624b3 (patch)
tree3fe24a7071d74f04f7609ffaf2d4598119e75fb3 /src/main/java/de/hysky/skyblocker/config/datafixer
parent6886f2d89416bf56d0255f6aac3036141ce41caf (diff)
parentc155b6532531fd2de49ced44b12730571d740432 (diff)
downloadSkyblocker-53668124dfcb53beba92b54062ae25315d5624b3.tar.gz
Skyblocker-53668124dfcb53beba92b54062ae25315d5624b3.tar.bz2
Skyblocker-53668124dfcb53beba92b54062ae25315d5624b3.zip
Merge pull request #643 from VeritasDL/BranchMa
Quick Nav Refactor and Clean Up, 2 Extra Tabs, Config Version 3, Config Data Fixer Refactor, Debug Dump Hovered Item Tool
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/config/datafixer')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/datafixer/ConfigDataFix.java16
-rw-r--r--src/main/java/de/hysky/skyblocker/config/datafixer/ConfigDataFixer.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/config/datafixer/ConfigFix1.java24
-rw-r--r--src/main/java/de/hysky/skyblocker/config/datafixer/ConfigFix2QuickNav.java38
4 files changed, 65 insertions, 21 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigDataFix.java b/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigDataFix.java
new file mode 100644
index 00000000..9ec0e2b8
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigDataFix.java
@@ -0,0 +1,16 @@
+package de.hysky.skyblocker.config.datafixer;
+
+import com.mojang.datafixers.DataFix;
+import com.mojang.datafixers.DataFixUtils;
+import com.mojang.datafixers.schemas.Schema;
+import com.mojang.serialization.Dynamic;
+
+public abstract class ConfigDataFix extends DataFix {
+ public ConfigDataFix(Schema outputSchema, boolean changesType) {
+ super(outputSchema, changesType);
+ }
+
+ protected <T> Dynamic<T> fixVersion(Dynamic<T> dynamic) {
+ return dynamic.set("version", dynamic.createInt(DataFixUtils.getVersion(getVersionKey())));
+ }
+}
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 97261c76..f4e4aad1 100644
--- a/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigDataFixer.java
+++ b/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigDataFixer.java
@@ -47,9 +47,13 @@ public class ConfigDataFixer {
}
public static JsonObject apply(JsonObject oldConfig) {
+ return apply(oldConfig, SkyblockerConfigManager.CONFIG_VERSION);
+ }
+
+ public static JsonObject apply(JsonObject oldConfig, int newVersion) {
long start = System.currentTimeMillis();
- JsonObject newConfig = build().update(CONFIG_TYPE, new Dynamic<>(JsonOps.INSTANCE, oldConfig), JsonHelper.getInt(oldConfig, "version").orElse(1), SkyblockerConfigManager.CONFIG_VERSION).getValue().getAsJsonObject();
+ JsonObject newConfig = build().update(CONFIG_TYPE, new Dynamic<>(JsonOps.INSTANCE, oldConfig), JsonHelper.getInt(oldConfig, "version").orElse(1), newVersion).getValue().getAsJsonObject();
long end = System.currentTimeMillis();
LOGGER.info("[Skyblocker Config Data Fixer] Applied datafixers in {} ms!", end - start);
@@ -62,6 +66,8 @@ public class ConfigDataFixer {
builder.addSchema(1, ConfigSchema::new);
Schema schema2 = builder.addSchema(2, Schema::new);
builder.addFixer(new ConfigFix1(schema2, true));
+ Schema schema3 = builder.addSchema(3, Schema::new);
+ builder.addFixer(new ConfigFix2QuickNav(schema3, true));
return builder.buildUnoptimized();
}
diff --git a/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigFix1.java b/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigFix1.java
index 405a2781..8eff09e7 100644
--- a/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigFix1.java
+++ b/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigFix1.java
@@ -1,8 +1,6 @@
package de.hysky.skyblocker.config.datafixer;
import com.mojang.datafixers.DSL;
-import com.mojang.datafixers.DataFix;
-import com.mojang.datafixers.DataFixUtils;
import com.mojang.datafixers.TypeRewriteRule;
import com.mojang.datafixers.schemas.Schema;
import com.mojang.logging.LogUtils;
@@ -14,7 +12,7 @@ import net.minecraft.nbt.StringNbtReader;
import java.util.Locale;
-public class ConfigFix1 extends DataFix {
+public class ConfigFix1 extends ConfigDataFix {
public ConfigFix1(Schema outputSchema, boolean changesType) {
super(outputSchema, changesType);
}
@@ -32,10 +30,6 @@ public class ConfigFix1 extends DataFix {
return fixMisc(fixQuickNav(fixChat(fixSlayers(fixOtherLocations(fixFarming(fixMining(fixCrimsonIsle(fixDungeons(fixHelpers(fixUIAndVisuals(fixGeneral(fixVersion(dynamic)))))))))))));
}
- private <T> Dynamic<T> fixVersion(Dynamic<T> dynamic) {
- return dynamic.set("version", dynamic.createInt(DataFixUtils.getVersion(getVersionKey())));
- }
-
private static <T> Dynamic<T> fixGeneral(Dynamic<T> dynamic) {
return dynamic.update("general", general -> general.update("itemTooltip", itemTooltip -> itemTooltip.setFieldIfPresent("dungeonQuality", general.get("dungeonQuality").result())).remove("dungeonQuality"));
}
@@ -180,19 +174,9 @@ public class ConfigFix1 extends DataFix {
}
private static <T> Dynamic<T> fixQuickNav(Dynamic<T> dynamic) {
- return dynamic.update("quickNav", quickNav -> quickNav
- .update("button1", ConfigFix1::fixQuickNavButton)
- .update("button2", ConfigFix1::fixQuickNavButton)
- .update("button3", ConfigFix1::fixQuickNavButton)
- .update("button4", ConfigFix1::fixQuickNavButton)
- .update("button5", ConfigFix1::fixQuickNavButton)
- .update("button6", ConfigFix1::fixQuickNavButton)
- .update("button7", ConfigFix1::fixQuickNavButton)
- .update("button8", ConfigFix1::fixQuickNavButton)
- .update("button9", ConfigFix1::fixQuickNavButton)
- .update("button10", ConfigFix1::fixQuickNavButton)
- .update("button11", ConfigFix1::fixQuickNavButton)
- .update("button12", ConfigFix1::fixQuickNavButton));
+ return dynamic.update("quickNav", quickNav -> quickNav.updateMapValues(button ->
+ button.getFirst().asString().getOrThrow().startsWith("button") ? button.mapSecond(ConfigFix1::fixQuickNavButton) : button
+ ));
}
private static <T> Dynamic<T> fixQuickNavButton(Dynamic<T> button) {
diff --git a/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigFix2QuickNav.java b/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigFix2QuickNav.java
new file mode 100644
index 00000000..bd67b1b0
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigFix2QuickNav.java
@@ -0,0 +1,38 @@
+package de.hysky.skyblocker.config.datafixer;
+
+import com.mojang.datafixers.DSL;
+import com.mojang.datafixers.TypeRewriteRule;
+import com.mojang.datafixers.schemas.Schema;
+import com.mojang.serialization.Dynamic;
+import net.minecraft.util.Identifier;
+
+public class ConfigFix2QuickNav extends ConfigDataFix {
+ public ConfigFix2QuickNav(Schema outputSchema, boolean changesType) {
+ super(outputSchema, changesType);
+ }
+
+ @Override
+ protected TypeRewriteRule makeRule() {
+ return fixTypeEverywhereTyped(
+ "ConfigFix2QuickNav",
+ getInputSchema().getType(ConfigDataFixer.CONFIG_TYPE),
+ typed -> typed.update(DSL.remainderFinder(), this::fix)
+ );
+ }
+
+ private <T> Dynamic<T> fix(Dynamic<T> dynamic) {
+ return fixVersion(dynamic).update("quickNav", quickNav -> quickNav
+ .renameField("button12", "button13")
+ .renameField("button11", "button12")
+ .renameField("button10", "button11")
+ .renameField("button9", "button10")
+ .renameField("button8", "button9")
+ .renameField("button7", "button8")
+ .updateMapValues(button -> button.getFirst().asString().getOrThrow().startsWith("button") ? button.mapSecond(this::fixButton) : button)
+ );
+ }
+
+ private <T> Dynamic<T> fixButton(Dynamic<T> button) {
+ return button.renameAndFixField("item", "itemData", itemData -> itemData.renameAndFixField("id", "item", id -> id.createString(new Identifier(id.asString().getOrThrow()).toString())));
+ }
+}