跳到主要内容

config.yml

plugins/StarAuction/config.yml 是插件的主设定,第一次启动时自动生成,注释都是中文。

修改后怎么生效​

设定生效方式
database.*、sync.*、mail.retry-seconds重启服务器
其他全部(包括 menu.cloudui)/sa reload
  • 没写的键使用默认值:升级后新版本新增的设定不会写进你的文件,直接用默认值;想调整就自己把键加进去。
  • 数字会被限制在合理范围:例如 sync.interval-ms 最少 250、menu.input-timeout-seconds 最少 10、tax-percent 在 0 ~ 100 之间。
  • 时长写成 30s、10m、12h、3d、1w,可以组合(1d12h)。

数据库(database)​

database:
type: sqlite
file: data.db
host: 127.0.0.1
port: 3306
database: starauction
username: root
password: ''
parameters: 'useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=utf8&serverTimezone=UTC'
table-prefix: 'sa_'
pool-size: 8
键默认作用
typesqlitesqlite = 单服,数据存在 plugins/StarAuction/data.db;mysql = 多个子服连同一个数据库就能跨服;mariadb = 同 mysql,服务端有 MariaDB 驱动时使用 MariaDB 驱动
filedata.dbSQLite 文件名(放在 plugins/StarAuction/ 里)
host / port127.0.0.1 / 3306MySQL 地址与端口
databasestarauctionMySQL 数据库名称(要先建好)
username / passwordroot / 空MySQL 账号密码
parameters见上额外的 JDBC 参数
table-prefixsa_表格名称前缀,只能用字母、数字与下划线(最多 32 个字)。同一个数据库里要放好几套互不相通的市集时才需要改
pool-size8MySQL 连接数(最少 2),一般 6 ~ 10 就够

表格、连接池与备份见 数据库。

警告

数据库连不上时,插件会在控制台显示原因并停用自己。从 SQLite 换到 MySQL 不会自动搬移旧数据。

跨服(sync)​

sync:
enabled: auto
server-id: ''
interval-ms: 1000
full-refresh-seconds: 300
键默认作用
enabledautoauto / true / false。跨服同步在连接 MySQL 时就会进行;这个键目前只决定开服时是否显示「跨服已开启(子服 ID:…)」那一行
server-id空这个子服的名字(例如 lobby、survival),显示在成交记录、/sa log、/sa trades 与 /sa version。每个子服填不同的名字;留空时每次开服自动生成一个(端口 + 随机字符)
interval-ms1000多久读一次其他子服的变动(毫秒,最少 250)。只查一个有索引的事件表,每秒一次也几乎没有负担
full-refresh-seconds300每隔几秒完整重新读取一次全部上架中的商品(保险用,最少 30)

详细说明见 跨服设置。

货币(currencies)​

currencies:
default: money
money:
type: vault
name: '金币'
format: '<gold>{amount}</gold> 金币'
decimals: 2
icon: GOLD_INGOT
points:
type: playerpoints
name: '点券'
format: '<aqua>{amount}</aqua> 点券'
icon: EMERALD
diamond:
enabled: false
type: item
name: '钻石'
material: DIAMOND
format: '<aqua>{amount}</aqua> 钻石'

每一段的键(type、name、format、decimals、icon、permission、enabled、material、item)见 货币。

上架(listing)​

listing:
sell:
enabled: true
durations: [12h, 24h, 48h, 72h]
default-duration: 48h
allow-partial: true
command-price: total
max-amount: 2304
auction:
enabled: true
durations: [1h, 6h, 12h, 24h]
default-duration: 12h
max-amount: 2304
min-increment-percent: 5
min-increment: 1
anti-snipe:
window: 60s
extend: 60s
allow-cancel-with-bids: false
allow-buyout: true
allow-reserve: true
order:
enabled: true
durations: [1d, 3d, 7d]
default-duration: 3d
max-amount: 2304
refund-fee-on-cancel: false
disabled-worlds: []
block-creative: true
cooldown-ms: 1500

三种类型共通(sell / auction / order):

键作用
enabled是否开放这种交易方式
durations上架菜单里可以切换的时长;指令可以写任何介于最短与最长之间的时长(超出的会被拉回范围内)
default-duration默认时长(菜单一开始选的、指令没写时长时用的)
max-amount一笔最多几个物品(最少 1;默认 2304 = 36 格 × 64)

