• • 8/3/26 9:50 am • 11 logs
- 1k views • 4 today
- save_alt 22 downloads
- Game Version
- Minecraft 26.1.1
- Progress
- 100% complete
5
![[plugin] CuriosPaper Minecraft Mod](https://cdn.modrinth.com/data/JLMPHrRw/images/907375d54ee434019af260f5a126f361d4add7b3.png)
✦ 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
- 💍 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:
- 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
- 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:
[code=java]
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);
[/code]
Custom Events:
- 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
🎮 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
- Minecraft: 1.14.4 — 1.21+
- Server: Spigot, Paper, Purpur, Folia*
- Java: 8+
- GeyserMC: Supported (custom Bedrock resource pack, mappings & custom container GUIs included)
- Dependencies: None (standalone)
*Folia support is experimental
🌐 Geyser & Bedrock Edition Support
CuriosPaper provides full GUI slot icon support and custom container interfaces 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 mappings & pack, and copy them directly to Geyser's packs/ and custom_mappings/ folders.
- Custom Container GUIs: Bedrock players receive 3-row chest interfaces for Anvils and Smithing Tables.
- Manual Setup: Copy CuriosPaper_Geyser.zip into Geyser's packs/ and CuriosPaper_mappings.json into custom_mappings/.
📥 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! 🏃
⚙️ Configuration Highlights
[code=yaml]
# Accessory slots — fully customizable
slots:
ring:
name: "Ring"
icon: "GOLD_NUGGET"
amount: 2
# Hotkey to open GUI without commands
features:
hotkey:
enabled: true
slot: 8
sneak-type: "double" # single, double, or hold
# Custom Bedrock GUIs
use-custom-smithing-gui: true
use-custom-anvil-gui: true
# Resource pack with external pack merging
resource-pack:
enabled: true
combine-external-rp: false
[/code]
Full configuration reference → curiospaper.run.place
📖 Documentation
The full documentation site covers:
- Getting Started — Installation, concepts, first accessory walkthrough
- Configuration — Slots, features, abilities, performance & storage
- Systems — Accessories, abilities, recipes, loot tables, mob drops, trades, 3D models, 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 %), and MULTIPLY_SCALAR_1 (multiplier x).
- ✈️ 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 VersionUtil for non-standard Paper dev builds (e.g. 26.2.build.48-alpha).
- 💬 Command & GUI Improvements — Fixed give command 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!
ko-fi.com/brothergaming52
🤝 For Developers
Maven
[code=xml]
<repository>
<id>jitpack.io</id>
<url>jitpack.io</url>
</repository>
<dependency>
<groupId>com.github.Brothergaming52</groupId>
<artifactId>CuriosPaper</artifactId>
<version>2.0.1</version>
<scope>provided</scope>
</dependency>
[/code]
plugin.yml
[code=yaml]
depend: [CuriosPaper]
[/code]
Full API docs → curiospaper.run.place/api
11 Update Logs
CuriosPaper v2.0.1 : by Brothergaming52 08/03/2026 9:50:49 amAugust 3 @ 1:50 pm UTC
v2.0.1
Release Date: 2026-08-03
📱 Bedrock Edition & Geyser Integration
CuriosPaper now includes native container support and automatic detection for Bedrock Edition players connecting via GeyserMC and Floodgate:
📊 Attribute Modifier Operations & Lore Formatting
✈️ 3D Model Display (ArmorStand) Improvements & Dismount Safety
🛠️ Compatibility, Performance & Bug Fixes
Release Date: 2026-08-03
📱 Bedrock Edition & Geyser Integration
CuriosPaper now includes native container support and automatic detection for Bedrock Edition players connecting via GeyserMC and Floodgate:
- Automatic Geyser Detection & Setup (BedrockUtil): Detects Bedrock players via Floodgate API, Geyser API, or offline Floodgate UUID prefixes (00000000-0000-0000-...). On startup, CuriosPaper automatically extracts and copies CuriosPaper_Geyser.zip and CuriosPaper_mappings.json into Geyser's packs/ and custom_mappings/ folders.
- Custom Bedrock Anvil GUI (BedrockAnvilGUI): Bedrock players opening an Anvil receive a dedicated 3-row Chest GUI allowing combination, repair, and renaming with accurate XP cost and level calculation.
- Custom Bedrock Smithing GUI (BedrockSmithingGUI): Bedrock players opening a Smithing Table receive a dedicated 3-row Chest GUI supporting 1.20+ Template Smithing (Template + Base + Addition) and pre-1.20 legacy Smithing (Base + Addition).
- New Feature Config Toggles: Added features.use-custom-anvil-gui (default: true) and features.use-custom-smithing-gui (default: true) in config.yml.
📊 Attribute Modifier Operations & Lore Formatting
- Attribute Operations Support: AbilityData and AbilityEditorGUI now support three distinct attribute modifier operations:
- ADD_NUMBER — Flat value addition/subtraction (e.g. +5 or -5).
- ADD_SCALAR — Percentage scalar based on base attribute (e.g. +0.20 formats as +20%, -0.15 formats as -15%).
- MULTIPLY_SCALAR_1 — Multiplier size (e.g. 1.20 formats as x1.20).
- ADD_NUMBER — Flat value addition/subtraction (e.g. +5 or -5).
- Lore Formatting & Message Customization: Updated updateAbilityLore to format positive and negative values according to the operation type, adding % for scalar operations and x multiplier prefixes for multiply operations.
- New Message Keys in messages.yml: Added items.ability-attribute-scalar-positive, items.ability-attribute-scalar-negative, items.ability-attribute-multiply-positive, and items.ability-attribute-multiply-negative.
✈️ 3D Model Display (ArmorStand) Improvements & Dismount Safety
- Flight & Spectator Model Auto-Hiding: ArmorStand models automatically hide when players toggle flight (isFlying(), PlayerToggleFlightEvent), enter Spectator mode (GameMode.SPECTATOR), or perform special poses (Pose.SWIMMING, Pose.FALL_FLYING, Pose.SPIN_ATTACK).
- Inventory Dismount Safety: 3D models temporarily dismount when players open any inventory (InventoryOpenEvent) and automatically remount 2 ticks after inventory closure (InventoryCloseEvent), preventing visual model overlaps in GUIs.
🛠️ Compatibility, Performance & Bug Fixes
- Flexible Version Parsing (VersionUtil): Upgraded version parsing regex ((\d+)\.(\d+)(?:\.(\d+))?) to gracefully handle non-standard Paper build strings (e.g. Paper dev builds like 26.2.build.48-alpha or custom server forks).
- Case-Insensitive GUI Title Matching (AccessoryGUI): Fixed title comparison logic to use color-stripped case-insensitive matching (equalsIgnoreCase), preventing GUI title bugs caused by legacy color codes.
- Give Command Target Message Fix (CuriosCommand): Fixed output message target calculation when giving items to other players.
LOAD MORE LOGS
More like this
6784544
7


Have something to say?
The only (small) critique I have is the lack of a Discord server. I know that there's a GitHub Discussions to share creations and talk about the plugin, but the average Joe will not really know how to navigate this. Discord is much more mainstream and has heavier traffic than GitHub, which in my opinion would be much better for the longevity and health of whatever community develops around this plugin. Though it is important to note that this isn't really a critique of the plugin itself and is more of a personal grievance of mine.
TDLR: incredible plugin with insane versatility for players, server owners, and developers alike.