Skip to content

Releases: ez-plugins/EzAuction

EzAuction 2.3.1

26 May 22:14
8c43b80

Choose a tag to compare

Fixed

  • Live auction escrow safety - fixed a critical payout edge case in live auction resolution. If the economy plugin fails to credit the seller when an auction ends, the winner's escrowed bid is now refunded immediately and the item is returned to the seller, preventing silent money loss.
  • Live auction regression coverage - added dedicated end-auction tests for seller-credit failure and success paths to prevent escrow-loss regressions.

EzAuction 2.3.0

25 May 22:28
0407b61

Choose a tag to compare

Added

  • Live auction overhaul — complete rewrite of the live auction engine with new interactive features:
    • /bid command (alias /livebid) — dedicated command for all live auction interactions: place bids, join/leave sessions, and manage preferences. Bids can also be placed by clicking the suggestion in chat.
    • Clickable bid messages — the bid announcement in chat includes a clickable link that auto-fills /bid <next-minimum> for one-click bidding.
    • Item hover previews — the item name in chat announcements shows enchantments, potion effects, and shulker box contents on hover.
    • EzCountdown integration (optional soft-dependency) — configurable countdown display per-player via ACTION_BAR, BOSS_BAR, TITLE, SCOREBOARD, or CHAT. Defaults to chat-only reminders when EzCountdown is absent or disabled.
    • Per-player notification preferences — players toggle notifications with /bid notify [on|off] and choose display types with /bid notify display <types…>. Preferences persist across sessions (stored in live-preferences.yml or the MySQL table {prefix}live_player_preferences).
    • Live auction picker GUI/liveauction opens a 54-slot inventory when multiple auctions are running, letting players select which one to join.
    • Opt-in chat filter — when chat-filter-feature-enabled: true, players can run /bid mutechat on to suppress non-auction chat while in an active session.
    • Bidding configurationminimum-bid-increment-percent and minimum-bid-increment-fixed in auction.yml control the minimum raise required per bid.
    • Five new Bukkit events: LiveAuctionStartedEvent (cancellable), LiveAuctionBidPlacedEvent (cancellable), LiveAuctionEndedEvent, LiveAuctionPlayerJoinedEvent, LiveAuctionPlayerLeftEvent.
    • New permissions: ezauction.bid (default: true), ezauction.auction.live.notify (default: true).

Live auction chat messages

Live auction shulker contents

/liveauction queue gui

  • Live auction seller management — sellers can enter and manage the live queue directly from the GUI or commands:
    • Sell button in the Live Auction GUI — a lit sell button (slot 44) appears in the live browser for players with ezauction.auction.live.sell; clicking it opens the sell menu pre-configured for the live queue. A grey button is shown to players without the permission.
    • /liveauction sell — command shortcut to open the live sell menu without navigating to the GUI first.
    • Queue position feedback — on enqueue, the seller receives a chat confirmation with their position (e.g. "Your Diamond Sword has been added to the live queue at position #2"). If the queue is disabled the auction starts immediately and a separate instant-start message is shown instead.
    • Cancel button in the Live Auction GUI — a cancel button (slot 37) appears only while the viewer has a queued entry; clicking it dequeues the item and refunds the deposit.
    • /liveauction cancel — removes the sender's own item from the live queue and refunds the deposit.
    • /liveauction cancel <id> (admin) — force-cancels an active live auction by ID, refunds all bidders, and returns the item to the seller.
    • Duplicate-entry guard — players who already have an item queued receive an already-queued message and cannot enqueue a second entry until the first is sold or cancelled.
    • New permissions: ezauction.auction.live.sell (default: true), ezauction.auction.live.admin (default: op).

Fixed

  • JaCoCo Java 25 compatibility — upgraded jacoco-maven-plugin from 0.8.12 to 0.8.13 to resolve Unsupported class file major version 69 during test instrumentation on JDK 25.
  • Live auction first-bid minimum — the first bid on a live auction now only requires meeting the starting price. Previously, the minimum bid increment (percent and fixed) was incorrectly applied before any bid existed, making the starting price unreachable.
  • Empty chat input bids the minimum — during the custom-bid chat prompt, pressing Enter with no input now automatically places a bid at the minimum amount instead of cancelling or erroring.
  • Claim GUI/auction claim and the Claims button in the browser now open a dedicated 54-slot inventory instead of a bare command response. The GUI shows each pending return item with its expiry date in the lore, a Claim All button (slot 49), and a Back button (slot 45) that returns to the auction browser.
  • Configurable claim expiry — pending return items now carry an expiry timestamp. New claim.expiry-days key in auction.yml (default 7). The expiry is shown in the item lore inside the Claim GUI and resets whenever a new item is stored for the player.
  • Live Auctions shortcut in the browser — a Live Auctions beacon button (slot 47) has been added to the main auction browser GUI. Clicking it opens the live auction picker directly, without needing to type /liveauction.

