XAuctionHouse
Auction House with Live Bidding & Multi-Currency
Built on XCore — The modular Minecraft server framework
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
A complete marketplace system with fixed-price listings AND live bidding auctions, multi-currency support, favorites, tax system, shulker box preview, Discord notifications, cross-server sync, and a fully YAML-configurable GUI system.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ BUY NOW — Fixed Price
- Seller sets a price, buyer purchases instantly
- Payment goes to seller immediately (or on next login if offline)
- Simple and straightforward
■ AUCTION — Live Bidding
- Seller sets a starting bid and duration
- Players place incrementally higher bids via an intuitive GUI
- Previous bidders are automatically refunded when outbid
- Snipe protection — Auction extends if a bid is placed near the end
- Highest bidder wins when the timer runs out
- No bids? Item returns to seller
- List items in any currency defined in XCore's economy system
/ah sell 1000 coinsor/ah sell 500 gemsor/ah auction 100 diamonds- If currency is omitted, the primary Vault currency is used automatically
- Prices displayed with the correct currency symbol everywhere (GUI, chat, Discord)
- Tax calculated in the listing's currency
How it works:
Configuration:
- Seller runs
/ah auction <starting_bid> [duration] [currency] - Item appears in the auction house with an ■ AUCTION tag
- Buyers click the item to open the Bid Amount Selector
- Adjust your bid with +/- buttons (increments scale with item value)
- Confirm your bid — funds are held until auction ends or you're outbid
- Outbid? You're automatically refunded and notified
- Auction ends → highest bidder gets the item, seller gets paid
Configuration:
- Minimum bid increment — Flat amount or percentage-based
- Snipe protection — Configurable threshold and extension time
- Duration limits — Min/max auction duration
- Max active auctions — Per-player limit
- Announcements — Optional bid and win broadcasts
- Shift+Right click any item to toggle favorite
- Favorites appear as a category in the Sort by Category filter: ★ Favorites
- Favorites persist across sessions
- Obsolete favorites (sold/expired items) are automatically purged
- 7 Categories — All, Tools, Weapons, Blocks, Armors, Spawners, Other (+ Favorites)
- Search — By item name, price range, and material type via anvil input
- Sorting — Newest/Oldest, by category, by listing type (All / Buy Now / Auctions)
- Shulker Support — Preview shulker box contents before buying, blocked item validation
- Tax System — Configurable rate (%), buyer or seller side
- Sell Limits — Permission-based:
ah.limit.5,ah.limit.10, etc. - Blocked Items — Block materials, display names, and anvil-renamed items
- Item Claim — Smart delivery: items given directly if inventory has space, or stored in "My Purchases" for claim. Full purchase history preserved with "Claimed" status
- Auto-Return — Optionally return expired items to players on join
- Pending Payments — Offline sellers paid automatically on next login
- Seller Notifications — Sellers notified at login of all sales made while offline (configurable delay)
- Price History — Analytics table tracking all sale prices
- Not enough money — Buy/bid button replaced with "Not enough money" when player can't afford the item (updates in real-time)
- Inventory full — Buy button replaced with "Inventory full" when no space available (fixed-price only)
- Translatable item names — Item names displayed in the player's language in chat messages and bossbar announcements
- Hoverable items — Item names in chat show full tooltip on hover (enchantments, durability, lore, etc.)
- Favorites — Add/remove favorite button in item lore, updates in real-time after toggle
All GUIs are fully YAML-configurable — change materials, slots, sounds, titles, lore, custom model data, item models, permissions, and click actions. Custom items added to the YAML render automatically.
- Auction House — Main browse with sorting, filtering, pagination, search
- My Items — For Sale / Expired / Sold / My Purchases (claim) / Active Bids tabs
- Confirm — Purchase confirmation with price, tax, and expiration
- Search — Filtered results with same controls as main GUI
- Bid Amount — Select bid with +/- buttons, live display, confirm
- Bid Confirm — Final confirmation before placing bid
- Player Auction — Admin view of any player's items
- Viewer — Shulker box content preview
- Discord Webhooks — Notifications for listings, sales, bids, auction wins, admin actions (separate webhooks for sales and admin)
- PlaceholderAPI — Sell count, sell limit, expired count, active auctions, active bids
- Web API — REST endpoints for listings, sales, stats, player data
- Cross-Server Sync — Listings, purchases, and bids sync instantly via XCore
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Player Commands
Code:
/ah — Open the auction house
/ah sell <price> [quantity] [currency] — List item at fixed price
/ah auction <starting_bid> [duration] [currency] — Start a timed auction
/ah cancel — View your listings
/ah search <query> [min] [max] [material] — Search items
/ah favorite <item_uuid> — Toggle favorite
/ah favorites — View favorites
/ah help — Show help
Admin Commands
Code:
/ah reload — Reload config, lang, GUIs
/ah purge-expired — Delete all expired items
/ah purge-bought — Delete all sold items
/pah <player> — View a player's items
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Code:
ah.admin — Admin commands (reload, purge, /pah)
ah.admin.remove — Force-remove items from GUI (Shift+Left click)
ah.limit.<N> — Maximum active fixed-price listings (e.g. ah.limit.10)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
YAML:
# Listing duration before expiration
duration: 3d
# Maximum price
maximum-price: 1000000000
# Default currency (empty = vault primary)
default-currency: ""
# Tax on sales
tax:
enabled: false
rate: 0.05 # 5%
type: SELLER # SELLER or BUYER
# Auction system
auction:
enabled: true
default-duration: 1d
min-duration: 1h
max-duration: 7d
min-starting-bid: 1
min-bid-increment: 1.0
min-bid-increment-percent: 0
max-active-auctions: 5
snipe-protection:
enabled: true
threshold: 5m
extension: 5m
announce-bids: false
announce-wins: true
# Blocked items
blocked-materials: [ELYTRA]
blocked-names: [fuck]
blocked-anvil-names: [fuck]
# Announcements
announce-sale: true
announce-type: BOSSBAR
# Auto-return expired items on join
auto-return-expired: false
# Favorites
favorites:
enabled: true
# Discord webhooks
discord-sales:
enabled: false
webhook-url: ""
discord-admin:
enabled: false
webhook-url: ""
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Code:
%xauctionhouse_sell_limit% — Max listing slots (e.g. "5/10")
%xauctionhouse_sell_count% — Current active listings
%xauctionhouse_expired_count% — Expired items count
%xauctionhouse_active_auctions% — Active auction count
%xauctionhouse_active_bids% — Items with player's highest bid
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Requires XCore web dashboard. All endpoints use Bearer token authentication.
Code:
GET /api/xauctionhouse/listings — Active listings (currency, type, bid info)
GET /api/xauctionhouse/sales — Recent sales
GET /api/xauctionhouse/stats — Aggregate statistics
GET /api/xauctionhouse/player/{name} — Player's listings, sales, purchases
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
☐ Paper 1.21.1+ (Folia compatible)
☐ Java 21+
☐ XCore (framework)
☐ Vault (economy provider via XCore)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. Place
XCore.jar in plugins/2. Place
XAuctionHouse.jar in plugins/XCore/addons/3. Start the server
4. Configure
plugins/XCore/addons/XAuctionHouse/config.yml5. Customize GUIs in
plugins/XCore/addons/XAuctionHouse/guis/━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Made with
