package net.minecraft.util.datafix.fixes; import com.mojang.datafixers.DSL; import com.mojang.datafixers.DataFix; import com.mojang.datafixers.TypeRewriteRule; import com.mojang.datafixers.schemas.Schema; import com.mojang.serialization.Dynamic; import java.util.function.Function; public class AdvancementsRenameFix extends DataFix { private final String name; private final Function renamer; public AdvancementsRenameFix(Schema outputSchema, boolean changesType, String name, Function renamer) { super(outputSchema, changesType); this.name = name; this.renamer = renamer; } @Override protected TypeRewriteRule makeRule() { return this.fixTypeEverywhereTyped( this.name, this.getInputSchema().getType(References.ADVANCEMENTS), typed -> typed.update(DSL.remainderFinder(), dynamic -> dynamic.updateMapValues(pair -> { String string = ((Dynamic)pair.getFirst()).asString(""); return pair.mapFirst(dynamic2 -> dynamic.createString((String)this.renamer.apply(string))); })) ); } }