Add-on plugin · MCIdentityCosmetic

Every identity wears its own look.

MCIdentityCosmetic is a standalone add-on that gives every MCIdentity identity its own skin and aura. It ships as its own jar, keeps its own database, and installs alongside the core plugin. Open it with /cosmetic.

SpigotMC PaperMC Folia Own database Requires MCIdentity 4.2.0+

What changed: cosmetics left the core plugin

Skins and auras used to be columns on the core plugin's own tables, drawn by a menu the core plugin owned. MCIdentity 4.0.0 removed them, and this add-on picked them up — storage included.

Previously

Cosmetics inside MCIdentity

  • Each identity's skin and aura were stored in the core plugin's own database, as part of the identity itself.
  • Slot 8 of the main identity menu opened a cosmetic GUI the core plugin drew.
  • Loading a session fetched cosmetics whether anything used them or not.
  • Every cosmetic change meant a release of the whole identity plugin.
Now

Cosmetics in MCIdentityCosmetic

  • The add-on creates and owns its table, in its own database — with no foreign key onto anything the core plugin owns.
  • Its own /cosmetic command and its own menu, on its own version line.
  • It reads one thing from the core: which identity you are currently wearing.
  • Either plugin can be upgraded without waiting for the other.

Upgrading the core to 4.0.0 deletes the old cosmetic data from its database, and this add-on starts with an empty table rather than migrating it. Existing skins and auras are not recoverable — back the database up first if you want to keep them.

Two independent fields

An identity wears a skin and an aura, and the two are entirely independent. Changing one never clears the other.

FieldWhat it holdsNotes
SkinA Minecraft skin textureKept at full length on purpose: a skin texture is a large value, and cutting it short would produce a broken skin.
AuraA short aura codeSurrounding spaces are removed and it is limited to 255 characters, like every other code in the project.

Both are optional. A blank value and an absent value mean the same thing — nothing worn — so clearing a field and never setting it are indistinguishable, by design. An identity that has never touched the add-on reads back as wearing neither, not as missing.

Each field is saved on its own, so saving a skin can never erase an aura and saving an aura can never erase a skin, even when two changes happen at the same moment.

Every row is keyed by identity

A cosmetic is worn by an identity, never by a player. Two identities owned by the same person can look completely different, and swapping identity swaps the look with it.

Every read and every write is tied to the identity the core plugin says you are wearing, never to the player. A player with no active identity has nothing to read and nothing to write to.

SituationResult
Wearing a profession identityallowed
Wearing the base Player professionallowed — the base profession may wear cosmetics like any other
No active identitydenied — there is nothing to key the row by
Core plugin unreachabledenied — the add-on fails closed rather than guessing
Identity swapped mid-interactionThe write still lands on the identity that was resolved when the action started, never on the new one.

Unlike runes, cosmetics are not restricted by profession. The base Player identity is a real identity that may wear a skin and an aura like any other — the restriction that applies to runes was never a cosmetic rule.

The cosmetic menu

/cosmetic with no arguments opens a one-row menu for the identity you are wearing, showing what it currently wears in each of the two slots.

Skin Aura Close

Every click in the menu is cancelled, so nothing can be dragged out of it. The menu is only reachable while an identity is equipped.

Commands & permissions

CommandDescriptionPermissionDefault
/cosmeticOpen the cosmetic menu for the identity you are wearing.mcoriax.mcidentity.cosmetic.command.useeveryone
/cosmetic infoShow what your active identity currently wears.mcoriax.mcidentity.cosmetic.command.infoeveryone
/cosmetic skin <texture|clear>Set or clear the skin.mcoriax.mcidentity.cosmetic.command.skinoperators
/cosmetic aura <code|clear>Set or clear the aura.mcoriax.mcidentity.cosmetic.command.auraoperators

mcoriax.mcidentity.cosmetic.admin grants both operator commands at once, and mcoriax.mcidentity.cosmetic.* grants everything.

Setting and clearing

An operator sets an aura by its code, such as ember, sets a skin by giving its texture, and clears either one with the word clear.

Clearing one field leaves the other exactly as it was. /cosmetic info reads the saved values back, so it is the way to confirm what an identity actually wears.

Storage

The add-on keeps its own storage and picks its backend the same way the core plugin does, in its own configuration file.

It stores one record per identity: its skin and its aura, either of which may be empty.

Nothing in the add-on's storage depends on the core plugin's storage. That is deliberate: it lets the two plugins be upgraded, and even kept in different databases, independently. Storage is set up automatically on every start, and every query is built safely from fixed templates.

Installing

RequirementWhy
Java 25 or newerMatches the core plugin.
SpigotMC, PaperMC, or FoliaOne universal jar; the server type is detected at startup.
MCIdentity 4.2.0 or newerHard dependency. It owns the identity a cosmetic is attached to, and 4.2.0 is the first release that shares its scheduling with the add-ons. On an older core the add-on logs an error and switches itself off.
MCIdentity 4.7.0 or newerOnly when the add-on stores its data on the central server, because it reuses the core plugin's connection to it.
A databaseOptional in practice: SQLite is the default and needs no setup.
  1. Put the MCIdentityCosmetic jar into your server's plugins folder, alongside MCIdentity.
  2. Start the server once. The add-on writes its configuration file and then switches itself off, because it ships disabled so it never does anything you did not ask for.
  3. Turn the add-on on in that file, and choose a different storage backend if you do not want SQLite.
  4. Restart the server.

If MCIdentity is missing, the add-on logs an error and switches itself off.

For developers

The add-on publishes its own developer library, in the same three-part shape as the core plugin's. Plugins that build on it should list MCIdentityCosmetic as a dependency so it loads first.

EventFires when
Cosmetic setA skin or an aura is about to be set or cleared. Cancellable — cancelling refuses the change before it reaches the database.

The event tells you the player, the identity the change targets, which of the two fields is changing, and the new value (none when the field is being cleared). Store your own data against the identity, never the player — that is the key the add-on itself uses.

The core plugin's own integration surface is on the Developer API and Events & Listeners pages. For this add-on's release history, see the MCIdentityCosmetic change logs.