SaddleEquipmentSlotFix.java
net.minecraft.util.datafix.fixes.SaddleEquipmentSlotFix
信息
- 全限定名:net.minecraft.util.datafix.fixes.SaddleEquipmentSlotFix
- 类型:public class
- 包:net.minecraft.util.datafix.fixes
- 源码路径:src/main/java/net/minecraft/util/datafix/fixes/SaddleEquipmentSlotFix.java
- 起始行号:L18
- 继承:DataFix
- 职责:
TODO
字段/常量
-
ENTITIES_WITH_SADDLE_ITEM- 类型:
Set<String> - 修饰符:
private static final - 源码定位:
L19 - 说明:
TODO
- 类型:
-
ENTITIES_WITH_SADDLE_FLAG- 类型:
Set<String> - 修饰符:
private static final - 源码定位:
L29 - 说明:
TODO
- 类型:
-
SADDLE_FLAG- 类型:
String - 修饰符:
private static final - 源码定位:
L30 - 说明:
TODO
- 类型:
-
NEW_SADDLE- 类型:
String - 修饰符:
private static final - 源码定位:
L31 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public SaddleEquipmentSlotFix(Schema outputSchema) @ L33
- 构造器名:SaddleEquipmentSlotFix
- 源码定位:L33
- 修饰符:public
参数:
- outputSchema: Schema
说明:
TODO
方法
下面的方法块按源码顺序生成。
protected TypeRewriteRule makeRule() @ L37
- 方法名:makeRule
- 源码定位:L37
- 返回类型:TypeRewriteRule
- 修饰符:protected
参数:
- 无
说明:
TODO
private static Dynamic<?> fixEntityWithSaddleItem(Dynamic<?> input) @ L62
- 方法名:fixEntityWithSaddleItem
- 源码定位:L62
- 返回类型:Dynamic<?>
- 修饰符:private static
参数:
- input: Dynamic<?>
说明:
TODO
private static Dynamic<?> fixEntityWithSaddleFlag(Dynamic<?> tag) @ L66
- 方法名:fixEntityWithSaddleFlag
- 源码定位:L66
- 返回类型:Dynamic<?>
- 修饰符:private static
参数:
- tag: Dynamic<?>
说明:
TODO
private static Dynamic<?> fixDropChances(Dynamic<?> tag) @ L77
- 方法名:fixDropChances
- 源码定位:L77
- 返回类型:Dynamic<?>
- 修饰符:private static
参数:
- tag: Dynamic<?>
说明:
TODO
代码
public class SaddleEquipmentSlotFix extends DataFix {
private static final Set<String> ENTITIES_WITH_SADDLE_ITEM = Set.of(
"minecraft:horse",
"minecraft:skeleton_horse",
"minecraft:zombie_horse",
"minecraft:donkey",
"minecraft:mule",
"minecraft:camel",
"minecraft:llama",
"minecraft:trader_llama"
);
private static final Set<String> ENTITIES_WITH_SADDLE_FLAG = Set.of("minecraft:pig", "minecraft:strider");
private static final String SADDLE_FLAG = "Saddle";
private static final String NEW_SADDLE = "saddle";
public SaddleEquipmentSlotFix(Schema outputSchema) {
super(outputSchema, true);
}
@Override
protected TypeRewriteRule makeRule() {
TaggedChoiceType<String> entityIdType = (TaggedChoiceType<String>)this.getInputSchema().findChoiceType(References.ENTITY);
OpticFinder<Pair<String, ?>> entityIdF = DSL.typeFinder(entityIdType);
Type<?> inputType = this.getInputSchema().getType(References.ENTITY);
Type<?> outputType = this.getOutputSchema().getType(References.ENTITY);
Type<?> patchedInputType = ExtraDataFixUtils.patchSubType(inputType, inputType, outputType);
return this.fixTypeEverywhereTyped(
"SaddleEquipmentSlotFix",
inputType,
outputType,
input -> {
String entityId = input.getOptional(entityIdF).map(Pair::getFirst).map(NamespacedSchema::ensureNamespaced).orElse("");
Typed<?> fixedInput = ExtraDataFixUtils.cast(patchedInputType, input);
if (ENTITIES_WITH_SADDLE_ITEM.contains(entityId)) {
return Util.writeAndReadTypedOrThrow(fixedInput, outputType, SaddleEquipmentSlotFix::fixEntityWithSaddleItem);
} else {
return ENTITIES_WITH_SADDLE_FLAG.contains(entityId)
? Util.writeAndReadTypedOrThrow(fixedInput, outputType, SaddleEquipmentSlotFix::fixEntityWithSaddleFlag)
: ExtraDataFixUtils.cast(outputType, input);
}
}
);
}
private static Dynamic<?> fixEntityWithSaddleItem(Dynamic<?> input) {
return input.get("SaddleItem").result().isEmpty() ? input : fixDropChances(input.renameField("SaddleItem", "saddle"));
}
private static Dynamic<?> fixEntityWithSaddleFlag(Dynamic<?> tag) {
boolean hasSaddle = tag.get("Saddle").asBoolean(false);
tag = tag.remove("Saddle");
if (!hasSaddle) {
return tag;
} else {
Dynamic<?> saddleItem = tag.emptyMap().set("id", tag.createString("minecraft:saddle")).set("count", tag.createInt(1));
return fixDropChances(tag.set("saddle", saddleItem));
}
}
private static Dynamic<?> fixDropChances(Dynamic<?> tag) {
Dynamic<?> dropChances = tag.get("drop_chances").orElseEmptyMap().set("saddle", tag.createFloat(2.0F));
return tag.set("drop_chances", dropChances);
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Util.writeAndReadTypedOrThrow()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ExtraDataFixUtils.cast(), ExtraDataFixUtils.patchSubType()
- 引用位置:
-
- 引用位置:
参数/返回值
- 引用位置: