COWMODSКаталог модов
zAuctionHouse

ВЕРСИИ (13)

release

zAuctionHouse 4.0.1.4

4.0.1.4
20 окт. 2026 г.896Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3bukkit, folia, paper, purpur, spigot
Скачать
Что нового
> **Read this before updating a network.** This release closes a long list of item and money duplication paths. Two setups that used to start are now refused, and operations that used to silently overwrite the database now fail with a message. That is intended, but your players and your staff will see it on day one. ### Before you update - **SQLite + the Redis addon is now refused at startup.** Each server kept its own SQLite file, so nothing was ever synchronised while every node claimed to be clustered. Switch `storage-type` to `MYSQL` or `MARIADB` first - **A server that loses Redis now blocks sales, purchases and removals** instead of quietly running on its own and duplicating items. If you run a single server with the addon installed "just in case", uninstall it - **Operations that lose a race now fail instead of overwriting.** Two servers, or two clicks on the same listing, can no longer both succeed. Players will start seeing an "item no longer available" message they had never seen - **Item tax rules now apply on purchase for every economy type.** A `PURCHASE` or `CAPITALISM` rule declared on a `type: SELL` economy used to do nothing at purchase time. Review `tax.item-rules` in `economies.yml` before updating, or your buyers will suddenly pay more - **Four database indexes are created on the first start.** On a MySQL database that already holds hundreds of thousands of rows this can block startup for several minutes, and every node of a network will try at once. Plan a maintenance window, or create them by hand beforehand - **Expired listings are now swept automatically**, every 60 seconds by default. If you have a large backlog of listings nobody ever collected, hundreds of them will move to the expired tab right after the restart and their sellers will get a flood of items to claim. Set `maintenance.expiration-sweep-interval-seconds` to `0` to disable it - **Keep `write-itemstack-format-marker` at `false`** until every server of the network runs this version. Items written with the marker cannot be read back by an older jar, so until you flip it you can still roll back - The update also adds a few nullable columns and one table. Downgrading the jar simply ignores them, the schema is not a one-way door ### Money - **Fixed** A purchase could take more money than the amount that had been checked, because item tax rules were ignored by the check but applied by the payment - **Fixed** A `CAPITALISM` item tax rule on a `PURCHASE` or `BOTH` economy paid the seller more than the buyer spent, creating money out of nothing on every sale - **Fixed** A payment refused by the economy plugin was never checked: the buyer still received the item, or the seller's money silently disappeared - **Fixed** Sellers paid in `LEVEL`, `EXPERIENCE`, `ITEM` or `ZMENUITEMS` lost their money when they were offline. Those payments are now claimable, and `must-be-online` is forced on for those economies with a warning in console - **Fixed** The sell tax could be reported as paid without ever being taken - **Fixed** An error while writing the purchase history cancelled the purchase *after* the buyer had paid and the seller had been credited - **Fixed** Pending money could be marked as claimed without ever being paid — a missing economy, a failed deposit or an offline player each destroyed the money - **Fixed** The same pending payment could be claimed twice by racing `/ah claim`, the claim button and the auto-claim on join - **Changed** For a listing holding several stacks, the purchase tax now uses the highest matching item rule, like the selling side already did ### Item duplication - **Fixed** Taking back a listed, selling, expired or purchased item could duplicate it on a network. The item is now re-checked against the database while the server holds the cluster lock, exactly like a purchase already did - **Fixed** A purchase handed the item over before the database confirmed it: if the write failed, the buyer kept the item and the listing stayed on sale. This one needed no cluster at all - **Fixed** Buttons still armed in an already-open interface could act on an item that had been sold or removed in the meantime - **Fixed** `/ah admin` removal ignored a lock held by another server, announced the removal before saving it — other servers then put the item back on sale — and never released its lock on failure - **Fixed** Taking back a listing with `give-item: true` and a nearly full inventory could store it as expired on one server and deleted on the others, making it impossible to claim anywhere - **Fixed** "Retrieve everything" abandoned the rest of the batch on the first error without a word. It now finishes and tells the player how many items were actually processed - **Changed** With `give-item: true`, an inventory that fills up between the click and the execution now drops the overflow on the ground instead of silently sending the item to the expired tab - **Changed** An admin removing an expired or purchased item is now final across the whole network, other servers no longer put the row back ### Selling - **Fixed** A crash during a sale could destroy the items: the stacks left the seller's inventory before the listing was saved. The listing is now written first, and any failure refunds both the items and the sell tax - **Added** A startup check that cleans up listings left half-created by a crash. Either the seller never lost their items and the orphan row is deleted, or they did and the listing becomes claimable in their expired tab. Both cases are logged - **Fixed** The sell selection is limited to what the interface can actually display and give back, instead of silently swallowing the surplus - **Fixed** A listing whose content can no longer be read — a Minecraft downgrade, a removed custom-item plugin — is now hidden and logged instead of showing up as an empty or `BARRIER` item that could still be bought. The database row is left untouched, so an older server can never destroy items that are perfectly valid for the others ### Items stuck in a confirmation - **Added** An item left locked in a confirmation screen is now released automatically after `maintenance.confirmation-timeout-seconds` (60 by default). Quitting or dying releases it immediately. A player who disconnected with a confirmation open used to leave the item unbuyable on every server - **Fixed** Confirming and cancelling went through different code paths, and one of them could leave the item locked - **Fixed** `/ah admin cache clear` released items that were legitimately locked inside a confirmation ### Stability and performance - **Fixed** Database writes that had already been decided could be dropped silently. They are now queued on a dedicated pool, drained on shutdown, and a refused write is logged loudly instead of vanishing - **Fixed** The per-player cache was not safe under concurrent access and could come back after the player had disconnected - **Fixed** The inventory refresh stopped at the first skipped player, so only a fraction of the connected players saw the auction house update after a sale or a removal - **Fixed** Category counters returned `0` for any category whose name in `categories.yml` contained uppercase letters - **Fixed** Search, sorting and category counters no longer copy the whole item list on every evaluation - **Fixed** Loading the auction house no longer half-loads on a database error, and reloading the items is a real reset instead of an additive load that resurrected ghosts - **Fixed** Admin logs handled multi-stack items and counted their deletions incorrectly - **Added** A `server-shutting-down` message, shown when a purchase or a sale is attempted while the server is stopping, instead of letting it start and be cut in half ### Migration and admin commands - **Fixed** `/ah admin migrate` announced a full success on a migration that had destroyed money: on MySQL, every seller's pending balance from V3 was refused by the database and the error was never seen. The command now reports the real result - **Fixed** Running the migration twice duplicated every item and every pending balance. It is now blocked once completed, and an explicit `force` argument is needed to override it - **Fixed** The migration now runs on its own thread, only one at a time, and refuses to start while players are connected - **Fixed** The migration overwrote the name of players who already existed in V4 - **Fixed** `/ah admin logs clear-migrated` reported a success having purged nothing - **Fixed** `/ah admin add` destroyed the item held by the administrator when the write failed, created expired and purchased items that were immediately unclaimable, and never announced its listings to the other servers - **Fixed** `/ah admin generate` froze the main thread and could hand its generated listings to real players - **Fixed** The three log purge commands reported a success when the deletion had failed ### Multi-server (Redis addon) - **Added** Locks are now renewed while a purchase or a removal is running, so `redis-config.lock-ttl-seconds` no longer needs to be oversized to survive a slow economy plugin or a slow database. Turn it off with `redis-config.lock-renew-enabled: false` - **Fixed** Every message published while a server was reconnecting was lost, leaving items sold elsewhere as buyable ghosts. Listings are now re-synchronised against Redis after each interruption - **Fixed** Messages could be applied out of order, an outdated status overwriting a newer one - **Fixed** Shutting the addon down released nothing: locks stayed held, the listener thread kept running, and a saturated connection pool could freeze it - **Fixed** The addon started listening to the network before the cluster was ready - **Fixed** A seller connected to another server was not paid by auto-claim when their item sold - **Fixed** An auction house left open on another server kept clickable ghosts after an item was bought or removed there - **Fixed** A single unreadable field no longer discards an entire synchronisation message - **Fixed** The addon's update checker never reported anything - **Changed** A server that cannot register itself in Redis now refuses to start instead of joining with an identity it cannot vouch for, and two servers sharing an identity are now detected ### Configuration and messages - **Added** A `maintenance` section in `config.yml` for the expiration sweep and the confirmation timeout, plus the `write-itemstack-format-marker` key, in all six languages (en/fr/es/it/id/th) - **Added** `action.save-profile-on-sell` (default `true`) — saves the seller's profile right after their items leave their inventory, so a crash cannot hand them back a copy of what they are already selling. It is a disk write on every sale: turn it off on a heavily loaded server, or when another plugin already handles inventory persistence - **Added** `admin-item-not-available`, `server-shutting-down`, `item-no-longer-available`, `sell-error-invalid-item`, `sell-inventory-full` and `remove-all-items-partial` messages, in all six languages - **Added** `redis-config.lock-renew-enabled` in the addon, and `lock-ttl-seconds` is re-documented as a renewable lease - **Changed** `economies.yml` now documents the offline payment and purchase tax changes above, in all six languages ### API events - **Added** Four post-action events in the new package `fr.maxlego08.zauctionhouse.api.event.events.stats`. They are not cancellable and are delivered synchronously on the main thread (global region thread on Folia, not the player's region: schedule on the player before touching entity state). A failure to dispatch them never affects the underlying sale, purchase or claim: - `AuctionItemListedEvent` — a listing has been committed and published, on every sell path (command, sell inventory, GUI). Carries the seller, the auction item and the sell tax (`null` when none was applied) - `AuctionItemPurchasedEvent` — a purchase has been committed. Carries the buyer, the auction item, the amounts actually charged (`getBuyerPays()`, `getSellerReceives()`), the applied `TaxResult` and whether the seller was paid immediately (`RETRIEVED`) or is owed a claim (`PENDING`). Never fired for a failed, cancelled or lost purchase - `AuctionMoneyClaimEvent` — a player has claimed pending money. Carries the amount actually deposited for each economy - `AuctionOpenEvent` — a player opens, or is brought back to, the main auction inventory - **Fixed** `AuctionPreSellEvent` was only fired by `/ah sell` when the sell inventory was disabled. It is now fired once for every listing, including the sell inventory and the GUI, and cancelling it cancels the sale on every path. Addons listening to it will now see GUI sales too. Changing the item or the amount is only honoured for single-stack sales; price, expiration and economy changes are honoured everywhere ### Known limitations - On a purchase the money still moves before the listing is committed. If another server sold the same listing first, the buyer is charged and the seller keeps both the item and a claimable payment. The incident is logged with everything needed to fix it by hand, but it is not refunded automatically. That is the next piece of work - The listing limit counts listings, not stacks: a rank limited to five listings can still hold thirty-six stacks in each of them - The addon has no compatibility check at startup, so always update the plugin first and the addon second, never the reverse
release

