RenameEnchantmentsFix.java
net.minecraft.util.datafix.fixes.RenameEnchantmentsFix
信息
- 全限定名:net.minecraft.util.datafix.fixes.RenameEnchantmentsFix
- 类型:public class
- 包:net.minecraft.util.datafix.fixes
- 源码路径:src/main/java/net/minecraft/util/datafix/fixes/RenameEnchantmentsFix.java
- 起始行号:L14
- 继承:DataFix
- 职责:
TODO
字段/常量
-
name- 类型:
String - 修饰符:
final - 源码定位:
L15 - 说明:
TODO
- 类型:
-
renames- 类型:
Map<String,String> - 修饰符:
final - 源码定位:
L16 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public RenameEnchantmentsFix(Schema outputSchema, String name, Map<String,String> renames) @ L18
- 构造器名:RenameEnchantmentsFix
- 源码定位:L18
- 修饰符:public
参数:
- outputSchema: Schema
- name: String
- renames: Map<String,String>
说明:
TODO
方法
下面的方法块按源码顺序生成。
protected TypeRewriteRule makeRule() @ L24
- 方法名:makeRule
- 源码定位:L24
- 返回类型:TypeRewriteRule
- 修饰符:protected
参数:
- 无
说明:
TODO
private Dynamic<?> fixTag(Dynamic<?> tag) @ L31
- 方法名:fixTag
- 源码定位:L31
- 返回类型:Dynamic<?>
- 修饰符:private
参数:
- tag: Dynamic<?>
说明:
TODO
private Dynamic<?> fixEnchantmentList(Dynamic<?> itemStack, String field) @ L36
- 方法名:fixEnchantmentList
- 源码定位:L36
- 返回类型:Dynamic<?>
- 修饰符:private
参数:
- itemStack: Dynamic<?>
- field: String
说明:
TODO
代码
public class RenameEnchantmentsFix extends DataFix {
final String name;
final Map<String, String> renames;
public RenameEnchantmentsFix(Schema outputSchema, String name, Map<String, String> renames) {
super(outputSchema, false);
this.name = name;
this.renames = renames;
}
@Override
protected TypeRewriteRule makeRule() {
Type<?> item = this.getInputSchema().getType(References.ITEM_STACK);
OpticFinder<?> tagFinder = item.findField("tag");
return this.fixTypeEverywhereTyped(this.name, item, input -> input.updateTyped(tagFinder, tag -> tag.update(DSL.remainderFinder(), this::fixTag)));
}
private Dynamic<?> fixTag(Dynamic<?> tag) {
tag = this.fixEnchantmentList(tag, "Enchantments");
return this.fixEnchantmentList(tag, "StoredEnchantments");
}
private Dynamic<?> fixEnchantmentList(Dynamic<?> itemStack, String field) {
return itemStack.update(
field,
tag -> tag.asStreamOpt()
.map(
s -> s.map(
element -> element.update(
"id",
id -> id.asString()
.map(stringId -> element.createString(this.renames.getOrDefault(NamespacedSchema.ensureNamespaced(stringId), stringId)))
.mapOrElse(Function.identity(), fail -> id)
)
)
)
.map(tag::createList)
.mapOrElse(Function.identity(), fail -> tag)
);
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
NamespacedSchema.ensureNamespaced()
- 引用位置:
-
- 引用位置:
参数/返回值
- 引用位置: