56 lines
2.3 KiB
Java
56 lines
2.3 KiB
Java
|
package net.minecraft.util.datafix.fixes;
|
||
|
|
||
|
import com.mojang.datafixers.DSL;
|
||
|
import com.mojang.datafixers.DataFix;
|
||
|
import com.mojang.datafixers.OpticFinder;
|
||
|
import com.mojang.datafixers.TypeRewriteRule;
|
||
|
import com.mojang.datafixers.Typed;
|
||
|
import com.mojang.datafixers.schemas.Schema;
|
||
|
import com.mojang.datafixers.types.Type;
|
||
|
import com.mojang.datafixers.types.templates.List.ListType;
|
||
|
import com.mojang.serialization.Dynamic;
|
||
|
import net.minecraft.util.datafix.ExtraDataFixUtils;
|
||
|
|
||
|
public class BeehiveFieldRenameFix extends DataFix {
|
||
|
public BeehiveFieldRenameFix(Schema p_336393_) {
|
||
|
super(p_336393_, true);
|
||
|
}
|
||
|
|
||
|
private Dynamic<?> fixBeehive(Dynamic<?> p_334771_) {
|
||
|
return p_334771_.remove("Bees");
|
||
|
}
|
||
|
|
||
|
private Dynamic<?> fixBee(Dynamic<?> p_335732_) {
|
||
|
p_335732_ = p_335732_.remove("EntityData");
|
||
|
p_335732_ = p_335732_.renameField("TicksInHive", "ticks_in_hive");
|
||
|
return p_335732_.renameField("MinOccupationTicks", "min_ticks_in_hive");
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public TypeRewriteRule makeRule() {
|
||
|
Type<?> type = this.getInputSchema().getChoiceType(References.BLOCK_ENTITY, "minecraft:beehive");
|
||
|
OpticFinder<?> opticfinder = DSL.namedChoice("minecraft:beehive", type);
|
||
|
ListType<?> listtype = (ListType<?>)type.findFieldType("Bees");
|
||
|
Type<?> type1 = listtype.getElement();
|
||
|
OpticFinder<?> opticfinder1 = DSL.fieldFinder("Bees", listtype);
|
||
|
OpticFinder<?> opticfinder2 = DSL.typeFinder(type1);
|
||
|
Type<?> type2 = this.getInputSchema().getType(References.BLOCK_ENTITY);
|
||
|
Type<?> type3 = this.getOutputSchema().getType(References.BLOCK_ENTITY);
|
||
|
return this.fixTypeEverywhereTyped(
|
||
|
"BeehiveFieldRenameFix",
|
||
|
type2,
|
||
|
type3,
|
||
|
p_336050_ -> ExtraDataFixUtils.cast(
|
||
|
type3,
|
||
|
p_336050_.updateTyped(
|
||
|
opticfinder,
|
||
|
p_334762_ -> p_334762_.update(DSL.remainderFinder(), this::fixBeehive)
|
||
|
.updateTyped(
|
||
|
opticfinder1,
|
||
|
p_334908_ -> p_334908_.updateTyped(opticfinder2, p_331823_ -> p_331823_.update(DSL.remainderFinder(), this::fixBee))
|
||
|
)
|
||
|
)
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
}
|