一口价(sell):

键默认作用
allow-partialtrue新上架的一口价默认允许零买(上架菜单可以逐件切换),见 一口价 · 零买
command-pricetotal/sa sell 与上架菜单输入的价格:total = 整批的总价;each = 每个的单价

拍卖(auction):

键默认作用
min-increment-percent5每次至少加价目前出价的百分之几
min-increment1每次至少加价的固定金额;与上一项取较大者
anti-snipe.window60s结束前多久内有人出价就延长;0s = 关闭防狙击
anti-snipe.extend60s延长到出价后多久
allow-cancel-with-bidsfalse已经有人出价时卖家还能不能下架(下架时最高出价退回)
allow-buyouttrue能不能设一口价
allow-reservetrue能不能设保留价

其他:

键默认作用
refund-fee-on-cancelfalse卖家自己下架时退还上架手续费(管理员下架一律退还)
disabled-worlds[]这些世界不能上架、购买、出价、卖给收购单(不分大小写)
block-creativetrue创造模式不能交易(防刷物品)
cooldown-ms1500两次上架之间的冷却(毫秒)

规则说明见 一口价、拍卖、收购单、价格与黑名单。

权限组(groups)​

groups:
default:
priority: 0
permission: ''
max-listings: 10
max-auctions: 3
max-orders: 5
tax-percent: {sell: 5, auction: 5, order: 5}
listing-fee: {flat: 0, percent: 0}
vip:
priority: 10
permission: starauction.group.vip
max-listings: 25
max-auctions: 6
max-orders: 10
tax-percent: {sell: 2, auction: 2, order: 2}
listing-fee: {flat: 0, percent: 0}

每一个键的说明见 权限组与费用。

价格范围(price-range、price-limits)​

price-range:
money: {min: 0.01, max: 0}
points: {min: 1, max: 0}
price-limits:
- items: [NETHERITE_INGOT]
currency: money
min: 100
- items: ['*_SHULKER_BOX']
currency: money
min: 10

见 价格与黑名单。

黑名单(blacklist)​

blacklist:
materials: [BEDROCK, BARRIER, COMMAND_BLOCK, CHAIN_COMMAND_BLOCK, REPEATING_COMMAND_BLOCK, COMMAND_BLOCK_MINECART,
STRUCTURE_BLOCK, STRUCTURE_VOID, JIGSAW, DEBUG_STICK, LIGHT, KNOWLEDGE_BOOK, SPAWNER, TRIAL_SPAWNER, VAULT]
name-or-lore-contains: ['绑定', '綁定', 'Soulbound', '不可交易']
custom-model-data: []
pdc-keys: []
check-containers: true
block-damaged: false

见 价格与黑名单。

星月邮箱寄送(mail)​

1.1.0 起,买到的物品、卖出的收入、退回的东西全部寄到玩家的 StarMail 星月邮箱(必须安装星月邮箱 1.1.0 以上)。

mail:
sender: '星月市集'
retry-seconds: 10
expire-days: 0
keep-sent-days: 30
键默认作用
sender星月市集邮件的寄件人名称(支持颜色与 MiniMessage)
retry-seconds10多久检查一次待寄清单(秒,最少 2)。成交后会立刻寄出,这是寄送失败(例如星月邮箱暂时不能用)时的重试间隔。改了要重启服务器才生效
expire-days0市集寄出的邮件几天后过期,可以写小数;0 = 永不过期。建议保持 0:过期的邮件连同没领的附件一起失效
keep-sent-days30已寄出的记录在数据库里保留几天(0 = 不清除)。还没寄出的永远保留

邮件的标题与正文在 messages.yml 的 mail 段,见 messages.yml;寄送的完整说明见 星月邮箱寄送。

从 1.0.x 升级

开服时如果 config.yml 里还没有 mail:,会自动在文件末尾加上上面这一段。旧的 stash.auto-collect-money 与 stash.direct-delivery 已经移除(收入不再自动入帐、买到的物品不再直接放进背包,一律寄到邮箱),留在文件里也不会有作用; 旧的 stash.keep-claimed-days 在没写 mail.keep-sent-days 时仍会被沿用。