EzAuction 2.2.1

17 May 11:23
0b5fa41

Choose a tag to compare

Fixed

  • Spigot compatibilityItemStack data is now stored as a Base64-encoded byte stream (item-data key) via BukkitObjectOutputStream instead of YAML-native serialization. This eliminates the [ERROR] Material cannot be null log entries that appeared during startup when loading YAML files written by a Paper 1.21+ server on a Spigot server. Existing files are migrated to the new format automatically on the next save cycle; the old item key is still read as a fallback during the transition.
  • Smoke test coverage – Added YamlAuctionStorageSmokeTest (8 tests) and a dedicated spigot-smoke.yml GitHub Actions workflow to guard this code path in CI.

EzAuction 2.2.0

11 May 22:08
b0325ef

Choose a tag to compare

Added

Team Auctions

  • Team Auctions: team-scoped listings visible and purchasable only by members of the seller's team.
    • New command: /auction team - browse team listings (hidden when disabled or TeamsAPI absent).
    • New command: /auction team sell - list held item as a team auction.
    • team-auctions.enabled toggle in auction.yml (default false).
    • TeamsIntegration facade - null-safe soft-dependency wrapper around TeamsAPI 1.4.0.
    • AuctionListing.teamId field persisted to both YAML and MySQL backends.
    • AuctionListingService team scope and AuctionQueryService team query, both guarded by the config flag.
    • AuctionManager.createTeamListing() and listActiveTeamListings().
    • Team browse tab in the auction browser GUI; tab button hidden when team auctions are disabled or TeamsAPI is not installed.
    • TeamsAPI added to softdepend in plugin.yml.
    • Full message keys added across all four language files (en, es, nl, zh).
    • New permissions: ezauction.auction.team, ezauction.auction.team.sell.

Added (sell menu)

  • Price-adjustment buttons replaced with coloured glass panes (lime = increase, red = decrease).
  • Second row of quantity-adjustment buttons (same glass style) to select how many of a stack to list.
  • SellMenuState.quantity() - tracks the chosen listing amount, clamped to [1, item stack size].
  • SellMenuInteractionConfiguration.quantityAdjustments - configurable quantity-step list (default: ±1, ±8, ±16, ±64).
  • SellMenuLayoutConfiguration.quantityAdjustmentSlots / quantityDisplay layout fields; inventory expanded from 27 to 36 slots to accommodate the extra row.

Fixed

  • Price-adjustment button labels displayed "coins" instead of the configured currency symbol ($ by default). Labels now use formatCurrency() consistently with the rest of the sell menu.
  • Chinese (zh) translation files: gui-messages_zh.yml had a duplicate activity preamble block and incorrect 4-space indentation; messages_zh.yml had broadcast and team-auctions merged onto one line and was missing a trailing newline; orders-only.yml had Windows CRLF line endings. All three files now pass YAML validation.

2.1.0

14 Apr 08:57
94eb92b

Choose a tag to compare

New Features

Discord Notifications

image

EzAuction can now send auction event notifications to Discord via two independent methods — use one or both at the same time.

  • Direct webhook (no extra plugins required): set webhook.enabled: true in discord.yml, paste your Discord webhook URL, and choose which events trigger a message (auction_start, auction_end, auction_bid, auction_cancel). Supports rich embeds and custom bot name/avatar.
  • DiscordSRV channel forwarding: if you run DiscordSRV, set enabled: true in discord.yml and supply the target channel ID. Optionally restrict notifications to players that have a linked Discord account with a required role (role-required, required-role-id).

A new admin command /auctiondiscord test [message] lets you verify Discord is wired up correctly without needing to create a real listing. Requires the ezauction.discord permission.


Improved Sell GUI (in-GUI price and duration selection)