zAuctionHouse 4.0.1.3

4.0.1.3
24 авг. 2026 г.5,5 тыс.Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2folia, paper, purpur, spigot
Скачать
Что нового
- **Added** FastStats metrics integration alongside the existing bStats reporting. The FastStats client is bundled and relocated in the final JAR, starts after plugin initialization, and shuts down cleanly with the plugin - **Fixed** The final plugin JAR containing three duplicate `META-INF/faststats.properties` entries. FastStats is now scoped to the root plugin module, and Shadow keeps a single copy of its identical version metadata - **Added** Indonesian (`id`) locale with translated configuration, messages, rules, categories, Discord settings, inventories, and patterns. Automatic language detection now selects Indonesian for servers located in Indonesia - **Fixed** Admin expired, purchased, and selling item inventories not displaying their YAML-configured empty-state item when the selected player had no matching items
release

zAuctionHouse 4.0.1.1

4.0.1.1
16 авг. 2026 г.856Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2folia, paper, purpur, spigot
Скачать
Что нового
- **Added** `allow-decimal-prices` option in `config.yml` (default `true`) - when set to `false`, players can no longer list items for a price containing decimals (e.g. `10.5`); only whole-number prices are accepted. Enforced on every sell path (the `/ah sell` command and the sell-inventory confirm button) via `SellService`, and shows the new `price-decimal-not-allowed` message. Option and message synced across all language files (en/fr/es/it/th) - **Added** CrazyAuction migration.
release

