Skip to content

The main settings file. ProtonAuctions writes it to plugins/ProtonAuctions/config.yml the first time the server starts. Keys are camelCase, and every block is documented below.

Applying changes. /ahadmin reload applies most of the keys on this page with no restart. Keys marked (restart) are read once when the server starts, so changing them needs a full restart. Both database blocks, the Redis connection and economyEngine.enabled are in that group.

Licence

KeyDefaultWhat it does
licenseKeyfilled on downloadYour ProtonAuctions licence key. BuiltByBit fills this in automatically when a buyer downloads the plugin. See Integrity and Licensing.
debugLoggingfalseVerbose troubleshooting logs. Leave it off unless you are chasing a problem.

database

Where the auction house keeps its data. The connection opens at startup, so any change here needs a restart. See Database for per-engine setup.

KeyDefaultWhat it does
type (restart)sqliteOne of sqlite, mysql, postgresql.
address (restart)localhostHost, for MySQL and PostgreSQL.
port (restart)3306Port, for MySQL and PostgreSQL.
database (restart)plugins/ProtonAuctions/data/protonauctions.dbDatabase name, or the file path for SQLite.
username (restart)rootDatabase user.
password (restart)(empty)Database password.

auctionSettings

The core auction rules.

KeyDefaultWhat it does
defaultDuration86400Default listing length in seconds. 86400 is 24 hours.
minPrice1.0Lowest price a listing may set.
maxPrice1000000.0Highest price a listing may set.
taxRate0.05Sale tax taken from the seller. 0.05 is 5 percent.
expirationCheckInterval (restart)300How often, in seconds, the plugin sweeps for expired auctions.
maxActiveAuctionsPerPlayer50How many live listings one player may have at once.
minBidIncrement10.0Smallest raise over the current top bid.
allowCancelWithBidsfalseLet a seller cancel their own bid auction after someone has bid on it. Off by default, so once the first bid is in, the auction runs to the end. Admins can still force-end it. When on, sellers can cancel at any time and the top bidder is told the auction was cancelled.
guiRefreshInterval5How often, in seconds, an open /ah menu refreshes.

auctionSettings.antiSnipe

Extends an auction when a bid lands right before it ends, so last-second snipes cannot win uncontested.

KeyDefaultWhat it does
enabledtrueTurn anti-snipe on or off.
secondsBeforeEnd60A bid inside this many seconds of the end triggers an extension.
secondsToAdd60How many seconds the extension adds.

auctionSettings.delivery

Where sold items and sale payments go, and how unclaimed ones are handled. The concepts here (claims, vouchers, auto-claim, expiry) are covered in full under Claims. This section is the key reference.

KeyDefaultWhat it does
unifyBinAndBidtrueUse one set of delivery settings for both Buy It Now and bid auctions. Set to false to use the separate bin and bid blocks below.
sellerPaymentMethod (restart)VOUCHERVOUCHER sends the payment to /ah claim. DIRECT deposits it straight to the seller's balance.
buyerItemDeliveryCLAIMCLAIM sends the item to /ah claim. INVENTORY puts it straight in the buyer's inventory.
autoClaimItemsWhenOnlinetrueWhen delivery is CLAIM, hand the item over automatically if the buyer is online with room.
autoClaimRevenueWhenOnlinefalseWhen payment is VOUCHER, deposit it automatically if the seller is online.
inventoryFullBehaviorKEEP_AS_CLAIMWhen delivery is INVENTORY and the inventory is full: KEEP_AS_CLAIM leaves it in /ah claim, DROP drops it at the player's feet.

When unifyBinAndBid is false, the bin and bid blocks each carry their own sellerPaymentMethod, buyerItemDelivery, autoClaimItemsWhenOnline, autoClaimRevenueWhenOnline and inventoryFullBehavior, with the same meanings as above.

delivery.expiredItems

How an unsold auction's item returns to its seller.

KeyDefaultWhat it does
deliveryMethodCLAIMCLAIM returns it to the seller's /ah claim, INVENTORY puts it straight in their inventory if they are online.
autoClaimWhenOnlinetrueHand the returned item over automatically if the seller is online with room.

