-
Notifications
You must be signed in to change notification settings - Fork 0
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.
- Every mob first rolls a bundled skin as its base (this is also the safe fallback for old clients).
- 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).
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.
/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.0–1.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).
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.4The 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.
Drop your own skins in — no datapack, no resource pack, no rebuild.
- Put
64×64(or legacy64×32) PNG skin files in:(The folder is created automatically the first time the mod runs. In a dev client it's under the run directory, e.g.config/playermob/skins/run/fabric/config/playermob/skins.) - They're picked up live — newly added files appear within a few seconds, no restart needed.
- 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.
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.
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.
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.
/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.
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=trueThe 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.
- 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.
Getting started
In-game commands
No-code (datapacks)
Java API
Patterns