1.0.1
Compatibility
Required content
Changes
Player Skin Extension for ETF
Player Skin Extension for ETF is a client-side Fabric mod that lets resource packs display real Minecraft player assets on ETF/EMF CEM model parts.
By placing a player token like $Notch$ inside an entity’s custom name, resource pack creators can dynamically inject that player’s skin, cape, or elytra texture into a selected texture slot at render time.
Why the first public release is 1.0.1
Version 1.0.0 was never released on Modrinth. It was an internal first build that had issues, so this project starts publicly at 1.0.1 instead.
Features
- Dynamic player skin injection using
$Username$or$UUID$tokens - Supports player
skin,cape, andelytraasset replacement - Works with ETF/OptiFine-style random texture rules
- Works with EMF-based CEM model texture slots
- Only affects textures that are explicitly opted in through
.properties - Keeps ETF rule matching behavior unchanged
- Supports multiple player tokens in one entity name with selectable token slots
- Supports alternate player sources per rule:
- name token
- entity NBT path
- fixed static username/UUID
- local player (
self)
- Automatically strips player tokens from the rendered in-game name tag
- Supports hidden flags like
-capeor-slimin names without showing them in the visible name tag - Supports dashed and undashed UUIDs
- Resolves UUIDs through the player’s current profile, so username changes are handled better
- Supports top-level and
data.*NBT paths used by Minecraft 26.1 custom entity data - Includes support for shoulder parrots by preserving the owner identity for deferred rendering
- Shows a loading placeholder while assets are being fetched
- Caches fetched player assets for the current session
- Falls back safely when data is missing:
- missing skin -> default Steve/Alex skin
- missing cape/elytra -> keeps the selected fallback texture
- Client-side only, with no server-side mod required
- Compatible with Iris/Sodium since it does not modify shaders or chunk rendering
Resource pack workflow
This mod does not replace entity textures globally. A texture slot must be explicitly marked as dynamic in its .properties file, for example:
skins.1=dynamic
player_asset.1=skin
That means pack creators stay in full control over where dynamic player assets are used.
Requirements
- Minecraft
26.1 - Fabric Loader
0.19.3+ - Fabric API
- EMF required for CEM texture replacement
- ETF optional, but recommended for ETF-style texture workflows
Optional dependencies
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:QK0j571t:sKHjI4vq"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:QK0j571t:sKHjI4vq"
}

