AuctionPro
High-performance auction plugin with cross-server sync
AuctionPro is a high-performance auction house plugin with transaction history, claim inbox, and cross-server sync across regions.
Requirements
- Paper / Spigot / Purpur / Folia 1.19+
- Java 17+
- Vault + an economy plugin
Commands
| Command | Description | Permission |
|---|---|---|
/ap | Open the auction house browse GUI | — |
/ap sell <price> | List the item in your hand. Supports 10k, 1.5m shorthands | auctionpro.sell |
/ap history | View your transaction history GUI | auctionpro.history |
/ap listings | View and manage your active listings | auctionpro.listings |
/ap claim | Claim items from expired listings or full-inventory purchases | auctionpro.claim |
/ap reload | Reload all config files | auctionpro.admin |
/ap clearhistory <player> | Clear a player's transaction history | auctionpro.admin |
/ap clearlistings <player> | Remove all listings from a player and return items | auctionpro.admin |
/ap clearall <player> | Clear both listings and history for a player | auctionpro.admin |
/ap bypass <player> | Force-unlock a player stuck in a transaction lock | auctionpro.emergency.bypass |
Permissions
| Permission | Description | Default |
|---|---|---|
auctionpro.sell | List items on the auction house | true |
auctionpro.history | View own transaction history | true |
auctionpro.listings | View and manage own active listings | true |
auctionpro.claim | Claim items from the claim inbox | true |
auctionpro.sell.unlimited | Bypass the max listings per player limit | false |
auctionpro.admin | Access all admin commands | op |
auctionpro.emergency.bypass | Force-unlock stuck transaction locks via /ap bypass | op |
auctionpro.limit.1 — auctionpro.limit.54 | Override max listings to the given number. Highest value wins. Example: auctionpro.limit.20 | false |
Cross-Server Sync
Sync shares auction listings across multiple servers in real-time using a shared MySQL database. No proxy or Velocity required. Supports unlimited servers and any number of regions.
Requirements
storage.typemust beMYSQLon all syncing servers- All servers in the same region must point to the same MySQL host and database
Setup
Step 1 — Switch all servers to MySQL
On every server that will sync, set the storage type to MySQL and point them all to the same database:
storage:
type: MYSQL
mysql:
host: your-db-host
port: 3306
database: auctionpro_eu
username: root
password: ""Step 2 — Add the sync block to each server's config.yml
Each server needs its own unique server-id. The region must match across servers that should share listings:
sync:
enabled: true
region: "eu"
server-id: "survival-eu"
poll-interval-ticks: 60Step 3 — Assign regions
Servers with the same region share listings. Different regions are fully isolated.
| Region | Server IDs |
|---|---|
eu | survival-eu, skyblock-eu, prison-eu |
as | survival-as, skyblock-as, minigames-as |
oc | survival-oc, creative-oc |
You can use any region name you like — eu, as, oc, us, na, or anything else.
Step 4 — Restart all servers
The auction_sync_events table is created automatically on first boot. No manual SQL needed.
Adding more servers later
Deploy the plugin on the new server, point it to the same MySQL database, set the same region and a new unique server-id, then start it. No changes are needed on existing servers.
Sync config reference
| Key | Description |
|---|---|
sync.enabled | Enable or disable sync. Requires MySQL storage. |
sync.region | Group tag. Servers with the same value share listings. Any lowercase string: eu, as, oc, us, etc. |
sync.server-id | Unique label for this server. Must be different on every machine. Used to skip self-published events. |
sync.poll-interval-ticks | How often to check for updates. 60 ticks = 3 seconds. Minimum: 20 (1 second). Lower = faster sync, more DB queries. |