minecraft-source/src/net/minecraft/util/datafix/fixes/VillagerDataFix.java

69 lines
2.6 KiB
Java

package net.minecraft.util.datafix.fixes;
import java.util.Map;
import com.google.common.collect.ImmutableMap;
import com.mojang.datafixers.DataFixUtils;
import com.mojang.datafixers.DSL;
import com.mojang.datafixers.Dynamic;
import com.mojang.datafixers.Typed;
import com.mojang.datafixers.schemas.Schema;
public class VillagerDataFix extends NamedEntityFix {
public VillagerDataFix(final Schema schema, final String string) {
super(schema, false, "Villager profession data fix (" + string + ")", References.ENTITY, string);
}
@Override
protected Typed<?> fix(final Typed<?> typed) {
final Dynamic<?> dynamic3 = typed.get(DSL.remainderFinder());
return typed.set(DSL.remainderFinder(), dynamic3.remove("Profession").remove("Career").remove("CareerLevel").set("VillagerData", dynamic3.createMap((Map)ImmutableMap.<Dynamic, Object>of(dynamic3.createString("type"), (Object)dynamic3.createString("minecraft:plains"), dynamic3.createString("profession"), (Object)dynamic3.createString(upgradeData(dynamic3.get("Profession").asInt(0), dynamic3.get("Career").asInt(0))), dynamic3.createString("level"), DataFixUtils.orElse(dynamic3.get("CareerLevel").get(), (Object)dynamic3.createInt(1))))));
}
private static String upgradeData(final int integer1, final int integer2) {
if (integer1 == 0) {
if (integer2 == 2) {
return "minecraft:fisherman";
}
if (integer2 == 3) {
return "minecraft:shepherd";
}
if (integer2 == 4) {
return "minecraft:fletcher";
}
return "minecraft:farmer";
}
else if (integer1 == 1) {
if (integer2 == 2) {
return "minecraft:cartographer";
}
return "minecraft:librarian";
}
else {
if (integer1 == 2) {
return "minecraft:cleric";
}
if (integer1 == 3) {
if (integer2 == 2) {
return "minecraft:weaponsmith";
}
if (integer2 == 3) {
return "minecraft:toolsmith";
}
return "minecraft:armorer";
}
else if (integer1 == 4) {
if (integer2 == 2) {
return "minecraft:leatherworker";
}
return "minecraft:butcher";
}
else {
if (integer1 == 5) {
return "minecraft:nitwit";
}
return "minecraft:none";
}
}
}
}