Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
โฆ CuriosPaper โฆ
The Ultimate Custom Accessory Inventory System for Paper & Spigot
Rings ยท Necklaces ยท Capes ยท Crowns ยท Belts ยท Charms โ and more.
Fully server-side. No mods required. Bedrock Edition compatible. Powerful developer API.
Think of it as Baubles / Curios โ but for Paper & Spigot, with 3D models, loot tables, GUI editors, Bedrock container support, and a full plugin API.
๐งฉ What is CuriosPaper?
CuriosPaper adds a complete accessory slot system to your Minecraft server. Players can equip rings, necklaces, capes, belts, charms, and more through a clean, tiered GUI โ with full support for Java and Bedrock Edition players.

The main accessory menu with all 9 slot types
โก Features
๐ Core Accessory System
| Feature | Description | |
|---|---|---|
| ๐ | 9 Slot Types | Head, Necklace, Back, Body, Belt, Hands, Bracelet, Ring, Charm |
| โจ | Ability System | Potion effects & player attribute modifiers with custom operations |
| โก | Quick Equip | Shift + Right-Click to instantly equip accessories from your hand |
| ๐น | Hotkey System | Configurable sneak keybind to open the accessory GUI โ no commands needed |
| ๐ช | Elytra Back Slot | Equip elytra in the back accessory slot (1.21.3+) |
| โ ๏ธ | Death Behavior | Keep, drop, or auto-detect accessories on death โ fully configurable |
| ๐ฑ | Bedrock Support | Native Geyser & Floodgate support with custom Anvil & Smithing GUIs |
๐จ 3D Model System
Attach custom 3D models directly to the player's body when accessories are equipped. Models are rendered using synchronized invisible armor stands โ visible to all nearby players.
- ๐ Tracks player movement, rotation, sneaking, swimming, flying, and spectator mode
- ๐๏ธ Smart visibility culling โ hide models from wearer's first-person view or during flight/dismount
- ๐ฑ Trident & Elytra compatibility โ models auto-hide during throws, riptide, and elytra flight
- ๐ง Mob models โ mobs can visually wear items they'll drop
- ๐ฎ Per-item toggle โ players can right-click to show/hide their models
- ๐ช GUI Dismount Protection โ models temporarily dismount when opening inventories to prevent visual overlap
๐ ๏ธ In-Game GUI Editors
Create and configure everything visually โ no manual YAML editing required:
| Editor | What It Does |
|---|---|
| Item Editor | Set name, material, lore, model data, slot type |
| Ability Editor | Configure potion effects & attribute modifiers with operations (ADD_NUMBER, ADD_SCALAR, MULTIPLY_SCALAR_1) |
| Recipe Editor | Shaped, shapeless, furnace, blast, smoker, anvil & smithing recipes |
| Loot Table Editor | Browse all server loot tables, add items to dungeon chests with presets |
| Mob Drop Editor | Configure which mobs drop your items and at what chance |
| Trade Editor | Set up villager trades with professions and price ranges |
| 3D Model Editor | Configure body-mounted 3D models with pitch limits |

