Creating Your Own Cosmetics¶
Quick Start: Monetize your server.
- Every look is one leaf under
cosmetics:inplugins/JManhunt/advanced/cosmetics.yml, nested by group, sub, then name. Save the file, run/manhunt reload, and your look shows up in the menu. - A broken leaf warns in the console and skips itself; the rest of the file keeps working.
Quick Start: A Purple Floor Ring (5 minutes)¶
- Open
plugins/JManhunt/advanced/cosmetics.ymland find thecosmetics:section at the bottom. - Add a leaf under
lobby:,floor:like this:
cosmetics:
lobby:
floor:
violet-ring:
enabled: true
meta:
icon: "PURPLE_CONCRETE_POWDER"
rarity: "uncommon"
params:
particle: "DUST"
color: "AA55FF"
radius: "1.2"
interval-seconds: "0.75"
amount: "10"
- Run
/manhunt reloadand open/manhunt cosmetics: Violet Ring sits in Lobby, Floor, glowing uncommon-green. The name reads from your language file (see below); without an entry there it falls back to the prettified leaf name. - Give yourself the win permission so you can unlock it:
lp user <you> permission set jmanhunt.cosmetics.lobby.floor.violet-ring truethen/manhunt cosmetics unlock lobby.floor.violet-ring. - Ready for a drawing instead of a ring? The 10-minute Creeper Wings quickstart builds a PNG tracing from scratch.
The leaf shape¶
| Field | Meaning |
|---|---|
| path | group.sub.name, all lowercase, like highlights.kill.drum. The group and sub pick where the look lives and what it fits; the name must be unique. Note the dashes in in-hand, bad-signal, and final-kill. |
enabled |
false hides the leaf without deleting it. |
kind |
Only for multi-kind subs (kill, final-kill, mourn, win, celebration): names what the look does, and must fit the sub. Every other sub infers its single kind from the path. |
meta.icon |
The menu icon material, with optional JMH Icon Data. |
meta.rarity |
common, uncommon, rare, epic, or mythic. Anything else skips the leaf. |
params |
The kind's settings (particle, size, sound, and so on). |
The 13 group/sub pairs: lobby.floor, lobby.aura,
lobby.wings, compass.refresh, compass.in-hand,
compass.analysis, compass.bad-signal, footsteps.trail,
highlights.kill, highlights.final-kill, highlights.mourn,
highlights.win, highlights.celebration.
Names and lore live in your language¶
Menu names and lore lines are translated per language, in the
cosmetics.names: section of each lang/<code>.yml file,
nested exactly like the cosmetics file: group, sub, name,
then name: and desc:. Add entries in the same shape for
your own looks:
cosmetics:
names:
lobby:
floor:
violet-ring:
name: "Violet Ring"
desc: "A purple ring for patient waiters."
A look without an entry still renders: its name falls back
to the prettified leaf name (violet-ring reads Violet
Ring) with no lore line.
Which kinds fit where¶
- Lobby:
floor,aura,wings(particles, sizes, intervals). - Compass:
needle,hand,analysis(plussoundfor bad signals). - Footsteps:
trail. -
Highlights:
sound,hiss,blast,head(kill only),mob,fountain,lightningandtnt(final kill only),pattern(mourn only),spawn,rain,ride(win and celebration only). -
Each group page lists every kind-specific setting and its limits. Values outside the limits warn and skip the leaf, as do unknown particles, sounds, creatures, and materials, so copy an existing leaf and tweak one thing at a time.
- A setting name the kind does not take (a typo, or
countleft over from before it becameamount) warns and is ignored, and the leaf still loads. Drawings work through tracings.
Shared particle settings¶
Every kind that takes a particle also takes these:
speed: spawn speed, 0 to 0.4 (0 if left out). Footsteps cap at 0.08. Most looks sit at 0; only very explosive ones approach the cap. TheNOTEparticle reads its hue from speed, so leave it at 0 unless you want to retune the color.block: block material, needed forBLOCK,FALLING_DUST,DUST_PILLAR, andBLOCK_CRUMBLE.item: item material, needed forITEM.color-to: second hex color, needed forDUST_COLOR_TRANSITION(paired withcolor).power: scalar strength, 0 to 64 (1 if left out). Drives dragon breath and sculk charge size, shriek delay, and geyser height.
Every particle type works except VIBRATION, TRAIL, and
BLOCK_MARKER, which warn and skip the leaf.
Shared sound settings¶
Every kind that takes a sound also takes volume (0 to 2,
1 if left out) and pitch (0.5 to 2, 1 if left out).
Making it earnable¶
A new look drops and unlocks like any other once someone is allowed to win it:
- Win permission:
jmanhunt.cosmetics.<group>.<sub>.<name>(LuckPerms, or any permission plugin). - Instant unlock:
jmanhunt.cosmetics.<group>.<sub>.<name>.owner. - Rank grant: add the id to a rank's
ids:list in the same file (see Ranks).
Drops pick it up by rarity automatically: its rarity weight decides how often its rarity rolls, and it joins the pool of looks the winner is allowed to win.