EntityVariantFix.java
net.minecraft.util.datafix.fixes.EntityVariantFix
信息
- 全限定名:net.minecraft.util.datafix.fixes.EntityVariantFix
- 类型:public class
- 包:net.minecraft.util.datafix.fixes
- 源码路径:src/main/java/net/minecraft/util/datafix/fixes/EntityVariantFix.java
- 起始行号:L13
- 继承:NamedEntityFix
- 职责:
TODO
字段/常量
-
fieldName- 类型:
String - 修饰符:
private final - 源码定位:
L14 - 说明:
TODO
- 类型:
-
idConversions- 类型:
IntFunction<String> - 修饰符:
private final - 源码定位:
L15 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public EntityVariantFix(Schema outputSchema, String name, TypeReference type, String entityName, String fieldName, IntFunction<String> idConversions) @ L17
- 构造器名:EntityVariantFix
- 源码定位:L17
- 修饰符:public
参数:
- outputSchema: Schema
- name: String
- type: TypeReference
- entityName: String
- fieldName: String
- idConversions: IntFunction
说明:
TODO
方法
下面的方法块按源码顺序生成。
private static <T> Dynamic<T> updateAndRename(Dynamic<T> input, String oldKey, String newKey, Function<Dynamic<T>,Dynamic<T>> function) @ L23
- 方法名:updateAndRename
- 源码定位:L23
- 返回类型:
Dynamic - 修饰符:private static
参数:
- input: Dynamic
- oldKey: String
- newKey: String
- function: Function<Dynamic
,Dynamic >
说明:
TODO
protected Typed<?> fix(Typed<?> typed) @ L31
- 方法名:fix
- 源码定位:L31
- 返回类型:Typed<?>
- 修饰符:protected
参数:
- typed: Typed<?>
说明:
TODO
代码
public class EntityVariantFix extends NamedEntityFix {
private final String fieldName;
private final IntFunction<String> idConversions;
public EntityVariantFix(Schema outputSchema, String name, TypeReference type, String entityName, String fieldName, IntFunction<String> idConversions) {
super(outputSchema, false, name, type, entityName);
this.fieldName = fieldName;
this.idConversions = idConversions;
}
private static <T> Dynamic<T> updateAndRename(Dynamic<T> input, String oldKey, String newKey, Function<Dynamic<T>, Dynamic<T>> function) {
return input.map(v -> {
DynamicOps<T> ops = input.getOps();
Function<T, T> liftedFunction = value -> function.apply(new Dynamic<>(ops, value)).getValue();
return ops.get((T)v, oldKey).map(fieldValue -> ops.set((T)v, newKey, liftedFunction.apply((T)fieldValue))).result().orElse((T)v);
});
}
@Override
protected Typed<?> fix(Typed<?> typed) {
return typed.update(
DSL.remainderFinder(),
remainder -> updateAndRename(
remainder,
this.fieldName,
"variant",
catType -> DataFixUtils.orElse(catType.asNumber().map(e -> catType.createString(this.idConversions.apply(e.intValue()))).result(), catType)
)
);
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
继承
- 引用位置:
-
- 引用位置:
参数/返回值
- 引用位置: