
Donut Auction
a Donut Auction House plugin for Paper/Folia servers inspired by DonutSMP.
- Загрузки
- 30K
- Подписчики
- 19
- Обновлён
- 19 августа 2026 г.
- Лицензия
- Apache-2.0
Опубликован 7 марта 2026 г.
DonutAuctionHouse is a standalone auction house plugin for Paper and Folia servers running Minecraft 1.20+. It provides a clean, intuitive GUI-powered marketplace where players can list, browse, search, and purchase items using any Vault-compatible economy. Optional DonutCore integration can also resolve player display names and improve the browsing experience across larger server networks.
Features
| Feature | Description |
|---|---|
| GUI Auction Browser | 54-slot inventory browser with pagination, sorting, category filters, refresh controls, search, and personal listings |
| Player Auction Management | Players can view, cancel, collect, and manage their own active, sold, and expired listings |
| Vault Economy Support | Compatible with Vault-backed economy plugins such as EssentialsX and other supported providers |
| SQLite & MySQL Storage | Uses SQLite by default with optional MySQL support for larger server networks |
| HikariCP Pooling | High-performance database connection pooling for MySQL-backed installations |
| DonutCore Integration | Optional hook for resolving network display names without making DonutCore a hard dependency |
| Async Database Operations | Storage operations run away from the main server thread to maintain responsiveness |
| Paper & Folia Support | Designed for modern Paper and Folia server environments |
| Modular Codebase | Java 17 and Maven-based architecture organized into services, storage, GUI, and hook layers |
| Customizable Experience | Configurable pricing, listing duration, messages, titles, button names, and visual presentation |
Auction Browser
DonutAuctionHouse provides an inventory-based marketplace designed to be simple for players to understand and fast to navigate.
The auction browser includes:
- 54-slot inventory interface
- Pagination for large auction inventories
- Price sorting
- Category filtering
- Text search
- Manual refresh controls
- Personal listing access
- Clear auction status information
Players do not need to memorize complicated command syntax to browse and purchase items.
Player Auction Management
Players can manage their own listings directly through the plugin.
Supported listing states include:
- Active auctions
- Sold auctions
- Expired auctions
Players can:
- View their current listings
- Cancel active auctions
- Collect items from expired listings
- Track sold listings
- Recover cancelled items immediately
Cancellation logic is designed to return items safely while preventing duplication exploits.
Economy
DonutAuctionHouse integrates with Vault, allowing it to work with Vault-compatible economy plugins.
Features include:
- Instant payment handling during purchases
- Economy-backed listing transactions
- Configurable maximum listing price
- Configurable listing duration
- Compatibility with common Vault economy providers such as EssentialsX
A compatible Vault economy provider is required for monetary transactions.
Storage
DonutAuctionHouse supports multiple storage options depending on the size of the server.
SQLite
SQLite is the default storage option and is ideal for:
- Small servers
- Simple installations
- Servers that do not require an external database
It works out of the box without requiring separate database infrastructure.
MySQL
MySQL can be used for larger installations and server networks.
MySQL support includes:
- External database storage
- HikariCP connection pooling
- Better suitability for larger networks
- High-performance connection management
DonutCore Integration
DonutCore support is completely optional.
When DonutCore is installed:
- Player names in auction listings can use the network's display-name system
- Listings can better match the identity system used across the network
When DonutCore is not installed, DonutAuctionHouse continues working normally without errors or hard dependencies.
Performance & Safety
DonutAuctionHouse is designed to keep database work away from the main server thread.
The plugin includes:
- Asynchronous database operations
- Executor-based task handling
- Server-responsive storage access
- Safe cancellation behavior
- Protection against common duplication scenarios
- Architecture designed with modern Paper threading practices in mind
Development
DonutAuctionHouse uses a modern Java plugin architecture.
Technical details include:
- Java 17
- Maven build system
- Modular service architecture
- Dedicated storage layer
- GUI abstraction
- Optional hook system
- Shaded dependencies
- Namespaced dependencies to reduce plugin conflicts
- Codebase designed to be extended or forked for custom behavior
Configuration
DonutAuctionHouse is designed to be configurable for different server economies and marketplace styles.
Depending on the version, configurable options may include:
- Maximum auction price
- Listing duration
- Database type
- MySQL connection information
- Inventory titles
- Button names
- Messages
- Marketplace appearance
The interface uses neutral white text with gold headers for improved clarity.
Why Choose DonutAuctionHouse?
- Easy Setup — Drop the plugin jar into your
pluginsfolder, configure a few values, and use the default SQLite storage immediately. - Low Overhead — Lightweight architecture with shaded and namespaced dependencies helps avoid unnecessary plugin conflicts.
- Player-Friendly UI — Inventory-based controls make listing, browsing, searching, and purchasing straightforward.
- Robust & Safe — Built with duplication prevention, race-condition awareness, and asynchronous server performance in mind.
- Flexible Integration — Suitable for both smaller servers and larger networks using Vault, MySQL, and optional DonutCore integration.
- Extensible Foundation — Modular architecture makes it easier for developers and server owners to customize or expand the plugin.
Compatibility
- Paper
- Folia
- Minecraft 1.20+
- Vault-compatible economies
- SQLite
- MySQL
- Small standalone servers
- Larger server networks
Requirements
DonutAuctionHouse requires a supported Paper or Folia server.
For economy functionality, install:
- Vault
- A Vault-compatible economy plugin
DonutCore is optional and is only used for enhanced player display-name integration.
Community & Support
- Discord: https://discord.gg/TJc3CxR4jK
- GitHub: https://github.com/MeherBenSalem
- Website: https://nightbeam.dev
- Store: https://nightbeam.dev/store
- CurseForge: https://www.curseforge.com/members/nightbeamstudio/projects
- Modrinth: https://modrinth.com/organization/nightbeam
If you encounter a bug or have a feature request, please join the Discord community or report it through the appropriate project page.
License
Donut Auction is licensed under the Apache License 2.0.
You are free to use, modify, and redistribute Donut Auction in accordance with the terms of the Apache License 2.0.
Feel free to include Donut Auction in modpacks
Ченджлог
1.4.0Релиз26.1.1, 26.1.2, 26.2 · 19 августа 2026 г.
- bStats metrics (plugin ID 33523), disable with
metrics.enabled: false - Store tags: Paper, Folia, Purpur, Spigot, and Bukkit for Minecraft 1.20.1–26.2
- Modrinth update check always reports on load (console + online admins): up to date or update available
- Admins with
donutauction.update.notifystill see update notices on join when a newer release exists - Chat search uses Bukkit
AsyncPlayerChatEvent; scheduler falls back when region schedulers are absent
1.3.1Релиз1.21.8, 26.1, 26.2 · 10 августа 2026 г.
DonutAuctionHouse v1.3.1
New Features
- None
Improvements
- Full
messages.ymltranslation support for GUI titles, button labels, lore, chat messages, command text, and status labels /ah reloadnow reloadsmessages.ymlalongsideconfig.yml- Prefix and minimum-price messages can live in
messages.yml(legacyconfig.ymlkeys still work)
Bug Fixes
- None
Configuration
- New
messages.yml— edit and/ah reloadto translate the plugin without recompiling - Existing
config.ymlmessages.prefixandmessages.price-below-minremain supported as fallbacks
Compatibility
- Drop-in update from 1.3.0
- Folia-supported unchanged
- No database migration required
- No command or permission changes
Upgrade Notes
- Replace the jar with
DonutAuctionHouse-1.3.1.jar - Restart the server (or
/ah reloadafter first start to generatemessages.yml) - Edit
plugins/DonutAuctionHouse/messages.ymlto translate player-facing text
1.3.0Релиз26.1.1, 26.1.2, 26.2 · 29 июля 2026 г.
DonutAuctionHouse v1.3.0
New Features
- Sell from auction GUI — emerald "Sell Held Item" button on the main auction house (slot 45) lists the item in your main hand
- Adjustable sell price — use +/- buttons in the sell GUI before confirming a listing
Improvements
- Sell GUI enlarged to 45 slots with confirm/cancel on the bottom row (slots 40 and 44)
- Confirm purchase GUI enlarged to 45 slots with a gray border, centered item preview, and buyer balance display
- Sell flow logic shared between
/ah selland the auction GUI button - Maven publish workflow supports
target/jars with Paper/Folia/Bukkit loader tags
Bug Fixes
- Fixed sell GUI confirm/cancel buttons overlapping duration and category controls
- Fixed item duplication when closing and reopening the sell menu during duration/category/price changes
- Pending sale is no longer cancelled when the sell GUI refreshes itself
Configuration
- None
Compatibility
- Drop-in update from 1.2.2
- Requires Vault or VaultUnlocked plus an economy plugin
- Folia-supported remains enabled
- No database migration required
- No permission changes
Upgrade Notes
- Install
DonutAuctionHouse-1.3.0.jar(replace 1.2.2) - Restart the server
- Open
/ahand use the emerald button or/ah sell <price>to list items from your hand
1.2.2Релиз26.1.1, 26.1.2, 26.2 · 28 июля 2026 г.
Improvements
- Economy bridge detection now supports VaultUnlocked in addition to classic Vault
- Clearer startup logs when a Vault-compatible Economy service is linked or missing
- Soft-disables cleanly when no Economy provider is registered instead of throwing on enable
Bug Fixes
- Fixed Folia / VaultUnlocked servers failing to load DonutAuctionHouse with “Vault isn’t on the server”
- Removed hard
depend: Vaultso the plugin can enable when only VaultUnlocked is installed
1.2.1Релиз26.1.1, 26.1.2, 26.2 · 10 июля 2026 г.
Improvements
- Sell confirmation now uses atomic pending-sale transactions with unique IDs so an item is owned by only one state at a time (inventory, pending sale, or active auction)
- Confirm, cancel, inventory close, disconnect, and shutdown recovery are idempotent against double-clicks, lag, and repeated callbacks
- Cancel and collect actions on existing auctions use operation locks to prevent double item returns
- Failed listing validation now safely restores the item (with ground drop if the inventory is full)
- Added sampled debug logging for invalid/repeated pending-sale claims (
debug.pending-sales)
Bug Fixes
- Fixed item duplication when cancelling
/ah sellconfirmation (Cancel, GUI close, duration/category re-open, double-click, or disconnect could return the item more than once) - Pending sell items are now returned correctly on player quit and server shutdown
Configuration
debug.pending-sales(default:false) — whentrue, logs every invalid/repeated pending-sale claim; whenfalse, samples only
1.2.0Релиз26.1, 26.1.1, 26.1.2 · 8 июня 2026 г.
Quality of Life & Marketplace Expansion Update
Feature 1 — Permission-Based Auction Limits
Configurable permission-based auction limits with highest-permission-wins resolution.
New permissions:
donutauction.limit.5(default: true)donutauction.limit.10donutauction.limit.25donutauction.limit.50donutauction.limit.100donutauction.limit.unlimited(-1)
New command: /ah limit — displays your current limit, active listings, and remaining slots.
Config:
auction-limits:
enabled: true
default-limit: 5
permissions:
donutauction.limit.10: 10
donutauction.limit.25: 25
donutauction.limit.50: 50
donutauction.limit.100: 100
donutauction.limit.unlimited: -1
Feature 2 — Preserve Original Item Lore
New configurable lore system that preserves original item lore from custom item plugins.
Lore modes:
APPEND— Adds auction info below existing lore (default)REPLACE— Replaces lore entirely (legacy behavior)DISABLED— Does not modify lore at all
Config:
auction-lore:
mode: APPEND
separator: true
Compatible with: MMOItems, Oraxen, ItemsAdder, EcoItems, ExecutableItems, MythicMobs, and any custom item plugin using ItemMeta/NBT.
Feature 3 — Fast Buy System
Instant purchase mode that skips the confirmation GUI.
New permission: donutauction.fastbuy
New command: /ah fastbuy — toggles fast buy mode.
Config:
fast-buy:
enabled: true
default-state: false
require-permission: true
Behavior:
- Normal: Click item → Confirm Purchase → Purchase Complete
- Fast Buy: Click item → Purchase Complete
- Setting persists across reconnects and server restarts.
Feature 4 — Fast Sell System
Instant listing mode that uses stored settings.
New permission: donutauction.fastsell
New command: /ah fastsell — toggles fast sell mode.
Config:
fast-sell:
enabled: true
default-state: false
require-permission: true
Behavior:
- Normal:
/ah sell <price>→ Sell GUI for duration/category selection - Fast Sell:
/ah sell <price>→ Listed immediately using last settings - Automatically remembers last duration, category, and price.
Feature 5 — Shulker Box Support
Full shulker box support with content preview.
Config:
shulker-support:
enabled: true
preview-contents: true
Features:
- Preserves all contents, NBT, names, lore, enchantments, colors, and custom metadata.
- Right-click any shulker box in the auction to preview its contents.
- Read-only preview GUI prevents extraction while listed.
- No duplication exploits.
Feature 6 — Modrinth Update Checker
Modern update checker using the Modrinth API.
Config:
update-checker:
enabled: true
notify-console: true
notify-admins: true
check-interval-hours: 12
New permission: donutauction.update.notify
Behavior:
- Checks asynchronously, never blocks startup.
- Caches results, handles rate limits and API downtime.
- Notifies console on enable if update available.
- Notifies admins on join if update available.
Feature 7 — Auction Slot Expansion
Additional monetization-friendly slot permissions.
New permissions:
donutauction.slots.10donutauction.slots.25donutauction.slots.50donutauction.slots.100
Config:
auction-slots:
enabled: true
permissions:
donutauction.slots.10: 10
donutauction.slots.25: 25
donutauction.slots.50: 50
donutauction.slots.100: 100
Performance Improvements
- All database operations now use the plugin's named async executor instead of the default ForkJoinPool.
- Operation lock cleanup prevents memory leaks from accumulated auction locks.
- Fire-and-forget DB updates now include exception logging.
- Search performance optimized with cached plain-text names.
Security & Stability Fixes
- CRITICAL: Fixed item duplication exploit where server crash during purchase could duplicate items.
- CRITICAL: Fixed item duplication exploit where server crash during cancellation could duplicate items.
- CRITICAL: Fixed item duplication exploit where server crash during item collection could duplicate items.
- All inventory/economy actions now happen after database persistence succeeds.
- Failed purchases now refund money automatically.
- Failed cancellations now restore auction state automatically.
- Failed collections now restore auction state automatically.
New Permissions Summary
| Permission | Description |
|---|---|
donutauction.use |
Access to the auction house |
donutauction.sell |
Allows selling items |
donutauction.admin |
Administrative controls |
donutauction.fastbuy |
Toggle fast buy mode |
donutauction.fastsell |
Toggle fast sell mode |
donutauction.update.notify |
Update notifications |
donutauction.limit.5 |
5 listing limit |
donutauction.limit.10 |
10 listing limit |
donutauction.limit.25 |
25 listing limit |
donutauction.limit.50 |
50 listing limit |
donutauction.limit.100 |
100 listing limit |
donutauction.limit.unlimited |
Unlimited listings |
donutauction.slots.10 |
10 slot expansion |
donutauction.slots.25 |
25 slot expansion |
donutauction.slots.50 |
50 slot expansion |
donutauction.slots.100 |
100 slot expansion |
New Commands Summary
| Command | Description |
|---|---|
/ah limit |
View your auction limit and remaining slots |
/ah fastbuy |
Toggle fast buy mode |
/ah fastsell |
Toggle fast sell mode |
Migration Notes from 1.1.0 → 1.2.0
- Existing configs are safely updated with new defaults on startup.
- A new
player_preferencestable is created automatically for fast buy/sell settings. - Existing
donutcore.*permissions continue to work alongside newdonutauction.*permissions. - Existing auction data is fully compatible — no data migration required.
- The lore system defaults to
APPENDmode. Set toREPLACEto preserve 1.1.0 behavior.
1.1.0Релиз26.1, 26.1.1, 26.1.2 · 28 апреля 2026 г.
Minimum Auction Price
A new configurable minimum listing price has been added to reduce auction spam.
New config options
auction:
min-price: 10
messages:
price-below-min: '&cMinimum auction price is &6%min_price%&c.'
1.0.3Релиз1.21.11, 26.1, 26.1.1 · 4 апреля 2026 г.
- Greatly reduced file size.
Комментарии
Загружаем…