Menu-first marketplace with listings, buy orders, and async safety nets
Menu-first marketplace with listings, buy orders, and async safety nets.
Requires Vault and a compatible economy plugin to process currency.

/auction claim recovery.AuctionListingLimitResolver service to scale slot caps with ranks, islands, or progression data.%ezauction_*% placeholders into scoreboards or holograms to surface active listings, orders, limits, or pending returns.sharpness v, fortune 3, or minecraft:looting to surface listings and buy orders carrying the matching enchantments, including stored book enchants. Matching works with roman numerals, numeric levels, namespaced keys, and underscore/space differences so players can zero in on the exact enchant stack they need.holograms:
enabled: true
update-interval-ticks: 100
search-radius: 2.5
height-offset: 1.75
max-holograms: 100
batch-update: true
require-permission: false # Set true to require a permission node
view-permission: ezauction.hologram.view # Permission node for viewing/interacting
proximity-limit: false # Set true to restrict by distance
proximity-distance: 32.0 # Max distance for interaction
EzAuction.jar, restart your Paper or Purpur server, and confirm Vault plus an economy plugin are active.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.ezauction.auction (and optional sell/order/history nodes) so they can browse and trade./auction history so buyers and sellers can audit their latest activity right from chat.live-auctions.enabled on (and queue-enabled if you want a rolling lineup) so fresh sales are staged for broadcast and visible through /auction live.display-in-chat enabled to announce the next queued listing every announcement-interval-ticks ticks using your Vault currency formatting.| 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 live |
Preview upcoming live auction broadcasts and refresh the queue. | ezauction.auction.live |
/auction claim |
Withdraw stored return items. | ezauction.auction |
/auction search <query> |
Open the auction browser filtered by item name, enchantment, or keyword. | ezauction.auction.search |
/auctionhologram <create/remove/list> [args] |
Manage auction holograms: create, remove, or list in-world auction displays. | ezauction.hologram.manage |
Need more details? See the full configuration guide for all YAML, MySQL, menu, and advanced settings options.
| 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 (recommended: EzEconomy) | A Vault-compatible provider is required. EzEconomy is recommended for best compatibility and modern features. |
| 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. |
storage.type between yaml and mysql; MySQL connections support SSL flags and pool tuning.menu.browser and menu.confirm control inventory sizes, filler panes, and navigation slots across all language variants.messages/menu-interactions_*.yml per locale.live-auctions.enabled, queue-enabled, display-in-chat, and announcement-interval-ticks to stage listings for announcements or GUI previews.values.format.AuctionListingLimitResolver service to scale listing caps with ranks, islands, or other progression data.%ezauction_*% placeholders for leaderboards, scoreboards, or Discord relays.storage.type to mysql and point each Paper/Purpur backend to the same credentials so listings, buy orders, and returns are stored centrally. The bundled MySQL driver implements DistributedAuctionListingStorage so inserts and claims remain atomic across servers.EzAuction.jar on every gameplay server behind your proxy, then copy a single set of tuned configs (auction.yml, auction-storage.yml, messages/*.yml) to keep menus, limits, and language consistent network-wide.table-prefix so it maintains a separate pool.menu-layout_*.yml and menu-interactions_*.yml bundles for English, Dutch, Spanish, and Chinese (_en, _nl, _es, _zh)._de) to introduce custom language support without touching code.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);
}
}
name: AuctionLimitPlugin
version: 1.0.0
main: com.example.auctionlimits.AuctionLimitPlugin
loadbefore: [EzAuction]
# 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 Glancestorage:
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
live-auctions:
enabled: false
queue-enabled: true
display-in-chat: true
announcement-interval-ticks: 200
values:
enabled: false
format: "&7Value: &6{value}"
materials:
diamond: 2500.0
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
enabled: false
mode: configured # or ezshops-buy / ezshops-sell
format: "&7Value: &6{value}"
materials:
diamond: 2500.0
Ready to modernize your marketplace?
Deploy EzAuction today and give your players a polished, automated trading hub!