BeehiveFieldRenameFix.java

net.minecraft.util.datafix.fixes.BeehiveFieldRenameFix

信息

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

    TODO

字段/常量

内部类/嵌套类型

构造器

public BeehiveFieldRenameFix(Schema outputSchema) @ L14

  • 构造器名:BeehiveFieldRenameFix
  • 源码定位:L14
  • 修饰符:public

参数:

  • outputSchema: Schema

说明:

TODO

方法

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

private Dynamic<?> fixBeehive(Dynamic<?> beehive) @ L18

  • 方法名:fixBeehive
  • 源码定位:L18
  • 返回类型:Dynamic<?>
  • 修饰符:private

参数:

  • beehive: Dynamic<?>

说明:

TODO

private Dynamic<?> fixBee(Dynamic<?> bee) @ L22

  • 方法名:fixBee
  • 源码定位:L22
  • 返回类型:Dynamic<?>
  • 修饰符:private

参数:

  • bee: Dynamic<?>

说明:

TODO

public TypeRewriteRule makeRule() @ L28

  • 方法名:makeRule
  • 源码定位:L28
  • 返回类型:TypeRewriteRule
  • 修饰符:public

参数:

说明:

TODO

代码

public class BeehiveFieldRenameFix extends DataFix {
    public BeehiveFieldRenameFix(Schema outputSchema) {
        super(outputSchema, true);
    }
 
    private Dynamic<?> fixBeehive(Dynamic<?> beehive) {
        return beehive.remove("Bees");
    }
 
    private Dynamic<?> fixBee(Dynamic<?> bee) {
        bee = bee.remove("EntityData");
        bee = bee.renameField("TicksInHive", "ticks_in_hive");
        return bee.renameField("MinOccupationTicks", "min_ticks_in_hive");
    }
 
    @Override
    public TypeRewriteRule makeRule() {
        Type<?> beehiveType = this.getInputSchema().getChoiceType(References.BLOCK_ENTITY, "minecraft:beehive");
        OpticFinder<?> beehiveF = DSL.namedChoice("minecraft:beehive", beehiveType);
        ListType<?> beesType = (ListType<?>)beehiveType.findFieldType("Bees");
        Type<?> beeType = beesType.getElement();
        OpticFinder<?> beesF = DSL.fieldFinder("Bees", beesType);
        OpticFinder<?> beeF = DSL.typeFinder(beeType);
        Type<?> entityType = this.getInputSchema().getType(References.BLOCK_ENTITY);
        Type<?> newEntityType = this.getOutputSchema().getType(References.BLOCK_ENTITY);
        return this.fixTypeEverywhereTyped(
            "BeehiveFieldRenameFix",
            entityType,
            newEntityType,
            input -> ExtraDataFixUtils.cast(
                newEntityType,
                input.updateTyped(
                    beehiveF,
                    beehive -> beehive.update(DSL.remainderFinder(), this::fixBeehive)
                        .updateTyped(beesF, bees -> bees.updateTyped(beeF, bee -> bee.update(DSL.remainderFinder(), this::fixBee)))
                )
            )
        );
    }
}

引用的其他类