Configuration
On this page(3)
SnAuction ships the following YAML files. New keys are auto-merged on boot; your edits and comments are preserved.
config.yml: managed. Currencies, sale types, durations, storage, limits, taxes, cooldowns, restrictions, security, Discord, placeholders, notifications and sounds.categories.yml: written once on first start and never updated afterwards. The market categories.rules.yml: written once on first start and never updated afterwards. The item blacklist and whitelist.lang/messages_en.ymlandlang/messages_es.yml: managed. Chat messages, selected bylang.guis/*.yml: managed. The menu layouts.
Sections marked # sn:extensible are yours: entries you delete there stay deleted, and the updater never inserts new ones on your behalf. Apply changes to any file with /ah reload.
config.yml
# ============================================================
# SnAuction - configuration
# Managed by SnLib: new keys are auto-merged on boot; your values and
# comments are preserved. Do NOT add a config-version key (retired).
# Set update-configs: false to freeze this file (SnLib only warns about
# missing keys instead of inserting them).
# Sections marked "# sn:extensible" are yours: entries you delete there
# stay deleted.
# ============================================================
# Active language code; loads lang/messages_<code>.yml (falls back to en).
lang: en
# Master switch of the SnLib auto-updater for this plugin's managed files.
update-configs: true
# Runtime debug output (also toggleable live via /ah debug).
debug:
# Master toggle of the debug output.
enabled: false
# Verbosity threshold: OFF, INFO, DEBUG or TRACE.
level: DEBUG
# Category filter; an empty list lets every category through.
categories: []
# ------------------------------------------------------------
# Main command.
# ------------------------------------------------------------
command:
# Aliases of /ah. Re-read on /ah reload.
aliases: [auction, auctionhouse]
# ------------------------------------------------------------
# Database. type=sqlite needs nothing else; type=mysql reads host/port/etc.
# ------------------------------------------------------------
database:
# sqlite or mysql
type: sqlite
# MySQL connection (ignored when type is sqlite).
host: localhost
port: 3306
database: snauction
username: root
password: ""
# ------------------------------------------------------------
# Public developer API.
# ------------------------------------------------------------
# Public developer API events. When false, no API event is dispatched (zero
# cost) and cancellable hooks report "not cancelled" so gameplay proceeds.
# The query facade stays available either way.
api-events:
enabled: true
# ------------------------------------------------------------
# Presentation. gui opens the menu; chat prints the text view.
# ------------------------------------------------------------
presentation:
# Bare /ah: gui opens the main menu, chat prints the generated help.
main: gui
# /ah history: gui opens the history menu, chat prints the history list.
history: gui
# ------------------------------------------------------------
# Model: currencies, sale types, durations, storage, display.
# ------------------------------------------------------------
# Currencies items can be listed in. Each entry is one currency; its id
# (money, gems) is what players type and what listings store.
# sn:extensible
currencies:
money:
# Turns this currency on or off.
enabled: true
# Name shown in menus and messages.
display-name: "&aMoney"
# Backend: vault or edtools.
type: vault
# EdTools currency id (type edtools only).
edtools-currency: ""
# Decimal places of the currency, 0 to 4.
decimals: 2
# Allows typing fractional prices such as 1.5.
allow-decimals: true
# Display of an amount; {amount} is the formatted number.
format: "&a${amount}"
# true renders {amount} compact (1.5K, 2M).
compact: false
# Minimum price of a buy-now listing, in whole units.
min-price-fixed: 1
# Minimum starting price of an auction, in whole units.
min-price-auction: 1
# Maximum price, buyout or bid, in whole units.
max-price: 1000000000
# true requires the snauction.currency.<id> permission to use it.
permission: false
# Seller payouts: direct (online or offline) or online (only while online; edtools is always online).
payout: direct
gems:
# Turns this currency on or off.
enabled: false
# Name shown in menus and messages.
display-name: "&bGems"
# Backend: vault or edtools.
type: edtools
# EdTools currency id (type edtools only).
edtools-currency: "gems"
# Decimal places of the currency, 0 to 4.
decimals: 0
# Allows typing fractional prices such as 1.5.
allow-decimals: false
# Display of an amount; {amount} is the formatted number.
format: "&b{amount} Gems"
# true renders {amount} compact (1.5K, 2M).
compact: true
# Minimum price of a buy-now listing, in whole units.
min-price-fixed: 1
# Minimum starting price of an auction, in whole units.
min-price-auction: 1
# Maximum price, buyout or bid, in whole units.
max-price: 1000000000
# true requires the snauction.currency.<id> permission to use it.
permission: false
# Seller payouts: direct (online or offline) or online (only while online; edtools is always online).
payout: online
# Currency preselected when a player lists without naming one.
default-currency: money
# Sale types players may create.
sale-types:
# Buy-now listings with a fixed price (/ah sell).
fixed: true
# Bid auctions (/ah auction).
auction: true
# Listing lifetimes. Format: 30m, 12h, 2d, 1d 12h.
durations:
# Lifetime of a buy-now listing.
fixed: 48h
# Auction length preselected in the sell menu.
auction-default: 24h
# Auction lengths a seller may pick, capped by limits.durations.
auction-options: [1h, 6h, 12h, 24h, 48h]
# Listings that sell several stacks together.
bulk:
# Allows staging several stacks into one listing in the sell menu.
enabled: true
# Most stacks one listing may hold.
max-stacks: 9
# Storage of expired, cancelled and purchased items.
storage:
# Days a row is kept before the daily purge deletes it; 0 keeps it forever.
retention-days:
# Unclaimed expired or cancelled items waiting in /ah expired.
expired: 30
# Unclaimed purchased or won items waiting in /ah purchased.
purchased: 30
# Audit log rows.
logs: 90
# Payout rows already paid out (pending payouts are never purged).
paid-payouts: 30
# Most storage rows one "retrieve all" click looks at (1-500); rows that do not fit stay.
retrieve-all-batch: 54
# Most rows the expired and purchased menus load, newest first (1-1000).
menu-rows: 250
# How dates and item names display.
display:
# Date pattern (Java DateTimeFormatter) of every date in menus and messages.
date-format: "dd/MM/yyyy HH:mm"
# Time zone of every date: server, or a zone id such as Europe/Madrid.
timezone: "server"
# true shows items without a custom name in each player's own client language.
translated-names: true
# Icon of a listing that holds several stacks.
bulk-icon: CHEST
# Stacks named in the title of a multi-stack listing before "and N more".
bulk-name-max-parts: 3
# Ticks a listing shows the "cannot afford" face after a failed purchase or bid (0-200, 0 = off).
unaffordable-ticks: 60
# ------------------------------------------------------------
# Features: sell menu, search, sorting, confirmations, delivery,
# auctions and history.
# ------------------------------------------------------------
# Sell menu.
sell-menu:
# Turns the sell menu on or off.
enabled: true
# Price change per click on the price buttons, in whole currency units.
price-steps:
# Left click.
left: 1
# Right click.
right: 10
# Shift + left click.
shift-left: 100
# Shift + right click.
shift-right: 1000
# Market search and chat prompts.
search:
# Shortest accepted search text.
min-length: 2
# Longest accepted search text.
max-length: 32
# Seconds any chat prompt (search, price, bid) waits for an answer.
prompt-timeout-seconds: 30
# Word that cancels any chat prompt.
cancel-word: "cancel"
# Default sorting.
sort:
# Order of a fresh browse: NEWEST, OLDEST, PRICE_ASC, PRICE_DESC or ENDING_SOON.
default: NEWEST
# Browse filters reset each time the main menu opens.
reset-on-open:
# Goes back to the all category.
category: true
# Clears the search text.
search: true
# Goes back to sort.default.
sort: false
# Actions that ask for confirmation first.
confirm:
# Buying a buy-now listing or an auction buyout.
purchase: true
# Removing your own listing.
remove: true
# Placing a bid.
bid: true
# Delivery of purchases and auction wins.
delivery:
# inventory gives the item at once (what does not fit waits in storage); storage keeps it in /ah purchased.
mode: inventory
# Bid auctions.
auction:
# Minimum raise as a percent of the current bid.
min-increment-percent: 5
# Minimum raise in whole currency units; the higher of the two wins.
min-increment-flat: 1
# Late bids extend the auction so nobody wins by sniping.
anti-snipe:
# Turns the extension on or off.
enabled: true
# A bid within this many final seconds extends the auction.
window-seconds: 30
# Seconds added to the end per extension.
extend-seconds: 30
# Most extensions one auction may receive.
max-extensions: 10
# Instant-win price a seller may set on an auction.
buyout:
# Allows sellers to set a buyout price.
enabled: true
# Cancelling an auction that already has bids.
cancel-with-bids:
# Allows the seller to cancel it; the top bidder is refunded.
allowed: false
# Fee charged to the seller, as a percent of the current bid.
fee-percent: 0
# Allows the top bidder to raise their own bid.
allow-self-raise: false
# Recent bids listed in the bid menu.
bid-history-size: 5
# Quick-raise buttons, as multiples of the minimum raise.
quick-raise-multipliers: [1, 2, 5]
# Transaction history.
history:
# Most rows loaded by the history views.
max-entries: 200
# Rows the chat mode of the history prints (presentation.history: chat), 1-100.
chat-entries: 10
# Periods of the staff log filter, after "all time". Format: 30m, 12h, 7d.
log-ranges: [1h, 1d, 7d, 30d]
# ------------------------------------------------------------
# Limits: listing and bid limits, taxes, cooldowns, restrictions
# and security. A player holding several tiers gets the best one.
# ------------------------------------------------------------
# Permission-tiered limits; snauction.bypass.limit lifts the listing and bid limits.
limits:
# Active listings per player; the highest held value wins.
listings:
# Limit of players without a tier permission.
default: 5
# Tiers granted by snauction.limit.<tier>.
# sn:extensible
tiers:
# Holders of snauction.limit.vip.
vip: 10
# Holders of snauction.limit.mvp.
mvp: 20
# Auctions a player may lead as top bidder at once; the highest held value wins.
active-bids:
# Limit of players without a tier permission.
default: 5
# Tiers granted by snauction.bids.<tier>.
# sn:extensible
tiers:
# Holders of snauction.bids.vip.
vip: 10
# Longest listing duration a player may pick; the highest held value wins.
durations:
# Maximum of players without a tier permission.
default: 48h
# Tiers granted by snauction.duration.<tier>.
# sn:extensible
tiers:
# Holders of snauction.duration.vip.
vip: 72h
# Fees and taxes; snauction.bypass.tax pays neither the listing fee nor the sale tax.
tax:
# Fee paid up front when listing.
listing-fee:
# percent of the price, or flat in whole currency units.
type: percent
# The percent or the flat amount; 0 disables the fee.
amount: 0
# Tax taken from the seller's earnings, in percent.
sale-percent: 5
# Extra percent the buyer pays on top of the price.
buyer-percent: 0
# Sale tax tiers granted by snauction.tax.<tier>; the lowest held value wins.
# sn:extensible
tiers:
# Holders of snauction.tax.vip.
vip: 2.5
# Sale tax of specific items; overrides the tiers, and the highest priority wins when several match.
# Match keys: materials (* wildcards), material-tags, name-contains, lore-contains, custom-model-data, has-pdc-key.
# sn:extensible
item-rules:
netherite:
# Higher wins when several rules match.
priority: 10
# Items the rule applies to.
materials: [NETHERITE_INGOT, NETHERITE_BLOCK]
# Sale tax of these items, in percent.
sale-percent: 10
# Cooldowns between actions; 0s disables one. snauction.bypass.cooldown skips them.
cooldowns:
# Between two listings.
sell: 2s
# Between two purchases.
buy: 1s
# Between two bids.
bid: 1s
# Between two searches.
search: 2s
# Between two money claims.
claim: 3s
# Ticks between two accepted menu clicks (anti double-click, never bypassed).
click-throttle-ticks: 4
# What may not be listed, and where. Item rules live in rules.yml.
restrictions:
# Worlds where listing is blocked; snauction.bypass.world ignores it.
blocked-worlds: []
# Gamemodes that may not list.
blocked-gamemodes: [CREATIVE, SPECTATOR]
# Allows listing worn tools, weapons and armor.
allow-damaged-items: true
# Refuses items with an enchantment above its vanilla maximum level.
block-over-vanilla-enchants: true
# Refuses buys and bids from a player sharing the seller's IP address.
block-same-ip: false
# Largest item accepted, in bytes of saved data (container contents included).
max-item-bytes: 65536
# Container levels inspected (a shulker box in a bundle is 2); a deeper filled container is refused, 0 refuses every filled one.
max-container-depth: 3
# Market safety.
security:
# Saves the seller's player file right after items are taken for a listing.
save-player-data: true
# Seconds between two checks for ended listings.
sweeper-interval-seconds: 5
# Most ended listings settled per check.
sweeper-batch: 100
# Seconds the shutdown waits for pending transactions.
shutdown-wait-seconds: 10
# Seconds before a stuck listing or player lock is released.
guard-ttl-seconds: 30
# ------------------------------------------------------------
# Integrations: Discord webhooks and PlaceholderAPI.
# ------------------------------------------------------------
# Discord webhooks.
discord:
# Master switch of every Discord event.
enabled: false
# One entry per event: sell, purchase, auction-won, admin, anomaly.
events:
sell:
# Posts this event.
enabled: false
# Webhook URL.
webhook: ""
# Name the message is posted under.
username: "SnAuction"
# Avatar image URL; empty keeps the webhook's own.
avatar: ""
# Embed color (#RRGGBB).
color: "#8354f2"
# Embed title.
title: "New listing"
# Embed text; {seller} {item} {quantity} {price} {id}.
description: "**{seller}** listed **{quantity}x {item}** for **{price}** (#{id})"
purchase:
# Posts this event.
enabled: false
# Webhook URL.
webhook: ""
# Name the message is posted under.
username: "SnAuction"
# Avatar image URL; empty keeps the webhook's own.
avatar: ""
# Embed color (#RRGGBB).
color: "#8354f2"
# Embed title.
title: "Item sold"
# Embed text; {buyer} {seller} {item} {quantity} {price} {id}.
description: "**{buyer}** bought **{quantity}x {item}** from **{seller}** for **{price}** (#{id})"
auction-won:
# Posts this event.
enabled: false
# Webhook URL.
webhook: ""
# Name the message is posted under.
username: "SnAuction"
# Avatar image URL; empty keeps the webhook's own.
avatar: ""
# Embed color (#RRGGBB).
color: "#8354f2"
# Embed title.
title: "Auction won"
# Embed text; {buyer} {seller} {item} {quantity} {price} {id}.
description: "**{buyer}** won **{quantity}x {item}** from **{seller}** for **{price}** (#{id})"
admin:
# Posts this event.
enabled: false
# Webhook URL.
webhook: ""
# Name the message is posted under.
username: "SnAuction"
# Avatar image URL; empty keeps the webhook's own.
avatar: ""
# Embed color (#RRGGBB).
color: "#8354f2"
# Embed title.
title: "Admin action"
# Embed text; {actor} {action} {target} {seller} {id} {item} {items} {quantity} {count}.
description: "**{actor}** ran **{action}** on **{target}** (#{id})"
# Embed text of a remove-all (one post for all the listings of a seller); {actor} {action} {target} {seller} {count}.
description-many: "**{actor}** ran **{action}** on the listings of **{target}**: **{count}**"
anomaly:
# Posts this event.
enabled: false
# Webhook URL.
webhook: ""
# Name the message is posted under.
username: "SnAuction"
# Avatar image URL; empty keeps the webhook's own.
avatar: ""
# Embed color (#RRGGBB).
color: "#8354f2"
# Embed title.
title: "Market anomaly"
# Embed text; {detail}.
description: "{detail}"
# PlaceholderAPI expansion (%snauction_...%).
placeholders:
# Registers the expansion when PlaceholderAPI is installed.
enabled: true
# ------------------------------------------------------------
# Feedback: notifications, broadcasts, option defaults, sounds.
# ------------------------------------------------------------
# Messages on join.
notifications:
# Summarizes sales, wins and outbids that happened while offline.
join-summary: true
# Seconds after joining before the summary shows.
join-summary-delay-seconds: 3
# Pays pending money automatically after joining.
auto-claim: true
# Seconds after joining before the automatic claim.
auto-claim-delay-seconds: 5
# Public chat announcements.
broadcasts:
# Announces new listings.
sell: false
# Announces purchases.
purchase: false
# Announces auction wins.
auction-won: false
# Lowest price announced, in whole currency units.
min-value: 0
# Hides the announcement from the player who caused it.
exclude-self: true
# Starting value of each /ah options toggle.
options-defaults:
# Shows listing announcements.
broadcast-sell: true
# Shows purchase announcements.
broadcast-purchase: true
# Shows auction win announcements.
broadcast-auction: true
# Notifies when your item sells.
notify-sold: true
# Notifies when you are outbid.
notify-outbid: true
# Shows the join summary.
join-summary: true
# Sounds: SOUND_ID [volume] [pitch], or none to stay silent.
sounds:
# A purchase delivered to you.
purchase: ENTITY_PLAYER_LEVELUP
# Your item sold.
sold: ENTITY_EXPERIENCE_ORB_PICKUP
# You were outbid.
outbid: BLOCK_NOTE_BLOCK_BASS
# You won an auction.
won: UI_TOAST_CHALLENGE_COMPLETE
# An action was refused.
error: ENTITY_VILLAGER_NO
# A menu button was clicked.
click: UI_BUTTON_CLICKcategories.yml
# ============================================================
# SnAuction - market categories
# Written once on first start and never updated afterwards:
# this file is yours. Apply changes with /ah reload.
#
# A listing shows in every category one of its items matches;
# an item matching no category falls into the fallback category.
# Match keys of a category (it matches when ANY of them matches;
# add "match: all" to require every listed key instead):
# materials material names; * and ? wildcards (*_SWORD)
# material-tags item or block tags (minecraft:logs)
# is-block true matches every placeable block
# is-edible true matches every food item
# name-contains text the item name contains (any case)
# lore-contains text a lore line contains (any case)
# custom-model-data values or ranges (1000-1999)
# has-pdc-key persistent data keys (plugin:key)
# ============================================================
# The pseudo-category that lists every item.
all:
# Name shown on the category button and in the menu.
display-name: "₢f2All items"
# Icon material of the category button.
icon: NETHER_STAR
# Lore of the category button.
lore:
- "&7Every item on the market."
# Category of the items no other category matches; must be one of the ids below.
fallback: misc
# Market categories, in display order. The key is the category id.
categories:
blocks:
# Name shown on the category button and in the menu.
display-name: "&aBlocks"
# Icon material of the category button.
icon: GRASS_BLOCK
# Lore of the category button.
lore:
- "&7Building and natural blocks."
# Every placeable block.
is-block: true
tools:
# Name shown on the category button and in the menu.
display-name: "&eTools"
# Icon material of the category button.
icon: IRON_PICKAXE
# Lore of the category button.
lore:
- "&7Pickaxes, axes, shovels and more."
# Items of this category.
materials: ["*_PICKAXE", "*_AXE", "*_SHOVEL", "*_HOE", SHEARS, FLINT_AND_STEEL, FISHING_ROD, BRUSH, COMPASS, RECOVERY_COMPASS, CLOCK, SPYGLASS, LEAD, NAME_TAG]
weapons:
# Name shown on the category button and in the menu.
display-name: "&cWeapons"
# Icon material of the category button.
icon: IRON_SWORD
# Lore of the category button.
lore:
- "&7Swords, bows and ammunition."
# Items of this category.
materials: ["*_SWORD", BOW, CROSSBOW, TRIDENT, "*ARROW"]
armor:
# Name shown on the category button and in the menu.
display-name: "&bArmor"
# Icon material of the category button.
icon: IRON_CHESTPLATE
# Lore of the category button.
lore:
- "&7Helmets, chestplates, leggings, boots and shields."
# Items of this category.
materials: ["*_HELMET", "*_CHESTPLATE", "*_LEGGINGS", "*_BOOTS", "*_HORSE_ARMOR", SHIELD, ELYTRA]
food:
# Name shown on the category button and in the menu.
display-name: "&6Food"
# Icon material of the category button.
icon: COOKED_BEEF
# Lore of the category button.
lore:
- "&7Anything you can eat."
# Every food item.
is-edible: true
potions:
# Name shown on the category button and in the menu.
display-name: "&dPotions"
# Icon material of the category button.
icon: POTION
# Lore of the category button.
lore:
- "&7Potions and tipped arrows."
# Items of this category.
materials: [POTION, SPLASH_POTION, LINGERING_POTION, TIPPED_ARROW]
enchanted-books:
# Name shown on the category button and in the menu.
display-name: "&5Enchanted books"
# Icon material of the category button.
icon: ENCHANTED_BOOK
# Lore of the category button.
lore:
- "&7Enchanted books of every kind."
# Items of this category.
materials: [ENCHANTED_BOOK]
redstone:
# Name shown on the category button and in the menu.
display-name: "&4Redstone"
# Icon material of the category button.
icon: REDSTONE
# Lore of the category button.
lore:
- "&7Redstone components and contraptions."
# Items of this category.
materials: [REDSTONE, REDSTONE_TORCH, REDSTONE_BLOCK, REDSTONE_LAMP, REPEATER, COMPARATOR, PISTON, STICKY_PISTON, OBSERVER, HOPPER, DROPPER, DISPENSER, LEVER, "*_BUTTON", "*_PRESSURE_PLATE", DAYLIGHT_DETECTOR, TARGET, TRIPWIRE_HOOK, "*RAIL", NOTE_BLOCK, TNT, SCULK_SENSOR, LIGHTNING_ROD]
misc:
# Name shown on the category button and in the menu.
display-name: "&7Miscellaneous"
# Icon material of the category button.
icon: CHEST
# Lore of the category button.
lore:
- "&7Everything else."rules.yml
# ============================================================
# SnAuction - item rules
# Written once on first start and never updated afterwards:
# this file is yours. Apply changes with /ah reload.
#
# Rules are checked on the listed item AND on every item inside it
# (shulker boxes, bundles, any container item), down to
# restrictions.max-container-depth of config.yml.
# Match keys of a rule (it matches when ANY of them matches;
# add "match: all" to require every listed key instead):
# materials material names; * and ? wildcards (*_SPAWN_EGG)
# material-tags item or block tags (minecraft:logs)
# name-contains text the item name contains (any case)
# lore-contains text a lore line contains (any case)
# custom-model-data values or ranges (1000-1999)
# has-pdc-key persistent data keys (plugin:key)
# enchant-over-vanilla true matches enchantments above the vanilla maximum
# Any rule can be switched off with "enabled: false".
# ============================================================
# Items matching ANY of these rules cannot be listed.
blacklist:
# Turns the blacklist on or off.
enabled: true
# Blacklist rules. The key is the rule id, shown in debug output.
rules:
admin-items:
# Blocks and tools only obtainable by staff.
materials: [BEDROCK, BARRIER, LIGHT, STRUCTURE_VOID, STRUCTURE_BLOCK, JIGSAW, COMMAND_BLOCK, CHAIN_COMMAND_BLOCK, REPEATING_COMMAND_BLOCK, COMMAND_BLOCK_MINECART, DEBUG_STICK, KNOWLEDGE_BOOK, END_PORTAL_FRAME, REINFORCED_DEEPSLATE, PETRIFIED_OAK_SLAB]
bound-items:
# Turns this rule on or off.
enabled: false
# Lore text that marks an item as bound to its owner.
lore-contains: ["soulbound", "untradeable"]
# When enabled, ONLY items matching one of these rules can be listed.
whitelist:
# Turns the whitelist on or off.
enabled: false
# Whitelist rules. The key is the rule id, shown in debug output.
rules:
valuables:
# Items allowed on the market while the whitelist is on.
materials: [DIAMOND, EMERALD, NETHERITE_INGOT, "*_SHULKER_BOX", SHULKER_BOX]