ItemStackEnchantmentNamesFix.java
net.minecraft.util.datafix.fixes.ItemStackEnchantmentNamesFix
信息
- 全限定名:net.minecraft.util.datafix.fixes.ItemStackEnchantmentNamesFix
- 类型:public class
- 包:net.minecraft.util.datafix.fixes
- 源码路径:src/main/java/net/minecraft/util/datafix/fixes/ItemStackEnchantmentNamesFix.java
- 起始行号:L15
- 继承:DataFix
- 职责:
TODO
字段/常量
MAP- 类型:
Int2ObjectMap<String> - 修饰符:
private static final - 源码定位:
L16 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public ItemStackEnchantmentNamesFix(Schema outputSchema, boolean changesType) @ L53
- 构造器名:ItemStackEnchantmentNamesFix
- 源码定位:L53
- 修饰符:public
参数:
- outputSchema: Schema
- changesType: boolean
说明:
TODO
方法
下面的方法块按源码顺序生成。
protected TypeRewriteRule makeRule() @ L57
- 方法名:makeRule
- 源码定位:L57
- 返回类型:TypeRewriteRule
- 修饰符:protected
参数:
- 无
说明:
TODO
private Dynamic<?> fixTag(Dynamic<?> tag) @ L66
- 方法名:fixTag
- 源码定位:L66
- 返回类型:Dynamic<?>
- 修饰符:private
参数:
- tag: Dynamic<?>
说明:
TODO
代码
public class ItemStackEnchantmentNamesFix extends DataFix {
private static final Int2ObjectMap<String> MAP = DataFixUtils.make(new Int2ObjectOpenHashMap<>(), map -> {
map.put(0, "minecraft:protection");
map.put(1, "minecraft:fire_protection");
map.put(2, "minecraft:feather_falling");
map.put(3, "minecraft:blast_protection");
map.put(4, "minecraft:projectile_protection");
map.put(5, "minecraft:respiration");
map.put(6, "minecraft:aqua_affinity");
map.put(7, "minecraft:thorns");
map.put(8, "minecraft:depth_strider");
map.put(9, "minecraft:frost_walker");
map.put(10, "minecraft:binding_curse");
map.put(16, "minecraft:sharpness");
map.put(17, "minecraft:smite");
map.put(18, "minecraft:bane_of_arthropods");
map.put(19, "minecraft:knockback");
map.put(20, "minecraft:fire_aspect");
map.put(21, "minecraft:looting");
map.put(22, "minecraft:sweeping");
map.put(32, "minecraft:efficiency");
map.put(33, "minecraft:silk_touch");
map.put(34, "minecraft:unbreaking");
map.put(35, "minecraft:fortune");
map.put(48, "minecraft:power");
map.put(49, "minecraft:punch");
map.put(50, "minecraft:flame");
map.put(51, "minecraft:infinity");
map.put(61, "minecraft:luck_of_the_sea");
map.put(62, "minecraft:lure");
map.put(65, "minecraft:loyalty");
map.put(66, "minecraft:impaling");
map.put(67, "minecraft:riptide");
map.put(68, "minecraft:channeling");
map.put(70, "minecraft:mending");
map.put(71, "minecraft:vanishing_curse");
});
public ItemStackEnchantmentNamesFix(Schema outputSchema, boolean changesType) {
super(outputSchema, changesType);
}
@Override
protected TypeRewriteRule makeRule() {
Type<?> item = this.getInputSchema().getType(References.ITEM_STACK);
OpticFinder<?> tagFinder = item.findField("tag");
return this.fixTypeEverywhereTyped(
"ItemStackEnchantmentFix", item, input -> input.updateTyped(tagFinder, tag -> tag.update(DSL.remainderFinder(), this::fixTag))
);
}
private Dynamic<?> fixTag(Dynamic<?> tag) {
Optional<? extends Dynamic<?>> newEnch = tag.get("ench")
.asStreamOpt()
.map(s -> s.map(element -> element.set("id", element.createString(MAP.getOrDefault(element.get("id").asInt(0), "null")))))
.map(tag::createList)
.result();
if (newEnch.isPresent()) {
tag = tag.remove("ench").set("Enchantments", (Dynamic<?>)newEnch.get());
}
return tag.update(
"StoredEnchantments",
list -> DataFixUtils.orElse(
list.asStreamOpt()
.map(l -> l.map(enchant -> enchant.set("id", enchant.createString(MAP.getOrDefault(enchant.get("id").asInt(0), "null")))))
.map(list::createList)
.result(),
list
)
);
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/返回值
- 引用位置: