- **Fixed** Sales history spamming Item not found for log ID warnings in console - logs migrated from V3 are created with item\_id = 0 (no direct mapping to V4 items), causing the history service to log a warning for every V3 entry. The history now filters out logs with invalid item references at the SQL level
- **Added** History configuration in config.yml - history.max-entries limits the number of history entries displayed per player (default: 500, 0 = unlimited), history.expire-after-days hides entries older than the specified number of days (default: 0 = never expire). Useful for servers…
Read more- **Fixed** Critical item duplication in multi-server (Redis) setups - when a player removed a selling item via the selling inventory, the item was correctly given to the player and marked as DELETED in the database, but other servers received a generic LISTED removal message and incorrectly recreated the item in their EXPIRED cache, allowing it to be claimed a second time on another server
- **Fixed** ItemRepository.select(int id) not filtering DELETED items - single-item database queries returned items already marked as DELETED, while the bulk select() method correctly excluded them. This…
Read more- **Added** banned-rules support for categories - allows excluding specific items from a category even if they match the inclusion rules. For example, a netherite hoe would normally appear in the "Tools" category, but if it has a specific CustomModelData (e.g., 300), it can be excluded using a banned rule. Uses the same rule types as regular rules (material, tag, lore, custom-model-data, etc.)
- **Added** Broadcast system - sends messages to all online players when items are listed or purchased. Configurable per event type (sell/purchase) with options to exclude the seller/buyer. Supports…
Read more- **Added** ZAUCTIONHOUSE\_COMBINED\_ITEMS button - combines selling, expired, and purchased items into a single paginated view. Each source is individually togglable via include-selling, include-expired, and include-purchased. Click actions automatically adapt to the item's storage type (cancel listing, claim expired, claim purchased). Each item type uses its own lore configuration from config.yml
- **Fixed** Item duplication exploit in multi-server (Redis) setups - removing a listing on one server and claiming the expired item could leave a ghost entry on the original server, allowing the…
Read more- **Added** ZAUCTIONHOUSE\_CLAIM button - displays pending money per economy with dynamic placeholders and allows players to claim directly from the auction GUI
- **Added** Configurable loading-item for the claim button, shown while pending money data is being fetched
- **Added** PRICE\_WITHOUT\_DECIMAL price format - displays prices without decimal places (e.g., 10000.50 -> 10000)
- **Added** %price-price-without-decimal% placeholder - displays the price without decimals in item lore
- **Added** /ah admin forceopen can now be executed from the console
- **Added** timezone configuration…
Read more