#### New Features
**Discord Notifications**
<img width="474" height="198" alt="image" src="https://github.com/user-attachments/assets/fd68324a-f7cf-4ba4-aa10-6966e0cd1aed" />
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.
Optional dependencies
EzEconomy
Any compatible version
EzShops
Any compatible version
PlaceholderAPI
Any compatible version
DiscordSRV
Any compatible version
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }