ChestedHorsesInventoryZeroIndexingFix.java
net.minecraft.util.datafix.fixes.ChestedHorsesInventoryZeroIndexingFix
信息
- 全限定名:net.minecraft.util.datafix.fixes.ChestedHorsesInventoryZeroIndexingFix
- 类型:public class
- 包:net.minecraft.util.datafix.fixes
- 源码路径:src/main/java/net/minecraft/util/datafix/fixes/ChestedHorsesInventoryZeroIndexingFix.java
- 起始行号:L14
- 继承:DataFix
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
- 无
构造器
public ChestedHorsesInventoryZeroIndexingFix(Schema v3807) @ L15
- 构造器名:ChestedHorsesInventoryZeroIndexingFix
- 源码定位:L15
- 修饰符:public
参数:
- v3807: Schema
说明:
TODO
方法
下面的方法块按源码顺序生成。
protected TypeRewriteRule makeRule() @ L19
- 方法名:makeRule
- 源码定位:L19
- 返回类型:TypeRewriteRule
- 修饰符:protected
参数:
- 无
说明:
TODO
private TypeRewriteRule horseLikeInventoryIndexingFixer(OpticFinder<Pair<String,Pair<Either<Pair<String,String>,Unit>,Pair<Either<?,Unit>,Dynamic<?>>>>> itemStackFinder, Type<?> schema, String horseId) @ L34
- 方法名:horseLikeInventoryIndexingFixer
- 源码定位:L34
- 返回类型:TypeRewriteRule
- 修饰符:private
参数:
- itemStackFinder: OpticFinder<Pair<String,Pair<Either<Pair<String,String>,Unit>,Pair<Either,Dynamic>>>>
- schema: Type<?>
- horseId: String
说明:
TODO
代码
public class ChestedHorsesInventoryZeroIndexingFix extends DataFix {
public ChestedHorsesInventoryZeroIndexingFix(Schema v3807) {
super(v3807, false);
}
@Override
protected TypeRewriteRule makeRule() {
OpticFinder<Pair<String, Pair<Either<Pair<String, String>, Unit>, Pair<Either<?, Unit>, Dynamic<?>>>>> itemStackFinder = DSL.typeFinder(
(Type<Pair<String, Pair<Either<Pair<String, String>, Unit>, Pair<Either<?, Unit>, Dynamic<?>>>>>)this.getInputSchema()
.getType(References.ITEM_STACK)
);
Type<?> entityType = this.getInputSchema().getType(References.ENTITY);
return TypeRewriteRule.seq(
this.horseLikeInventoryIndexingFixer(itemStackFinder, entityType, "minecraft:llama"),
this.horseLikeInventoryIndexingFixer(itemStackFinder, entityType, "minecraft:trader_llama"),
this.horseLikeInventoryIndexingFixer(itemStackFinder, entityType, "minecraft:mule"),
this.horseLikeInventoryIndexingFixer(itemStackFinder, entityType, "minecraft:donkey")
);
}
private TypeRewriteRule horseLikeInventoryIndexingFixer(
OpticFinder<Pair<String, Pair<Either<Pair<String, String>, Unit>, Pair<Either<?, Unit>, Dynamic<?>>>>> itemStackFinder, Type<?> schema, String horseId
) {
Type<?> choiceType = this.getInputSchema().getChoiceType(References.ENTITY, horseId);
OpticFinder<?> entityFinder = DSL.namedChoice(horseId, choiceType);
OpticFinder<?> itemsFieldFinder = choiceType.findField("Items");
return this.fixTypeEverywhereTyped(
"Fix non-zero indexing in chest horse type " + horseId,
schema,
input -> input.updateTyped(
entityFinder,
horseLike -> horseLike.updateTyped(
itemsFieldFinder,
items -> items.update(
itemStackFinder,
namedStack -> namedStack.mapSecond(
itemStack -> itemStack.mapSecond(
pair -> pair.mapSecond(remainder -> remainder.update("Slot", slot -> slot.createByte((byte)(slot.asInt(2) - 2))))
)
)
)
)
)
);
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置: