MobSpawnerEntityIdentifiersFix.java
net.minecraft.util.datafix.fixes.MobSpawnerEntityIdentifiersFix
信息
- 全限定名:net.minecraft.util.datafix.fixes.MobSpawnerEntityIdentifiersFix
- 类型:public class
- 包:net.minecraft.util.datafix.fixes
- 源码路径:src/main/java/net/minecraft/util/datafix/fixes/MobSpawnerEntityIdentifiersFix.java
- 起始行号:L16
- 继承:DataFix
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
- 无
构造器
public MobSpawnerEntityIdentifiersFix(Schema outputSchema, boolean changesType) @ L17
- 构造器名:MobSpawnerEntityIdentifiersFix
- 源码定位:L17
- 修饰符:public
参数:
- outputSchema: Schema
- changesType: boolean
说明:
TODO
方法
下面的方法块按源码顺序生成。
private Dynamic<?> fix(Dynamic<?> input) @ L21
- 方法名:fix
- 源码定位:L21
- 返回类型:Dynamic<?>
- 修饰符:private
参数:
- input: Dynamic<?>
说明:
TODO
public TypeRewriteRule makeRule() @ L59
- 方法名:makeRule
- 源码定位:L59
- 返回类型:TypeRewriteRule
- 修饰符:public
参数:
- 无
说明:
TODO
代码
public class MobSpawnerEntityIdentifiersFix extends DataFix {
public MobSpawnerEntityIdentifiersFix(Schema outputSchema, boolean changesType) {
super(outputSchema, changesType);
}
private Dynamic<?> fix(Dynamic<?> input) {
if (!"MobSpawner".equals(input.get("id").asString(""))) {
return input;
} else {
Optional<String> entityId = input.get("EntityId").asString().result();
if (entityId.isPresent()) {
Dynamic<?> spawnData = DataFixUtils.orElse(input.get("SpawnData").result(), input.emptyMap());
spawnData = spawnData.set("id", spawnData.createString(entityId.get().isEmpty() ? "Pig" : entityId.get()));
input = input.set("SpawnData", spawnData);
input = input.remove("EntityId");
}
Optional<? extends Stream<? extends Dynamic<?>>> spawnPotentials = input.get("SpawnPotentials").asStreamOpt().result();
if (spawnPotentials.isPresent()) {
input = input.set(
"SpawnPotentials",
input.createList(
spawnPotentials.get()
.map(
spawnPotential -> {
Optional<String> type = spawnPotential.get("Type").asString().result();
if (type.isPresent()) {
Dynamic<?> spawnData = DataFixUtils.orElse(spawnPotential.get("Properties").result(), spawnPotential.emptyMap())
.set("id", spawnPotential.createString(type.get()));
return spawnPotential.set("Entity", spawnData).remove("Type").remove("Properties");
} else {
return spawnPotential;
}
}
)
)
);
}
return input;
}
}
@Override
public TypeRewriteRule makeRule() {
Type<?> newType = this.getOutputSchema().getType(References.UNTAGGED_SPAWNER);
return this.fixTypeEverywhereTyped("MobSpawnerEntityIdentifiersFix", this.getInputSchema().getType(References.UNTAGGED_SPAWNER), newType, input -> {
Dynamic<?> tag = input.get(DSL.remainderFinder());
tag = tag.set("id", tag.createString("MobSpawner"));
DataResult<? extends Pair<? extends Typed<?>, ?>> fixed = newType.readTyped(this.fix(tag));
return fixed.result().isEmpty() ? input : fixed.result().get().getFirst();
});
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/返回值
- 引用位置: