ItemStackUUIDFix.java
net.minecraft.util.datafix.fixes.ItemStackUUIDFix
信息
- 全限定名:net.minecraft.util.datafix.fixes.ItemStackUUIDFix
- 类型:public class
- 包:net.minecraft.util.datafix.fixes
- 源码路径:src/main/java/net/minecraft/util/datafix/fixes/ItemStackUUIDFix.java
- 起始行号:L11
- 继承:AbstractUUIDFix
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
- 无
构造器
public ItemStackUUIDFix(Schema outputSchema) @ L12
- 构造器名:ItemStackUUIDFix
- 源码定位:L12
- 修饰符:public
参数:
- outputSchema: Schema
说明:
TODO
方法
下面的方法块按源码顺序生成。
public TypeRewriteRule makeRule() @ L16
- 方法名:makeRule
- 源码定位:L16
- 返回类型:TypeRewriteRule
- 修饰符:public
参数:
- 无
说明:
TODO
private Dynamic<?> updateAttributeModifiers(Dynamic<?> tag) @ L32
- 方法名:updateAttributeModifiers
- 源码定位:L32
- 返回类型:Dynamic<?>
- 修饰符:private
参数:
- tag: Dynamic<?>
说明:
TODO
private Dynamic<?> updateSkullOwner(Dynamic<?> tag) @ L41
- 方法名:updateSkullOwner
- 源码定位:L41
- 返回类型:Dynamic<?>
- 修饰符:private
参数:
- tag: Dynamic<?>
说明:
TODO
代码
public class ItemStackUUIDFix extends AbstractUUIDFix {
public ItemStackUUIDFix(Schema outputSchema) {
super(outputSchema, References.ITEM_STACK);
}
@Override
public TypeRewriteRule makeRule() {
OpticFinder<Pair<String, String>> idF = DSL.fieldFinder("id", DSL.named(References.ITEM_NAME.typeName(), NamespacedSchema.namespacedString()));
return this.fixTypeEverywhereTyped("ItemStackUUIDFix", this.getInputSchema().getType(this.typeReference), input -> {
OpticFinder<?> itemTagFinder = input.getType().findField("tag");
return input.updateTyped(itemTagFinder, typedTag -> typedTag.update(DSL.remainderFinder(), tag -> {
tag = this.updateAttributeModifiers(tag);
if (input.getOptional(idF).map(idPair -> "minecraft:player_head".equals(idPair.getSecond())).orElse(false)) {
tag = this.updateSkullOwner(tag);
}
return tag;
}));
});
}
private Dynamic<?> updateAttributeModifiers(Dynamic<?> tag) {
return tag.update(
"AttributeModifiers",
modifiers -> tag.createList(
modifiers.asStream().map(modifier -> replaceUUIDLeastMost((Dynamic<?>)modifier, "UUID", "UUID").orElse((Dynamic<?>)modifier))
)
);
}
private Dynamic<?> updateSkullOwner(Dynamic<?> tag) {
return tag.update("SkullOwner", skullOwner -> replaceUUIDString(skullOwner, "Id", "Id").orElse(skullOwner));
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
继承
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
NamespacedSchema.namespacedString()
- 引用位置:
-
- 引用位置:
参数/返回值
- 引用位置: