[1.21.*] ⭐ EzAuction ⭐ Buy orders - Advanced GUI - Show shop price icon

[1.21.*] ⭐ EzAuction ⭐ Buy orders - Advanced GUI - Show shop price -----

Free auction plugin with advanced configuration options



EzAuction
Menu-first marketplace with listings, buy orders, and async safety nets
Paper/Purpur 1.21+ • Vault economy • YAML fallback + MySQL/HikariCP • English/Dutch/Spanish/Chinese menus included • PlaceholderAPI stats
Requires Vault and a compatible economy plugin to process currency.

Why EzAuction?
  • Menu-first trading – Paginated browsers, sell/order editors, and confirmation popups keep every transaction guided and click-friendly.
    [​IMG]
  • Listings + buy orders – Run timed sales, reserve balance for buy requests, and fulfill either side straight from the GUI or command flow.
    [​IMG]
    [​IMG]
  • Async persistence & fallbacks – Listings and history write through dedicated executors, automatically falling back to YAML storage if MySQL is unreachable.
  • Offline-safe returns – Expired or undeliverable items go to a claimable stash with login reminders and `/auction claim` recovery.
  • Rank-aware limits – Plug in a custom `AuctionListingLimitResolver` service to scale slot caps with ranks, islands, or progression data.
  • Smart value overlays – Surface configured price hints or pipe in EzShops buy/sell estimates directly into menu lore.[​IMG]


Feature Highlights
  • Configurable menus & translations – Override browser/confirm layouts, filler glass, and button text across the bundled English, Dutch, Spanish, and Chinese menu files.
  • Flexible storage – Start on lightweight YAML or flip to production-ready MySQL with SSL flags, table prefixes, and shaded HikariCP pooling.
  • Asynchronous history – Background save queues batch player history writes to keep gameplay responsive, even during heavy auction traffic.
  • Player protections – Deposit refunds, balance checks, expiry sweeps, and inventory-aware delivery prevent dupes and lost currency.
  • PlaceholderAPI hooks – Drop `%ezauction_*%` placeholders into scoreboards or holograms to surface active listings, orders, limits, or pending returns.
  • Integration-ready API – Register Bukkit services to override listing caps or provide custom value providers without forking the plugin.
Quick Start
  • Upload `EzAuction.jar`, restart your Paper or Purpur server, and confirm Vault plus an economy plugin are active.
  • Edit plugins/EzAuction/auction.yml for pricing rules, durations, and GUI slots, adjust auction-storage.yml for YAML/MySQL persistence, and update auction-values.yml or messages/menu-interactions_*.yml as needed.
  • Choose between YAML or MySQL storage, then grant players ezauction.auction (and optional sell/order/history nodes) so they can browse and trade.
  • Encourage `/auction history` so buyers and sellers can audit their latest activity right from chat.

Commands & Permissions
Command Description Permission
/auction Open the auction browser, claim items, and cancel listings. ezauction.auction
/auction sell <price> [duration] List the held item instantly or open the sell GUI. ezauction.auction.sell
/auction order <price> <amount> [duration] Create a buy order with reserved funds. ezauction.auction.order
/auction cancel [id] Review and cancel active listings or buy orders. ezauction.auction
/auction history [buy|sell] Show the latest transactions for each category. ezauction.auction.history
/auction claim Withdraw stored return items. ezauction.auction


Setup Guide
Requirements
Requirement Notes
Java 17+ Matches the Paper 1.21.4 API target used by EzAuction.
Paper or Purpur 1.21+ The plugin relies on modern Paper server APIs.
Vault Provides the economy bridge for deposits, buy orders, and payouts.
Economy plugin Install any Vault-compatible provider such as EssentialsX Economy or CMI.
Optional: EzShops Unlock live value overlays via values.mode = ezshops-buy or ezshops-sell.
Optional: Custom limit resolver Expose AuctionListingLimitResolver as a Bukkit service to scale listing caps.
Optional: Menu localisation overrides Duplicate the bundled `_nl`, `_es`, or `_zh` menu files to keep translations in sync with your branding.


Configuration Overview
  • Storage selection – Toggle storage.type between yaml and mysql; MySQL connections support SSL flags and pool tuning.
  • Menusmenu.browser and menu.confirm control inventory sizes, filler panes, and navigation slots across all language variants.
  • Sell & order editors – Configure default price suggestions and click adjustments for both listing and buy-order editors.
  • Listing rules – Clamp durations, enforce minimum pricing, schedule custom duration options, and reserve refundable deposits, with automatic executor-based expiry sweeps.
  • Menu interactions – Tweak click increments, confirmation buttons, and chat prompts through messages/menu-interactions_*.yml per locale.
  • Value display – Display configured material prices or EzShops-sourced estimates, templated through values.format.