delivery.expiration

Optional cleanup of claims and vouchers players never collect. Durations use the Format Reference style, such as 30d or 12h.

KeyDefaultWhat it does
enabled (restart)falseTurn expiry of unclaimed items and vouchers on or off.
checkInterval (restart)5mHow often to sweep for expired claims.
itemClaimExpiresAfter30dHow long an unclaimed item waits before it expires. Empty or 0 disables it.
revenueVoucherExpiresAfter90dHow long an unclaimed voucher waits before it expires. Empty or 0 disables it.
onItemClaimExpireRETURN_TO_SELLERRETURN_TO_SELLER gives an unclaimed purchase back to its seller as a fresh claim, DELETE removes the item. A claim with no seller to return to is deleted when it expires: the item from a listing that expired unsold, and a purchase that was already given back once. Items from a listing that was cancelled, by its seller or by staff, never expire.
onRevenueExpireFORFEITFORFEIT removes the voucher, AUTO_DEPOSIT tries to pay it into the player's balance.
notifyBeforeExpirytrueWarn players before their claims or vouchers expire.
notifyBeforeExpiryTime1dHow long before expiry to warn.

delivery.limits

Caps on how many pending claims and vouchers a player may pile up.

KeyDefaultWhat it does
enabled (restart)trueTurn the caps on or off.
maxPendingItemClaims (restart)100Most pending item claims per player. 0 is unlimited.
maxPendingRevenueVouchers (restart)100Most pending vouchers per player. 0 is unlimited.
onLimitReached (restart)DENY_TRANSACTIONDENY_TRANSACTION rejects the purchase or bid so nothing is lost.

delivery.failures

What happens when a sale cannot complete cleanly.

KeyDefaultWhat it does
winnerCantPayActionRETURN_TO_SELLERWhen a winning bidder cannot pay at expiry: RETURN_TO_SELLER returns the item, OFFER_NEXT_BIDDER charges the next-highest bidder who can pay, RELIST relists the auction.
maxRelistAttempts1How many times a single auction may auto-relist before it returns to the seller. Only used with RELIST.
onDirectDepositFail (restart)FALLBACK_TO_VOUCHERThe seller is paid only after the sale has been saved, so a failed DIRECT payout never undoes a sale. The money waits as a voucher in /ah claim instead, whichever value is set. The two values only differ when the seller's currency is not available while the sale is being made: FALLBACK_TO_VOUCHER completes the sale and gives the seller a voucher, RETRY_LATER refuses the sale and refunds the buyer.
notifyPlayerOnFailuretrueTell the affected player when a transaction fails.

delivery.notifications

The chat lines sent as items and payments move. Each can be turned off on its own.

KeyDefaultWhat it does
enabledtrueMaster switch for delivery notifications.
notifyOnVoucherCreatedtrueTell a seller when their sale payment is waiting in /ah claim.
notifyOnAutoProcessedtrueTell a player when items or payments were auto-collected on join.
notifyOnExpiredtrueTell a player when their claims or vouchers expired.

restrictions

Where and when players can use the auction house.

KeyDefaultWhat it does
blockedWorlds[]Worlds where /ah is turned off, for example a PvP arena or a minigame world. World names are matched without regard to case.
blockCreativeSellingtrueStop players in creative mode from listing items or making barter offers, so items they spawned cannot be sold.

restrictions.combat

Stops players using /ah for a while after a fight, so they cannot hide their gear in it. A player who gets tagged also has their open auction house menu closed.

KeyDefaultWhat it does
enabledtrueTurn on ProtonAuctions' own combat tag.
tagSeconds15How long, in seconds, the block lasts after the last hit.
includeMobsfalseAlso count fights with mobs, not only fights between players.
followCombatLogXtrueWith CombatLogX installed, a player it has tagged is blocked as well, for as long as CombatLogX says. This works even with enabled off, so turning enabled off lets CombatLogX alone decide.

barterSettings

Item-for-item trading with no currency. Off by default. See Barter for how it works in game.

