Skip to content

Skin Sources

Brennan Hatton edited this page Jun 27, 2026 · 2 revisions

Skin Sources

Every PlayerMob picks its look once, when it spawns. That look can come from three sources, and you can turn each one on or off. All three are on by default.

Source What it is Add skins by Config key
Bundled The skins that ship inside the mod (vanilla defaults + a curated pack of streamers / community skins). (built-in — nothing to do) skinSourceBundled
Online Skins added by a datapack (texture URL or player name), resolved player skins, and skins contributed by other mods. A datapack — see Custom Skins skinSourceOnline
Local PNG skin files you drop into a folder. Drop .png files in config/playermob/skins skinSourceLocal

Just want to use your own skins? Jump to Local skin folder.


How a mob picks its skin

  1. Every mob first rolls a bundled skin as its base (this is also the safe fallback for old clients).
  2. Then, with the custom-skin chance (default 40 %), it overrides that with a random skin from the combined online + local pool. The rest keep their bundled skin.

So by default most mobs read as "a normal player" at a glance, with your custom/online skins showing up as the occasional standout. Adding local or online skins simply grows that ~40 % pool, and you can change how often that override happens — see Custom-skin chance below.

The per-source toggles below change which pools are eligible. Bundled is always the ultimate fallback — if every other source is off or empty, a mob still gets a bundled skin (a mob is never skinless).


Custom-skin chance

How often a mob takes a custom (online / local) skin instead of its bundled base is controlled by one number, customSkinChance — a value from 0.0 to 1.0, default 0.4 (the long-standing ~40 %). Changing it does not alter the pools, only how frequently a mob reaches for them.

Value Result
0.0 Every PlayerMob wears a bundled vanilla default — custom skins are never rolled.
0.4 (default) ~40 % custom, ~60 % bundled — the original behaviour.
1.0 Every PlayerMob wears a custom skin whenever one is available.

Bundled is still the safety fallback at any value: a mob with no custom skin available (empty online + local pool, or both sources off) keeps its bundled look even at 1.0 — it's never skinless.

Change it in-game (this session)

/playermob skin chance <0.0-1.0>

Sets the chance for the current session — takes effect on the next spawn, and is not written to the config file. Values are clamped to the 0.01.0 range.

/playermob skin chance 1.0     # every new mob wears a custom skin (when one exists)
/playermob skin chance 0.0     # every new mob wears a bundled default

The current chance is also shown by /playermob skin sources (see below).

Change it permanently (config file)

Edit config/playermob.properties:

# Chance (0.0-1.0) a spawning PlayerMob overrides its bundled default with a custom
# (online + local) skin. 0.0 = always bundled; 1.0 = always custom when one is available.
customSkinChance=0.4

The file is the startup default; the /playermob skin chance command overrides it for the session only. Edit the file and restart for a permanent change.


Local skin folder

Drop your own skins in — no datapack, no resource pack, no rebuild.

  1. Put 64×64 (or legacy 64×32) PNG skin files in:
    config/playermob/skins/
    
    (The folder is created automatically the first time the mod runs. In a dev client it's under the run directory, e.g. run/fabric/config/playermob/skins.)
  2. They're picked up live — newly added files appear within a few seconds, no restart needed.
  3. New PlayerMobs can now roll your skins, mixed in with the bundled and online ones.

A skin is referred to by its file name without the .png — e.g. my_hero.png is my_hero.

Spawn a mob wearing a specific local skin

Use the normal summon command — a local-folder name takes precedence over a player name:

/playermob summon <skin> [<pos>] [<friendliness>] [<fightFlight>] [named [<customName>]]
/playermob summon my_hero                 # spawn here wearing my_hero.png
/playermob summon my_hero ~ ~ ~ 9 2 named Hero   # + traits + a nameplate

This is the same command used to summon a mob wearing a player's skin (see Custom Skins); if the name matches a file in your skins folder it wears that, otherwise it's treated as a player name.

Slim vs wide arms

The arm model (slim/Alex vs wide/Steve) is detected automatically from the PNG — you don't name files or set anything. Standard slim skins leave their arm "overhang" areas transparent, which is what the detector keys off; legacy 64×32 skins are always wide.

Multiplayer note

Local skins are loaded on each client (like a resource pack). In single-player and on a LAN-host this just works. On a dedicated server, a connecting client that doesn't have the file in its own config/playermob/skins will render that mob with a bundled fallback skin instead. To share a look with everyone on a server, use a datapack/URL skin (an online source) — see Custom Skins.


Turning sources on and off

In-game (this session)

/playermob skin sources

Reports each source's state, how many skins it has, and the current custom-skin chance, e.g.:

PlayerMob skin sources — bundled ON, online ON (68), local ON (2 in config/playermob/skins), custom-skin chance 0.40.
/playermob skin source <bundled|online|local> on|off

Flips one source for the current session (takes effect immediately; not written to the config file).

/playermob skin source online off     # only bundled + local from now on
/playermob skin source bundled off     # stop rolling the built-in skins…
/playermob skin source local on        # …e.g. to show ONLY your own skins (with online)

When bundled is off but another source has skins, mobs always take a custom skin (they never show a bundled one while alternatives exist). With everything off, mobs fall back to bundled.

Permanently (config file)

Edit config/playermob.properties:

# All on by default. bundled = built-in skins; online = datapack/by-name/mod skins;
# local = PNGs in config/playermob/skins.
skinSourceBundled=true
skinSourceOnline=true
skinSourceLocal=true

The file is the startup default; the /playermob skin source command overrides it for the session only. Change the file and restart (or /reload doesn't re-read it — restart the game/server) for a permanent change.


See also

  • Custom Skins — add online skins with a datapack (by URL or player name), pin a player's skin, and the modder seam for contributing skins programmatically.
  • Spawning and NBT — pin a bundled skin index or a texture URL directly via summon NBT.

Clone this wiki locally