Back to mods
Strut project artwork

CurseForge · Minecraft mod

Strut

A server and client side animation engine based off of Geckolib 4 made for 1.21.1 Fabric. Adding support for features like meshs, armatures, sending assets from the server to each client and being optimized to fully utilize the GPU.

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

Quick answer

Which Strut release should I use?

Updated today
beta file strut-1.0.3
Game version 1.21.1
Loader Fabric

strut-1.0.3 targets 1.21.1 with Fabric. The project page does not say whether this file belongs on the client, dedicated server, or both. No extra mods listed for this file.

Where it goes

Is Strut 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 Fabric
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 strut-1.0.3 need?

strut-1.0.3. Change the file and its required mods may change too.

No extra mods listed for this file

This file does not list any required mods. Do not add a library just because a different file uses it.

This file does not list any required or optional mods.

Before you install it

Add Strut without breaking your instance.

Built for strut-1.0.3. Pick another file and the loader, install side or required mods may change.

  1. 01

    Stick to this file

    Use strut-1.0.3. It targets 1.21.1 with Fabric; another release may have different loader, side or dependency requirements.

  2. 02

    Bring the mods it needs

    This file does not list any required mods. Do not add a library just because a different file uses it.

  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 strut-1.0.3. It opens that exact file at the source.

About this project

What does Strut add?

Strut

Strut is a library mod for animated models in Minecraft: Java Edition, for Fabric on 1.21.1. Players only need it when another mod requires it: place it in the mods folder.

For mod developers, it is an animation and model engine, forked from GeckoLib.

Origin

Strut is a hard fork of GeckoLib 4.9.3. It keeps the parts of GeckoLib that already work well: bones, Molang, easings and animation controllers. Everything around them has been rebuilt. The code lives in its own com.sandymandy.strut package, so it does not conflict with GeckoLib. It supports only Fabric and Minecraft 1.21.1.

Additions

  • Server-owned animation. Code on the server says which animation to play, and every client derives the same pose from a shared clock. Late joiners, lag and reconnects need no extra handling.
  • Events that run once. Keyframes can run gameplay code on the server and sounds or particles on clients, without duplicates or skips.
  • Meshes and skeletons. Models are not limited to cubes. Meshes with armatures, skinning and deformation are supported, in a compact binary format (.strutmodel and .strutanim).
  • A Blockbench plugin for authoring those models, with a physics tab, armour setup and event markers on the timeline.
  • Physics. Jiggle bones, hair, cloth, flesh and ragdolls, with collision against the world, other models and players.
  • Player bodies. A player can be drawn as a Strut model without a second entity, with armour and held items.
  • Armour as a separate model per slot, bound to the wearer by bone name.
  • Scenes. Several entities animated together, for cutscenes and paired animations.
  • Asset sync. A server can send its models, textures and sounds to players on join, without a resource pack.
  • A GPU renderer that works with Iris shader packs, including shadows, with per-model shading styles and lighting from the sun, the moon and nearby light sources.
  • Render hooks. Other mods can add their own shader code, coloured lights and per-model values.
  • Minimal boilerplate. An entity is a class with no body and a single registration line.

For developers

Add the Modrinth Maven repository and the dependency to build.gradle:

repositories {
	exclusiveContent {
		forRepository {
			maven {
				name = "Modrinth"
				url = "" rel="noopener nofollow" target="_blank">https://api.modrinth.com/maven"
			}
		}
		filter {
			includeGroup "maven.modrinth"
		}
	}
}

dependencies {
	modImplementation "maven.modrinth:strut:1.0.0"
}

Then declare it in fabric.mod.json:

"depends": {
	"strut": "*"
}

Getting started goes from nothing to an animated entity, and the migration guide lists every renamed class and what can be deleted when moving from GeckoLib. One change affects ported mods: animation decisions move to the server, which changes how a GeckoLib mod behaves.

Requirements

Minecraft 1.21.1, Fabric Loader 0.17 or newer, Fabric API and Java 21. The GPU renderer needs OpenGL 4.3, so macOS is not supported. Iris is optional.

Links

Status

The project is in early development. The API may still change, and some rough edges are to be expected. Bug reports are welcome.

Some of the code in this project was written with the help of AI tools. The design and direction are the author's, and the build runs a large test suite.

Licensed under MIT. Strut contains GeckoLib code, which is under its own MIT license.

Project description from CurseForge.

Pick your setup

Strut by Minecraft version and loader

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

1 available setups

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

Recent files

Strut versions and loaders

3 of 3 releases match

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