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
5.Add CuriosJS Events
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()
}
)
})

Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft versions listed: 1.21.1, 1.20.1
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on CurseForge — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
KubeJS Curios is a free Minecraft Java mod. Compatible with Minecraft 1.21.1, 1.20.1. Downloaded 2,913,546 times (via CurseForge). Download it and open it directly in the game.