
Donut Auction
a Donut Auction House plugin for Paper/Folia servers inspired by DonutSMP.
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: -1Feature 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: trueCompatible 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.fastbuyNew command:
/ah fastbuy— toggles fast buy mode.Config:
fast-buy: enabled: true default-state: false require-permission: trueBehavior:
- 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.fastsellNew command:
/ah fastsell— toggles fast sell mode.Config:
fast-sell: enabled: true default-state: false require-permission: trueBehavior:
- 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: trueFeatures:
- 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: 12New permission:
donutauction.update.notifyBehavior:
- 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: 100Performance 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.useAccess to the auction house donutauction.sellAllows selling items donutauction.adminAdministrative controls donutauction.fastbuyToggle fast buy mode donutauction.fastsellToggle fast sell mode donutauction.update.notifyUpdate notifications donutauction.limit.55 listing limit donutauction.limit.1010 listing limit donutauction.limit.2525 listing limit donutauction.limit.5050 listing limit donutauction.limit.100100 listing limit donutauction.limit.unlimitedUnlimited listings donutauction.slots.1010 slot expansion donutauction.slots.2525 slot expansion donutauction.slots.5050 slot expansion donutauction.slots.100100 slot expansion New Commands Summary
Command Description /ah limitView your auction limit and remaining slots /ah fastbuyToggle fast buy mode /ah fastsellToggle 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.
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.'- Greatly reduced file size.
- Resolved an issue where clicking
Next Pageon/ahalways returned to page 1.
- Resolved an issue where clicking
- fixed a bug that caused the filter not to refresh on close.
- First Release


