promotional bannermobile promotional banner
premium banner
Use Geckolib to create animatable block/item/armor by KubeJS

Description

Gecko JS

Use GeckoLib to create animatable block/item/armor by KubeJS

Simple Example

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

})

Model assets/geckojs/geo/block/example_block.geo.json


{

    "format_version": "1.12.0",

    "minecraft:geometry": [

        {

            "description": {

                "identifier": "geometry.example_block",

                "texture_width": 48,

                "texture_height": 48,

                "visible_bounds_width": 3,

                "visible_bounds_height": 2.5,

                "visible_bounds_offset": [0, 0.75, 0]

            },

            "bones": [

                {

                    "name": "bone",

                    "pivot": [0, 8, 0],

                    "cubes": [

                        {

                            "origin": [-7, 1, -7],

                            "size": [14, 14, 14],

                            "uv": {

                                "north": {"uv": [0, 0], "uv_size": [14, 14]},

                                "east": {"uv": [0, 14], "uv_size": [14, 14]},

                                "south": {"uv": [14, 0], "uv_size": [14, 14]},

                                "west": {"uv": [14, 14], "uv_size": [14, 14]},

                                "up": {"uv": [0, 28], "uv_size": [14, 14]},

                                "down": {"uv": [28, 14], "uv_size": [14, -14]}

                            }

                        }

                    ]

                }

            ]

        }

    ]

}

Animation assets/geckojs/animations/block/example_block.animations.json


{

    "format_version": "1.8.0",

    "animations": {

        "rotating": {

            "loop": true,

            "animation_length": 3,

            "bones": {

                "bone": {

                    "rotation": {

                        "vector": ["Math.sin(query.anim_time*90)*180", "Math.cos(query.anim_time*90)*180", "Math.sin(query.anim_time*90)*180"]

                    }

                }

            }

        }

    },

    "geckolib_format_version": 2

}

Texture assets/geckojs/textures/block/example_block.png

example_block.png