This is a fork of Ears by Exa Skye and contributors, focused on current Minecraft versions and a rebuilt skin manipulator. For the full version-spanning original — Forge 1.2 through the latest snapshots — go upstream.
Ears is a player model customization mod. This fork supports Fabric and NeoForge on 1.21.11 and 26.1 (the 26.1 build also covers 26.1.x and 26.2). The skin data format is unchanged, so skins made for upstream Ears work here and vice versa.
- Four ports instead of forty-two. Everything older was removed;
git checkout legacy-ports -- <dir>brings any of it back. - The skin format is pinned down by tests.
tests/fixtures/holds 53 configurations encoded and decoded by the Java implementation, and the TypeScript port is checked against them in both directions — we decode what Java wrote, and Java decodes what we wrote. Seetests/README.md. - The manipulator builds from source again.
web/is a rewrite in TypeScript; the original undermanipulator/has been unbuildable since TeaVM was removed upstream. - The renderer is shared, not re-implemented.
web/packages/ears-rendereris a port of the JavaEarsRenderer, and its output is diffed against the game's quad for quad.
Get it and/or learn more at CurseForge, Modrinth, or Glass Repo.
Check out the Manipulator — rebuilt, and running entirely in your browser.
Mappings Notice: the supported ports are all on Mojang mappings. Upstream spans Plasma, Yarn and MCP as well, and references to those still appear in common code and in the git history.
One JDK in the 17–25 range; the 26.1 ports fetch their own Java 25 toolchain.
./build.sh # common + all four ports → artifacts/
cd common && ./gradlew build # or per-module (required on Windows)
cd web && bun install && bun run test:all # the TypeScript protocol and its golden tests
cd web && bun run dev # the manipulator, at localhost:5273./build.sh leaves the jars in artifacts/. Tagging v* builds them in CI and attaches them to a
GitHub release, which is where to get them without building.
CI builds all four ports, checks the fixtures still regenerate identically, runs both directions of the golden tests, and drives the editor in a real browser.
Ears is by Exa Skye (previously unascribed) and its contributors, MIT licensed, and everything that makes it work — the skin data format, the renderer, the feature set — is theirs. This fork narrows the supported versions and rebuilds the browser tooling; it does not change the format.
Ears provides an API (identical for all ports) that allows forcing Ears features to not render, or to change whether or not Ears thinks the player is wearing some kinds of equipment or has elytra equipped, what Ears features a player has set, etc.
You can add it to your mod like so (it's the same for Fabric or Forge):
repositories {
maven {
url "https://repo.unascribed.com"
content {
includeGroup "com.unascribed"
}
}
}
dependencies {
implementation "com.unascribed:ears-api:1.4.5"
}You can see examples of usage of both current APIs in real code in Fabrication and Yttr. Fabrication uses a state overrider to add support for its /hidearmor system, and Yttr uses the inhibitor system to force things not to render when the diving suit is worn.
