Skip to main content
Version: 1.20.x

物品重载(ItemOverrides

ItemOverridesBakedModel提供了一种处理ItemStack状态并返回新BakedModel的方法;此后,返回的模型将替换旧模型。ItemOverrides表示任意函数(BakedModel, ItemStack, ClientLevel, LivingEntity, int)BakedModel,使其适用于动态模型。在原版中,它用于实现物品属性重写。

ItemOverrides()

给定ItemOverride的列表,该构造函数将复制并烘焙该列表。可以使用#getOverrides访问烘焙后的覆盖。

resolve

这需要一个BakedModelItemStackClientLevelLivingEntityint来生成另一个用于渲染的BakedModel。这是模型可以处理其物品状态的地方。

这不应该改变存档。

getOverrides

返回一个不可变列表,该列表包含此ItemOverrides使用的所有BakedOverride。如果不适用,则返回空列表。

BakedOverride

这个类表示一个原版的物品覆盖,它为一个物品和一个模型的属性保存了几个ItemOverrides$PropertyMatcher,以备满足这些匹配器时使用。它们是原版物品JSON模型的overrides数组中的对象:

{
// 在一个原版JSON物品模型内
"overrides": [
{
// 这是一个ItemOverride
"predicate": {
// 这是Map<ResourceLocation, Float>,包含属性的名称以及它们的最小值
"example1:prop": 0.5
},
// 这是该覆盖的'location'或目标模型,如果上面的predicate匹配,则使用它
"model": "example1:item/model"
},
{
// 这是另一个ItemOverride
"predicate": {
"example2:prop": 1
},
"model": "example2:item/model"
}
]
}