Selling
The two ways to list an item, the price prompt, listing slot limits, the blacklist and the high-value broadcast.
There are two routes to a listing. Both end at the same confirm screen, and both hand your item back if anything goes wrong.
The command route
/ah sell <price>Lists the item in your main hand at that price. The item leaves your hand straight away and a confirm screen opens showing it at the price you typed.
/ah sellWith no price, this opens the sell menu instead.
Both need atauctionhouse.sell, which is granted to everyone by default.
The menu route
Open the sell menu
Run /ah sell with no price.
Drop your item into the insert slot
The sell menu has exactly one slot you can put something into. Everything else is locked.
Type the price in chat
The menu closes and the plugin asks for a price. Type a number, or type cancel to abort
and get your item straight back.
Confirm
The confirm screen shows the item and the price. Click confirm to list it, or cancel to get it back.
ITEMS.INSERT in gui.yml ships with MATERIAL: AIR, which leaves the insert slot
genuinely empty. Give it a real material and it becomes a visual hint sitting in the
slot. The hint is decoration only. It can never be taken, listed or dragged out, and it
is not handed to you when the menu closes.
One item at a time
You can only have one sell in flight. If you are sitting at the chat price prompt and run
/ah sell 500, the plugin re-sends the price prompt rather than taking a second item into
custody. The same applies to opening the sell menu again.
Price rules
| Setting | What it does | Default |
|---|---|---|
AUCTION.MIN-PRICE | Lowest accepted price | 10.0 |
AUCTION.MAX-PRICE | Highest accepted price | 1000000.0 |
AUCTION.COMPACT-PRICE-INPUT | Accept shorthand like 1.5k, 10k, 1m, 2.5b | false |
With COMPACT-PRICE-INPUT set to false, only plain numbers are accepted. That removes
any chance of a player meaning to type 1k and getting 1000000. Turn it on and the
suffixes k, m, b, t and q all work, in /ah sell <price> and at the chat
prompt.
Those suffixes are not fixed. They follow FORMATTING.MAGNITUDE-SUFFIXES in config.yml,
so whatever you list there is exactly what the price prompt accepts. Rename K to mil
and 2.5mil becomes a valid thing to type. Matching ignores case, and the longest suffix
wins, so a short m never shadows a longer mil.
The currency symbol is optional at the prompt. With the shipped $, both $1500 and
1500 are read as the same price. Only a leading symbol is stripped, so 1$500 is
refused rather than quietly read as something else.
Prices are shown back to players in compact form with a leading currency symbol, for
example $12.5K. Both parts come from FORMATTING, see
Configuration.
If you set MIN-PRICE above MAX-PRICE, the plugin swaps them at load time and logs a
warning, so listings stay possible.
Listing slots
AUCTION.MAX-LISTINGS-PER-PLAYER is the floor for everyone. It defaults to 10.
Raise it per rank with permissions. Grant atauctionhouse.limit.<number> for that many
slots, or atauctionhouse.limit.unlimited (or atauctionhouse.limit.*) to remove the cap
entirely. The highest value a player holds wins, and the config value is never lowered by
a permission.
atauctionhouse.limit.25 25 slots
atauctionhouse.limit.100 100 slots
atauctionhouse.limit.unlimited no capThis works with any permissions plugin. See Permissions for the full picture.
In "Your Listings", every slot past your allowance is drawn as the locked item from
YOUR-ITEMS.ITEMS.LOCKED in gui.yml, which by default tells the player how many slots
they have and to rank up for more. The {slots} placeholder there is the viewer's own
allowance, not the config default.
The slot check runs when the listing is created, against the number of listings you already have active. Hitting the cap returns your item, it does not consume it.
Duration
AUCTION.DEFAULT-DURATION-SECONDS sets how long a new listing stays up. It defaults to
86400, which is 24 hours.
When a listing expires it is marked expired and the item goes back to the seller. If the seller is online and has room it goes straight into their inventory. Otherwise it goes to their collection box.
AUCTION.EXPIRY-SWEEP-INTERVAL-SECONDS is how often the server checks for expired
listings. It defaults to 60. Lower is more responsive, higher is cheaper. Below 20 is
not useful, and the plugin clamps anything under 5 seconds.
The blacklist
AUCTION.BLACKLIST is a list of Bukkit material names that can never be listed. The
check runs on both routes, before the item leaves the player's hand on the command route
and again when the listing is created.
The shipped list covers items that are exploitable, hold hidden inventories, or run commands:
- Every bundle variant, because a bundle can hold other items
- Command blocks, command block minecarts, structure blocks, structure voids and jigsaws
- Barriers, light blocks, debug sticks and knowledge books
AIR
Add your own custom-item materials to it as needed. Matching is on the material name and is case-insensitive.
The blacklist matches materials, not custom items. Two different custom items that share a material are either both allowed or both blocked.
The broadcast
AUCTION.BROADCAST-PRICE-THRESHOLD announces expensive listings to the whole server. Any
listing created at or above that price sends the SELL.BROADCAST message from your
language file to everyone online. It defaults to 500000.0.
To turn it off, set the threshold higher than AUCTION.MAX-PRICE so nothing can ever
reach it, or blank the SELL.BROADCAST message in your language file. A message
configured as an empty string is skipped silently.
Cancelling a listing
Open "Your Listings" from the auction house menu, or press the button in the main menu, and click one of your own listings to cancel it. The item comes back to you, or goes to your collection box if you have no room.
Admins can force-remove any listing with /ah remove <id>. The item still goes back to
the seller.
What happens if something goes wrong
Every failure path returns the item:
| Situation | Result |
|---|---|
| Price below the minimum or above the maximum | Item returned, message sent |
| Item is blacklisted | Item returned, message sent |
| You are already at your slot limit | Item returned, message sent |
| The database write fails | Item returned, message sent |
| You cancel at the confirm screen | Item returned |
| You close the confirm screen | Item returned |
| You log out mid-flow | Item written to your collection box |
| The server shuts down mid-flow | Item written to your collection box |
The handover point is the moment the listing row exists in the database. Before it, the item is owed to you. After it, the listing owns the item and no late callback can hand you a second copy.