1.0
Compatibility
Changes
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.
Building
Needs JDK 25+ and Maven.
mvn clean package
The finished jar lands in target/AuctionzOptymalized-<version>.jar.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:KLPF7viq:vfEvER0D"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:KLPF7viq:vfEvER0D"
}

