GeckoJS
GeckoJS is a powerful extension that combines the functionality of the GeckoLib library with the capabilities of KubeJS, allowing you to create animated blocks, items, and armor directly in the game using JavaScript.
Simple Usage Example
Initialization 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.addAnimation(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_time90)180", "Math.cos(query.anim_time90)180", "Math.sin(query.anim_time90)180"]
}
}
}
}
},
"geckolib_format_version": 2
}
Texture assets/geckojs/textures/block/example_block.png
