BannerPatternFormatFix.java

net.minecraft.util.datafix.fixes.BannerPatternFormatFix

信息

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

    TODO

字段/常量

  • PATTERN_ID_MAP
    • 类型: Map<String,String>
    • 修饰符: private static final
    • 源码定位: L12
    • 说明:

      TODO

内部类/嵌套类型

构造器

public BannerPatternFormatFix(Schema outputSchema) @ L56

  • 构造器名:BannerPatternFormatFix
  • 源码定位:L56
  • 修饰符:public

参数:

  • outputSchema: Schema

说明:

TODO

方法

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

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

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

参数:

  • entity: Typed<?>

说明:

TODO

private static Dynamic<?> fixTag(Dynamic<?> tag) @ L65

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

参数:

  • tag: Dynamic<?>

说明:

TODO

private static Dynamic<?> fixLayer(Dynamic<?> dynamic) @ L69

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

参数:

  • dynamic: Dynamic<?>

说明:

TODO

代码

public class BannerPatternFormatFix extends NamedEntityFix {
    private static final Map<String, String> PATTERN_ID_MAP = Map.ofEntries(
        Map.entry("b", "minecraft:base"),
        Map.entry("bl", "minecraft:square_bottom_left"),
        Map.entry("br", "minecraft:square_bottom_right"),
        Map.entry("tl", "minecraft:square_top_left"),
        Map.entry("tr", "minecraft:square_top_right"),
        Map.entry("bs", "minecraft:stripe_bottom"),
        Map.entry("ts", "minecraft:stripe_top"),
        Map.entry("ls", "minecraft:stripe_left"),
        Map.entry("rs", "minecraft:stripe_right"),
        Map.entry("cs", "minecraft:stripe_center"),
        Map.entry("ms", "minecraft:stripe_middle"),
        Map.entry("drs", "minecraft:stripe_downright"),
        Map.entry("dls", "minecraft:stripe_downleft"),
        Map.entry("ss", "minecraft:small_stripes"),
        Map.entry("cr", "minecraft:cross"),
        Map.entry("sc", "minecraft:straight_cross"),
        Map.entry("bt", "minecraft:triangle_bottom"),
        Map.entry("tt", "minecraft:triangle_top"),
        Map.entry("bts", "minecraft:triangles_bottom"),
        Map.entry("tts", "minecraft:triangles_top"),
        Map.entry("ld", "minecraft:diagonal_left"),
        Map.entry("rd", "minecraft:diagonal_up_right"),
        Map.entry("lud", "minecraft:diagonal_up_left"),
        Map.entry("rud", "minecraft:diagonal_right"),
        Map.entry("mc", "minecraft:circle"),
        Map.entry("mr", "minecraft:rhombus"),
        Map.entry("vh", "minecraft:half_vertical"),
        Map.entry("hh", "minecraft:half_horizontal"),
        Map.entry("vhr", "minecraft:half_vertical_right"),
        Map.entry("hhb", "minecraft:half_horizontal_bottom"),
        Map.entry("bo", "minecraft:border"),
        Map.entry("cbo", "minecraft:curly_border"),
        Map.entry("gra", "minecraft:gradient"),
        Map.entry("gru", "minecraft:gradient_up"),
        Map.entry("bri", "minecraft:bricks"),
        Map.entry("glb", "minecraft:globe"),
        Map.entry("cre", "minecraft:creeper"),
        Map.entry("sku", "minecraft:skull"),
        Map.entry("flo", "minecraft:flower"),
        Map.entry("moj", "minecraft:mojang"),
        Map.entry("pig", "minecraft:piglin")
    );
 
    public BannerPatternFormatFix(Schema outputSchema) {
        super(outputSchema, false, "BannerPatternFormatFix", References.BLOCK_ENTITY, "minecraft:banner");
    }
 
    @Override
    protected Typed<?> fix(Typed<?> entity) {
        return entity.update(DSL.remainderFinder(), BannerPatternFormatFix::fixTag);
    }
 
    private static Dynamic<?> fixTag(Dynamic<?> tag) {
        return tag.renameAndFixField("Patterns", "patterns", patterns -> patterns.createList(patterns.asStream().map(BannerPatternFormatFix::fixLayer)));
    }
 
    private static Dynamic<?> fixLayer(Dynamic<?> dynamic) {
        dynamic = dynamic.renameAndFixField(
            "Pattern",
            "pattern",
            pattern -> DataFixUtils.orElse(pattern.asString().map(id -> PATTERN_ID_MAP.getOrDefault(id, id)).map(pattern::createString).result(), pattern)
        );
        dynamic = dynamic.set("color", dynamic.createString(ExtraDataFixUtils.dyeColorIdToName(dynamic.get("Color").asInt(0))));
        return dynamic.remove("Color");
    }
}

引用的其他类