Optional Integrations
  • Expose a custom AuctionListingLimitResolver service to scale listing caps with ranks, islands, or other progression data.
  • Install EzShops so the auction browser can display buy or sell prices directly in listing lore when configured.
  • Install PlaceholderAPI to unlock `%ezauction_*%` placeholders for leaderboards, scoreboards, or Discord relays.

  • EzAuction ships with menu-layout_*.yml and menu-interactions_*.yml bundles for English, Dutch, Spanish, and Chinese (`_en`, `_nl`, `_es`, `_zh`).
  • Copy any bundle to another locale tag (for example `_de`) to introduce custom language support without touching code.
  • Keep button text consistent across languages so navigation slots and confirmation buttons remain aligned with the GUI configuration.

  1. Create a lightweight helper plugin that loads before EzAuction (set loadbefore: [EzAuction] in its plugin.yml).
  2. Implement com.skyblockexp.ezauction.api.AuctionListingLimitResolver to compute the final slot total.
  3. Register the resolver with Bukkit's ServicesManager during onEnable() so EzAuction can discover it at startup.
Code (Java):

package com.example.auctionlimits ;

import com.skyblockexp.ezauction.api.AuctionListingLimitResolver ;
import org.bukkit.Bukkit ;
import org.bukkit.plugin.ServicePriority ;
import org.bukkit.plugin.java.JavaPlugin ;

public final class AuctionLimitPlugin extends JavaPlugin {

    @Override
    public void onEnable ( ) {
        saveDefaultConfig ( ) ;

        AuctionListingLimitResolver resolver = (sellerId, baseLimit ) -> {
            int bonus = getConfig ( ). getInt ( "extra-slots." + sellerId. toString ( ), 0 ) ;
            return Math. max ( 0, baseLimit + bonus ) ;
        } ;

        Bukkit. getServicesManager ( ). register (
                AuctionListingLimitResolver. class,
                resolver,
                this,
                ServicePriority. Normal
        ) ;
    }

    @Override
    public void onDisable ( ) {
        Bukkit. getServicesManager ( ). unregisterAll ( this ) ;
    }
}
 
Code (yml (Unknown Language)):

name: AuctionLimitPlugin
version: 1.0.0
main: com.example.auctionlimits.AuctionLimitPlugin
loadbefore: [EzAuction]
 
Code (yml (Unknown Language)):

# plugins/AuctionLimitPlugin/config.yml
extra-slots:
  123e4567-e89b-12d3-a456-426614174000: 2
  2a2f4982-0c7a-4f13-86a1-4f85c4a94cf7: 4
 
This companion plugin registers before EzAuction enables and adds any configured bonus slots per player UUID on top of EzAuction's base limit. Update the UUID keys or compute the bonus however you like to reflect your network's progression rules.

Configuration at a Glance

Code (yml (Unknown Language)):

storage:
  type: yaml # or mysql
  mysql:
    host: localhost
    port: 3306
    database: skyblock
    username: root
    password: secret
    use-ssl: true
    table-prefix: ezauction_
    pool:
      maximum-pool-size: 10
      minimum-idle: 2
      connection-timeout-millis: 10000
      idle-timeout-millis: 600000
      max-lifetime-millis: 1800000
menu:
  browser:
    title: "&2Auction House &7({page}/{total_pages})"
    size: 54
    filler:
      material: GRAY_STAINED_GLASS_PANE
      display-name: "&8 "
    navigation:
      previous-slot: 45
      close-slot: 49
      next-slot: 53
    empty-listing-slot: 22
  confirm:
    title: "&2Confirm Purchase"
    size: 27
    filler:
      material: GRAY_STAINED_GLASS_PANE
      display-name: "&8 "
    confirm-slot: 11
    listing-slot: 13
    cancel-slot: 15
listings:
  default-duration-hours: 24
  max-duration-hours: 72
  minimum-price: 10.0
  listing-deposit-percent: 5.0
  max-listings-per-player: 3
values:
  enabled: false
  format: "&7Value: &6{value}"
  materials:
    diamond: 2500.0
 
Code (yml (Unknown Language)):

type: yaml # or mysql
mysql:
  host: localhost
  port: 3306
  database: skyblock
  username: root
  password: secret
  use-ssl: true
  table-prefix: ezauction_
  pool:
    maximum-pool-size: 10
    minimum-idle: 2
    connection-timeout-millis: 10000
    idle-timeout-millis: 600000
    max-lifetime-millis: 1800000
 
Code (yml (Unknown Language)):

enabled: false
mode: configured # or ezshops-buy / ezshops-sell
format: "&7Value: &6{value}"
materials:
  diamond: 2500.0
 

Support & Links

  • Need help? Route players to your Discord, website, or ticket bot and mention EzAuction for faster triage.
  • Share update logs, bug reports, or feature requests on your resource discussion thread to keep the roadmap flowing.
  • Document any custom listing-limit resolvers so staff know which ranks or island levels unlock extra slots.
  • Direct support: Join our Discord server.

Ready to modernize your marketplace?
Deploy EzAuction today and give your players a polished, automated trading hub!
Resource Information
Author:
----------
Total Downloads: 34
First Release: Oct 27, 2025
Last Update: Oct 28, 2025
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings