Fabric 1.20.1 · 1.20.4 · 1.21.1 · 1.21.4 · 1.21.5 · 1.21.8 · 1.21.11 · 26.2 NeoForge 1.20.1 · 1.20.4 · 1.21.1 · 1.21.4 · 1.21.5 · 1.21.8 · 1.21.11 · 26.2 Forge 1.20.1 · 1.20.4
Requires GeckoLib (and Fabric API on Fabric). Client side only.
Turn any item into a 3D animated model with nothing but a resource pack.
Animated Items swaps items with a matching custom_model_data for GeckoLib models made in Blockbench, with first person animations, your own skin on the arms and a camera that moves with the animation.
Nothing is needed on the server, and players without the mod just see the normal item. The same resource pack works on every version, from 1.20.1 to 26.2.
next (attack1 → attack2 → attack3)right_arm / left_arm bones are drawn with your own skin in first personcamera bone moves your view on top of where you're lookingvisible_offhand hides the off hand, its item and its arm pose, great for two handed weapons/animated_items model set <model>, whatever you're holdingThe first time you start the game, AnimatedItemsExample.zip shows up in your resourcepacks folder (it's not turned on). Turn it on and run /animated_items model set punch_global, then open the zip to see how a pack is made.
Pack layout:
assets/minecraft/
animated_items/death_scythe.json the item config
geo/death_scythe.geo.json Blockbench GeckoLib model
animations/death_scythe.animation.json Blockbench GeckoLib animations
textures/animated_items/death_scythe.png texture
animated_items/death_scythe.json:
{
"item": "netherite_sword",
"custom_model_data": 66,
"model": "geo/death_scythe.geo.json",
"texture": "animated_items/death_scythe",
"animations": "animations/death_scythe.animation.json",
"item_hotbar_model": false,
"visible_offhand": false,
"actions": [
{
"id": "attack1",
"keybind": "key.attack",
"animation": "attack1",
"next": "attack2",
"chain_window_ticks": 5,
"sound": "item.trident.throw;vol:60;pitch:1.2"
},
{
"id": "attack2",
"keybind": "key.attack",
"animation": "attack2",
"cooldown_ticks": 20
},
{
"id": "inspect",
"keybind": "key.keyboard.g",
"animation": "inspect",
"held": true,
"cancel_keybind": true,
"visible_thirdperson": false
},
{
"id": "special",
"keybind": "key.keyboard.r",
"random_animation": "spin, slam",
"cooldown_ticks": 100,
"command_onstart": "effect give @s speed 3 1",
"command_onfinish": "particle minecraft:explosion ~ ~1 ~"
}
]
}
Item options
| Option | What it does |
|---|---|
item |
The item it replaces (netherite_sword, minecraft:bow, modded items too). Leave it out for models only used with model set |
custom_model_data |
Which stacks of that item get the model |
model / texture / animations |
Paths to your Blockbench files |
item_hotbar_model |
false keeps the normal item icon in the hotbar and inventory |
visible_offhand |
false hides your other hand while holding it |
actions |
Keybind animations (below) |
Action options
| Option | What it does |
|---|---|
id / keybind |
Name of the action and the key that plays it (key.attack, key.use, key.keyboard.g, key.mouse.middle...) |
animation / random_animation |
The animation to play, or a random one from a list |
held |
Loops while the key is held |
cooldown_ticks |
Wait before it can play again |
next / chain_window_ticks |
Combo into another action on the next press |
sound |
Sound with optional volume and pitch |
command_onstart / command_onfinish |
Commands sent to the server |
cancel_keybind |
Blocks the vanilla attack/use/drop of that key |
visible_thirdperson / visible_on_hotbar / visible_offhand |
Per action visibility, also used when the animation is played by command |
parent |
Vanilla model shown in third person while it plays (e.g. item/crossbow) |
Name your animations idle, walk, run, sneak, jump... and they play by themselves.
Get the item in game:
1.20.1 - 1.20.4: /give @s netherite_sword{CustomModelData:66}
1.21.1: /give @s netherite_sword[custom_model_data=66]
1.21.4 and up: /give @s netherite_sword[custom_model_data={floats:[66]}]
/animated_items model set <model>: put any model of your pack on your hand with its actions, whatever you hold (autocompletes every model)/animated_items model remove <model>: take it off/animated_items trigger <model|item> <animation>: play an animation on that model or on the item you're holdingWith the AnimatedItemsPlugin (Paper/Spigot), servers can play animations for players with selectors and tags, like @a[tag=boss] or tag:vip.
AnimatedItemsApi.setStandaloneModel("punch_global");
AnimatedItemsApi.playOnStandaloneModel("punch_global", "attack1");
AnimatedItemsApi.clearStandaloneModel();
AnimatedItemsApi.playOnHeldItem("minecraft:netherite_sword", "attack1");
AnimatedItemsApi.isAnimated(stack);
AnimatedItemsApi.modelOf(stack);
AnimatedItemsApi.animations("death_scythe");
AnimatedItemsApi.currentAnimation();
AnimatedItemsApi.stopAnimation();
AnimatedItemsEvents.onAction((model, action, animation) -> ...);
AnimatedItemsEvents.onFinished((model, action, animation) -> ...);
AnimatedItemsEvents.onReload(() -> ...);
setStandaloneModel puts any model of the loaded packs on the player's hand with its actions, the same as /animated_items model set; models() lists every model and activeStandaloneModel() tells which one is onplayOnHeldItem and playOnStandaloneModel work like /animated_items trigger, and keep the visibility settings of the action that uses that animationisAnimated, modelOf and animations tell if a stack has an animated model, which one, and what animations it hasonAction / onFinished when an animation starts or ends (from a key, a command or the API), and onReload when the packs are loaded againcom.cotii.animateditems.api is identical on Fabric, Forge and NeoForge, from 1.20.1 to 26.2