zAuctionHouse 4.0.1.0

4.0.1.0
31 июл. 2026 г.1,6 тыс.Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2bukkit, folia, paper, purpur, spigot
Скачать
Что нового
- **Fixed** Critical cross-server duplication where a sold item reappeared in the seller's items (multi-server / Redis). When `purchased-item.give-item: true`, a purchase set the database row to `DELETED` before broadcasting the `ItemBought` event; on every other server the `ItemBoughtListener` re-fetched the item via `selectItem` (which filters out `DELETED` rows), got `null`, and bailed out **before** removing the listing from its in-memory store. The ghost listing therefore survived on all non-buyer servers and the seller still saw it in `/ah selling`. The listener now removes the listing from in-memory storage **unconditionally** (mirroring `ItemRemovedListener`), independently of the database lookup. `ItemBoughtMessage` was enriched with the seller UUID/name, item display, price and buyer name so the real-time seller notification (including `%buyer%`, which was already broken on remote servers) works without a database round-trip - **Fixed** Purchased items not appearing on other servers with `purchased-item.give-item: false` (multi-server / Redis). The `ItemBoughtListener` removed the item from `LISTED` on remote servers but never added it to their in-memory `PURCHASED` store, so a buyer switching servers could not see their purchase until a restart. Remote servers now re-add the item to `PURCHASED` (the buyer-server purchase already did this locally; the buyer-server ignores its own message). For `give-item: true` the message flags `givenToBuyer` so remote servers skip the (always-null) database lookup entirely - **Fixed** A crashed/timed-out purchase could leave an item permanently un-buyable in multi-server (Redis) setups. The lock key `auction:lock:<id>` expires via TTL but the item hash field `state=LOCKED` persisted (up to the item TTL, ~30 days), so `checkAvailability` reported the item as locked forever. Lock state now keys on the lock key's existence: a `LOCKED` state with no live lock key is treated as a stale lock and recovered. To prevent this recovery from ever enabling a double-purchase, `PurchaseService` now re-validates authoritative database state **under the lock** before charging — a row that is already `DELETED` or has a buyer aborts the purchase with nothing withdrawn - **Fixed** Expiration is now cluster-aware in multi-server (Redis) setups. Previously `ExpireService` moved items `LISTED -> EXPIRED` purely locally with no cluster coordination, so a lingering ghost of an item sold on another server could be resurrected as an `EXPIRED` item for the seller (and claimed back = duplication). In distributed setups the `LISTED -> EXPIRED` transition now locks the item, re-reads authoritative database state (skipping items sold elsewhere), performs the move, and broadcasts it so all nodes converge. Single-server setups keep the original fast path - **Fixed** `ItemRepository` could overwrite a sold/removed item when expiring. The `LISTED -> EXPIRED` update is now guarded with `WHERE storage_type = 'LISTED'`, so an expiration `UPDATE` can never clobber a row another server already set to `DELETED`/`PURCHASED` - **Added** DonutAuction migration - migrate data from the DonutAuction plugin (by EliVB) to zAuctionHouse V4 using `/ah admin migrate donutauction confirm` (aliases `donut`, `donutsmp`, `da`). Reads `plugins/DonutAuction/ah.data` directly, so no database configuration is needed; active auctions are imported as listed items and past-expiry auctions as reclaimable expired items, while unclaimed pending payments (money, not items) are skipped. Legacy Base64 itemstacks are deserialized through a hardened class allowlist to guard against malicious data files - **Fixed** Cross-server purchases could fail with `IllegalArgumentException: name cannot be null` (multi-server / Redis). When a buyer bought an item whose seller had never logged into that specific backend node, `getSellerName()` returned `null` and was passed straight to the economy provider's `withdraw()` call (and to the `%seller%` placeholder in the purchase notifications), aborting the purchase. The seller name is now resolved from the shared database before the economy call, falling back to the seller's UUID string (with a console warning to verify all servers share the same MySQL database) when even that lookup fails, so a `null` name can never reach downstream code - **Fixed** Purchases failing or charging incorrectly under CAPITALISM (VAT-style) tax - the balance check before buying only verified the buyer could afford the listed price, not the price plus the CAPITALISM tax added on top, so a player holding exactly the listed amount passed the check and the tax-inclusive withdrawal could then fail. `PurchaseService` and the `ZAUCTIONHOUSE_LISTED_ITEMS` button now check the tax-inclusive required balance when CAPITALISM tax is enabled - **Fixed** Items getting stuck in the "being purchased" state after a purchase failed for insufficient funds - the item was marked `IS_BEING_PURCHASED` before the funds check but only unlocked (not status-restored) on failure, so in multi-server (Redis) setups it stayed stuck and could no longer be bought. The status is now restored and broadcast to the cluster before unlocking - **Fixed** Money loss on economy errors during a purchase or claim - buyer withdraw, seller deposit and claim deposits are now wrapped in error handling: if the buyer is charged but the seller deposit throws, the buyer is automatically refunded; failed claim deposits are logged and skipped instead of silently losing the money - **Fixed** Expired listings could still be displayed and counted in the auction house. Because expiration is processed lazily, an item could remain `AVAILABLE` past its expiry (especially while a cache was stale) and keep showing in the main list, in the per-category counts, and in the `%zauctionhouse_listed_items%` placeholder. A single `Item.isActivelyListed()` predicate (available **and** not expired) is now applied at every display chokepoint, and interacting with a listing that has already expired now moves it to the player's expired items instead of opening a confirm inventory or re-showing it - **Fixed** The selling, expired, purchased, listed and combined item-list buttons ignored their inventory's `player-inventory` setting - paginated items and the empty-slot placeholder were always rendered into the chest GUI even when the inventory was configured as a player inventory. These buttons now render items into the player's own inventory area when configured (PR #25) - **Fixed** Auction search button always showed a hardcoded English `None` in `%search_query%` when no search was active, ignoring the server language. The `ZAUCTIONHOUSE_SEARCH` button now reads a configurable `none-value` option on the search button in `inventories/auction.yml`, with a localized default per language (`None` / `Aucune` / `Ninguna` / `Nessuna` / `ไม่มี`), so the empty-search text is translatable and customizable - **Added** Configurable `%search_active%` value on the auction search button - the `ZAUCTIONHOUSE_SEARCH` button now reads `active-value` (default `true`) and `inactive-value` (default `false`) options in `inventories/auction.yml`, so the value returned by `%search_active%` when a search is / isn't active can be customized (e.g. `Enabled`/`Disabled`, `Yes`/`No`) instead of the hardcoded `true`/`false` - **Changed** Updated the required zMenu API to `1.1.1.6` - make sure your server runs zMenu `1.1.1.6` or newer
release

