Complete GUI-driven auction house for Paper, Spigot & Bukkit: listings, buy orders, live auctions, team markets, and async safety nets Paper / Spigot / Purpur / Bukkit 1.13 – 26.1.* • Java 21+ • Vault economy • YAML (built-in) + MySQL • English · Dutch · Spanish · Chinese menus • PlaceholderAPI • Discord webhooks Requires Vault and a compatible economy plugin such as EzEconomy to process currency.
What's New – v2.3.0
Added Live auction seller management – Players with ezauction.auction.live.sell can now queue items directly from the Live Auction browser (sell button) or via /liveauction sell. On enqueue, a chat message confirms the queue position. /liveauction cancel removes the entry and refunds the deposit; a cancel button also appears in the GUI. Admins with ezauction.auction.live.admin can force-cancel any active auction with /liveauction cancel <id>.
Added/bid command (alias /livebid) – Dedicated command for live auction interactions: place bids, view session status, and manage per-player countdown preferences. Bids can also be placed by clicking the suggestion in the live auction chat message.
Added Per-player notification preferences – Toggle countdowns with /bid notify [on|off] and select display type with /bid notify display <types…>. Preferences persist across restarts.
Added EzCountdown integration (optional soft-dependency) – Show live auction countdowns via ACTION_BAR, BOSS_BAR, TITLE, SCOREBOARD, or CHAT.
Added Clickable bid messages & item hover previews – The bid announcement in chat links directly to /bid <next-minimum>; hovering the item name shows enchantments, potion effects, and shulker contents.
Added Five new Bukkit events – LiveAuctionStartedEvent (cancellable), LiveAuctionBidPlacedEvent (cancellable), LiveAuctionEndedEvent, LiveAuctionPlayerJoinedEvent, LiveAuctionPlayerLeftEvent.
Added Live Auctions shortcut in Auction House – A quick-access button (beacon, slot 47) in the main /auction browser opens the Live Auction picker directly – no need to type /liveauction.
Added Claim GUI – The Claims button and /auction claim now open a 54-slot GUI showing each pending return item with its expiry date in the lore. A Claim All button collects everything at once; a Back button returns to the browser.
Added Configurable claim expiry – Set claim.expiry-days in auction.yml (default 7) to control how many days pending return items are held before expiry is shown in the Claim GUI.
Fixed First-bid minimum – The opening bid on a live auction now only requires the starting price; the configured increment applies to subsequent bids only. Sending an empty /bid response automatically places the minimum bid.
Why EzAuction?
Menu-first trading – Paginated browsers, sell/order editors, and confirmation popups keep every transaction guided and click-friendly.
Listings + buy orders – Run timed sales, reserve balance for buy requests, and fulfill either side straight from the GUI or command flow.
Shulker previews - Watch the items in Shulkers before you buy
Async persistence & fallbacks – Listings and history write through dedicated executors, automatically falling back to YAML storage if MySQL is unreachable.
Offline-safe returns – Expired or undeliverable items go to a claimable stash with login reminders and `/auction claim` recovery.
Rank-aware limits – Plug in a custom `AuctionListingLimitResolver` service to scale slot caps with ranks, islands, or progression data.
Smart value overlays – Surface configured price hints or pipe in EzShops buy/sell estimates directly into menu lore.
Team auctions – TeamsAPI integration lets team members co-list and co-claim auctions, perfect for faction and skyblock economies.
Configurable menus & translations – Override browser/confirm layouts, filler glass, and button text across the bundled English, Dutch, Spanish, and Chinese menu files.
Flexible storage – Start on lightweight YAML or flip to production-ready MySQL with SSL flags and table prefixes.
Asynchronous history – Background save queues batch player history writes to keep gameplay responsive, even during heavy auction traffic.
Player protections – Deposit refunds, balance checks, expiry sweeps, and inventory-aware delivery prevent dupes and lost currency.
PlaceholderAPI hooks – Drop `%ezauction_*%` placeholders into scoreboards or holograms to surface active listings, orders, limits, or pending returns.
Integration-ready API – Register Bukkit services to override listing caps or provide custom value providers without forking the plugin.
Enchant-aware search – Type queries like sharpness v, fortune 3, or minecraft:looting to surface listings and buy orders carrying the matching enchantments, including stored book enchants. Matching works with roman numerals, numeric levels, namespaced keys, and underscore/space differences so players can zero in on the exact enchant stack they need.
Hologram Features
Auction holograms – Place interactive holograms in the world to display live auction stats, top listings, or buy order summaries. Supports click/touch interaction for quick info and future actions.
Performance optimized – Configurable max hologram count and batch update options ensure smooth gameplay even with many holograms active.
Permission and proximity controls – Optionally restrict hologram visibility and interaction by permission node or player proximity (distance).
Configurable types – Choose which auction stats or listings to display via hologram type selection.
Discord Integration
Standalone webhook – Post colour-coded embed notifications to any Discord channel by pasting a webhook URL into discord.yml. No DiscordSRV or bot setup required.
DiscordSRV support – Optionally route notifications through an existing DiscordSRV installation with optional account-linking and role-gating per event.
Four event types – Receive a message whenever an auction is listed, sold, bid on, or cancelled, each styled with its own accent colour (green / blue / yellow / red).
Live admin commands – Configure, enable, disable, and test the webhook in-game with /auctiondiscord webhook – changes take effect instantly without a restart.
Async & non-blocking – All HTTP calls run on a background thread; a failed delivery is logged at WARNING level and never interrupts gameplay.
Open the target Discord channel → Edit Channel → Integrations → Webhooks → New Webhook → Copy Webhook URL.
In-game or via console, run:
Code (Text):
/auctiondiscord webhook set url https://discord.com/api/webhooks/YOUR_ID/YOUR_TOKEN
Verify with /auctiondiscord webhook test – a test embed will appear in your channel immediately.
Show whether the webhook is enabled and the masked URL.
/auctiondiscord webhook set url <url>
Set the webhook URL and enable immediately.
/auctiondiscord webhook enable / disable
Toggle the webhook without changing other settings.
/auctiondiscord webhook test
Send a test embed to verify the webhook is working.
/auctiondiscord reload
Reload discord.yml (both DiscordSRV and webhook) at runtime.
Code (yml (Unknown Language)):
holograms:
enabled: true
update-interval-ticks: 100
search-radius: 2.5
height-offset: 1.75
max-holograms: 100
batch-update: true
require-permission: false # Set true to require a permission node
view-permission: ezauction.hologram.view # Permission node for viewing/interacting
proximity-limit: false # Set true to restrict by distance
proximity-distance: 32.0 # Max distance for interaction
Quick Start
Upload `EzAuction.jar`, restart your Paper or Purpur server, and confirm Vault plus an economy plugin are active.
Edit plugins/EzAuction/auction.yml for pricing rules, durations, and GUI slots, adjust auction-storage.yml for YAML/MySQL persistence, and update auction-values.yml or messages/menu-interactions_*.yml as needed.
Choose between YAML or MySQL storage, then grant players ezauction.auction (and optional sell/order/history nodes) so they can browse and trade.
Encourage `/auction history` so buyers and sellers can audit their latest activity right from chat.
Live Auctions
Queue the spotlight listings – Flip live-auctions.enabled on (and queue-enabled if you want a rolling lineup) so fresh sales are staged for broadcast and visible through /liveauction.
Sell from the GUI – The Live Auction browser shows a sell button for players with ezauction.auction.live.sell. One click opens the sell menu pre-configured for the live queue – no command needed.
Queue position feedback – After queuing, the seller receives a chat confirmation with their position number. If the queue is disabled, the auction starts immediately with a different confirmation message.
Cancel anytime – A cancel button appears in the GUI while the player has a queued entry; clicking it (or running /liveauction cancel) dequeues the item and refunds the deposit.
Admin force-cancel – OPs and admins with ezauction.auction.live.admin can stop an active auction immediately via /liveauction cancel <auction-id>. All bids are refunded and the item returned to the seller.
/bid command – Bidders place bids with /bid <amount> or by clicking the clickable suggestion in chat. /bid notify and /bid notify display manage per-player countdown preferences.
Hype them in chat – Keep display-in-chat enabled to broadcast live listings every announcement-interval-ticks ticks with clickable bid links and hover previews on the item name.
Curate from the live menu – The Live Auctions GUI shows queue position, seller names, price summaries, and highlights your own entry with a badge and enchant glow.
Team Auctions
Scope listings to your team – Enable team-auctions.enabled in auction.yml so sellers can post under /auction team sell and only members of the seller's team can see and purchase those listings.
Private team browser – /auction team opens a dedicated tab showing only your team's active listings; the tab is hidden entirely when team auctions are disabled or TeamsAPI is absent.
Optional soft-dependency – Powered by the optional TeamsAPI plugin. Standard auctions continue to work normally without it.
Commands & Permissions
Command
Description
Permission
/auction
Open the auction browser, claim items, and cancel listings.
ezauction.auction
/auction sell <price> [duration]
List the held item instantly or open the sell GUI.
ezauction.auction.sell
/auction order <price> <amount> [duration]
Create a buy order with reserved funds.
ezauction.auction.order
/auction cancel [id]
Review and cancel active listings or buy orders.
ezauction.auction
/auction history [buy|sell]
Show the latest transactions for each category.
ezauction.auction.history
/auction live
Preview upcoming live auction broadcasts and refresh the queue.
ezauction.auction.live
/auction team
Browse team-scoped listings (hidden when disabled or TeamsAPI absent).
ezauction.auction.team
/auction team sell
List the held item as a team auction visible only to your team members.
ezauction.auction.team.sell
/auction claim
Withdraw stored return items.
ezauction.auction
/auction search <query>
Open the auction browser filtered by item name, enchantment, or keyword.
ezauction.auction.search
/auctionhologram <create|remove|list> [args]
Manage auction holograms: create, remove, or list in-world auction displays.
ezauction.hologram.manage
/liveauction
Open the live auction viewer.
ezauction.live
/liveauction sell
Queue the held item for the live auction.
ezauction.auction.live.sell
/liveauction cancel
Cancel your own queued live auction entry and receive a deposit refund.
ezauction.auction.live.sell
/liveauction cancel <id>
Force-cancel an active live auction by ID. Refunds all bidders and returns the item to the seller. (Admin)
ezauction.auction.live.admin
/bid [amount]
Place a bid or view your session status in an active live auction.
ezauction.bid
Setup Guide
Need more details? See the
full documentation for all YAML, MySQL, menu, and advanced settings options.
Requirements
Requirement
Notes
Java 21+
Matches the Paper 1.21+ API target used by EzAuction.
Paper / Spigot / Purpur 1.21+
The plugin relies on Paper-compatible server APIs.
Vault
Provides the economy bridge for deposits, buy orders, and payouts.
Menu interactions – Tweak click increments, confirmation buttons, and chat prompts through messages/menu-interactions_*.yml per locale.
Live auctions – Manage live-auctions.enabled, queue-enabled, display-in-chat, and announcement-interval-ticks to stage listings for announcements or GUI previews.
Value display – Display configured material prices or EzShops-sourced estimates, templated through values.format.
Optional Integrations
Expose a custom AuctionListingLimitResolver service to scale listing caps with ranks, islands, or other progression data.
Install EzShops so the auction browser can display buy or sell prices directly in listing lore when configured.
Install PlaceholderAPI to unlock `%ezauction_*%` placeholders for leaderboards, scoreboards, or Discord relays.
Network Setup (Bungee/Velocity)
Switch storage.type to mysql and point each Paper/Purpur backend to the same credentials so listings, buy orders, and returns are stored centrally. The bundled MySQL driver implements DistributedAuctionListingStorage so inserts and claims remain atomic across servers.
Drop the same EzAuction.jar on every gameplay server behind your proxy, then copy a single set of tuned configs (auction.yml, auction-storage.yml, messages/*.yml) to keep menus, limits, and language consistent network-wide.
Restart each backend (avoid /reload) after editing the configs so every instance warms its cache from MySQL before players join. The manager only serves listings once storage is marked ready.
If a lobby should not show auctions, leave EzAuction off that node or point it at a different table-prefix so it maintains a separate pool.
Confirm every server shares the same Vault economy provider or synchronised balance backend. Currency withdrawals happen locally, so mismatched economy data across nodes can desync deposits and reserved funds.
EzAuction ships with menu-layout_*.yml and menu-interactions_*.yml bundles for English, Dutch, Spanish, and Chinese (`_en`, `_nl`, `_es`, `_zh`).
Copy any bundle to another locale tag (for example `_de`) to introduce custom language support without touching code.
Keep button text consistent across languages so navigation slots and confirmation buttons remain aligned with the GUI configuration.
Create a lightweight helper plugin that loads before EzAuction (set loadbefore: [EzAuction] in its plugin.yml).
Implement com.skyblockexp.ezauction.api.AuctionListingLimitResolver to compute the final slot total.
Register the resolver with Bukkit's ServicesManager during onEnable() so EzAuction can discover it at startup.
This companion plugin registers before EzAuction enables and adds any configured bonus slots per player UUID on top of EzAuction's base limit. Update the UUID keys or compute the bonus however you like to reflect your network's progression rules.