KeyDefaultWhat it does
enabledfalseTurn the barter system on.
maxActiveListingsPerPlayer10Most live barter listings one player may have.
maxItemsPerOffer9Most item stacks a buyer may put in a single offer.
maxOffersPerListing20Most pending offers one listing may hold.
maxPendingOffersPerPlayer50Most pending offers one player may have across all listings.
allowRequestedItemstrueLet sellers name the items they want in return, rather than taking any offer.
maxRequestedItemsPerListing5Most requested items a listing may name.
showInMainViewtrueShow barter listings in the main /ah view as well as the Barter category.
requireSellerOnlinefalseOnly accept offers while the seller is online.
allowSelfOfferfalseLet a player make offers on their own listings. Meant for testing.

barterSettings.offerExpiration

KeyDefaultWhat it does
enabledfalseExpire pending offers after a time. Off means offers never expire.
expiresAfter7dHow long a pending offer lasts.
notifyBeforeExpirytrueWarn the offerer before their offer expires.
notifyBeforeExpiryTime1dHow long before expiry to warn.

barterSettings.listingExpiration

KeyDefaultWhat it does
enabledfalseExpire listings after a time. Off means listings are persistent.
expiresAfter(empty)How long a listing lasts. Empty or 0 keeps it forever.
notifyBeforeExpirytrueWarn the seller before their listing expires.
notifyBeforeExpiryTime1dHow long before expiry to warn.

barterSettings.notifications

KeyDefaultWhat it does
enabledtrueMaster switch for barter notifications.
notifyOnOfferReceivedtrueTell the seller when a new offer arrives.
notifyOnOfferAcceptedtrueTell the offerer when their offer is accepted.
notifyOnOfferRejectedtrueTell the offerer when their offer is rejected.
notifyOnOfferExpiredtrueTell the offerer when their offer expires.
notifyOnListingExpiredtrueTell the seller when their listing expires.

barterSettings.delivery

KeyDefaultWhat it does
deliveryMethodCLAIMCLAIM sends traded items to /ah claim, INVENTORY puts them straight in the inventory.
autoClaimWhenOnlinetrueHand traded items over automatically when the player is online with room.
inventoryFullBehaviorKEEP_AS_CLAIMWith INVENTORY and a full inventory: KEEP_AS_CLAIM keeps it in /ah claim, DROP drops it.

discord

KeyDefaultWhat it does
enabledfalsePost auction events to a Discord webhook.
webhookUrl(empty)The webhook URL to post to.
staffWebhookUrl(empty)When set, the economy engine's fraud and exploit warnings are posted to this webhook. Point it at a staff-only channel. It works whether or not enabled is on.

redis

Cross-server sync for a network running one shared database. See Redis.

Redis 6 or newer is required. ProtonAuctions publishes and subscribes on one connection, which older Redis does not allow.

KeyDefaultWhat it does
enabled (restart)falseTurn cross-server sync on.
uri (restart)redis://localhost:6379The Redis connection URI.
channel (restart)proton:updatesThe pub/sub channel servers share.

economyEngine

The machine-learning price and fraud engine. See the Economy Engine section for what it does and how it learns.

In this block, /ahadmin reload applies the hook switches and the keys marked (reload). Keys marked (restart) need a full restart. For any other key here, a restart is the sure way to apply it.

KeyDefaultWhat it does
enabled (restart)trueOn by default. The engine collects sales locally from the start and begins suggesting prices after the grace period.

economyEngine.database

A separate analytics database, which can differ from the main one. See Database.

KeyDefaultWhat it does
type (restart)sqliteOne of sqlite, mysql, postgresql.
host (restart)localhostHost, for MySQL and PostgreSQL.
port (restart)5432Port, for MySQL and PostgreSQL.
database (restart)plugins/ProtonAuctions/data/proton_analytics.dbDatabase name, or the file path for SQLite.
username (restart)protonDatabase user.
password (restart)(empty)Database password.

economyEngine.gracePeriod

The warmup before the engine starts suggesting prices. See Warmup and Grace.

KeyDefaultWhat it does
durationHours (reload)24Hours of collecting data before suggestions turn on.
triggerOnWipetrueStart the grace period again if auction data is wiped.

