Tags
Creators
Details
2.0.0-alpha.1+1.12.2
Compatibility
Changes
Added
- A Supporters entry in the Mo' Bends menu shows every supporter accessory on your own character, and which ones you have.
- Link account in the Mo' Bends menu links your Minecraft account to your Mo' Bends account with a code from the dashboard, so your accessories follow you even after you rename it.
- Creepers, villagers, witches and iron golems are animated, with bending knees (and elbows for the iron golem); a charged creeper's armour moves with it.
- Mods and resource packs can add animations on top of a mob's own with extensions in
assets/<namespace>/bends/extensions/, for example making players wave. - Mods and resource packs can give a mob, or a single player, a different model and animation with
entity types in
assets/<namespace>/bends/types/. - Mods and resource packs can animate new mobs without code, with model definitions in
assets/<namespace>/bends/models/. A model definition can compute the mob's own values from its fields, for its animation and every extension to read. - Every mob Mo' Bends animates, the player included, is a model definition (
bends/models/), so mods and resource packs can change their geometry, layers and values without code. - A model definition can extend another and change only what differs, as the zombie villager and the pig zombie extend the zombie.
- Mods can add their own animation logic to the JSON format: operations (values computed in Java, such as whether a mob is wet) and drivers (posing computed in Java), registered from an addon.
- Zombie villagers are animated.
- Armour made with GeckoLib (3, for 1.12.2) moves with the animation, as vanilla armour does,
bending at the elbows and knees; its own GeckoLib animation still plays. GeckoLib stays
optional, and
keepArmorAsVanillakeeps a piece as GeckoLib draws it. - Iron golems jump: the push-off snaps their legs straight, they bend as the golem flies and the heavy arms lag behind; landing, it gives under its weight. Jumping onto a block, the golem climbs it: it plants its hands on the top, hauls itself up the side, gets a knee up and steps on.
- Villagers stand on their feet, as iron golems do: standing, the feet stay planted on the ground and they turn by stepping, with quick, light steps. They walk with a swing of the legs, and when they stop, their feet stay where the walk left them, a foot left well out of place stepping back under them. Witches, which move as villagers do, too. A villager's nose wobbles with each step.
- Zombies and zombie villagers stand on their feet too: standing, the feet stay planted and they turn by stepping, heavily; they walk (or stumble) as before, and stop with their feet where the walk left them. A leaning zombie stands crouched with its feet on the ground.
- The Legacy Mo' Bends resource pack brings back how players and zombies (and zombie villagers) moved in Mo' Bends 1.X, without standing on their feet. It is a separate download, signed by Mo' Bends, so it works on servers that refuse resource packs' animation too.
- Resource packs signed by Mo' Bends are trusted as the mod is, under every server policy. The mod checks the signature itself, offline, with the keys it ships.
- Players stand on their feet too: standing still, the feet stay planted and they turn by stepping, and stop with their feet where the walk or the sprint left them. In the sword's stance they stand on their feet too, wide apart. Sneaking, the attacks themselves, aiming a bow and the rest pose the legs as before.
core:step_turncan take over from a walk posed beneath it (placeFromPose): the feet are planted where the walk left them, and step back under the body if they are out of place.crouchDropsets how quickly the hips go down for reach. The feet are taken where the legs are drawn (drivers can read a bone's smoothed rotation,rotationDrawn), so a smoothed walk is taken over without a jump.spreadandstaggermove where the feet stand,followRootkeeps them on the ground under a lowered whole model, and a turn of the whole model beneath the driver is followed (eased in overbeneathTurnTicks), the feet staying planted.- Animations can draw a mob at a point in the world while its real position moves on (the
core:anchordriver), to stage a sequence such as climbing onto a block. - Animations can compute positions in the world in double precision (
entityWorldX,toDouble,toFloat), so mobs far from the world's origin animate as smoothly as those near it. - Animations can reach for the world:
core:raycastfinds where a ray through the blocks hits and which way the surface faces (core:raycast_arraycasts a spread of them and keeps the closest hit), andcore:two_bone_ik/core:three_bone_ikput the end of an arm or a leg on a point in the world, each joint pointing a way in the world. Climbing onto a block, the iron golem grabs the top where its hands find it and holds on while it hauls itself up. With"debug": true, the rays are drawn over the world, colored by what they hit, to see what an animation finds. - Animations can read the ground:
core:block_belowfinds the block under the feet,core:block_gradientwhich way the ground rises round it, andcore:step_upthe step one block up ahead, with room on it. The iron golem looks ahead for a step as it walks, and climbs when it jumps close to one it is walking towards (a jump otherwise); it gives up early, mid-air, if it backs away from the ledge. - A server's own resource pack can add types and extensions too.
- Settings has Order and Extensions buttons to choose which types and extensions win when several apply to the same mob.
- An animation can hand a mob back to its vanilla animation while a condition holds, for example while swimming.
- Entities that share a renderer, such as players, can each look different, one animated and the next vanilla.
- When an animation breaks, the chat says which one and why (once per animation), instead of the mob silently standing still.
Changed
- Every mob is animated from JSON animator files, which resource packs can replace.
- Servers decide what resource packs may do to animation: allow it, limit how far it moves models (the default), or deny it; singleplayer always allows it.
- Resource reloads (F3+T, or changing resource packs) pick up changed animations and models.
- The mod's download is about 1 MB smaller (2.3 MB down to 1.3 MB).
- Supporter accessories download in the background instead of on every resource reload.
- The Customize entry of the Mo' Bends menu leads to the Mo' Bends website; it will open the new web animation editor once it is out.
Fixed
- The Mo' Bends menu's settings (which mobs are animated, the orders) and the mod options in
Forge's mod options screen no longer overwrite each other in
config/mobends.cfg. - The wolf's walk no longer lags one frame behind its movement.
- Mo' Bends no longer keeps every entity it has seen in memory until you switch worlds.
- Mobs that aren't animated no longer cost time on every frame.
- Only the local player joining a world resets the server's settings, not every player that comes into view.
- Mo' Bends' messages appear in the game log, not only in the console.
- Perform Spin Attack works: turned off, or while riding, the sword combo starts over instead of ending with the whirl.
- The Italian, Norwegian, Polish and Portuguese translations load, and every translation covers the whole mod.
- Holding a sword no longer leaves face culling off for whatever renders next.
- The right arm of zombies, skeletons and pig zombies is no longer slightly too deep.
- The player's left shin shows the left leg's skin; it showed the right leg's, so a skin with different legs had its left shin swapped.
- The skeleton's left arm and the zombie villager's body show their own skin, as in vanilla (the arm showed its skin back to front, and the villager a zombie's body over a villager's skin).
- Arrows stuck in an animated mob stay on its parts as they move, instead of floating at the parts' joints.
- The squid's tentacles sit around its body where vanilla puts them.
Removed
- Bends packs, and the Packs section of the Mo' Bends menu; extensions replace them.
- The bends pack editor, which Customize used to open.
Code: the animation system was rearchitected: the hand-written animation controllers and bits
are gone, and every mob runs on the new KUMO engine (layers, pose nodes, expressions; see
misc/kumo-format.md), which lives in a Minecraft-free core module published separately.
Renderers are now swapped per render instead of mutated and demutated. Addons that register
mutators, previewers, value sources or bends pack hooks need updating: entity data names its
animator (getDefaultAnimator) instead of returning a controller, registerNewEntity no longer
takes alterable parts, and animation editors can no longer be registered. The Java models of the
player and the other mobs (PlayerBender, the mutators, the mutated renderers and the data
classes such as PlayerData and BipedEntityData) are gone: every mob's data is a
DefinedEntityData, whose bones and components are found by name. Every asset file
(animators, types, extensions, model definitions) carries a formatVersion; one written for
another version of its format is refused with a message saying so. Bender keys are resource
locations (mobends:zombie instead of mobends-minecraft:zombie); which mobs you turned off
carries over.
The mobs made from model definitions are given to their entities by type files
(bends/types/), not a list of definitions. While a server limits resource packs, a pack's type
that brings its own model definition is ignored as a whole.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:F79X5y1E:hkRtkIFW"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:F79X5y1E:hkRtkIFW"
}

