diff options
| author | Kevin <92656833+kevinthegreat1@users.noreply.github.com> | 2024-05-20 16:46:18 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-20 16:46:18 -0400 |
| commit | 53668124dfcb53beba92b54062ae25315d5624b3 (patch) | |
| tree | 3fe24a7071d74f04f7609ffaf2d4598119e75fb3 /src/main/java/de/hysky/skyblocker/config/datafixer | |
| parent | 6886f2d89416bf56d0255f6aac3036141ce41caf (diff) | |
| parent | c155b6532531fd2de49ced44b12730571d740432 (diff) | |
| download | Skyblocker-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')
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()))); + } +} |
