Use this mod, you can:
1.Get CuriosHelper from LivingEntity
2.Create Custom Curios
3.Add Curios capabilities to items
4.Register or remove Curios render
LivingEntity Curios Helper
Registry Curios & Item Modify (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)
)
})
})
Render (Client)
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()
}
)
})