You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
egade-ah is a high-performance, standalone, and crash-resilient Auction House & Market plugin engineered for Minecraft Paper 1.21+ (Java 21). It features an isolated SQLite escrow database, multi-page 6-row inventory GUIs, rich Unicode RPG typography, instant auto-navigation UX, compact number formatting, and interactive chat tags.
Features
Unicode RPG Typography: Elegant and balanced item tooltips with custom icons (✦, ⛃, ⏳, #), bold white seller names (&f&l), and light blue time indicators (&b&l).
Auto-Navigation UX: Canceling or buying items automatically opens the personal Collection Box, allowing players to claim their items in 1 click without navigating back and forth.
Smart Compact Numbers:
Automatically formats large numbers into compact suffixes: $100K, $1.5M, $20M, $1B (Max limit: $1,000,000,000).
Supports entering human suffixes in commands: /ah sell 500, /ah sell 10k, /ah sell 1.5m, /ah sell 1b.
Personal Delivery & Collection Box:
Automatically holds purchased items, canceled listings, and expired items.
Features a ** Claim All Items** button to retrieve all pending items in one click.
Sequential Sort Cycler: Cycle sorting modes with Left-Click (next) or Right-Click (previous):
Lowest Price
Highest Price
Newest
Oldest
Real-time Keyword Filter: Search listings by item name or seller name with instant filtering.
Interactive Chat Tag [ah]:
Typing [ah], [Ah], or [AH] in public chat generates an interactive MiniMessage button [ 🛒 AH ].
When clicked by any player, it automatically opens the market filtered directly to that seller's items.
Zero-Exploit Escrow & Anti-Dupe Engine:
0.25-second debounce protection on all GUI slots to prevent rapid double-click race conditions.
Native SQLite atomic transactions ensure no items or money are ever lost during server crashes or reboots.
Full Bukkit byte serialization preserves 100% of NBT metadata (Enchantments, CustomModelData, Armor Trims, Potion Effects, Shulker Box contents).
Background Expiration Worker: Automatically cleans up listings older than 2 days (configurable) and migrates them safely into the seller's Collection Box.
Force check and migrate expired listings immediately
egade.ah.admin (default: op)
/ah admin cancel <id>
Force cancel any active listing and return item to seller
egade.ah.admin (default: op)
/ah admin reload
Reload config.yml without restarting the server
egade.ah.admin (default: op)
Listing Limit Permissions
Permission Node
Max Active Listings
Description
Default
10 listings
Default limit for all players
egade.ah.limit.vip
20 listings
VIP rank listing limit
egade.ah.limit.staff
50 listings
Staff / Admin listing limit
GUI Overview
1. Main Market Menu (/ah)
Slots 0–44: 45 items displayed per page.
Slot 45: Previous Page.
Slot 46: Search & Filter (Left-Click to search, Right-Click to clear).
Slot 47: Sort Switcher (Left-Click next mode, Right-Click prev mode).
Slot 49: Collection Box (Shows count of claimable items).
Slot 51: Refresh Market.
Slot 53: Next Page .
2. Confirm Purchase Menu
Slot 11: ✔ CONFIRM PURCHASE (Green concrete).
Slot 13: Live Item Preview with Price & Balance calculation.
Slot 15: ✘ CANCEL (Red concrete, returns to market).
3. Collection Box (/ah claim)
Slots 0–44: Items ready to be claimed (Purchases, Cancellations, Expirations).
Slot 47: Active Listings shortcut (/ah list).
Slot 49: Back to Auction House.
Slot 51: Claim All Items.
⚙️ Configuration (config.yml)
# ==============================================================================# egade-ah Configuration File# ==============================================================================settings:
prefix: "&8[&e&legade&6&lAH&8] "currency_symbol: "$"max_listings_default: 10max_listings_vip: 20max_listings_staff: 50expire_days: 2min_price: 1.0max_price: 1000000000.0broadcast_new_listing: truecleanup_interval_minutes: 5messages:
no_permission: "&c&lYou do not have permission to execute this command!"hold_item: "&c&lHold a valid item in your main hand to sell!"invalid_price: "&c&lInvalid price! Example: &e&l/ah sell 500&c&l, &e&l/ah sell 10k&c&l, &e&l/ah sell 12m"min_price: "&c&lPrice must be at least &e&l$1&c&l!"max_price: "&c&lPrice cannot exceed &e&l$1B ($1,000,000,000)&c&l!"limit_reached: "&c&lListing limit reached (&e&l{current}&c&l/&e&l{max}&c&l)!"listed_success: "&a&lListed &f&l{item} &a&lfor &e&l${price}&a&l!"listing_info: "&7&lListing ID: &b&l#{id} &8| &7&lDuration: &e&l2 Days"broadcast_listing: "&e&l{player} &7&llisted &f&l{item} &7&lfor &e&l${price} &8(&f&l/ah&8)"cannot_buy_self: "&c&lYou cannot buy your own listing! Use &e&l/ah list&c&l."insufficient_funds: "&c&lInsufficient funds! Required: &e&l${price} &8| &7&lBalance: &a&l${balance}"buy_success: "&a&lPurchase successful! Sent to &e&lCollection Box&a&l."sold_notification: "&6&l[SOLD] &a&lYour &f&l{item} &a&lwas bought by &e&l{buyer} &a&lfor &e&l+${price}&a&l!"cancelled_listing: "&e&lCancelled listing &b&l#{id}&e&l! Returned to &f&lCollection Box&e&l."not_owner: "&c&lYou do not own this listing!"inventory_full: "&c&lYour inventory is full! Make space first."claim_success: "&a&lClaimed &f&l{item} &a<o your inventory!"claim_all_success: "&a&lClaimed &e&l{count} &a&litems to your inventory!"no_claimable_items: "&c&lNo claimable items or inventory full!"search_cleared: "&a&lSearch filter cleared."search_set: "&a&lFiltering listings by: &b&l{query}"market_refreshed: "&a&lMarket listings refreshed!"no_active_listings_tag: "&c&lYou have no active listings in the market! List an item with &e&l/ah sell &c&lbefore tagging [ah]."
Building from Source
Using Maven:
git clone https://github.com/your-username/egade-ah.git
cd egade-ah
mvn clean package
The compiled jar file will be generated at target/egade-ah-1.0.0.jar.
📄 License
This project is licensed under the Non-Commercial Source License (NC-1.0).
Free for personal and server use/modifications.
Commercial use, reselling, monetizing, or paid distribution is strictly prohibited.