DonutSell
A simple plugin creates a Sell System using vault or any other economy plugin with history and multipliers inspired by DonutSMP owned by DrDonutt
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
DonutSell

---
<i>Please contact me on Discord if you have any suggestions or edits.</i>
---

- DonutSell A simple plugin creates a Sell System using vault or any other economy plugin with history and multipliers inspired by DonutSMP owned by DrDonutt ---

- Config Auto-Recovery: Players can open a sell container, place items inside, and sell everything instantly when they close it. - Config Auto-Recovery: Shulker boxes are fully supported — the box itself sells, and all items stored inside it are counted too. - Config Auto-Recovery: Sell GUI, messages, sounds, history GUI, buttons, titles, slots, and layouts are all configurable in the plugin files. - Config Auto-Recovery: Use Vault by default, or disable it and give money through any custom console command from config. - Config Auto-Recovery: Every item price is editable in `prices.yml`, and any unconfigured item automatically sells for the default price of `1`. - Config Auto-Recovery: Prices and sell totals are shown in clean compact format like `1K`, `1.2M`, `3B`, or `1T`. - Config Auto-Recovery: Operators can blacklist items from being sold, and blacklisted items are safely returned to the player instead of being removed. - Config Auto-Recovery: Players can open `/sellhistory` and browse every item they sold inside a paged chest menu. - Config Auto-Recovery: Sell history stores items exactly as sold, including names, enchantments, lore, and shulker data. - Config Auto-Recovery: Sell history can be sorted by value or by item name directly from the GUI. - Config Auto-Recovery: Item prices can be displayed anywhere with placeholders like `%donutsell_netherite_block_price%`. - Config Auto-Recovery: If a config file gets corrupted or broken, the plugin automatically resets it instead of crashing the server. ---

| Command | Access | Description | | :--- | :--- | :--- | | `/donutsell` | Everyone | Shows plugin info and available commands | | `/donutsell reload` | Operator | Reloads all configuration files | | `/donutsell item <item> blacklist` | Operator | Blacklists an item from being sold | | `/donutsell item <item> unblacklist` | Operator | Removes an item from the blacklist | | `/donutsell item <item> set-price <amount>` | Operator | Sets the sell price of an item | | `/sell` | Everyone | Opens the sell GUI to sell items | | `/sellhistory` | Everyone | Opens your sell history |
---

- A folder named `DonutScoreboard` is created in your `plugins` folder automatically. Inside you will find a clean `config.yml` file.
Config.yml
```yml
==========================================================
#
DonutSell — config.yml
by SirSnaryo
#
Works on: Paper · Spigot · Bukkit · Purpur
Version: 1.21.x
#
==========================================================
# #
┌─────────────────────────────────────────────────────────┐
│ COLOR CODES │
├─────────────────────────────────────────────────────────┤
│ &f = white &7 = gray &0 = black │
│ &a = green &c = red &e = yellow │
│ &b = aqua &9 = blue &d = purple │
│ &l = bold &o = italic &r = reset all │
│ &#RRGGBB = any hex color (e.g. &#FF5500 = orange) │
└─────────────────────────────────────────────────────────┘
# #
┌─────────────────────────────────────────────────────────┐
│ COMMANDS │
├─────────────────────────────────────────────────────────┤
│ /sell → open sell GUI │
│ /sellhistory → open sell history │
│ │
│ /donutsell → plugin info │
│ /donutsell reload → reload config │
│ /donutsell item <item> blacklist → blacklist item │
│ /donutsell item <item> unblacklist → unblacklist item │
│ /donutsell item <item> set-price <amount> │
└─────────────────────────────────────────────────────────┘
# #
┌─────────────────────────────────────────────────────────┐
│ BROKEN CONFIG │
├─────────────────────────────────────────────────────────┤
│ If you break this file the plugin automatically │
│ resets it and regenerates a clean copy on startup. │
└─────────────────────────────────────────────────────────┘
#
==========================================================
----------------------------------------------------------
ECONOMY
vault-economy: true → uses Vault for deposits
vault-economy: false → uses money-give command instead
#
money-give placeholders:
[user] → player name
[amount] → raw amount (not formatted)
----------------------------------------------------------
vault-economy: true money-give: "example give [user] [amount]"
----------------------------------------------------------
SELL GUI
The container players use to sell items.
#
command → the command to open the sell GUI
aliases → alternative commands (list)
title → container title (supports color codes)
rows → number of rows (1-6)
#
open-sound:
enabled → play a sound when opening the GUI
sound → Bukkit Sound enum name
----------------------------------------------------------
sell: command: "sell" aliases: [] title: "&8ᴘʟᴀᴄᴇ ɪᴛᴇᴍꜱ ɪɴ ʜᴇʀᴇ ᴛᴏ ꜱᴇʟʟ" rows: 4 open-sound: enabled: false sound: "BLOCK_CHEST_OPEN"
----------------------------------------------------------
SELL MESSAGE
Shown to the player after selling items.
#
[amount] = compact formatted total (e.g. 1.2K, 5M)
#
You can enable/disable each notification type:
- chat message
- actionbar message
- title + subtitle
- sound
----------------------------------------------------------
sell-message: chat: enabled: true message: "AFC00+$[amount]" actionbar: enabled: true message: "AFC00+$[amount]" title: enabled: false title: "AFC00+$[amount]" subtitle: "&7Items sold successfully!" fade-in: 10 stay: 40 fade-out: 10 sound: enabled: true sound: "ENTITY_EXPERIENCE_ORB_PICKUP"
----------------------------------------------------------
SELL EMPTY
Message shown when player closes the sell GUI without
putting any sellable items inside.
#
Set enabled to false to show nothing.
----------------------------------------------------------
sell-empty: chat: enabled: false message: "&cNo items to sell." actionbar: enabled: false message: "&cNo items to sell." title: enabled: false title: "&cNo Items" subtitle: "&7Put items in the GUI to sell them." fade-in: 10 stay: 40 fade-out: 10 sound: enabled: false sound: "ENTITY_VILLAGER_NO"
----------------------------------------------------------
BLACKLISTED ITEM RETURN
Message shown when blacklisted items are returned.
#
[count] = number of blacklisted items returned
----------------------------------------------------------
blacklist-return: chat: enabled: false message: "&c[count] blacklisted item(s) returned." actionbar: enabled: false message: "&c[count] blacklisted item(s) returned." sound: enabled: false sound: "ENTITY_VILLAGER_NO" ```
---

- Done the latest version of Done. - Done the `.jar` file into your server's `plugins` folder. - Done your server. - Done! setup required for prices only.
---

--- © 2026 DonutSell. All rights reserved to MIT.