New features:
• Sort, filter, and select-item sort items support%dynamic_options%(or%sorting_options%/%filter_options%) inloreso footer lines can appear below the generated option list
New features:
• Each auction GUI (gui/*.yml) now supportsgui-settings.filler.enabledso you can turn fillers off per GUI
Bug fixes:
• Sign search GUI no longer leaves oak signs or barrier blocks in the world after restarts, reloads, or unclean shutdowns
Bug fixes:
• Fixed all Bukkit and Vault API calls inside async DB callbacks running on the wrong thread — they are now safely dispatched to the player's entity scheduler
• Fixed an item duplication exploit in sell confirmation: the item is now removed synchronously before the DB call, eliminating the window where the player could move it and keep both the item and the listing
New features:
• Search sign GUI text is now configurable via the newsearch-signoption in config.yml
Improvements:
• Search sign layout updated: the first line is now the input line so the cursor starts there when the sign opens; "Search:" is shown on the second line as a label
• Material search accepts both spaces and underscores (e.g. "iron sword" and "iron_sword" both find the same items)
Bug fixes:
• Fixed duplicate purchase exploit: only one buyer can successfully complete a purchase; the listing is claimed atomically (select then delete in one transaction).
• Taking back a listing (main GUI or My Listings) can no longer grant the item twice; take-back uses the same atomic delete.
• Expired listings are removed and returned in a single transaction, so the same expired listing cannot be returned more than once.
• Admin confiscate and emergency take-back now use atomic delete so items are not duplicated or returned twice.
• Selling: item is only taken from the player’s hand if it still matches the listed item and amount when the listing is created; prevents wrong or double item loss.
Improvements:
• Sell confirm now validates price against the configured min/max before creating the listing.
• Safer handling of null item/material when logging transactions and showing shulker previews.
Technical:
• NewdeleteListingByIdAtomicfor claim-by-id; expired listing removal and take-all-expired run in a single transaction per batch.
New features:
• Enchantments shown in auction lore for armor, tools, weapons, and enchanted books with configurable %enchantments% placeholder
• PlaceholderAPI support: %perfauctions_active_listings%, %perfauctions_total_earned%, %perfauctions_total_spent%, %perfauctions_items_bought%, %perfauctions_items_sold% (cached on join and when opening /ah)
• "Take all expired" button in My Listings returns all expired items at once
• Admins can confiscate listings: Shift+Click on any listing in the main auction removes it without returning the item to the seller
• Enchantment level display is configurable: auction.enchant-level-roman (default false) switches between numbers (1, 2, 3) and Roman numerals (I, II, III)
Bug fixes:
• Slot permissions now set the max listings (e.g. perfauctions.slots.10 = max 10)
• Custom and over-level enchants (e.g. EcoEnchants, level 50) no longer showed raw keys; level is shown as a number and custom enchant names use a readable fallback when no translation exists
• Enchant name fallback fixed for Adventure API compatibility (fallback expects String)
