VillagerDataFix.java

net.minecraft.util.datafix.fixes.VillagerDataFix

信息

  • 全限定名:net.minecraft.util.datafix.fixes.VillagerDataFix
  • 类型:public class
  • 包:net.minecraft.util.datafix.fixes
  • 源码路径:src/main/java/net/minecraft/util/datafix/fixes/VillagerDataFix.java
  • 起始行号:L10
  • 继承:NamedEntityFix
  • 职责:

    TODO

字段/常量

内部类/嵌套类型

构造器

public VillagerDataFix(Schema schema, String entityType) @ L11

  • 构造器名:VillagerDataFix
  • 源码定位:L11
  • 修饰符:public

参数:

  • schema: Schema
  • entityType: String

说明:

TODO

方法

下面的方法块按源码顺序生成。

protected Typed<?> fix(Typed<?> entity) @ L15

  • 方法名:fix
  • 源码定位:L15
  • 返回类型:Typed<?>
  • 修饰符:protected

参数:

  • entity: Typed<?>

说明:

TODO

private static String upgradeData(int profession, int career) @ L39

  • 方法名:upgradeData
  • 源码定位:L39
  • 返回类型:String
  • 修饰符:private static

参数:

  • profession: int
  • career: int

说明:

TODO

代码

public class VillagerDataFix extends NamedEntityFix {
    public VillagerDataFix(Schema schema, String entityType) {
        super(schema, false, "Villager profession data fix (" + entityType + ")", References.ENTITY, entityType);
    }
 
    @Override
    protected Typed<?> fix(Typed<?> entity) {
        Dynamic<?> remainder = entity.get(DSL.remainderFinder());
        return entity.set(
            DSL.remainderFinder(),
            remainder.remove("Profession")
                .remove("Career")
                .remove("CareerLevel")
                .set(
                    "VillagerData",
                    remainder.createMap(
                        ImmutableMap.of(
                            remainder.createString("type"),
                            remainder.createString("minecraft:plains"),
                            remainder.createString("profession"),
                            remainder.createString(upgradeData(remainder.get("Profession").asInt(0), remainder.get("Career").asInt(0))),
                            remainder.createString("level"),
                            DataFixUtils.orElse(remainder.get("CareerLevel").result(), remainder.createInt(1))
                        )
                    )
                )
        );
    }
 
    private static String upgradeData(int profession, int career) {
        if (profession == 0) {
            if (career == 2) {
                return "minecraft:fisherman";
            } else if (career == 3) {
                return "minecraft:shepherd";
            } else {
                return career == 4 ? "minecraft:fletcher" : "minecraft:farmer";
            }
        } else if (profession == 1) {
            return career == 2 ? "minecraft:cartographer" : "minecraft:librarian";
        } else if (profession == 2) {
            return "minecraft:cleric";
        } else if (profession == 3) {
            if (career == 2) {
                return "minecraft:weaponsmith";
            } else {
                return career == 3 ? "minecraft:toolsmith" : "minecraft:armorer";
            }
        } else if (profession == 4) {
            return career == 2 ? "minecraft:leatherworker" : "minecraft:butcher";
        } else {
            return profession == 5 ? "minecraft:nitwit" : "minecraft:none";
        }
    }
}

引用的其他类