zAuctionHouse 4.0.0.9

4.0.0.9
17 июл. 2026 г.659Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2folia, paper, purpur, spigot
Скачать
Что нового
- **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 with large transaction volumes to reduce database load and improve history loading times - **Added** Admin log management commands - `/ah admin logs purge <days>` deletes all logs older than the specified number of days, `/ah admin logs player <player>` deletes all logs for a specific player, `/ah admin logs clear-migrated` deletes all V3 migrated logs (entries with `item_id = 0`). All operations run asynchronously and report the number of deleted entries - **Fixed** Ghost items in `/ah selling` on multi-server (Redis) setups - when a player removed a selling item on server #1 and switched to server #2, the item could still appear with "being purchased" lore and could not be removed, blocking selling slots. Three fixes applied: (1) `ItemRemovedListener` now removes the item from in-memory storage immediately on message receipt instead of waiting for an async DB query, (2) `RemoveService` no longer restores the item status via Redis when the local removal already completed (preventing ghost items from reappearing as AVAILABLE on other servers after a cluster notification timeout), (3) `getPlayerSellingItems` now filters out items with `DELETED` status as defense-in-depth - **Changed** Discord webhook `%expires_at%` placeholder now outputs a Discord [dynamic timestamp](https://discord.com/developers/docs/reference#message-formatting-timestamp-styles) (`<t:unix_seconds:f>`) instead of a pre-formatted date string. Discord renders it in each viewer's own local timezone (e.g. `12 June 2026 18:55`), making it easier to read and timezone-agnostic. Items with no expiration still fall back to the formatted date - **Added** Per-item custom images for Discord webhooks - a new `custom-images` section in `discord.yml` lets you override the `%item_image_url%` for specific items. Each entry pairs a `rule` (same format as `categories.yml`/`rules.yml`: `material`, `name`, `lore`, `custom-model-data`, `oraxen`, `itemsadder`, `nexo`, `mmoitems`, etc.) with an image URL. The first matching rule wins; items matching no rule fall back to the material-based `item-image-url` pattern. Ideal for custom items whose generic material does not represent the real item. Dominant color extraction caches the color per image URL so custom items sharing a material no longer collide
release