economyEngine.training

When and how the engine trains its model.

KeyDefaultWhat it does
autoSchedule (reload)truePick a quiet training window automatically from player activity. Ignores startHour and endHour when on.
startHour (reload)3Hour to start training, 24-hour clock. Only when autoSchedule is off.
endHour (reload)6Hour to stop training. Only when autoSchedule is off.
timezone(empty)Timezone for the schedule, such as UTC. Empty uses the server timezone. Only when autoSchedule is off.
maxPlayersOnline (reload)5Do not train while more than this many players are online.
minTransactions100Fewest sales needed before training runs.
dataWindowDays7How many days of past sales the model learns from.
minDistinctTraders5How many different players must have traded in that window before training runs, to resist price poisoning.
ignoreBannedPlayers (reload)trueLeave the sales of banned players out of prices. Bans are read from the server ban list, EssentialsX, AdvancedBan and LiteBans.

economyEngine.training.evolution

An advanced, opt-in overnight tuner that searches for better model settings. Off by default, and not needed for normal use.

KeyDefaultWhat it does
enabledfalseTurn the overnight tuner on.
populationSize50Candidate models per generation. Keep it above survivorCount.
eliteCount2Best models carried forward unchanged each generation.
survivorCount10Models bred from each generation.
mutationRate0.15Chance of changing each setting, 0.0 to 1.0.
maxGenerations100Most generations to run.
maxHours8.0Stop after this many hours.

economyEngine.suggestions

The price hints players see. See Price Suggestions.

KeyDefaultWhat it does
enabled (reload)trueShow price suggestions at all.
minConfidence (reload)0.6Lowest confidence, 0.0 to 1.0, before a suggestion is shown.
showPriceRange (reload)trueShow a low-to-high range alongside the suggested price.
priceNewItemstrueAlso price brand-new and rarely-traded items from the value family they belong to, at a lower confidence.
showPricesInBrowse (reload)trueShow the market-value hint on each listing in the /ah browse view.
dealDeviationPercent (reload)20.0How far a listing's price must sit from market value, as a percent, before /ah shows the overpriced or great-deal badge.
sellWarningPercent (reload)50.0How far over market value a listing must be before the seller gets a warning when they list it.
minSalesForSuggestion5Fewest sales an item needs before it gets a suggested price. On busy servers this grows with volume, up to the cap.
maxSalesForSuggestion50The sales requirement never grows past this.
activityScaling0.1How much the sales requirement grows with hourly trade volume.
variancePenaltyEnabled (reload)trueLower confidence when an item's sale prices are all over the place.
echoPenaltyEnabledtrueLower confidence when sales just mirror the engine's own suggestion.
stalenessPenaltyEnabledtrueLower confidence the longer it has been since the model last trained.

economyEngine.hooks

One switch for each plugin the engine can read. A hook only starts when its switch is on and its plugin is installed. /ahadmin reload applies these switches with no restart. What each hook reads is on Supported Plugins, and how hooks work is on How Hooks Work.

