NeoGeckoJS

Quick rating

Community listing page, reviews here may not be monitored by the author.

NeoGeckoJS

By MrClockworkOwner

No reviews yet

Use GeckoLib to create animatable block/item/armor by KubeJS now on NeoForge!

Mod Loaders
Minecraft

About

Description

Gecko JS

Use GeckoLib to create animatable block/item/armor by simply using KubeJS!

This mod was originally made for Forge 1.20.1 and had no Modrinth Version, however this both ports and updates the mod for NeoForge 1.21.1 with just about perfect 1:1 replication so any original scripts and assets work almost the same!

What're some examples?

Any of the original examples should work pretty much the exact same, again it's just about 1:1.

Startup Script:

StartupEvents.registry("block", event => {

    const rotating = RawAnimation.begin().thenLoop("rotating");

    event.create("geckojs:example_block", "animatable")

        .box(1, 1, 1, 15, 15, 15, true)

        .animatableBlockEntity(blockEntity => {

            blockEntity.addController(state => state.setAndContinue(rotating))

        })

        .defaultGeoModel()

})

Item Example:

StartupEvents.registry('item', event => {
    event.create('cool_sword', 'anim_sword')
        .tier('diamond')
        .defaultGeoModel()
        .addController(controller => {
            controller.addAnimation(state => {
                if (state.isMoving()) {
                    return state.setAndContinue(RawAnimation.begin().thenLoop("walk"))
                }
                return state.setAndContinue(RawAnimation.begin().thenLoop("idle"))
            })
        })
})

Armor Example:

event.create('fancy_helmet', 'anim_helmet')
    .material('iron')
    .defaultGeoModel()
    .armorItemUseGeoModel() // Makes the item icon use the 3D model
    .boneVisibility((renderer, slot) => {
        // Hide a specific bone on the armor model
        renderer.hideBone("extra_antenna") 
    })

Blocks Example:

StartupEvents.registry('block', event => {
    event.create('animated_pillar', 'animatable')
        .defaultGeoModel()
        .addController(controller => {
            controller.addAnimation(state => {
                return state.setAndContinue(RawAnimation.begin().thenLoop("spin"))
            })
        })
})