diff options
author | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2024-05-15 16:34:24 -0400 |
---|---|---|
committer | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2024-05-15 16:34:24 -0400 |
commit | c43c27493a0c3110bcdb6479da80c3641133ccee (patch) | |
tree | 12ab0a6c44a2c05f7c12403fabac8c0214a0f032 /src/main/java/de/hysky/skyblocker/config/datafixer/ConfigFix2QuickNav.java | |
parent | fb4efbbabde2808d9c565e8f638791616c5eb473 (diff) | |
download | Skyblocker-c43c27493a0c3110bcdb6479da80c3641133ccee.tar.gz Skyblocker-c43c27493a0c3110bcdb6479da80c3641133ccee.tar.bz2 Skyblocker-c43c27493a0c3110bcdb6479da80c3641133ccee.zip |
Add Quick Nav data fixer and refactor tabs
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/config/datafixer/ConfigFix2QuickNav.java')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/config/datafixer/ConfigFix2QuickNav.java | 38 |
1 files changed, 38 insertions, 0 deletions
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()))); + } +} |