KeyDefaultWhat it does
vaulttrueRead the server economy and currency through Vault.
quickshoptrueQuickShop-Hikari chest-shop sales between players. Unlimited admin shops become price limits.
chestshoptrueChestShop player shop sales. Admin shops become price limits.
signshoptrueSignShop player sign-shop sales. Admin signs become price limits.
shopkeeperstrueShopkeepers trades paid in its currency item, once that item has an exchange rate in currencies.yml. Admin shopkeepers become price limits.
insaneshopstrueInsaneShops player shop trades. Admin shops become price limits. Only shops paid in Vault money.
excellentshoptrueExcellentShop chest-shop trades. Its virtual shop becomes price limits. Prices in Vault money or a currency listed by /ahadmin currencies.
axtradetrueAxTrade item-for-money trades between players.
tradesystemtrueTrade System item-for-money trades. Money handed over for nothing is checked for alt rings.
ultimateshoptrueUltimateShop buys and sells become price limits.
shopguiplustrueShopGUIPlus buys and sells become price limits, in the shop's own currency.
economyshopguitrueEconomyShopGUI buy and sell prices become price limits.
guishoptrueGUIShop's price list becomes price limits, when its prices are Vault money.
autosellcheststrueWhat AutoSellChests chests sell at becomes a price floor.
dtltraderstrueWhat dtlTraders NPC traders pay and charge becomes price limits, for traders that use Vault money.
shopconjuratetrueShop by Conjurate prices become price limits, for items every player can buy or sell, when its shop is paid in the Vault economy.
essentialstrueEssentialsX worth.yml prices become price floors, and /pay is checked for alt rings.
cmitrueCMI /sell sales and its worth list become price floors, and /pay is checked for alt rings. With CMI's own economy off, only a /pay typed with the payee's full name is seen, and none while CMI asks to confirm payments.
zessentialstruezEssentials /pay between two players who are online is checked for alt rings. A payment to a player who is offline is not seen.
xprisontrueX-Prison payments between players are checked for alt rings, and what its autosell pays becomes a price floor once that currency has an exchange rate in currencies.yml.
ultracoinfliptrueWhat a player wins from another in an UltraCoinFlip coinflip is checked for alt rings.
duelstrueThe money a player wins from another in a money-bet duel is checked for alt rings. Covers Duels and the Duels Optimised fork.

economyEngine.ingestion

KeyDefaultWhat it does
marketSnapshotIntervalMinutes (reload)60How often, in minutes, to capture a market-wide snapshot for trend analysis.

economyEngine.anomalyDetection

Tuning for the fraud and manipulation checks. See Anomaly Detection.

KeyDefaultWhat it does
zScoreThreshold3.0How far from normal a trade must sit to be flagged. Lower is more sensitive.
exploitAlertsEnabled (reload)trueLog an alert when the engine spots likely exploit activity.
washTradeWindowHours24How many hours back to look when spotting a player selling then re-buying the same item.
coordinatedWindowMinutes5The window, in minutes, used to spot a burst of coordinated trades by a small group.
bulkVolumeThreshold (reload)576Flag a single trade of at least this many items as suspicious bulk activity.

telemetry

Optional data collection during the beta. What each tier sends, and how player identities are hashed before anything leaves your server, is spelled out on the Data & Privacy page. The plugin never depends on it, and the auction house works the same either way.

KeyDefaultWhat it does
enabledtrueMaster switch. Turn it off and the plugin sends nothing home.
sendIntervalMinutes (restart)30How often, in minutes, to send. Minimum 5.
anonymoustrueFacts about the server and the plugin, such as versions, settings and which hooks are on. No player data of any kind.
economytrueThe trade records the engine stores, including server shop trades and money sent between players, with each item's details such as its custom name and enchantments, plus market snapshots and price suggestions. Player UUIDs are hashed on your server first.
playerBehaviourfalseFor each player, under a hashed id, how many searches they ran, how many times they opened the auction house and the claim screen, and how many claims they collected. Off by default.

pointerUi

The pointer menus, which draw the auction house on screen instead of in chest menus. Off by default. Setting Up explains the three ways to serve the resource pack in more detail.

KeyDefaultWhat it does
enabled (restart)falseTurn the pointer menus on. Players are offered the menus' resource pack as they join.
pinnedViewtrueHold the view still while a menu is open and move a cursor with the mouse. Off, players aim with their head instead.
defaultModePOINTERPOINTER or CHEST, what players get until they choose for themselves with /ah menus.
packHost (restart)(empty)The address players download the pack from. Empty uses the address they joined with.
packPort (restart)00 sends the pack through the server's own port. Set a free port to run a separate pack server on it instead.
packUrl (restart)(empty)A direct download link to pack.zip that you host yourself, needed behind BungeeCord or Velocity. When it is set, the plugin serves no pack of its own.
panelDistance3.0How far in front of the player the menu floats, in blocks, from 1.5 to 6.
panelAngle80.0How wide the menu looks, in degrees, from 36 to 80. Lower it if players with a low field of view or a square screen see its edges cut off.
soundstruePlay the click and hover sounds of the menus.