Fixed custom price chat input always rejecting valid amounts as "invalid amount" and typing "cancel" not working, for both order creation and auction listing creation. Root cause was reading chat text from the legacy AsyncPlayerChatEvent, which other chat-related plugins on the server can rewrite before this plugin reads it. Now reads the player's original, untouched chat text via Paper's AsyncChatEvent, immune to other plugins modifying the message first.
- Fixed delivery validation falsely rejecting items carrying leftover cosmetic "worth" lore from WorthAddon, which previously blocked otherwise-correct deliveries (e.g. enchanted diamond leggings matching all required enchantments).
- Added a CosmeticLoreFilter service interface so core looks up addon-registered cosmetic lore filters live via the Bukkit ServicesManager, instead of relying on a hardcoded lore marker duplicated between core and WorthAddon.
- Changed ItemManager's NBT detection so items carrying only cosmetic addon lore are no longer flagged as having NBT data.
- Changed order delivery chat feedback to a single consolidated message showing amount delivered, item, amount remaining, and money earned, replacing several separate messages.
- Removed repetitive chat messages sent while loading items into the delivery cart (shulker placement, moved-to-cart, cart-full notices) since the GUI already reflects cart contents live.
- Removed chat messages sent on every enchantment toggle in the Enchantment Selection GUI, since the GUI's item lore and title already show the current selection live.
- Removed unused legacy delivery and notification message keys (delivery.started, delivery.completed-item, delivery.completed-order, delivery.failed, notification.delivery-received, notification.delivery-received-partial) and unused enchantment-toggle feedback keys.
2.0.9 Added
- Quick Buy / Sell: instant buy from orders, instant sell to orders with configurable cooldown and shulker support
- Auction shulker support: shulkers can be listed and previewed (read-only right-click)
- /orders admin create: admins can create orders under a fixed admin UUID
- /auction admin sell: admins can list items on auction
- Multi-currency in Auction: currency selection added to auction listing; currency symbol shown in confirm button
- Auto-merge config/lang keys: missing keys are merged into existing configs on startup/reload (no more blank messages after update)
- Enchantment selection GUI toggle: show-enchantment-selection-gui option to skip GUI and auto-detect enchants
- Wildcard blocklist + renamed item blocking: *_SPAWN_EGG and other patterns supported; renamed items blockable
- Concurrent delivery serialization: per-order lock prevents race conditions under high traffic
- k/m/b parsing on admin refund amount argument
2.0.9 Fixed (bugs present in 2.0.8)
- Collect dupe: packet-delay dupe via per-player lock + DB optimistic lock; lock not released on exception; crash-dupe in claimRewards (DB write now happens before money is given)
- 5 dupe vectors from security audit
- Enchantment validation bypass: plain item could fulfill a custom-named/enchanted order via snapshot path fallback
- Duplicate auction join notification: AuctionListener was registered twice
- Inventory permanently locked after enchantment GUI closed with no selection
- Inventory locked during order creation GUI (player could not move items in their own inventory)
- Permission override first-match bug: overrides now resolve highest/lowest qualifying value correctly
- Item loss at order boundary: delivery returned wrong count when order completed mid-stack
- Multi-currency not applied in Orders
- QuickSell lock leaking on early-return paths
- 4 QuickSell/search use-case bugs
- MySQL auction table init failure
- Missing lang keys in listing GUI
- Cart return stacking: plain item stacked with custom-named/enchanted item when returned from delivery cart
- Duplicate messages on auction purchase and order fulfillment
Orders
Auction House
- Quick Sell — Shift+Click an order to instantly deliver items without opening the Delivery GUI
- Quick Sell supports shulker boxes as item containers
- Quick Sell configurable cooldown with bypass permission
- Enchantment auto-detect when creating orders (config toggle)
- Search orders by item in hand
- /orders admin create command
General
- Quick Buy — Shift+Click a listing to purchase instantly
- Shulker boxes can now be listed; right-click to preview contents
- Currency selection in the listing creation GUI
- /auction admin sell command
- Config and lang files auto-update missing keys on startup and reload — no need to delete configs after updates
- Real-time notifications: delivery progress, sold alerts, join summary of pending orders and unclaimed rewards
- Wildcard blocklist support (e.g. *_SPAWN_EGG)
- Renamed item blocking for orders and auction
- Admin refund accepts shorthand amounts (1k, 2.5m, 1b)
- High-traffic concurrent delivery — safe for events with many players delivering to the same order simultaneously
Bug Fixes
- Fixed crash-dupe in reward claiming
- Fixed item duplication via rapid collect clicks
- Fixed 5 additional duplication vulnerabilities (security audit)
- Fixed enchantment validation being skipped on special item delivery
- Fixed /orders create command skipping the creation GUI
- Fixed player inventory locking up in the order creation GUI
- Fixed player inventory permanently locking after closing the enchantment GUI
- Fixed permission overrides resolving wrong value (first match instead of best match)
- Fixed multi-currency providers failing to load (reading wrong config file)
- Fixed duplicate join notifications in Auction House
- Fixed auction transaction log never being created or written to
- Fixed spawner items blocked by default in new installs
- Shulker box delivery Players can now place a shulker box filled with the required item directly into the delivery cart. The plugin extracts exactly what's needed and returns the shulker (with any remaining items) automatically
- Mixed shulker protection Shulkers containing mixed items are rejected on placement, preventing any abuse or accidental deliveries
- Return to search after purchase After buying an item from the Auction House, players are returned to their search results instead of the main listing page
- Return to search after delivery After confirming a delivery on an order, players are returned to their search results
- Price low-to-high default on search Whenever a player searches for something, results automatically sort by lowest price first
- Accurate delivery notifications Order owners now receive a correct real-time message showing exactly how many items were delivered and the running total (e.g. Mike delivered 32x Grass Block (64/64)), even when multiple players deliver simultaneously
- Auction sold notification fix Sellers now correctly receive a real-time message when their listing is purchased
What's New
• Added new Auction Listing GUI for easier item listing
• Added item preview & right-click deselect support
• Added quick price adjustment buttons (±1 / ±10 / ±100)
• Added full item safety on GUI close/cancel
• Added 6 new PlaceholderAPI placeholders
• Added configurable GUI button slots (auction.yml, orders.yml)
- %sigmaorders_orders_active% player's open orders
- %sigmaorders_orders_created% total orders ever placed
- %sigmaorders_orders_fulfilled% total orders fulfilled as a deliverer
- %sigmaorders_auction_active% active auction listings
- %sigmaorders_auction_unclaimed% unclaimed sale rewards waiting
- %sigmaorders_auction_expired% expired listings not yet reclaimed
• Added support to hide any GUI button (slot: -1)
Changes
• Improved Confirm Delivery tooltip formatting
• Updated "Take All" button styling for all states
Fixes
• Fixed duplicate reward line caused by async issue
• Fixed {owner} placeholder not displaying in Orders GUI
- fix: auction expiry Discord webhook firing every minute for the same listing, now fires once per listing lifetime
- fix: Orders GUI clicks silently ignored when [ID:xxx] missing from messages YAML ID line now hardcoded in Java as guaranteed fallback
- fix: Removed [ID:{id}] from my-orders-item-hover template (managed by code now)
- fix: DB backward compatibility custom_item_id column missing on older SQLite/MySQL databases broke all order loading
- fix: Enchantment book in order creation GUI immediately showed "preserved" message instead of opening selector
- fix: Stale auction listing click now shows message + refreshes GUI instead of doing nothing
- fix: Auction Discord webhooks not firing for listing created / sold / expired / removed events
- fix: Expiry log spam replaced with single aggregated count message
