HorseBodyArmorItemFix.java

net.minecraft.util.datafix.fixes.HorseBodyArmorItemFix

信息

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

    TODO

字段/常量

  • previousBodyArmorTag

    • 类型: String
    • 修饰符: private final
    • 源码定位: L9
    • 说明:

      TODO

  • clearArmorItems

    • 类型: boolean
    • 修饰符: private final
    • 源码定位: L10
    • 说明:

      TODO

内部类/嵌套类型

构造器

public HorseBodyArmorItemFix(Schema outputSchema, String entityName, String previousBodyArmorTag, boolean clearArmorItems) @ L12

  • 构造器名:HorseBodyArmorItemFix
  • 源码定位:L12
  • 修饰符:public

参数:

  • outputSchema: Schema
  • entityName: String
  • previousBodyArmorTag: String
  • clearArmorItems: boolean

说明:

TODO

方法

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

protected <T> Dynamic<T> fix(Dynamic<T> input) @ L18

  • 方法名:fix
  • 源码定位:L18
  • 返回类型: Dynamic
  • 修饰符:protected

参数:

  • input: Dynamic

说明:

TODO

代码

public class HorseBodyArmorItemFix extends NamedEntityWriteReadFix {
    private final String previousBodyArmorTag;
    private final boolean clearArmorItems;
 
    public HorseBodyArmorItemFix(Schema outputSchema, String entityName, String previousBodyArmorTag, boolean clearArmorItems) {
        super(outputSchema, true, "Horse armor fix for " + entityName, References.ENTITY, entityName);
        this.previousBodyArmorTag = previousBodyArmorTag;
        this.clearArmorItems = clearArmorItems;
    }
 
    @Override
    protected <T> Dynamic<T> fix(Dynamic<T> input) {
        Optional<? extends Dynamic<?>> previousBodyArmor = input.get(this.previousBodyArmorTag).result();
        if (previousBodyArmor.isPresent()) {
            Dynamic<?> bodyArmorItem = (Dynamic<?>)previousBodyArmor.get();
            Dynamic<T> output = input.remove(this.previousBodyArmorTag);
            if (this.clearArmorItems) {
                output = output.update(
                    "ArmorItems",
                    armorItems -> armorItems.createList(Streams.mapWithIndex(armorItems.asStream(), (entry, index) -> index == 2L ? entry.emptyMap() : entry))
                );
                output = output.update(
                    "ArmorDropChances",
                    armorDropChances -> armorDropChances.createList(
                        Streams.mapWithIndex(armorDropChances.asStream(), (entry, index) -> index == 2L ? entry.createFloat(0.085F) : entry)
                    )
                );
            }
 
            output = output.set("body_armor_item", bodyArmorItem);
            return output.set("body_armor_drop_chance", input.createFloat(2.0F));
        } else {
            return input;
        }
    }
}

引用的其他类