ChunkStructuresTemplateRenameFix.java

net.minecraft.util.datafix.fixes.ChunkStructuresTemplateRenameFix

信息

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

    TODO

字段/常量

  • RENAMES
    • 类型: ImmutableMap<String,Pair<String,ImmutableMap<String,String>>>
    • 修饰符: private static final
    • 源码定位: L13
    • 说明:

      TODO

内部类/嵌套类型

构造器

public ChunkStructuresTemplateRenameFix(Schema outputSchema, boolean changesType) @ L122

  • 构造器名:ChunkStructuresTemplateRenameFix
  • 源码定位:L122
  • 修饰符:public

参数:

  • outputSchema: Schema
  • changesType: boolean

说明:

TODO

方法

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

public TypeRewriteRule makeRule() @ L126

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

参数:

说明:

TODO

private Dynamic<?> fixChildren(Dynamic<?> structure) @ L132

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

参数:

  • structure: Dynamic<?>

说明:

TODO

private Dynamic<?> fixTag(Dynamic<?> structure, Dynamic<?> child) @ L136

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

参数:

  • structure: Dynamic<?>
  • child: Dynamic<?>

说明:

TODO

代码

public class ChunkStructuresTemplateRenameFix extends DataFix {
    private static final ImmutableMap<String, Pair<String, ImmutableMap<String, String>>> RENAMES = ImmutableMap.<String, Pair<String, ImmutableMap<String, String>>>builder()
        .put(
            "EndCity",
            Pair.of(
                "ECP",
                ImmutableMap.<String, String>builder()
                    .put("second_floor", "second_floor_1")
                    .put("third_floor", "third_floor_1")
                    .put("third_floor_c", "third_floor_2")
                    .build()
            )
        )
        .put(
            "Mansion",
            Pair.of(
                "WMP",
                ImmutableMap.<String, String>builder()
                    .put("carpet_south", "carpet_south_1")
                    .put("carpet_west", "carpet_west_1")
                    .put("indoors_door", "indoors_door_1")
                    .put("indoors_wall", "indoors_wall_1")
                    .build()
            )
        )
        .put(
            "Igloo",
            Pair.of(
                "Iglu",
                ImmutableMap.<String, String>builder()
                    .put("minecraft:igloo/igloo_bottom", "minecraft:igloo/bottom")
                    .put("minecraft:igloo/igloo_middle", "minecraft:igloo/middle")
                    .put("minecraft:igloo/igloo_top", "minecraft:igloo/top")
                    .build()
            )
        )
        .put(
            "Ocean_Ruin",
            Pair.of(
                "ORP",
                ImmutableMap.<String, String>builder()
                    .put("minecraft:ruin/big_ruin1_brick", "minecraft:underwater_ruin/big_brick_1")
                    .put("minecraft:ruin/big_ruin2_brick", "minecraft:underwater_ruin/big_brick_2")
                    .put("minecraft:ruin/big_ruin3_brick", "minecraft:underwater_ruin/big_brick_3")
                    .put("minecraft:ruin/big_ruin8_brick", "minecraft:underwater_ruin/big_brick_8")
                    .put("minecraft:ruin/big_ruin1_cracked", "minecraft:underwater_ruin/big_cracked_1")
                    .put("minecraft:ruin/big_ruin2_cracked", "minecraft:underwater_ruin/big_cracked_2")
                    .put("minecraft:ruin/big_ruin3_cracked", "minecraft:underwater_ruin/big_cracked_3")
                    .put("minecraft:ruin/big_ruin8_cracked", "minecraft:underwater_ruin/big_cracked_8")
                    .put("minecraft:ruin/big_ruin1_mossy", "minecraft:underwater_ruin/big_mossy_1")
                    .put("minecraft:ruin/big_ruin2_mossy", "minecraft:underwater_ruin/big_mossy_2")
                    .put("minecraft:ruin/big_ruin3_mossy", "minecraft:underwater_ruin/big_mossy_3")
                    .put("minecraft:ruin/big_ruin8_mossy", "minecraft:underwater_ruin/big_mossy_8")
                    .put("minecraft:ruin/big_ruin_warm4", "minecraft:underwater_ruin/big_warm_4")
                    .put("minecraft:ruin/big_ruin_warm5", "minecraft:underwater_ruin/big_warm_5")
                    .put("minecraft:ruin/big_ruin_warm6", "minecraft:underwater_ruin/big_warm_6")
                    .put("minecraft:ruin/big_ruin_warm7", "minecraft:underwater_ruin/big_warm_7")
                    .put("minecraft:ruin/ruin1_brick", "minecraft:underwater_ruin/brick_1")
                    .put("minecraft:ruin/ruin2_brick", "minecraft:underwater_ruin/brick_2")
                    .put("minecraft:ruin/ruin3_brick", "minecraft:underwater_ruin/brick_3")
                    .put("minecraft:ruin/ruin4_brick", "minecraft:underwater_ruin/brick_4")
                    .put("minecraft:ruin/ruin5_brick", "minecraft:underwater_ruin/brick_5")
                    .put("minecraft:ruin/ruin6_brick", "minecraft:underwater_ruin/brick_6")
                    .put("minecraft:ruin/ruin7_brick", "minecraft:underwater_ruin/brick_7")
                    .put("minecraft:ruin/ruin8_brick", "minecraft:underwater_ruin/brick_8")
                    .put("minecraft:ruin/ruin1_cracked", "minecraft:underwater_ruin/cracked_1")
                    .put("minecraft:ruin/ruin2_cracked", "minecraft:underwater_ruin/cracked_2")
                    .put("minecraft:ruin/ruin3_cracked", "minecraft:underwater_ruin/cracked_3")
                    .put("minecraft:ruin/ruin4_cracked", "minecraft:underwater_ruin/cracked_4")
                    .put("minecraft:ruin/ruin5_cracked", "minecraft:underwater_ruin/cracked_5")
                    .put("minecraft:ruin/ruin6_cracked", "minecraft:underwater_ruin/cracked_6")
                    .put("minecraft:ruin/ruin7_cracked", "minecraft:underwater_ruin/cracked_7")
                    .put("minecraft:ruin/ruin8_cracked", "minecraft:underwater_ruin/cracked_8")
                    .put("minecraft:ruin/ruin1_mossy", "minecraft:underwater_ruin/mossy_1")
                    .put("minecraft:ruin/ruin2_mossy", "minecraft:underwater_ruin/mossy_2")
                    .put("minecraft:ruin/ruin3_mossy", "minecraft:underwater_ruin/mossy_3")
                    .put("minecraft:ruin/ruin4_mossy", "minecraft:underwater_ruin/mossy_4")
                    .put("minecraft:ruin/ruin5_mossy", "minecraft:underwater_ruin/mossy_5")
                    .put("minecraft:ruin/ruin6_mossy", "minecraft:underwater_ruin/mossy_6")
                    .put("minecraft:ruin/ruin7_mossy", "minecraft:underwater_ruin/mossy_7")
                    .put("minecraft:ruin/ruin8_mossy", "minecraft:underwater_ruin/mossy_8")
                    .put("minecraft:ruin/ruin_warm1", "minecraft:underwater_ruin/warm_1")
                    .put("minecraft:ruin/ruin_warm2", "minecraft:underwater_ruin/warm_2")
                    .put("minecraft:ruin/ruin_warm3", "minecraft:underwater_ruin/warm_3")
                    .put("minecraft:ruin/ruin_warm4", "minecraft:underwater_ruin/warm_4")
                    .put("minecraft:ruin/ruin_warm5", "minecraft:underwater_ruin/warm_5")
                    .put("minecraft:ruin/ruin_warm6", "minecraft:underwater_ruin/warm_6")
                    .put("minecraft:ruin/ruin_warm7", "minecraft:underwater_ruin/warm_7")
                    .put("minecraft:ruin/ruin_warm8", "minecraft:underwater_ruin/warm_8")
                    .put("minecraft:ruin/big_brick_1", "minecraft:underwater_ruin/big_brick_1")
                    .put("minecraft:ruin/big_brick_2", "minecraft:underwater_ruin/big_brick_2")
                    .put("minecraft:ruin/big_brick_3", "minecraft:underwater_ruin/big_brick_3")
                    .put("minecraft:ruin/big_brick_8", "minecraft:underwater_ruin/big_brick_8")
                    .put("minecraft:ruin/big_mossy_1", "minecraft:underwater_ruin/big_mossy_1")
                    .put("minecraft:ruin/big_mossy_2", "minecraft:underwater_ruin/big_mossy_2")
                    .put("minecraft:ruin/big_mossy_3", "minecraft:underwater_ruin/big_mossy_3")
                    .put("minecraft:ruin/big_mossy_8", "minecraft:underwater_ruin/big_mossy_8")
                    .put("minecraft:ruin/big_cracked_1", "minecraft:underwater_ruin/big_cracked_1")
                    .put("minecraft:ruin/big_cracked_2", "minecraft:underwater_ruin/big_cracked_2")
                    .put("minecraft:ruin/big_cracked_3", "minecraft:underwater_ruin/big_cracked_3")
                    .put("minecraft:ruin/big_cracked_8", "minecraft:underwater_ruin/big_cracked_8")
                    .put("minecraft:ruin/big_warm_4", "minecraft:underwater_ruin/big_warm_4")
                    .put("minecraft:ruin/big_warm_5", "minecraft:underwater_ruin/big_warm_5")
                    .put("minecraft:ruin/big_warm_6", "minecraft:underwater_ruin/big_warm_6")
                    .put("minecraft:ruin/big_warm_7", "minecraft:underwater_ruin/big_warm_7")
                    .build()
            )
        )
        .build();
 
    public ChunkStructuresTemplateRenameFix(Schema outputSchema, boolean changesType) {
        super(outputSchema, changesType);
    }
 
    @Override
    public TypeRewriteRule makeRule() {
        Type<?> type = this.getInputSchema().getType(References.STRUCTURE_FEATURE);
        return this.fixTypeEverywhereTyped("ChunkStructuresTemplateRenameFix", type, input -> input.update(DSL.remainderFinder(), this::fixChildren));
    }
 
    private Dynamic<?> fixChildren(Dynamic<?> structure) {
        return structure.update("Children", children -> structure.createList(children.asStream().map(child -> this.fixTag(structure, (Dynamic<?>)child))));
    }
 
    private Dynamic<?> fixTag(Dynamic<?> structure, Dynamic<?> child) {
        String id = structure.get("id").asString("");
        if (RENAMES.containsKey(id)) {
            Pair<String, ImmutableMap<String, String>> data = RENAMES.get(id);
            if (data.getFirst().equals(child.get("id").asString(""))) {
                String template = child.get("Template").asString("");
                child = child.set("Template", child.createString(data.getSecond().getOrDefault(template, template)));
            }
        }
 
        return child;
    }
}

引用的其他类