zAuctionHouse 4.0.0.8

4.0.0.8
17 июн. 2026 г.1,7 тыс.Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2folia, paper, purpur, spigot
Скачать
Что нового
- **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 allowed the Redis `ItemRemovedListener` to reload deleted items and re-add them to cache - **Added** `destinationStorageType` to cluster bridge `removeItem` method - the `ItemRemovedMessage` now includes the exact destination storage type (`DELETED` or `EXPIRED`) so other servers know exactly what happened instead of guessing. Backward compatible via a `default` method on `AuctionClusterBridge` - **Fixed** `ItemRemovedListener` (Redis addon) rewritten with defense-in-depth - uses the explicit destination from the message first, falls back to database state verification, and never blindly assumes an item should go to `EXPIRED` - **Fixed** `CreateOptionsMigration` failing on MySQL with `errno: 150 "Foreign key constraint is incorrectly formed"` - the `player_unique_id` column used `uuid()` type which could produce a different collation than the existing `players` table (especially on MySQL 8.0+ with changed default collation). Changed to `string(36)` to match all other foreign key columns referencing `players.unique_id`
release

zAuctionHouse 4.0.0.6

4.0.0.6
23 мая 2026 г.1,1 тыс.Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2folia, paper, purpur, spigot
Скачать
Что нового
- **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 item to be claimed again after natural expiration - **Fixed** `ItemRemovedListener` (Redis addon) - removed fragile DB state validation that rejected removal messages due to race conditions, added safety-net cleanup across all storage types - **Fixed** `ItemStatusListener` (Redis addon) - status change propagation now searches across all storage types (LISTED, EXPIRED, PURCHASED) instead of only LISTED - **Fixed** `ExpireService` - added guard against re-expiring items already deleted/claimed on another server - **Added** Redis Sentinel support (Redis addon) - enables high-availability Redis setups with automatic master discovery and failover. Configure `mode: "sentinel"` in `config.yml` with sentinel nodes. Fully backward compatible, existing standalone configurations work without changes - **Fixed** `NullPointerException` when default economy is not configured - `/ah sell` and all sell-related buttons now display an error message instead of crashing. Added startup validation with prominent warnings in console when a default economy is missing from `economies.yml` - **Fixed** Incorrect economy type names in `economies.yml` comments - `COINS_ENGINE` and `PLAYER_POINTS` did not match the actual CurrenciesAPI enum values (`COINSENGINE`, `PLAYERPOINTS`), causing these economy types to silently fail to load when users followed the documented names - **Added** All permissions are now programmatically registered in Spigot on startup and reload. Includes static permissions (use, sell, admin, etc.), and dynamic permissions from configuration (listing limits, expiration tiers, tax bypass/reductions, economy access, inventory commands, cooldown bypass). All permissions are grouped under the `zauctionhouse.*` wildcard - **Fixed** Items dropping on the ground when claiming expired, purchased, or selling items with a full inventory - items now stay in their storage when the player's inventory is full. Added `player-inventory-must-have-free-space` config option under `remove-expired-item` and `selling-item` sections (enabled by default) - **Added** `ZAUCTIONHOUSE_REMOVE_ALL_EXPIRED`, `ZAUCTIONHOUSE_REMOVE_ALL_SELLING`, `ZAUCTIONHOUSE_REMOVE_ALL_PURCHASED` buttons - allows players to retrieve all items at once from expired, selling, and purchased inventories. Items are given one by one and stops when inventory is full (if `player-inventory-must-have-free-space` is enabled) - **Added** `ItemContentProvider` API - extensible system for displaying the contents of container items (shulker boxes, custom containers from plugins). External plugins can register their own providers via `AuctionPlugin.getItemContentManager().registerProvider()` - **Added** AxShulkers hook - displays the contents of shulker boxes managed by the AxShulkers plugin in the item content viewer. AxShulkers stores shulker contents externally instead of in vanilla NBT, so this hook is required to view their contents - **Fixed** Seller not receiving money in multi-server (Redis) setups when the buyer is on a different server - the plugin tried to deposit money locally on the buyer's server where the seller's economy account may not exist. Money is now deferred to `PENDING` status in distributed environments and claimed by the seller on their own server via `/ah claim` or auto-claim on join - **Added** `AuctionClusterBridge.isDistributed()` - allows cluster bridge implementations to signal a multi-server environment so the plugin can adapt its behavior (e.g., defer deposits instead of executing them locally)
release

