Selling Items
Fixed-Price Listing
The simplest way to sell: hold the item you want to list and use the /ah sell command. The item is removed from your hand and listed in the auction house at your chosen price.
/ah sell <price> [quantity] [currency]
Examples:
# Sell the entire stack in hand for 500 (default currency)
/ah sell 500
# Sell 16 of the held item for 200
/ah sell 200 16
# Sell the held item for 1000 gems
/ah sell 1000 gems
If you omit the quantity, the entire stack is listed. If you omit the currency, the server's default currency is used (configured in config.yml under default-currency, or the Vault primary currency if left empty).
When a listing is created, the item is immediately removed from your inventory. If the listing fails (database error, validation failure), the item is returned automatically.
Auction Listing
Auctions let other players compete with bids. The highest bidder wins when the timer expires.
/ah auction <starting_bid> [duration] [currency]
Examples:
# Start an auction at 100, default duration (1d)
/ah auction 100
# Start a 3-day auction at 500
/ah auction 500 3d
# Start a 12-hour auction at 1000 gems
/ah auction 1000 12h gems
Duration supports these formats: s (seconds), m (minutes), h (hours), d (days), w (weeks). The duration must be between the configured minimum and maximum (default: 1h to 7d).
The auction system can be disabled entirely in config.yml with auction.enabled: false. When disabled, only fixed-price listings are available.
Server Listings (Money Sink)
Server listings are admin-created listings whose sale proceeds are destroyed instead of paid to a seller. The buyer is charged normally, but no one receives the money — so it leaves the economy entirely. This is ideal for a controlled server shop inside the auction house, or for fighting inflation.
Hold the item you want to sell and run:
/ah serverlist <price> [infinite] [currency]
Examples:
# A single server listing for 10000 (consumed when bought)
/ah serverlist 10000
# A restockable listing that can be bought repeatedly
/ah serverlist 10000 infinite
# An infinite listing priced in gems
/ah serverlist 500 infinite gems
| Mode | Behavior |
|---|---|
| single (default) | Works like a normal listing but with no payout — consumed once a player buys it. |
| infinite | Stays in stock after each purchase and can be bought again and again — a true currency sink. |
- Server listings never expire and show a configurable
Serverseller name with a★ Server listingtag. - They are always fixed-price (no bidding) and ignore tax — the buyer pays exactly the listed price.
- They do not count against any player's sell limit.
- Remove one like any other listing:
Shift + Left-clickit in the GUI (requiresah.admin).
# config.yml
server-listings:
enabled: true
display-name: "Server" # seller name shown for server listings
Requires the ah.admin permission. Because the proceeds are destroyed, server listings are an economy tool — not a way to earn money.
Item Categories
Every listed item is automatically assigned to one of 11 categories from its material:
| Category | Items Included |
|---|---|
| All | Every listing (default view) |
| Equipment | Tools, weapons, armor, shields, elytra, arrows, totems |
| Blocks | Placeable blocks that belong to no other category |
| Redstone | Dust, repeaters, comparators, pistons, observers, hoppers, rails, minecarts, TNT, slime and honey blocks |
| Resources | Ingots, nuggets, raw ores, gems, dyes, leather, string, storage blocks |
| Food | Everything edible, plus cake, seeds and crops |
| Potions | Potions of every kind, tipped arrows and brewing ingredients |
| Enchanting | Enchanted books, XP bottles, lapis, enchanting table, grindstone |
| Decoration | Banners, carpets, wool, glass, concrete, terracotta, flowers, candles, heads, signs, beds |
| Spawners | Spawner blocks |
| Other | Everything that does not fit into another category |
A category is derived from the item, never stored: listings keep their stack and nothing else. Reshaping the set therefore migrates nothing — existing listings re-sort themselves on the next start.
Classification is an ordered list of rules rather than a chain of name matches, because order is the whole difficulty: nearly all of redstone is made of blocks, so it is asked about before the block rule; brewing ingredients are edible, so potions come before food.
Players browse by category using the sort button in the auction GUI. There is also a Favorites filter for bookmarked items.
Blocked Items
Admins can prevent specific items from being listed. Three blocklists are available in config.yml:
# Block by material type
blocked-materials:
- ELYTRA
- BEDROCK
# Block by display name substring (case-insensitive)
blocked-names:
- fuck
# Block by anvil-renamed display name (case-insensitive)
blocked-anvil-names:
- fuck
Shulker boxes are also checked: if any item inside a shulker matches the blocked materials or names, the entire shulker is rejected.
Restricted materials
The other direction: a material nobody may list unless they hold ah.sell.<material>. blocked-materials says "never"; restricted-materials says "not you" — a permission gate rather than a ban.
restricted-materials:
- NETHERITE_INGOT
- ELYTRA
A player with ah.sell.netherite_ingot may list netherite; everyone else is refused with a message. ah.sell.* covers the lot. Empty by default.
Sell Limits
You can restrict how many active listings a player can have simultaneously using the ah.limit.<amount> permission.
| Permission | Effect |
|---|---|
ah.limit.5 | Player can have up to 5 active listings |
ah.limit.10 | Player can have up to 10 active listings |
ah.limit.50 | Player can have up to 50 active listings |
ah.admin | Unlimited listings |
If a player has multiple ah.limit.* permissions, the highest value is used. If no limit permission is set, the default is 1 listing.
Auction listings have a separate cap configured via auction.max-active-auctions in config.yml (default: 5).
A player who tries to list when at their limit will see a "maximum reached" message. Expired and sold items do not count toward the limit.
Listing Expiration
Listings automatically expire after the configured duration (default: 3d for fixed-price). When an item expires:
- It moves to the player's "Expired" tab in the My Items GUI
- The player receives a notification on their next login
- If
auto-return-expired: true, expired items are automatically returned to the player's inventory on join
For auctions, the duration is set per-listing via the /ah auction command. If no bids were placed, the item is returned to the seller. If bids were placed, the highest bidder wins.
Abandoned listings
A player who never comes back never reclaims their expired listing, so it used to sit in memory and be reloaded at every start, for good. Two windows now clean that up, both in days, both disabled by setting them to 0:
purge:
# The item goes back to its seller through XCore's mailbox, then the row is removed.
expired-days: 30
# How long a fully settled sale stays in the table as history.
history-days: 90
Nothing is destroyed: the item is handed to the seller's mailbox and given to them on their next login, whenever that happens. Server listings have no owner and are simply removed.
Duplicate Listing Warning
When a player lists an item of the same material type they already have listed, they receive a yellow warning message. This is a soft warning only -- the listing is still created. It helps players avoid accidentally listing the same item type twice.