The sell menu now handles price and duration entirely inside the GUI:

  • Dedicated price adjustment buttons (set, increase, decrease) keep players inside the inventory screen.
  • Duration picker lets players choose from the configured duration options without typing a command.
  • A custom input button is still available for players who prefer typing an exact value in chat.
  • In-GUI confirm/cancel dialogs for both listings and buy orders replace the previous chat prompts. Players no longer need to respond in chat to confirm a purchase.

Configurable GUI Action Buttons

GUI action buttons (confirm, cancel, adjust price, pick duration, etc.) are now fully driven by the message/layout YAML files. Each button's item, name, lore, and slot can be customised without modifying any code. Language translations apply to these buttons as they do to all other GUI text.


Changes

  • Number input shortcuts (1k, 2.5m, etc.) now throw IllegalArgumentException on bad input. Error messages are correctly shown to the player when an unrecognisable price or amount is entered via command.
  • Tab completion for /auction and /liveauction is now handled per-subcommand, giving context-aware suggestions at each argument position.
  • Internal storage layer has been refactored to use Repository interfaces. No configuration changes are required, but the refactor lays the groundwork for future storage backends and improves reliability.

Breaking / Migration Notes

  • Legacy messages.yml fallback removed. If your server was relying on a root-level messages.yml file (deprecated since v2.0), it will no longer be loaded. All messages must be in the language-specific files under messages/messages_<lang>.yml, messages/gui-messages_<lang>.yml, etc. The defaults ship correctly — this only affects servers that manually edited the old file.
  • New discord.yml configuration file. This file is automatically created on first run with all features disabled (enabled: false, webhook.enabled: false). No action is required unless you want to enable Discord notifications.

2.0.1

19 Jan 22:36
796cd6d

Choose a tag to compare

Fixed

  • Fixed /auction reload subcommand to properly reload configuration without requiring a full server restart.

Added

  • Added new /order command to open the menu for placing an order.
  • Added new /orders command to open the orders GUI directly.
  • Added new standalone order GUIs for better user interaction.
  • Improved debug mode for order features, providing more detailed logging and diagnostics.
  • Added new orders-only.yml configuration file with orders-only-mode: false option. When set to true, it enables only the Orders feature and /orders command, disabling most other auction features. Changes take effect after a reload.

Changed

  • Refactored plugin loading structure for better modularity and maintainability, including updates to PluginRegistry.java for staged initialization and component-based setup.

2.0.0

17 Jan 21:51
f34e920

Choose a tag to compare

  • EzShops 2.0.0+ integration support
  • Added enhanced navigation with back buttons and search tips
  • Added quick access to pending returns via Claims button
  • Added low-price warnings in confirmation dialogs
  • Added a new gathered "My Activity" menu

1.2.0

11 Jan 20:28
9546c12

Choose a tag to compare

  • Added subcommand /auction history [player]
  • Added command /auctionhistory
  • Added GUI for the auction history
  • Added optional (through new permission) feature to see the history of all players
  • Fixed PluginRegistry
    • Imported all non-imported used classes
    • Fixed code styling
    • Fixed pending returns init
  • Restored src/main/java/com/skyblockexp/ezauction/live/LiveAuctionCommand.java
  • Restored src/main/java/com/skyblockexp/ezauction/gui/AuctionReturnListener.java

1.1.1

02 Jan 00:01
bf6c7f4

Choose a tag to compare

  • Fixed hologram compatibility issues for Minecraft 1.19–1.20 and implemented a safe shutdown for versions < 1.19
  • Added support for parsing numeric shortcuts (k, m, b, t) representing thousands, millions, billions, and trillions across the entire project
  • Introduced a utility to handle user input such as 3k, 2.5m, 10b, and 4t and convert them into numeric values
  • Bundled a full MySQL library into the .jar (increasing file size) to ensure full compatibility and offline support
  • Resolved multiple debug messages; debugging is now optional and configurable via the debug setting in auction.yml

1.1.0 | Custom events

01 Jan 13:47
e639d3f

Choose a tag to compare

  • Refactored the full AuctionManager for code clean up purposes
  • Added custom AuctionListingCreateEvent: Gets triggered when an auction listing is getting created.
  • Added custom AuctionListingSellEvent: Gets triggered when an auction listing is getting sold.
  • Added read-only custom AuctionListingSoldEvent: Gets triggered when an auction listing is sold and handled.
  • Released the project on Github