zAuctionHouse 4.0.0.5

4.0.0.5
6 мая 2026 г.658Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11folia, paper, purpur, spigot
Скачать
Что нового
- **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 option - allows changing the timezone used for all date placeholders (`%date%`, `%formatted-expire-date%`, `%expires_at%`). Supports all Java TimeZone IDs (e.g., `Europe/Paris`, `America/New_York`, `UTC`). Defaults to `auto` (server timezone) - **Fixed** `/ah admin open` and `/ah admin history` tab completion no longer loads all offline players, preventing lag on servers with many players - **Fixed** `updateListedItems` crash on Folia/Canvas - inventory holder access was running on an async thread instead of the main tick thread - **Fixed** economy name argument configuration for the sell command - when the economy argument index was not configured, the default value was ignored causing a null economy name
release

zAuctionHouse 4.0.0.4

4.0.0.4
22 апр. 2026 г.326Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11folia, paper, purpur, spigot
Скачать
Что нового
- **Added** ZelAuction migration - migrate data from ZelAuction plugin to zAuctionHouse V4 using `/ah admin migrate zelauction confirm` - **Added** Search system - players can search items by name, material, lore, or seller directly from the auction house GUI or via `/ah search <query>` - **Added** `ZAUCTIONHOUSE_SEARCH` button - opens a chat-based search input with support for advanced filter operators - **Added** `ZAUCTIONHOUSE_CLEAR_SEARCH` button - clears the active search filter, only visible when a search is active - **Added** `/ah search <query>` command - search items directly from chat without opening the GUI first - **Added** Advanced search filters with operators: `~` (contains), `=` (exact), `~=` (contains, ignore case), `==` (exact, ignore case) - **Added** Searchable fields: `name`, `material`, `lore`, `seller` (e.g., `seller = Notch`, `name ~ Diamond`) - **Added** `/ah admin forceopen <player> <inventory> [page]` - Open any inventory for a player at a specific page. Supports all inventory names (e.g., `auction`, `admin-selling-items`, `history`, `admin-logs`, etc.) with tab completion. Page defaults to 1 - **Added** `reset-search-on-open` config option - When enabled (default: `true`), the search filter is cleared every time a player opens the auction house, matching the existing `reset-category-on-open` behavior ### Search system Players can search for items in the auction house using the search button or the `/ah search` command. The default search checks item name, material, lore, and seller name (case-insensitive substring). **Advanced filters:** ``` field operator value ``` | Operator | Description | |----------|-------------| | `~` | Contains (case-sensitive) | | `=` | Exact match (case-sensitive) | | `~=` | Contains (ignore case) | | `==` | Exact match (ignore case) | | Field | Description | |-------|-------------| | `name` | Item display name | | `material` | Item material type | | `lore` | Item lore text | | `seller` | Seller player name | **Examples:** ``` seller = Notch name ~ Diamond material ~= sword lore ~ Sharpness ```
release

