aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigFix1.java
blob: 8eff09e7ec5581dd28ec061709e352961d710939 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
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.logging.LogUtils;
import com.mojang.serialization.Dynamic;
import com.mojang.serialization.OptionalDynamic;
import de.hysky.skyblocker.utils.datafixer.ItemStackComponentizationFixer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.StringNbtReader;

import java.util.Locale;

public class ConfigFix1 extends ConfigDataFix {
    public ConfigFix1(Schema outputSchema, boolean changesType) {
        super(outputSchema, changesType);
    }

    @Override
    protected TypeRewriteRule makeRule() {
        return fixTypeEverywhereTyped(
                "ConfigFix1",
                getInputSchema().getType(ConfigDataFixer.CONFIG_TYPE),
                typed -> typed.update(DSL.remainderFinder(), this::fix)
        );
    }

    private <T> Dynamic<T> fix(Dynamic<T> dynamic) {
        return fixMisc(fixQuickNav(fixChat(fixSlayers(fixOtherLocations(fixFarming(fixMining(fixCrimsonIsle(fixDungeons(fixHelpers(fixUIAndVisuals(fixGeneral(fixVersion(dynamic)))))))))))));
    }

    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"));
    }

    private static <T> Dynamic<T> fixUIAndVisuals(Dynamic<T> dynamic) {
        OptionalDynamic<T> general = dynamic.get("general");
        return dynamic.set("uiAndVisuals", dynamic.emptyMap()
                .setFieldIfPresent("compactorDeletorPreview", general.get("compactorDeletorPreview").result())
                .setFieldIfPresent("dontStripSkinAlphaValues", general.get("dontStripSkinAlphaValues").result())
                .setFieldIfPresent("backpackPreviewWithoutShift", general.get("backpackPreviewWithoutShift").result())
                .setFieldIfPresent("hideEmptyTooltips", general.get("hideEmptyTooltips").result())
                .setFieldIfPresent("fancyCraftingTable", general.get("fancyCraftingTable").result())
                .setFieldIfPresent("hideStatusEffectOverlay", general.get("hideStatusEffectOverlay").result())
                .setFieldIfPresent("chestValue", general.get("chestValue").result())
                .setFieldIfPresent("itemCooldown", general.get("itemCooldown").result())
                .setFieldIfPresent("titleContainer", general.get("titleContainer").result())
                .setFieldIfPresent("tabHud", general.get("tabHud").result())
                .setFieldIfPresent("fancyAuctionHouse", general.get("fancyAuctionHouse").result())
                .setFieldIfPresent("bars", general.get("bars").result())
                .setFieldIfPresent("waypoints", general.get("waypoints").result())
                .setFieldIfPresent("teleportOverlay", general.get("teleportOverlay").result())
                .setFieldIfPresent("searchOverlay", general.get("searchOverlay").result())
                .setFieldIfPresent("flameOverlay", general.get("flameOverlay").result())
        ).update("general", newGeneral -> newGeneral
                .remove("compactorDeletorPreview")
                .remove("dontStripSkinAlphaValues")
                .remove("backpackPreviewWithoutShift")
                .remove("hideEmptyTooltips")
                .remove("fancyCraftingTable")
                .remove("hideStatusEffectOverlay")
                .remove("chestValue")
                .remove("itemCooldown")
                .remove("titleContainer")
                .remove("tabHud")
                .remove("fancyAuctionHouse")
                .remove("bars")
                .remove("waypoints")
                .remove("teleportOverlay")
                .remove("searchOverlay")
                .remove("flameOverlay")
        );
    }

    private static <T> Dynamic<T> fixHelpers(Dynamic<T> dynamic) {
        OptionalDynamic<T> general = dynamic.get("general");
        return dynamic.set("helpers", dynamic.emptyMap()
                .setFieldIfPresent("enableNewYearCakesHelper", general.get("enableNewYearCakesHelper").result())
                .setFieldIfPresent("mythologicalRitual", general.get("mythologicalRitual").result())
                .setFieldIfPresent("experiments", general.get("experiments").result())
                .setFieldIfPresent("fishing", general.get("fishing").result())
                .setFieldIfPresent("fairySouls", general.get("fairySouls").result())
        ).update("general", newGeneral -> newGeneral
                .remove("enableNewYearCakesHelper")
                .remove("mythologicalRitual")
                .remove("experiments")
                .remove("fishing")
                .remove("fairySouls")
        );
    }

    private static <T> Dynamic<T> fixDungeons(Dynamic<T> dynamic) {
        OptionalDynamic<T> general = dynamic.get("general");
        OptionalDynamic<T> dungeons = dynamic.get("locations").get("dungeons");
        return dynamic.set("dungeons", dynamic.emptyMap()
                .setFieldIfPresent("fancyPartyFinder", general.get("betterPartyFinder").result())
                .setFieldIfPresent("croesusHelper", dungeons.get("croesusHelper").result())
                .setFieldIfPresent("playerSecretsTracker", dungeons.get("playerSecretsTracker").result())
                .setFieldIfPresent("starredMobGlow", dungeons.get("starredMobGlow").result())
                .setFieldIfPresent("starredMobBoundingBoxes", dungeons.get("starredMobBoundingBoxes").result())
                .setFieldIfPresent("allowDroppingProtectedItems", dungeons.get("allowDroppingProtectedItems").result())
                .set("dungeonMap", dynamic.emptyMap()
                        .setFieldIfPresent("enableMap", dungeons.get("enableMap").result())
                        .setFieldIfPresent("mapScaling", dungeons.get("mapScaling").result())
                        .setFieldIfPresent("mapX", dungeons.get("mapX").result())
                        .setFieldIfPresent("mapY", dungeons.get("mapY").result())
                )
                .set("puzzleSolvers", dynamic.emptyMap()
                        .setFieldIfPresent("solveThreeWeirdos", dungeons.get("solveThreeWeirdos").result())
                        .setFieldIfPresent("blazeSolver", dungeons.get("blazeSolver").result())
                        .setFieldIfPresent("creeperSolver", dungeons.get("creeperSolver").result())
                        .setFieldIfPresent("solveTrivia", dungeons.get("solveTrivia").result())
                        .setFieldIfPresent("solveTicTacToe", dungeons.get("solveTicTacToe").result())
                        .setFieldIfPresent("solveWaterboard", dungeons.get("solveWaterboard").result())
                        .setFieldIfPresent("solveBoulder", dungeons.get("solveBoulder").result())
                        .setFieldIfPresent("solveIceFill", dungeons.get("solveIceFill").result())
                        .setFieldIfPresent("solveSilverfish", dungeons.get("solveSilverfish").result())
                )
                .set("theProfessor", dynamic.emptyMap()
                        .setFieldIfPresent("fireFreezeStaffTimer", dungeons.get("fireFreezeStaffTimer").result())
                        .setFieldIfPresent("floor3GuardianHealthDisplay", dungeons.get("floor3GuardianHealthDisplay").result())
                )
                .setFieldIfPresent("livid", dungeons.get("lividColor").result())
                .setFieldIfPresent("terminals", dungeons.get("terminals").result())
                .setFieldIfPresent("secretWaypoints", dungeons.get("secretWaypoints").result())
                .setFieldIfPresent("mimicMessage", dungeons.get("mimicMessage").result())
                .setFieldIfPresent("doorHighlight", dungeons.get("doorHighlight").result())
                .setFieldIfPresent("dungeonScore", dungeons.get("dungeonScore").result())
                .setFieldIfPresent("dungeonChestProfit", dungeons.get("dungeonChestProfit").result())
        ).update("locations", locations -> locations.remove("dungeons")).update("general", newGeneral -> newGeneral.remove("betterPartyFinder"));
    }

    private static <T> Dynamic<T> fixCrimsonIsle(Dynamic<T> dynamic) {
        return dynamic.setFieldIfPresent("crimsonIsle", dynamic.get("locations").get("crimsonIsle").result()).update("locations", locations -> locations.remove("crimsonIsle"));
    }

    private static <T> Dynamic<T> fixMining(Dynamic<T> dynamic) {
        OptionalDynamic<T> dwarvenMines = dynamic.get("locations").get("dwarvenMines");
        return dynamic.set("mining", dynamic.emptyMap()
                .setFieldIfPresent("enableDrillFuel", dwarvenMines.get("enableDrillFuel").result())
                .set("dwarvenMines", dynamic.emptyMap()
                        .setFieldIfPresent("solveFetchur", dwarvenMines.get("solveFetchur").result())
                        .setFieldIfPresent("solvePuzzler", dwarvenMines.get("solvePuzzler").result())
                )
                .set("dwarvenHud", dwarvenMines.get("dwarvenHud").result().orElseThrow()
                        .renameField("x", "commissionsX")
                        .renameField("y", "commissionsY")
                )
                .setFieldIfPresent("crystalsHud", dwarvenMines