EntityUUIDFix.java
net.minecraft.util.datafix.fixes.EntityUUIDFix
信息
- 全限定名:net.minecraft.util.datafix.fixes.EntityUUIDFix
- 类型:public class
- 包:net.minecraft.util.datafix.fixes
- 源码路径:src/main/java/net/minecraft/util/datafix/fixes/EntityUUIDFix.java
- 起始行号:L14
- 继承:AbstractUUIDFix
- 职责:
TODO
字段/常量
-
LOGGER- 类型:
Logger - 修饰符:
private static final - 源码定位:
L15 - 说明:
TODO
- 类型:
-
ABSTRACT_HORSES- 类型:
Set<String> - 修饰符:
private static final - 源码定位:
L16 - 说明:
TODO
- 类型:
-
TAMEABLE_ANIMALS- 类型:
Set<String> - 修饰符:
private static final - 源码定位:
L17 - 说明:
TODO
- 类型:
-
ANIMALS- 类型:
Set<String> - 修饰符:
private static final - 源码定位:
L18 - 说明:
TODO
- 类型:
-
MOBS- 类型:
Set<String> - 修饰符:
private static final - 源码定位:
L19 - 说明:
TODO
- 类型:
-
LIVING_ENTITIES- 类型:
Set<String> - 修饰符:
private static final - 源码定位:
L20 - 说明:
TODO
- 类型:
-
PROJECTILES- 类型:
Set<String> - 修饰符:
private static final - 源码定位:
L21 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public EntityUUIDFix(Schema outputSchema) @ L23
- 构造器名:EntityUUIDFix
- 源码定位:L23
- 修饰符:public
参数:
- outputSchema: Schema
说明:
TODO
方法
下面的方法块按源码顺序生成。
protected TypeRewriteRule makeRule() @ L27
- 方法名:makeRule
- 源码定位:L27
- 返回类型:TypeRewriteRule
- 修饰符:protected
参数:
- 无
说明:
TODO
private static Dynamic<?> updatePiglin(Dynamic<?> tag) @ L68
- 方法名:updatePiglin
- 源码定位:L68
- 返回类型:Dynamic<?>
- 修饰符:private static
参数:
- tag: Dynamic<?>
说明:
TODO
private static Dynamic<?> updateEvokerFangs(Dynamic<?> tag) @ L80
- 方法名:updateEvokerFangs
- 源码定位:L80
- 返回类型:Dynamic<?>
- 修饰符:private static
参数:
- tag: Dynamic<?>
说明:
TODO
private static Dynamic<?> updateZombieVillager(Dynamic<?> tag) @ L84
- 方法名:updateZombieVillager
- 源码定位:L84
- 返回类型:Dynamic<?>
- 修饰符:private static
参数:
- tag: Dynamic<?>
说明:
TODO
private static Dynamic<?> updateAreaEffectCloud(Dynamic<?> tag) @ L88
- 方法名:updateAreaEffectCloud
- 源码定位:L88
- 返回类型:Dynamic<?>
- 修饰符:private static
参数:
- tag: Dynamic<?>
说明:
TODO
private static Dynamic<?> updateShulkerBullet(Dynamic<?> tag) @ L92
- 方法名:updateShulkerBullet
- 源码定位:L92
- 返回类型:Dynamic<?>
- 修饰符:private static
参数:
- tag: Dynamic<?>
说明:
TODO
private static Dynamic<?> updateItem(Dynamic<?> tag) @ L97
- 方法名:updateItem
- 源码定位:L97
- 返回类型:Dynamic<?>
- 修饰符:private static
参数:
- tag: Dynamic<?>
说明:
TODO
private static Dynamic<?> updateFox(Dynamic<?> tag) @ L102
- 方法名:updateFox
- 源码定位:L102
- 返回类型:Dynamic<?>
- 修饰符:private static
参数:
- tag: Dynamic<?>
说明:
TODO
private static Dynamic<?> updateHurtBy(Dynamic<?> tag) @ L112
- 方法名:updateHurtBy
- 源码定位:L112
- 返回类型:Dynamic<?>
- 修饰符:private static
参数:
- tag: Dynamic<?>
说明:
TODO
private static Dynamic<?> updateAnimalOwner(Dynamic<?> tag) @ L116
- 方法名:updateAnimalOwner
- 源码定位:L116
- 返回类型:Dynamic<?>
- 修饰符:private static
参数:
- tag: Dynamic<?>
说明:
TODO
private static Dynamic<?> updateAnimal(Dynamic<?> tag) @ L121
- 方法名:updateAnimal
- 源码定位:L121
- 返回类型:Dynamic<?>
- 修饰符:private static
参数:
- tag: Dynamic<?>
说明:
TODO
private static Dynamic<?> updateMob(Dynamic<?> tag) @ L126
- 方法名:updateMob
- 源码定位:L126
- 返回类型:Dynamic<?>
- 修饰符:private static
参数:
- tag: Dynamic<?>
说明:
TODO
public static Dynamic<?> updateLivingEntity(Dynamic<?> tag) @ L130
- 方法名:updateLivingEntity
- 源码定位:L130
- 返回类型:Dynamic<?>
- 修饰符:public static
参数:
- tag: Dynamic<?>
说明:
TODO
private static Dynamic<?> updateProjectile(Dynamic<?> tag) @ L147
- 方法名:updateProjectile
- 源码定位:L147
- 返回类型:Dynamic<?>
- 修饰符:private static
参数:
- tag: Dynamic<?>
说明:
TODO
public static Dynamic<?> updateEntityUUID(Dynamic<?> tag) @ L151
- 方法名:updateEntityUUID
- 源码定位:L151
- 返回类型:Dynamic<?>
- 修饰符:public static
参数:
- tag: Dynamic<?>
说明:
TODO
代码
public class EntityUUIDFix extends AbstractUUIDFix {
private static final Logger LOGGER = LogUtils.getLogger();
private static final Set<String> ABSTRACT_HORSES = Sets.newHashSet();
private static final Set<String> TAMEABLE_ANIMALS = Sets.newHashSet();
private static final Set<String> ANIMALS = Sets.newHashSet();
private static final Set<String> MOBS = Sets.newHashSet();
private static final Set<String> LIVING_ENTITIES = Sets.newHashSet();
private static final Set<String> PROJECTILES = Sets.newHashSet();
public EntityUUIDFix(Schema outputSchema) {
super(outputSchema, References.ENTITY);
}
@Override
protected TypeRewriteRule makeRule() {
return this.fixTypeEverywhereTyped("EntityUUIDFixes", this.getInputSchema().getType(this.typeReference), input -> {
input = input.update(DSL.remainderFinder(), EntityUUIDFix::updateEntityUUID);
for (String name : ABSTRACT_HORSES) {
input = this.updateNamedChoice(input, name, EntityUUIDFix::updateAnimalOwner);
}
for (String name : TAMEABLE_ANIMALS) {
input = this.updateNamedChoice(input, name, EntityUUIDFix::updateAnimalOwner);
}
for (String name : ANIMALS) {
input = this.updateNamedChoice(input, name, EntityUUIDFix::updateAnimal);
}
for (String name : MOBS) {
input = this.updateNamedChoice(input, name, EntityUUIDFix::updateMob);
}
for (String name : LIVING_ENTITIES) {
input = this.updateNamedChoice(input, name, EntityUUIDFix::updateLivingEntity);
}
for (String name : PROJECTILES) {
input = this.updateNamedChoice(input, name, EntityUUIDFix::updateProjectile);
}
input = this.updateNamedChoice(input, "minecraft:bee", EntityUUIDFix::updateHurtBy);
input = this.updateNamedChoice(input, "minecraft:zombified_piglin", EntityUUIDFix::updateHurtBy);
input = this.updateNamedChoice(input, "minecraft:fox", EntityUUIDFix::updateFox);
input = this.updateNamedChoice(input, "minecraft:item", EntityUUIDFix::updateItem);
input = this.updateNamedChoice(input, "minecraft:shulker_bullet", EntityUUIDFix::updateShulkerBullet);
input = this.updateNamedChoice(input, "minecraft:area_effect_cloud", EntityUUIDFix::updateAreaEffectCloud);
input = this.updateNamedChoice(input, "minecraft:zombie_villager", EntityUUIDFix::updateZombieVillager);
input = this.updateNamedChoice(input, "minecraft:evoker_fangs", EntityUUIDFix::updateEvokerFangs);
return this.updateNamedChoice(input, "minecraft:piglin", EntityUUIDFix::updatePiglin);
});
}
private static Dynamic<?> updatePiglin(Dynamic<?> tag) {
return tag.update(
"Brain",
brain -> brain.update(
"memories", memories -> memories.update("minecraft:angry_at", angryAt -> replaceUUIDString(angryAt, "value", "value").orElseGet(() -> {
LOGGER.warn("angry_at has no value.");
return angryAt;
}))
)
);
}
private static Dynamic<?> updateEvokerFangs(Dynamic<?> tag) {
return replaceUUIDLeastMost(tag, "OwnerUUID", "Owner").orElse(tag);
}
private static Dynamic<?> updateZombieVillager(Dynamic<?> tag) {
return replaceUUIDLeastMost(tag, "ConversionPlayer", "ConversionPlayer").orElse(tag);
}
private static Dynamic<?> updateAreaEffectCloud(Dynamic<?> tag) {
return replaceUUIDLeastMost(tag, "OwnerUUID", "Owner").orElse(tag);
}
private static Dynamic<?> updateShulkerBullet(Dynamic<?> tag) {
tag = replaceUUIDMLTag(tag, "Owner", "Owner").orElse(tag);
return replaceUUIDMLTag(tag, "Target", "Target").orElse(tag);
}
private static Dynamic<?> updateItem(Dynamic<?> tag) {
tag = replaceUUIDMLTag(tag, "Owner", "Owner").orElse(tag);
return replaceUUIDMLTag(tag, "Thrower", "Thrower").orElse(tag);
}
private static Dynamic<?> updateFox(Dynamic<?> tag) {
Optional<Dynamic<?>> trustedUUIDs = tag.get("TrustedUUIDs")
.result()
.map(uuidTags -> tag.createList(uuidTags.asStream().map(uuidTag -> createUUIDFromML((Dynamic<?>)uuidTag).orElseGet(() -> {
LOGGER.warn("Trusted contained invalid data.");
return uuidTag;
}))));
return DataFixUtils.orElse(trustedUUIDs.map(trusted -> tag.remove("TrustedUUIDs").set("Trusted", (Dynamic<?>)trusted)), tag);
}
private static Dynamic<?> updateHurtBy(Dynamic<?> tag) {
return replaceUUIDString(tag, "HurtBy", "HurtBy").orElse(tag);
}
private static Dynamic<?> updateAnimalOwner(Dynamic<?> tag) {
Dynamic<?> fixed = updateAnimal(tag);
return replaceUUIDString(fixed, "OwnerUUID", "Owner").orElse(fixed);
}
private static Dynamic<?> updateAnimal(Dynamic<?> tag) {
Dynamic<?> fixed = updateMob(tag);
return replaceUUIDLeastMost(fixed, "LoveCause", "LoveCause").orElse(fixed);
}
private static Dynamic<?> updateMob(Dynamic<?> tag) {
return updateLivingEntity(tag).update("Leash", leashTag -> replaceUUIDLeastMost(leashTag, "UUID", "UUID").orElse(leashTag));
}
public static Dynamic<?> updateLivingEntity(Dynamic<?> tag) {
return tag.update(
"Attributes",
attributes -> tag.createList(
attributes.asStream()
.map(
attribute -> attribute.update(
"Modifiers",
modifiers -> attribute.createList(
modifiers.asStream().map(modifier -> replaceUUIDLeastMost((Dynamic<?>)modifier, "UUID", "UUID").orElse((Dynamic<?>)modifier))
)
)
)
)
);
}
private static Dynamic<?> updateProjectile(Dynamic<?> tag) {
return DataFixUtils.orElse(tag.get("OwnerUUID").result().map(owner -> tag.remove("OwnerUUID").set("Owner", (Dynamic<?>)owner)), tag);
}
public static Dynamic<?> updateEntityUUID(Dynamic<?> tag) {
return replaceUUIDLeastMost(tag, "UUID", "UUID").orElse(tag);
}
static {
ABSTRACT_HORSES.add("minecraft:donkey");
ABSTRACT_HORSES.add("minecraft:horse");
ABSTRACT_HORSES.add("minecraft:llama");
ABSTRACT_HORSES.add("minecraft:mule");
ABSTRACT_HORSES.add("minecraft:skeleton_horse");
ABSTRACT_HORSES.add("minecraft:trader_llama");
ABSTRACT_HORSES.add("minecraft:zombie_horse");
TAMEABLE_ANIMALS.add("minecraft:cat");
TAMEABLE_ANIMALS.add("minecraft:parrot");
TAMEABLE_ANIMALS.add("minecraft:wolf");
ANIMALS.add("minecraft:bee");
ANIMALS.add("minecraft:chicken");
ANIMALS.add("minecraft:cow");
ANIMALS.add("minecraft:fox");
ANIMALS.add("minecraft:mooshroom");
ANIMALS.add("minecraft:ocelot");
ANIMALS.add("minecraft:panda");
ANIMALS.add("minecraft:pig");
ANIMALS.add("minecraft:polar_bear");
ANIMALS.add("minecraft:rabbit");
ANIMALS.add("minecraft:sheep");
ANIMALS.add("minecraft:turtle");
ANIMALS.add("minecraft:hoglin");
MOBS.add("minecraft:bat");
MOBS.add("minecraft:blaze");
MOBS.add("minecraft:cave_spider");
MOBS.add("minecraft:cod");
MOBS.add("minecraft:creeper");
MOBS.add("minecraft:dolphin");
MOBS.add("minecraft:drowned");
MOBS.add("minecraft:elder_guardian");
MOBS.add("minecraft:ender_dragon");
MOBS.add("minecraft:enderman");
MOBS.add("minecraft:endermite");
MOBS.add("minecraft:evoker");
MOBS.add("minecraft:ghast");
MOBS.add("minecraft:giant");
MOBS.add("minecraft:guardian");
MOBS.add("minecraft:husk");
MOBS.add("minecraft:illusioner");
MOBS.add("minecraft:magma_cube");
MOBS.add("minecraft:pufferfish");
MOBS.add("minecraft:zombified_piglin");
MOBS.add("minecraft:salmon");
MOBS.add("minecraft:shulker");
MOBS.add("minecraft:silverfish");
MOBS.add("minecraft:skeleton");
MOBS.add("minecraft:slime");
MOBS.add("minecraft:snow_golem");
MOBS.add("minecraft:spider");
MOBS.add("minecraft:squid");
MOBS.add("minecraft:stray");
MOBS.add("minecraft:tropical_fish");
MOBS.add("minecraft:vex");
MOBS.add("minecraft:villager");
MOBS.add("minecraft:iron_golem");
MOBS.add("minecraft:vindicator");
MOBS.add("minecraft:pillager");
MOBS.add("minecraft:wandering_trader");
MOBS.add("minecraft:witch");
MOBS.add("minecraft:wither");
MOBS.add("minecraft:wither_skeleton");
MOBS.add("minecraft:zombie");
MOBS.add("minecraft:zombie_villager");
MOBS.add("minecraft:phantom");
MOBS.add("minecraft:ravager");
MOBS.add("minecraft:piglin");
LIVING_ENTITIES.add("minecraft:armor_stand");
PROJECTILES.add("minecraft:arrow");
PROJECTILES.add("minecraft:dragon_fireball");
PROJECTILES.add("minecraft:firework_rocket");
PROJECTILES.add("minecraft:fireball");
PROJECTILES.add("minecraft:llama_spit");
PROJECTILES.add("minecraft:small_fireball");
PROJECTILES.add("minecraft:snowball");
PROJECTILES.add("minecraft:spectral_arrow");
PROJECTILES.add("minecraft:egg");
PROJECTILES.add("minecraft:ender_pearl");
PROJECTILES.add("minecraft:experience_bottle");
PROJECTILES.add("minecraft:potion");
PROJECTILES.add("minecraft:trident");
PROJECTILES.add("minecraft:wither_skull");
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
继承
- 引用位置:
-
- 引用位置:
参数/返回值
- 引用位置: