
Created due to a lack of the Tails mod for 1.16, Ears is a mod that adds ears, snouts, tails, horns, wings, and more to the player. Eventually, it also became a complete lightweight open source 1.9 skin backport for many old versions, which works even if you aren't using its special features.
Ears has a more vanilla-faithful appearance than Tails, with a lot of 2D regions but a few 3D ones too. There are a wide variety of possible configurations and it can all be customized.
Why use Ears instead of Tails? Because Ears is easy to port to other versions, based on a multi-version abstraction allowing the mod to even run in web browsers. The Tails mod has wonderful 3D models and animations, but it's a burden to update it to any version due to its large rendering system and all the data syncing code, causing it to be tightly coupled with the version of the game and mod loader it was designed for. Ears stores all data as pixels in the player's skin.
However, Ears requires you to draw your own additions, and does not come with easy recolorable prefabs like Tails. Additionally, unlike CPM or Figura, Ears has a limited number of customization options. (Note that if you have a simple idea, I may add it. Open an issue on GitHub or hop in Discord.) Ears offers a good middle-ground that will work in almost any version you wish to play. It also does not and never will use external servers, just Mojang's skin server, so there's no concerns about a third-party server going down (be it temporarily or for good).
Why use Ears instead of other skin fixes? Ears provides a lot of new features to customize your skin, and is a much more lightweight patch with no usage of third-party servers and is completely open source. Additionally, Ears backports translucent secondary layer support to 1.8 and 1.7.
Come discuss this mod and any of my others on Discord or Matrix, or send me an email.
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 | ||||
| 9h ago | 1 |
- Compatibility with 26.3 final release
- This disables enchantment glint rendering on 26.3 for trimmed armor while "Improved Transparency" is enabled due to confusing OIT limitations
- Mojang decided to do a bunch of refactors between the prereleases and the final release
- These renames would have broken exactly nothing prior to 26.1. The post-obfuscation future sucks
- Fix rendering of enchanted trimmed armor in 26.1/2
- Fix silly mistake causing digitigrade secondary layers to not render correctly
- Fix silly mistake causing digitigrade secondary layers to not render correctly
- Fix silly mistake causing digitigrade secondary layers to not render correctly
- Fix silly mistake causing digitigrade secondary layers to not render correctly
- Fix silly mistake causing digitigrade secondary layers to not render correctly
- Fix silly mistake causing digitigrade secondary layers to not render correctly
- Fix silly mistake causing digitigrade secondary layers to not render correctly
- Fix silly mistake causing digitigrade secondary layers to not render correctly
- Remove Retrolambda from build process as it's buggy
- Sometimes it decides to give methods the wrong name
- I promise I tested the previous release but Retrolambda decided to break only once I was doing the publishing
- Fixes skins not loading properly
- How did we ever live with Java 6 source features
- Remove Retrolambda from build process as it's buggy
- Sometimes it decides to give methods the wrong name
- I promise I tested the previous release but Retrolambda decided to break only once I was doing the publishing
- Fixes skins not loading properly
- How did we ever live with Java 6 source features
- Remove Retrolambda from build process as it's buggy
- Sometimes it decides to give methods the wrong name
- I promise I tested the previous release but Retrolambda decided to break only once I was doing the publishing
- Fixes skins not loading properly
- How did we ever live with Java 6 source features
- Remove Retrolambda from build process as it's buggy
- Sometimes it decides to give methods the wrong name
- I promise I tested the previous release but Retrolambda decided to break only once I was doing the publishing
- Fixes skins not loading properly
- How did we ever live with Java 6 source features
- Remove Retrolambda from build process as it's buggy
- Sometimes it decides to give methods the wrong name
- I promise I tested the previous release but Retrolambda decided to break only once I was doing the publishing
- Fixes skins not loading properly
- How did we ever live with Java 6 source features
- Remove Retrolambda from build process as it's buggy
- Sometimes it decides to give methods the wrong name
- I promise I tested the previous release but Retrolambda decided to break only once I was doing the publishing
- Fixes skins not loading properly
- How did we ever live with Java 6 source features
- Remove Retrolambda from build process as it's buggy
- Sometimes it decides to give methods the wrong name
- I promise I tested the previous release but Retrolambda decided to break only once I was doing the publishing
- Fixes skins not loading properly
- How did we ever live with Java 6 source features
- Remove Retrolambda from build process as it's buggy
- Sometimes it decides to give methods the wrong name
- I promise I tested the previous release but Retrolambda decided to break only once I was doing the publishing
- Fixes skins not loading properly
- How did we ever live with Java 6 source features
- Rewrote skin region data handling for cleaner code and to fix black squares when digitgrade legs mode is enabled ([#6](https://git.sleeping.town/exa.mods/Ears-Fifth-Edition/issues/6))
- Rewrote skin region data handling for cleaner code and to fix black squares when digitgrade legs mode is enabled ([#6](https://git.sleeping.town/exa.mods/Ears-Fifth-Edition/issues/6))
- Rewrote skin region data handling for cleaner code and to fix black squares when digitgrade legs mode is enabled ([#6](https://git.sleeping.town/exa.mods/Ears-Fifth-Edition/issues/6))
- Rewrote skin region data handling for cleaner code and to fix black squares when digitgrade legs mode is enabled ([#6](https://git.sleeping.town/exa.mods/Ears-Fifth-Edition/issues/6))
- Rewrote skin region data handling for cleaner code and to fix black squares when digitgrade legs mode is enabled ([#6](https://git.sleeping.town/exa.mods/Ears-Fifth-Edition/issues/6))
- Rewrote skin region data handling for cleaner code and to fix black squares when digitgrade legs mode is enabled ([#6](https://git.sleeping.town/exa.mods/Ears-Fifth-Edition/issues/6))
- Rewrote skin region data handling for cleaner code and to fix black squares when digitgrade legs mode is enabled ([#6](https://git.sleeping.town/exa.mods/Ears-Fifth-Edition/issues/6))
- Rewrote skin region data handling for cleaner code and to fix black squares when digitgrade legs mode is enabled ([#6](https://git.sleeping.town/exa.mods/Ears-Fifth-Edition/issues/6))
- (Buzz only) Improved armor texture lookup on versions in the vicinity of 1.21.1 for parity with Ears 1.x
- Fixes e.g. the Create Netherite Backtank
- (Buzz only) Improved armor texture lookup on versions in the vicinity of 1.21.1 for parity with Ears 1.x
- Fixes e.g. the Create Netherite Backtank
- (Buzz only) Improved armor texture lookup on versions in the vicinity of 1.21.1 for parity with Ears 1.x
- Fixes e.g. the Create Netherite Backtank
- Added compatibility with 26.3 Snapshot 9/10 and Pre-release 1/2
- With any luck, Ears will be compatible with 26.3 on release
- Fixed digitigrade legs and emissives not honoring skin layers being disabled in the Skin Customization menu
- Common Consumers**: This is a breaking change to
EarsRenderDelegatein Common. The following methods have been added: isHatEnabled()ZisLeftSleeveEnabled()ZisRightSleeveEnabled()ZisLeftPantEnabled()ZisRightPantEnabled()Z- No abstract delegates override these methods, as they're important state that doesn't have a reasonable default
- Ports to versions before the Skin Customization menu should return
truefrom all the new methods - Fixed geometry memoization not consistently differentiating between emissive and base layers
- Common Consumers**: This is a breaking change to
EarsRenderDelegatein Common: memoizeGeometrynow expects you to check whether or not the delegate has been put in emissive mode, and if so, store the geometry data separately from base data- The
Immediateabstract delegate does this by doubling the size of its backing array and addingGeometryTag.SIZEto the tag if emissive mode is enabled - Reified the meaning of the version number:
API.COMMON.FEATURE-PATCH APIwill be incremented in the case of breaking changes to theears-apiartifact- If we ever break API, there will be a compatibility layer if feasible, so this is more an indicator that API integrations should be double-checked rather than expecting them to crash the game
COMMONwill be incremented on breaking changes to theears-commonartifact- This is used by third-party Ears ports (e.g. ReIndev, NFC, NSSS, BTW:CE)
FEATUREwill be incremented when new player-visible features are added that modify the skin formatPATCHis a single letter, starting ata, which will be incremented when bugs are fixed without player-visible changes (i.e. does not change the meaning of a feature config or UV mapping)- Tightened up loader metadata version restrictions
- (Pre-1.8 only) LegacyHelper no longer infinitely retries profile lookup, which would cause log spam when Mojang is down or there is a local connection issue

