LegacyDimensionIdFix.java
net.minecraft.util.datafix.fixes.LegacyDimensionIdFix
信息
- 全限定名:net.minecraft.util.datafix.fixes.LegacyDimensionIdFix
- 类型:public class
- 包:net.minecraft.util.datafix.fixes
- 源码路径:src/main/java/net/minecraft/util/datafix/fixes/LegacyDimensionIdFix.java
- 起始行号:L12
- 继承:DataFix
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
- 无
构造器
public LegacyDimensionIdFix(Schema outputSchema) @ L13
- 构造器名:LegacyDimensionIdFix
- 源码定位:L13
- 修饰符:public
参数:
- outputSchema: Schema
说明:
TODO
方法
下面的方法块按源码顺序生成。
public TypeRewriteRule makeRule() @ L17
- 方法名:makeRule
- 源码定位:L17
- 返回类型:TypeRewriteRule
- 修饰符:public
参数:
- 无
说明:
TODO
private <T> Dynamic<T> fixMap(Dynamic<T> remainder) @ L30
- 方法名:fixMap
- 源码定位:L30
- 返回类型:
Dynamic - 修饰符:private
参数:
- remainder: Dynamic
说明:
TODO
private <T> Dynamic<T> fixPlayer(Dynamic<T> remainder) @ L34
- 方法名:fixPlayer
- 源码定位:L34
- 返回类型:
Dynamic - 修饰符:private
参数:
- remainder: Dynamic
说明:
TODO
private <T> Dynamic<T> fixDimensionId(Dynamic<T> id) @ L38
- 方法名:fixDimensionId
- 源码定位:L38
- 返回类型:
Dynamic - 修饰符:private
参数:
- id: Dynamic
说明:
TODO
代码
public class LegacyDimensionIdFix extends DataFix {
public LegacyDimensionIdFix(Schema outputSchema) {
super(outputSchema, false);
}
@Override
public TypeRewriteRule makeRule() {
TypeRewriteRule playerRule = this.fixTypeEverywhereTyped(
"PlayerLegacyDimensionFix", this.getInputSchema().getType(References.PLAYER), input -> input.update(DSL.remainderFinder(), this::fixPlayer)
);
Type<?> dataType = this.getInputSchema().getType(References.SAVED_DATA_MAP_DATA);
OpticFinder<?> mapDataF = dataType.findField("data");
TypeRewriteRule mapRule = this.fixTypeEverywhereTyped(
"MapLegacyDimensionFix", dataType, input -> input.updateTyped(mapDataF, data -> data.update(DSL.remainderFinder(), this::fixMap))
);
return TypeRewriteRule.seq(playerRule, mapRule);
}
private <T> Dynamic<T> fixMap(Dynamic<T> remainder) {
return remainder.update("dimension", this::fixDimensionId);
}
private <T> Dynamic<T> fixPlayer(Dynamic<T> remainder) {
return remainder.update("Dimension", this::fixDimensionId);
}
private <T> Dynamic<T> fixDimensionId(Dynamic<T> id) {
return DataFixUtils.orElse(id.asNumber().result().map(legacyId -> {
return switch (legacyId.intValue()) {
case -1 -> id.createString("minecraft:the_nether");
case 1 -> id.createString("minecraft:the_end");
default -> id.createString("minecraft:overworld");
};
}), id);
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/返回值
- 引用位置: