Compatibility
Minecraft: Java Edition
Platforms
Links
Tags
Creators
Details
AuctionzOptymalized
A player-to-player auction house for Paper servers. Players list items from a GUI, everyone else browses, searches and buys them with server money. Built to stay fast on a busy market: every view the players see is cached and only rebuilt when the market actually changes.
- Version: 1.0 BETA
- Server: Paper 26.x (
api-version: 26.1.2) - Requires: a Vault economy (EssentialsX, CMI, ...) - the plugin will not start without one
- Author: M4rtwy
Features
- Auction GUI - paged market view, left click buys, right click cancels your own listing.
- Sell menu - drop an item in, set the price with +/- buttons, confirm. Or list straight
from your hand with
/ah sell <price>. - Search -
/ah diamond swordfrom chat, or the sign button in the menu, which opens a typing board you fill in without leaving the GUI. Matches item names, and optionally lore, enchantments and the seller's name. - Category tabs - Everything / Building blocks / Items / PvP gear / Tools / Food / Redstone along the top row. Tabs are defined in the config, so you can add your own.
- Expiry and payouts - listings run out after a set time and go to
/ah expired, where the seller collects them. Sale money is paid out the same way. - Tax, price limits, listing limits, item blacklist - all in the config.
- Languages -
lang/en.yml,pl.yml,de.yml. Drop in your ownlang/xx.ymland it shows up in the picker. Missing keys fall back to English. - Styles -
styles/default.yml,donutsmp.yml,minimal.ymlhold every icon, slot and layout. Your own file instyles/shows up in the picker too.
Texts and looks are kept apart on purpose: lang/ has the words, styles/ has the icons and
slots, and styles pull words in with <lang:some.key> tokens. Changing the language never
breaks a layout, and changing the style never loses a translation.
Commands
| Command | What it does | Permission |
|---|---|---|
/ah |
Opens the auction house | auctionzoptymalized.use |
/ah <text> |
Searches the market, e.g. /ah diamond sword |
auctionzoptymalized.search |
/ah search |
Opens the typing board | auctionzoptymalized.search |
/ah sell |
Opens the sell menu | auctionzoptymalized.sell |
/ah sell <price> |
Lists the item in your hand right away | auctionzoptymalized.sell |
/ah expired |
Collects your expired listings and payouts | auctionzoptymalized.use |
/ah help |
Shows the help | - |
Aliases: /auction, /rynek.
Admin, all under /ap (aliases /auctionzoptymalized, /auctionzoptimalized):
| Command | What it does |
|---|---|
/ap reload |
Reloads config, languages and styles |
/ap version |
Shows the plugin version |
/ap gui [menu] |
Opens any menu from the active style |
/ap style [name] |
Style picker / switches the look |
/ap lang [code] |
Language picker / switches the language |
/ap auction save |
Writes listings.yml right now |
/ap auction clear |
Returns every listing to its seller |
Permissions
| Node | Default | Grants |
|---|---|---|
auctionzoptymalized.use |
everyone | Opening the auction house |
auctionzoptymalized.sell |
everyone | Listing items for sale |
auctionzoptymalized.search |
everyone | Searching the market |
auctionzoptymalized.limit.bypass |
op | Ignores the listing limit |
auctionzoptymalized.admin |
op | The /ap commands, and all of the above |
Files
plugins/AuctionzOptymalized/
config.yml behaviour: duration, tax, limits, blacklist, categories, search
listings.yml the market data - do not edit while the server runs
lang/ en.yml, pl.yml, de.yml - every message and every word in the menus
styles/ default.yml, donutsmp.yml, minimal.yml - icons, slots, layout
Config highlights
auction:
listing-duration: "48h" # s / m / h / d
max-listings-per-player: 5 # 0 = unlimited
min-price: 1.0
max-price: 10000000.0
tax-percent: 5.0 # taken from the seller's payout
allow-buying-own: false
broadcast-new-listings: false
blacklist: [BEDROCK, BARRIER, COMMAND_BLOCK, STRUCTURE_BLOCK]
search:
enabled: true
max-length: 48
match-lore: true # also search lore and enchantments
match-seller: true # /ah Notch finds their listings
Categories are written as rules, not as material lists:
pvp:
match: ["*_SWORD", "*_AXE", "*_HELMET", "BOW", "SHIELD", "TRIDENT", "*POTION"]
match and exclude take an exact material, a wildcard with one *, or a tag:
#block, #item, #edible, #record, #fuel, #solid. An empty match means
"everything" - that is the all tab. Adding a tab means an entry here, an icon and a
slot in styles/, and a name in lang/ under gui.categories.<id>.
How it stays fast
- The listing list is sorted once and cached; a version counter on the auction manager is bumped on every change, and every derived cache checks that counter instead of rebuilding.
- Search haystacks (name, lore, seller) are built once per listing and reused.
- Category rules are resolved into material sets when the plugin starts, so filtering a full market is one set lookup per listing, done before any text matching.
- Search results are cached per player, so paging through them is not a second scan.
- Tab completion, category counts and the sorted view all sit on the same counter.