zAuctionHouse 4.0.0.3

4.0.0.3
31 мар. 2026 г.496Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11folia, paper, purpur, spigot
Скачать
Что нового
- **Added** `ZAUCTIONHOUSE_SELL_LIMIT` button - displays remaining sell slots visually using a list of inventory slots, configurable per item type (auction, bid, rent) - **Added** `%zauctionhouse_max_items_<type>%` placeholder - returns the maximum number of items a player can list for a specific type (auction, bid, rent) - **Optimized** item lore placeholder resolution, placeholders are now pre-detected at config load and only resolved when referenced, significantly reducing CPU and memory usage per item render - **Fixed** `/ah history` stuck on "Loading..." when `action.purchased-item.give-item: true` is enabled - **Fixed** default config values - **Fixed** default table prefix to `zauctionhousev4` (fixes compatibility with zAuctionHouse V3) ### `ZAUCTIONHOUSE_SELL_LIMIT` button ```yaml sell-limit: type: ZAUCTIONHOUSE_SELL_LIMIT types: - auction slots: - 0-9 item: material: LIME_STAINED_GLASS_PANE name: '&aAvailable slot' ``` ### `%zauctionhouse_max_items_<type>%` placeholder Returns the maximum number of items a player can list based on their permissions for the given type. - `%zauctionhouse_max_items_auction%` - `%zauctionhouse_max_items_bid%` - `%zauctionhouse_max_items_rent%`
release

