- Cosmetics are allowed for sale under Mojang's guidelines; capes and anything that affects play are not.
- UltraCosmetics is free and needs no resource pack: hats, pets, mounts, particles, gadgets, morphs, suits and emotes. HMCCosmetics ($8.99), ItemsAdder and Nexo need a resource pack and give you custom models.
- Bedrock players through Geyser do not get your Java pack automatically: you supply a Bedrock pack and an item mapping, or accept that Bedrock sees vanilla items.
- Price cosmetics like cosmetics: cheap singles, bundles, and a rank built only from them.
If you are going to sell anything on a Minecraft server, sell cosmetics. Mojang's guidelines let a server charge for things that do not affect gameplay, with one named exception (capes and anything that looks like one), and players on non-pay-to-win servers accept a hat store in a way they never accept a kit store. The plugin side has two tiers: UltraCosmetics gives you a full catalog for free with nothing to install on the player's side, and HMCCosmetics, ItemsAdder or Nexo give you custom-modeled cosmetics if you are willing to ship a resource pack.
This guide covers the rule first, then the plugins, the resource pack question, what Bedrock players will and will not see, and pricing that does not turn a cosmetic store into a pay-to-win complaint.
Why cosmetics are the safest thing to sell
Mojang's rules for servers, summarized in our EULA guide with the official text linked, come down to this: you may charge one equal access fee, take donations, sell cosmetics (never capes), and sell perks that give no competitive advantage. You may not sell anything that affects gameplay. A particle trail, a hat, a pet that follows you, a chat color, a title: none of those help a player win, so all of them are inside the line. That is also why players tolerate them. On our list, the "no pay to win" phrase shows up in server descriptions because it sells; our non-pay-to-win guide tells players what to look for, and a cosmetics-only store passes that test.
Two things to watch. A cosmetic that hangs off the shoulders and moves like a cape is a cape by Mojang's definition, whatever you call it; back bling that is clearly a backpack or wings is not. And a "cosmetic" with any effect (a pet that picks up items, a mount that is faster than a horse, a gadget that damages) is not a cosmetic. Keep effects at zero and the store is the least risky part of your server.
Cosmetics plugins compared
| Plugin | Cost | Runs on | What you get | Resource pack |
|---|---|---|---|---|
| UltraCosmetics | Free, open source (AGPL) | Spigot and Paper, 1.17.1 through 26.2 per its SpigotMC listing | Gadgets, particle effects, mounts, pets, morphs, hats, suits and emotes; the SpigotMC page counts 150+ hats, 70+ pets, 60+ morphs, 30+ particle effects, 28 gadgets, 20+ mounts, 13 emotes and 7 suits | Not required; it is built from vanilla items, mobs and particles |
| HMCCosmetics | $8.99 on Polymart (also sold on SpigotMC); source on GitHub under GPL | Paper; needs ProtocolLib 5 or newer | Backpacks, hats, armor overlays, off-hand cosmetics and balloons, eight cosmetic types in all, with 13 premade models included (beanie, jetpack, kite, frog hat and so on) | Required. Designed for servers already running a pack; works with ItemsAdder, Oraxen and ModelEngine as model providers |
| ItemsAdder | Paid | Spigot and Paper; v4 lists 1.20.6 through 26.2 on Java 21, v3 covers 1.15.2 to 1.20.4 | A whole custom-content engine: items, blocks, furniture, mobs, HUDs, GUIs, chat emojis, and cosmetics including hats, wings and emotes | Required; ItemsAdder builds and hosts the pack for you |
| Nexo | Paid | Paper and Folia 1.21.4 and up | The successor to Oraxen: custom items, blocks, armor, furniture and emotes via glyphs, with an API for custom mechanics | Required; Nexo generates the pack and sends it to players, and it converts an existing Oraxen or ItemsAdder setup automatically |
The honest split: if you have no resource pack today, install UltraCosmetics this afternoon and you have a store's worth of catalog. If you already run ItemsAdder or Nexo for custom items, HMCCosmetics slots in and uses the models you already ship. Do not adopt a resource pack just for cosmetics unless you want custom content elsewhere too; the pack is the part players complain about.
Do you need a resource pack?
Only for custom models. A resource pack lets you draw a hat that looks like a frog rather than a stack of blocks on a head, and a backpack that is an actual backpack. The cost is that every player has to download it. A server can prompt for the pack or require it in server.properties; requiring it turns away anyone whose download fails, and "resource pack failed to download" is one of the most searched server problems. The resource pack guide covers hosting and the prompt-versus-require decision.
UltraCosmetics sidesteps the whole problem. Its hats are heads and blocks, its pets and mounts are vanilla mobs, its particles are vanilla particles, so the catalog works for everyone the moment the plugin loads. It will not look as polished as a modeled pack, and that is the trade.
Bedrock and Geyser limits
If Bedrock players join through Geyser (733 Java servers on our list also answer a Bedrock ping, and they run a median of 26 players against 6 for Java-only servers), they do not see your Java resource pack. Geyser's custom items docs are explicit: Geyser does not convert Java packs and does not generate item mappings automatically. To show a custom hat to a Bedrock player you supply two things: a Bedrock resource pack with the textures, and a mapping file in Geyser's custom_mappings folder (format_version: 2, an items section that maps each Java item and model to a Bedrock definition). There are limits: one definition per Java item and model combination unless you use predicates, the bedrock_identifier cannot use the minecraft namespace, and both files need a restart to load.
What that means in practice:
- UltraCosmetics on a crossplay server mostly works, because vanilla mobs, heads and particles exist on Bedrock too. Expect a few hats to look different and a few gadgets to behave oddly; test them from a Bedrock client.
- Modeled cosmetics on a crossplay server need the Bedrock pack and mapping, or Bedrock players see a plain item where the Java player sees a jetpack. Do not sell a Bedrock player a cosmetic they cannot see; say on the store page which ones are Java-only.
- Emotes that depend on a Java pack do not translate. Bedrock has its own emote system.
The crossplay guide covers the Geyser setup itself; this is only the cosmetics part.
Pricing, bundles and ranks built from cosmetics
We do not have store data, so these are working rules rather than numbers from our list:
- Price singles low. A hat or a trail should cost about what a coffee does. Cosmetics sell on volume and mood, not on scarcity.
- Bundle by theme. A "winter set" of hat, trail and pet for less than the three apart. Themes give you a reason to release something every month.
- Build ranks from cosmetics only. A rank that gives a tag, a color, a few cosmetics and a cosmetic pet is a rank you can sell without a pay-to-win complaint. The moment it adds homes, kits or claim blocks, it is not.
- Rotate, do not remove. A "vaulted" cosmetic that returns next year keeps old buyers happy and gives new ones something to wait for. Pulling items people paid for does the opposite.
- Give some away. Vote crates, daily reward day 7, event prizes: a cosmetic from your own catalog in each of those loops is a free ad for the store. The crates guide covers the crate side, including why sold keys should open cosmetic-only crates.
- Show the real price. Charge in currency, not in a virtual coin you sell in bundles that never divide evenly. Many of your buyers are minors, and their parents read the receipt.
The store guide covers the storefront; the ranks guide covers naming and perks.
Setup checklist
- Pick the tier: UltraCosmetics (no pack) or HMCCosmetics with ItemsAdder, Oraxen or Nexo (pack). Confirm the build matches your exact version; 26.x has left older plugins behind.
- Disable anything with an effect. Go through gadgets and mounts and turn off any that damage, move faster than vanilla, or pick things up.
- Restrict where cosmetics show. Off in PvP arenas and minigames, where a particle trail or a mount is a gameplay effect in practice.
- Give everyone a free starter. One hat or trail unlocked by default so new players see what the store sells.
- Test from a Bedrock client if you are crossplay, before listing anything as available.
- Write the store page honestly: what each item does (nothing), which are Java-only, the real price.
Then list the server and say "cosmetic-only store" in the description. It is one of the few monetization lines that makes a listing more attractive, not less.
Quick questions
Is selling cosmetics allowed under the Minecraft EULA?
Yes, with the cape exception and as long as they change nothing about gameplay. Our EULA guide has the full allowed and not-allowed lists.
Which cosmetics plugin works without a resource pack?
UltraCosmetics. Everything in it is built from vanilla items, mobs and particles. HMCCosmetics, ItemsAdder and Nexo need a pack.
Can Bedrock players see custom cosmetics?
Only if you supply a Bedrock resource pack and a Geyser item mapping for each one. Without that they see the plain item the cosmetic is built on.
Are pets and mounts really cosmetic?
Only when they do nothing. A pet that follows you is cosmetic; a pet that fights or collects drops is a gameplay perk. A mount at vanilla horse speed is borderline; treat it as cosmetic only if it gives no advantage over what any player can tame.