清理(cleanup)​

cleanup:
finished-listing-days: 30
trade-days: 365
log-days: 90
键默认作用
finished-listing-days30已结束的商品(与它们的出价记录)在数据库里保留几天(0 = 不清除)
trade-days365成交记录保留几天:交易记录菜单、成交均价、/sa trades、%starauction_sold% 都用它(0 = 永久)
log-days90操作记录(/sa log)保留几天(0 = 永久)

清理在开服后不久执行一次,之后每 3 小时一次。

成交均价(price-reference-days)​

price-reference-days: 7

商品说明里显示「近 N 天成交均价」,0 = 不显示。见 逛市集 · 成交均价。

提示(notify)​

notify:
join-delay-seconds: 3
sold:
chat: true
title: ''
subtitle: ''
sound: 'ENTITY_EXPERIENCE_ORB_PICKUP:0.8:1.2'
outbid-sound: 'BLOCK_NOTE_BLOCK_BASS:0.8:0.8'
broadcast-new-listing:
enabled: false
min-price: 1000
键默认作用
join-delay-seconds3上线后几秒告诉玩家离线期间的成交,并把这时还没寄出的东西再寄一次
sold.chattrue卖出时是否在聊天栏提示(内容是 messages.yml 的 news.sold);关掉后音效与标题照常
sold.title / sold.subtitle空东西卖出时的屏幕标题 / 副标题(两个都空 = 不显示)。可用 {item} {amount} {player}(买家){money}
sold.sound见上东西卖出时的音效,写法 音效名:音量:音调,留空不播放
outbid-sound见上出价被超过时的音效
broadcast-new-listing.enabledfalse新商品全服公告(可点击打开),只有有 starauction.notify.broadcast 的玩家收到
broadcast-new-listing.min-price1000总价达到多少才公告(避免刷屏)

卖家在线时,不论交易发生在哪个子服,都会在他所在的子服收到卖出提示。

menu:
date-format: 'MM-dd HH:mm'
cloudui: true
cancel-word: '取消'
input-timeout-seconds: 90
click-cooldown-ms: 250
default-sort: newest
confirm-purchase: true
键默认作用
date-formatMM-dd HH:mm菜单里时间的显示格式(Java 日期格式,例如 yyyy-MM-dd HH:mm)。写错时控制台提示并使用默认格式
clouduitrue装了云界面 CloudUI 时,/sa 打开云界面的市集画面(无法显示的玩家仍用箱子菜单);false = 一律用箱子菜单。CloudUI 之后才安装或重载也会自动接上。见 云界面市集
cancel-word取消在聊天栏输入价格、搜索等时,输入这个字取消(cancel 永远有效)
input-timeout-seconds90在聊天栏输入时,超过几秒没输入就自动取消(最少 10)
click-cooldown-ms250菜单两次点击的最短间隔(防连点)
default-sortnewest默认排序:newest / oldest / price-low / price-high / ending / amount
confirm-purchasetrue购买一口价前要再按一次确认(并锁定价格);关掉后市集里 Shift + 左键可以直接整批买下。见 逛市集 · 确认购买

Discord Webhook(webhook)​

webhook:
enabled: false
url: ''
events: [list, sold]
键默认作用
enabledfalse开启 Webhook
url空Webhook 网址
events[list, sold]list = 新上架 / 新拍卖 / 新收购单;sold = 每一笔成交(一口价购买、拍卖一口价买下、拍卖到期成交、卖给收购单)

指令别名(command-aliases)​

command-aliases: [sa, ah, market]

玩家输入列表里的指令时,星月市集会在指令执行之前把它改写成 /starauction,所以一律交给星月市集处理,即使其他插件也注册了同样的指令(例如另一个插件也用 /ah)。

  • 不分大小写,可以写多个,例如 [sa, ah, market, 市集]:玩家输入 /市集 也会打开市集(新加的别名不会有 Tab 补全)。
  • 只影响玩家输入的指令;控制台请用 starauction。
  • 清空成 [] 则不做任何处理,/sa、/ah 交给服务器按一般规则决定由哪个插件执行。
  • 主指令 /starauction 永远可以用。