Slot inventory with accessories equipped
๐ฆ Item Distribution
| Channel | Description |
|---|---|
| Crafting Recipes | 7 recipe types โ shaped, shapeless, furnace, blast, smoker, anvil, smithing |
| Loot Tables | Items appear in dungeon chests, mineshafts, temples, strongholds, and more |
| Mob Drops | Any mob type can drop accessories with configurable chance & amount |
| Villager Trades | Accessories appear in villager trade pools by profession and level |
| Commands | /curios give <item> [player] [amount] for direct distribution |
๐ Developer API
A comprehensive API for other plugins to integrate with CuriosPaper:
CuriosPaperAPI api = CuriosPaper.getInstance().getCuriosPaperAPI();
// Tag any item as an accessory
ItemStack ring = api.tagAccessoryItem(myItem, "ring");
// Check what a player is wearing
List<ItemStack> rings = api.getEquippedItems(player, "ring");
boolean hasRing = api.hasEquippedItems(player, "ring");
int count = api.countEquippedItems(player, "ring");
// Register slots, items, recipes, loot tables at runtime
api.registerSlot("earring", "Earring", "DIAMOND", 2);
api.registerItemLootTable("my_ring", new LootTableData("minecraft:chests/simple_dungeon", 0.25));
api.setItemModelConfig("my_cape", true, "LEATHER_HORSE_ARMOR", null, "myplugin:cape", 45f, 30f);
// Contribute resource pack assets from your plugin's JAR
api.registerResourcePackAssetsFromJar(myPlugin);
Custom Events:
| Event | When It Fires |
|---|---|
AccessoryEquipEvent |
Player equips, unequips, or swaps an accessory |
CuriosLootGenerateEvent |
Custom item generated in a loot container (cancellable) |
CuriosMobDropEvent |
Custom item dropped by a mob (cancellable) |
CuriosRecipeTransferEvent |
Custom item crafted via a recipe (data transfer) |
CuriosCraftEvent |
Custom item created via craft/smelt/smith (final) |
CuriosModelEquipEvent |
3D model about to be displayed on player |
CuriosMobModelEquipEvent |
3D model about to be displayed on mob |
PlayerDeathCurioDropEvent |
Fired on player death to filter/cancel curio drops |
๐ ๏ธ Configuration Showcase & Setup Instructions
โ๏ธ Click to Expand Setup & Configuration Files
1. Installation & Initial Setup
- Download
CuriosPaper.jarand place it into your server'splugins/directory. - Start the server to generate default configuration files (
config.yml,messages.yml,items.yml, etc.). - Choose your desired Resource Pack Delivery Mode in
config.yml:SELF: CuriosPaper hosts the resource pack on an embedded HTTP server (port: 8080).LINK: Serve your resource pack via an external URL (e.g. Modrinth, Dropbox, or web host).NONE: Disable automatic resource pack prompt completely.
2. Bedrock & Geyser Integration Setup
CuriosPaper includes automatic detection and support for Bedrock Edition players connecting via GeyserMC / Floodgate.
- Automatic Setup (Geyser on same server):
CuriosPaper automatically detects Geyser, extracts
CuriosPaper_Geyser.zipandCuriosPaper_mappings.jsonintoplugins/CuriosPaper/geyser/, and copies them to Geyser'spacks/andcustom_mappings/folders. - Bedrock Custom Containers:
Bedrock players cannot natively use Java Anvil/Smithing container packets without glitches. CuriosPaper provides native 3-row Chest GUIs (
BedrockAnvilGUIandBedrockSmithingGUI) for Bedrock players, supporting 1.20+ template smithing and XP repair/renaming.
3. Main Plugin Config (/plugins/CuriosPaper/config.yml)
# Configuration for CuriosPaper Custom Accessory Slots
version: "2.0.1"
# Update Checker
updates:
check-for-updates: true
# Storage Engine Settings
storage:
# Selected engine: YAML (flatfile), SQLITE, MYSQL, or MONGODB
engine: "YAML"
mysql:
host: "localhost"
port: 3306
database: "minecraft"
username: "root"
password: ""
table-prefix: "curios_"
mongodb:
connection-string: "mongodb://localhost:27017"
database: "minecraft"
collection: "curios_playerdata"
# Resource Pack Settings
resource-pack:
# Mode: SELF (embedded HTTP host), LINK (external URL), or NONE
mode: SELF
port: 8080
host-ip: "123.45.67.89"
url: ""
hash: ""
force-pack: false
prompt-message: "Please accept the resource pack to view custom accessories!"
# Feature Toggles
features:
# Allow elytra equipping in back slots
allow-elytra-on-back-slot: true
# Custom Bedrock GUIs for Anvils and Smithing Tables
use-custom-smithing-gui: true
use-custom-anvil-gui: true
# Display empty accessory slots in GUI
show-empty-slots: true
# Keep Curios on Death: Always, Auto (follows keepInventory), or Never
keep-curio-inventory:
type: "Auto"
# Sneak keybind hotkey to open accessory menu
hotkey:
enabled: true
slot: 8
sneak-type: "double" # single, double, or hold
4. Messages Configuration (/plugins/CuriosPaper/messages.yml)
# Message customization with legacy (&a) and HEX (<#FF5555>) color support
prefix: "&6[CuriosPaper] "
items:
quick-equip-lore: "&8โถ Shift + Right Click to equip"
slot-lore: "&6Slot: &e{slots}"
ability-when-worn: "&7When worn:"
ability-potion-effect: "&9{effect} {level}"
# Attribute Modifier Operation Lore Formatting (v2.0.1)
ability-attribute-positive: "&9+{value} {attribute}"
ability-attribute-negative: "&c-{value} {attribute}"
ability-attribute-scalar-positive: "&9+{value}% {attribute}"
ability-attribute-scalar-negative: "&c-{value}% {attribute}"
ability-attribute-multiply-positive: "&9x{value} {attribute}"
ability-attribute-multiply-negative: "&cx{value} {attribute}"
๐ฎ How It Works
1. /baubles โ Opens the accessory menu
2. Click a slot icon โ Opens that slot's inventory
3. Place an accessory โ Abilities activate instantly!
Or use Quick Equip: Hold a tagged item + Shift + Right-Click to equip instantly.
Or use the Hotkey: Select a hotbar slot + Double-Sneak to open the menu.
๐ Stats
๐ง Compatibility
| Requirements | |
|---|---|
| Minecraft | 1.14.4 โ 1.21+ |
| Server | Spigot, Paper, Purpur, Folia* |
| Java | 8+ |
| GeyserMC | Supported (custom Bedrock resource pack & mappings included) |
| Dependencies | None (standalone) |
*Folia support is experimental
๐ Geyser & Bedrock Edition Support
CuriosPaper provides full GUI slot icon and custom container support for Bedrock Edition players joining via GeyserMC.
- Automatic Setup: If Geyser is running on the same server, CuriosPaper will automatically detect Geyser's folder on startup, extract the mappings and resource pack, and copy them directly to Geyser's
packs/andcustom_mappings/folders. - Custom Bedrock GUIs (Anvil & Smithing): Bedrock players get dedicated 3-row chest interfaces for Anvils (repair, rename, combine) and Smithing Tables (supports 1.20+ Netheriite templates and legacy recipes).
- Manual Setup (Proxy/Separate Server):
- Retrieve files from your server's
plugins/CuriosPaper/geyser/directory. - Copy
CuriosPaper_Geyser.zipinto your Geyserpacks/folder. - Copy
CuriosPaper_mappings.jsoninto your Geysercustom_mappings/folder. - Ensure
enable-custom-contentis set totruein Geyser'sconfig.ymland restart Geyser.
- Retrieve files from your server's
๐ฅ Quick Start
# 1. Download CuriosPaper.jar from Modrinth or GitHub Releases
# 2. Drop it into your server's plugins/ folder
# 3. Start the server
# 4. Done! Use /baubles in-game
First Accessory in 60 Seconds
/curios create speed_ring # Create a new item
In the GUI: set the name, material, slot type โ add a Speed ability โ add a recipe โ done.
/curios give speed_ring # Get the item
/baubles # Open accessory menu
Place it in a ring slot โ Speed I activates! ๐
๐ Documentation
The full documentation site covers:
| Section | Topics |
|---|---|
| Getting Started | Installation, concepts, first accessory walkthrough |
| Configuration | Slots, features, abilities, performance, databases & Bedrock GUIs |
| Systems | Accessories, abilities, recipes, loot tables, mob drops, trades, 3D models, Bedrock support, hotkeys, death behavior |
| GUI Editors | Item, ability, recipe, loot table, mob drop, trade, 3D model editors |
| Developer API | Getting the API, accessories, loot tables, 3D models, resource packs, events |
| Examples | Complete plugin examples with loot tables, abilities, and recipes |
๐ What's New in v2.0.1
- ๐ฑ Bedrock Anvil & Smithing GUIs โ Dedicated 3-row chest interfaces for Bedrock Edition players to access Anvil (combining, repairing, renaming with XP cost) and Smithing Tables (1.20+ templates & legacy smithing).
- ๐ Attribute Modifier Operations โ Configure player modifier abilities with specific operations:
ADD_NUMBER(flat value),ADD_SCALAR(percentage%), andMULTIPLY_SCALAR_1(multiplierx). - โ๏ธ Flight & Spectator Model Auto-Hiding โ ArmorStand 3D models automatically hide when players toggle flight (
isFlying), enter spectator mode, or enter special poses (SWIMMING,FALL_FLYING,SPIN_ATTACK). - ๐ช Inventory Dismount Safety โ 3D models temporarily dismount when opening inventories and auto-remount 2 ticks after close to eliminate visual GUI overlaps.
- ๐ ๏ธ Flexible Server Version Parsing โ Improved version parsing regex in
VersionUtilfor non-standard Paper dev builds (e.g.26.2.build.48-alpha). - ๐ฌ Command & GUI Improvements โ Fixed
givecommand messaging targeting and case-insensitive color-stripped GUI title matching.
Full changelog โ CHANGELOGS.md
๐ฌ Community
โ Support the Project
If CuriosPaper has been useful to you, consider leaving a tip โ it helps keep the project alive!
๐ค For Developers
Maven
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
<dependency>
<groupId>com.github.Brothergaming52</groupId>
<artifactId>CuriosPaper</artifactId>
<version>2.0.1</version>
<scope>provided</scope>
</dependency>
plugin.yml
depend: [CuriosPaper]
Full API docs โ curiospaper.run.place/api


