Back to mods
KubeJS Curios project artwork

CurseForge · Minecraft mod

KubeJS Curios

Curios integration for Kubejs

Choose a version Pick your version below, then grab the matching file.

Quick answer

Which KubeJS Curios release should I use?

Updated 1 year ago
Latest stable file kubejs_curios_neoforge_1.21.1-1.0.4.jar
Game version 1.21.1
Loader NeoForge

KubeJS Curios kubejs_curios_neoforge_1.21.1-1.0.4.jar targets 1.21.1 with NeoForge. The project page does not say whether this file belongs on the client, dedicated server, or both. All 3 required mods have matching files.

Where it goes

Is KubeJS Curios required on the client, server, or both?

The project page does not say whether this file belongs on the client, dedicated server, or both.

Client Source doesn’t say
Dedicated server Source doesn’t say
Loader for this release NeoForge
Required install it here Optional supported, not mandatory Not supported do not install here Source doesn’t say do not assume

The source does not explicitly classify this release as client-only or server-only.

What else does KubeJS Curios kubejs_curios_neoforge_1.21.1-1.0.4.jar need?

kubejs_curios_neoforge_1.21.1-1.0.4.jar. Change the file and its required mods may change too.

All 3 required mods have matching files

Install Curios API, KubeJS, Rhino first. We found matching files for this game-version and loader setup. 1 comes through another mod in the chain.

2 listed on this file 1 pulled in by one of those mods
Curios API Needed by KubeJS Curios kubejs_curios_neoforge_1.21.1-1.0.4.jar
required
Matching file found Matched file: curios-neoforge-9.5.1+1.21.1.jar
KubeJS Needed by KubeJS Curios kubejs_curios_neoforge_1.21.1-1.0.4.jar
required
Matching file found Matched file: KubeJS NeoForge 2101.7.2-build.368
Rhino Needed by KubeJS
pulled in
Matching file found Matched file: Rhino 2101.2.7-build.85

1 extra mod was pulled in by another dependency. Indented rows show who needs each one. We only count dependency files that match this setup. A file for another loader does not fill the gap.

Before you install it

Add KubeJS Curios without breaking your instance.

Built for KubeJS Curios kubejs_curios_neoforge_1.21.1-1.0.4.jar. Pick another file and the loader, install side or required mods may change.

  1. 01

    Stick to this file

    Use kubejs_curios_neoforge_1.21.1-1.0.4.jar. It targets 1.21.1 with NeoForge; another release may have different loader, side or dependency requirements.

  2. 02

    Bring the mods it needs

    Install Curios API, KubeJS, Rhino first. We found matching files for this game-version and loader setup. 1 comes through another mod in the chain.

  3. 03

    Put it on the correct side

    The project page does not say whether this file belongs on the client, dedicated server, or both.

  4. 04

    Pick the file you checked

    Use the “Get this file” button beside kubejs_curios_neoforge_1.21.1-1.0.4.jar. It opens that exact file at the source.

About this project

What does KubeJS Curios add?

Curios integration for KubeJS

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()
        }
    )
})

Project description from CurseForge.

Pick your setup

KubeJS Curios by Minecraft version and loader

Choose the version and loader you play, then open the matching release.

2 available setups

Check the dependencies, then try the file in a copied instance before changing a world you care about.

Recent files

KubeJS Curios versions and loaders

9 of 9 releases match

Looking for an older file? The official CurseForge project page is in Resources.