通过添加这个 Mod,你可以:
从 LivingEntity 对象里获取 CuriosHelper。
添加自定义的 Curios 饰品;
为物品添加 Curio 饰品效果支持;
注册/移除 Curios 饰品渲染效果。
![]() | ![]() |
注册 Curios 饰品 / 修改已有的物品(startup):
StartupEvents.registry('item', event => {
event.create('test')
.attachCuriosCapability(
CuriosJSCapabilityBuilder.create()
.curioTick((slotContext, stack) => { })
.onEquip((slotContext, oldStack, newStack) => { })
.onUnequip((slotContext, oldStack, newStack) => { })
.canEquip((slotContext, stack) => true)
.canUnequip((slotContext, stack) => true)
.modifySlotsTooltip((tooltips, stack) => tooltips)
.addAttribute(
"minecraft:generic.max_health",
UUID,
20,
'addition'
)
.modifyAttribute(attributeModificationContext => {
let { slotContext, UUID, stack, modifiers } = attributeModificationContext
attributeModificationContext.modify(
"minecraft:generic.armor",
"identifier",
20,
'addition'
)
})
.canDrop((slotContext, source, lootingLevel, recentlyHit, stack) => true)
.modifyAttributesTooltip((tooltips, stack) => tooltips)
.modifyFortuneLevel((slotContext, lootContext, stack) => 0)
.modifyLootingLevel((slotContext, source, target, baseLooting, stack) => 0)
.makesPiglinsNeutral((slotContext, stack) => false)
.canWalkOnPowderedSnow((slotContext, stack) => false)
.isEnderMask((slotContext, enderMan, stack) => false)
)
.maxStackSize(1)
.tag("curios:head")
})
ItemEvents.modification(event => {
event.modify('apple', item => {
item.attachCuriosCapability(
CuriosJSCapabilityBuilder.create()
.curioTick((slotContext, stack) => { })
.onEquip((slotContext, oldStack, newStack) => { })
.onUnequip((slotContext, oldStack, newStack) => { })
.canEquip((slotContext, stack) => true)
.canUnequip((slotContext, stack) => true)
.modifySlotsTooltip((tooltips, stack) => tooltips)
.addAttribute(
"minecraft:generic.max_health",
"identifier",
20,
'addition'
)
.modifyAttribute(attributeModificationContext => {
let { slotContext, UUID, stack, modifiers } = attributeModificationContext
attributeModificationContext.modify(
"minecraft:generic.armor",
UUID,
20,
'addition'
)
})
.canDrop((slotContext, source, lootingLevel, recentlyHit, stack) => true)
.modifyAttributesTooltip((tooltips, stack) => tooltips)
.modifyFortuneLevel((slotContext, lootContext, stack) => 0)
.modifyLootingLevel((slotContext, source, target, baseLooting, stack) => 0)
.makesPiglinsNeutral((slotContext, stack) => false)
.canWalkOnPowderedSnow((slotContext, stack) => false)
.isEnderMask((slotContext, enderMan, stack) => false)
)
})
})
客户端饰品渲染:
CuriosJSEvents.registerRenderer(event => {
// remove curios render
event.remove('test')
// register curios render
event.register(
'apple',
context => {
let {
stack,
slotContext,
matrixStack,
renderLayerParent,
renderTypeBuffer,
light,
limbSwing,
limbSwingAmount,
partialTicks,
ageInTicks,
netHeadYaw,
headPitch
} = context
let { modelManager } = Client
let entity = slotContext.entity()
let model = modelManager.getModel(new ModelResourceLocation(stack.id, 'inventory'))
matrixStack.pushPose()
CuriosRenderer.translateIfSneaking(matrixStack, entity)
matrixStack.mulPose(new Quaternionf().rotateZ(JavaMath.toRadians(180)))
matrixStack.mulPose(RotationAxis.YP.deg(-netHeadYaw))
matrixStack.mulPose(RotationAxis.XP.deg(-headPitch))
Client.itemRenderer.render(
stack,
'head',
false,
matrixStack,
renderTypeBuffer,
light,
OverlayTexture.NO_OVERLAY,
model
)
matrixStack.popPose()
}
)
})