zAuctionHouse 4.0.0.2

4.0.0.2
22 мар. 2026 г.203Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11folia, paper, purpur, spigot
Скачать
Что нового
- **Added** `zauctionhouse_category` permissible for zMenu - allows conditional button visibility based on the player's currently selected category (defaults to `main`) - **Added** `ZAUCTIONHOUSE_CATEGORY_SWITCHER` button - combines category cycling (left/right click) with dynamic lore showing enable/disable state per category - **Added** `%zauctionhouse_category_id%` placeholder - returns the player's currently selected category ID - **Added** `ZAUCTIONHOUSE_HISTORY_INVENTORY` button - opens the sales history inventory directly from any UI - **Added** `force-amount-one` option in `config.yml` (`item-lore` section) - forces displayed item amount to 1 in the auction inventory while preserving the real amount internally - **Changed** `AuctionEconomy` API - economy methods (`get`, `has`, `deposit`, `withdraw`) now accept `UUID` instead of `OfflinePlayer` for better compatibility - **Updated** CurrenciesAPI dependency from 1.0.12 to 1.0.13 - **Fixed** category display name fallback - now uses the configured "all" category name instead of a hardcoded `"All"` string - **Fixed** empty slot crash - list buttons (`ListedItems`, `ExpiredItems`, `PurchasedItems`, `SellingItems`) no longer crash when `emptySlot` is `-1` and the list is empty - **Fixed** history loading slot - `HistoryItemsButton` now properly handles `loadingSlot` set to `-1` without throwing an error - **Fixed** `LoadingSlotLoader` - added validation for invalid slot values with a clear error message ### `zauctionhouse_category` permissible ```yaml requirements: - type: zauctionhouse_category category: "weapons" ``` ### `ZAUCTIONHOUSE_CATEGORY_SWITCHER` button ```yaml category-switcher: type: ZAUCTIONHOUSE_CATEGORY_SWITCHER slot: 49 enable-text: "&a● %category%" disable-text: "&7○ %category%" categories: - "main" - "weapons" - "armor" - "tools" - "blocks" - "consumables" - "resources" - "enchanted-books" - "misc" item: material: COMPASS name: "&6Categories &7(&f%category%&7)" lore: - "" - "%main%" - "%weapons%" - "%armor%" - "%tools%" - "%blocks%" - "%consumables%" - "%resources%" - "%enchanted-books%" - "%misc%" - "" - "&7Left-click &8» &fNext" - "&7Right-click &8» &fPrevious" ``` ### `force-amount-one` option ```yaml item-lore: # Forces the displayed item amount to 1 in the auction inventory. # The real amount is preserved internally and given to the buyer on purchase. # Useful to keep a clean, uniform display. force-amount-one: false ```
release

zAuctionHouse 4.0.0.1

4.0.0.1
17 мар. 2026 г.155Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11folia, paper, purpur, spigot
Скачать
Что нового
- **Added** Thai as a supported language - **Fixed** support for Minecraft **1.20.4** - **Fixed** the `/zauctionhouse` command — it is no longer the default main command (this can be changed in `config.yml`) - **Fixed** message system errors that could appear without reason - **Added** the `reset-category-on-open` option, allowing categories to reset when reopening the inventory - **Added** `EXCELLENTEECONOMY` economy support
release

zAuctionHouse 4.0.0.0

4.0.0.0
3 мар. 2026 г.127Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11folia, paper, purpur, spigot
Скачать
Что нового
First version