跳到主要内容

菜单

星月市集的箱子菜单外观全部写在 plugins/StarAuction/menus/ 里:

文件菜单打开方式
market.yml市集主菜单/sa、/sa search、/sa view <玩家>
categories.yml选择分类市集的「分类」按钮
buy.yml购买一口价商品在市集点一口价商品
bid.yml拍卖出价在市集点拍卖商品
fill.yml卖给收购单在市集点收购单
create.yml上架物品/sa list、市集的「上架物品」
mine.yml我的上架/sa mine、市集的「我的上架」
stash.yml旧版领取箱(1.1.0 起不再打开)—(/sa stash 与市集的「星月邮箱」按钮改为打开星月邮箱)
history.yml交易记录/sa history、我的上架的「交易记录」

改完执行 /sa reload 生效。想恢复某个文件的默认样子:把它改名或删除,再 /sa reload,会重新生成默认文件。 装了云界面 CloudUI 时,/sa 打开的是云界面画面(见 云界面市集),其他菜单仍然是这里的箱子菜单。

共通的写法​

title: '<gradient:#9BB8FF:#E7C6FF>✦ 星月市集</gradient> <dark_gray>· {category}'
rows: 6
content-slots: '0-44'

sounds:
open: 'BLOCK_ENDER_CHEST_OPEN:0.4:1.6'
click: 'UI_BUTTON_CLICK:0.5:1.2'
page: 'ITEM_BOOK_PAGE_TURN:0.8:1'

decorations:
bar:
slots: '45-53'
material: GRAY_STAINED_GLASS_PANE
name: ' '

buttons:
stash:
slot: 53
material: CHEST
name: '<gold>星月邮箱'
lore: ['<gray>买到的物品、卖出的收入、退回的东西', '<gray>都会寄到星月邮箱', '', '<yellow>▸ 点击打开邮箱']
states:
full:
material: ENDER_CHEST
glow: true
name: '<gold>星月邮箱 <red>● {stash}'
键作用
title菜单标题,支持 & 颜色、&#RRGGBB 与 MiniMessage,可以用该菜单的变量
rows行数,1 ~ 6
content-slots放「列表内容」的格位:市集与我的上架放商品、交易记录放成交、分类菜单放没写 slot 的分类、上架菜单是放物品的格子。可以写 '0-44'、'10-16,19-25' 或列表。和按钮重叠的格位会自动跳过;没写时使用除了最后一行以外的全部格位
items-per-page(选填)每页最多显示几项,默认等于内容格位的数量
soundsopen 打开、click 点击按钮、page 翻页(市集、我的上架、交易记录)
decorations装饰(玻璃板等),可以写好几组,键名随便取。只显示,点了没反应
buttons按钮。键名就是功能(见各菜单的功能键),不认识的键名是只执行 actions 的自定义按钮

格位编号从 0 开始,第一行是 0 ~ 8,第二行 9 ~ 17,依此类推。

音效写法​

写法意思
UI_BUTTON_CLICK原版音效名称,音量与音调都是 1
UI_BUTTON_CLICK:0.6音量 0.6
UI_BUTTON_CLICK:0.6:1.2音量 0.6、音调 1.2
minecraft:block.note_block.pling用音效 ID(资源包的自定义音效也可以,例如 myserver:ui.open:0.8:1)
''不播放

写错的音效名称会被忽略,不会让菜单出错。

按钮与装饰的键​

键默认作用
type键名指定功能。键名就是功能键时不用写;想用别的键名、或同一个功能放两个按钮时写 type: next 这样。写 type: action 表示只执行 actions
slot / slots—格位,slot: 4、slots: [45, 53]、slots: '0-8'
material按钮 STONE / 装饰 BLACK_STAINED_GLASS_PANE材质
amount1数量(1 ~ 64)
name空名称,支持颜色与该菜单的变量
lore无说明,一行一个项目,支持颜色与变量
custom-model-data0自定义模型数据,0 = 不用
item-model空物品模型(1.21.4+),例如 myserver:gui/market
tooltip-style空提示框样式(1.21.2+)
head空头颅材质(material 要是 PLAYER_HEAD):'{player}' = 看菜单的玩家自己的头;玩家名或 UUID;头颅网站复制的 base64 textures 值(可以加 base64: 前缀)
glowfalse附魔光效
sound菜单的 click点击这个按钮的音效
permission空没有这个权限的玩家看不到这个按钮
value0部分按钮用的数字:数量按钮的加减量、拍卖加价按钮的百分比
enabledtruefalse = 暂时停用这个按钮 / 装饰
states—不同状态下的外观,只写要改的项目,其余沿用按钮本身的设定
actions—点击时执行的动作(任何按钮都可以加,会在按钮本身的功能之前执行)

按钮物品会隐藏原版的属性、附魔等说明。

actions 动作:

写法效果
'command: spawn'玩家执行指令
'console: give {player} diamond'控制台执行指令
'message: <green>你好'给玩家发一条消息
'sound: ENTITY_PLAYER_LEVELUP'播放音效
'close'关闭菜单

例:在「我的上架」(mine.yml)底部空着的第 47 格加一个回主城的按钮:

buttons:
back-to-spawn:
slot: 47
material: ENDER_PEARL
name: '<aqua>回到主城'
actions:
- 'close'
- 'command: spawn'

说明文字的排版规则​

  • {actions}、{bid_lines}、{buyout_line} 这种整行变量会按内容展开成好几行;没有内容时整行拿掉。
  • 连续的空行只保留一行,开头与结尾的空行会自动去掉。

市集主菜单 market.yml​

功能键​

键作用状态
category打开分类菜单。查看某位玩家的商品时不显示—
back查看某位玩家的商品时显示,回到市集—
type类型:左键下一个(全部 → 一口价 → 拍卖 → 收购),右键回到全部—
sort排序:左键下一个,右键恢复默认—
previous / next上一页 / 下一页,只有前后还有页时才显示—
search搜索:左键输入,右键清除active:正在搜索时
sell打开上架菜单—
mine打开我的上架—
stash打开星月邮箱full:星月邮箱有附件待领、或市集还有没寄出的东西时
history打开交易记录—
refresh重新整理—
close关闭菜单—

其他键​

键作用
seller-title/sa view 时的标题({seller} = 那位玩家)
empty没有商品时显示的物品(写法同按钮)
listing-item商品的外观,见下方

商品的外观(listing-item)​

商品显示成物品本身(名称、附魔、说明都保留),下面加上这里的说明:

键作用
name留空 = 物品自己的名称;写了就换成这个名称(可用 {item} 与商品变量)
keep-item-loretrue = 保留物品原本的说明,再接上下面的说明
lore-sell / lore-auction / lore-buy一口价 / 拍卖 / 收购单的说明
buyout-line / reserve-line / bidder-line / avg-line{buyout_line}(有一口价时)/ {reserve_line}(有保留价时)/ {bidder_line}(有人出价时)/ {avg_line}(有成交均价时)的内容
actions-sell / actions-auction / actions-buy别人的商品的 {actions}
actions-own自己的商品的 {actions}
actions-admin有 starauction.admin.remove 的人在别人的商品下面额外看到的行

变量​

菜单与按钮:

变量内容
{category}目前的分类名称
{type} / {next_type}目前 / 下一个类型(messages.yml 的 filter-type)
{sort} / {next_sort}目前 / 下一个排序(messages.yml 的 sort)
{keyword}搜索关键字(没有时是 messages.yml 的 no-keyword)
{shown}目前条件下的商品数
{total}全服上架中的商品数
{page} / {pages}页码 / 总页数
{stash} / {stash_items}等着领的数量:星月邮箱里附件没领的邮件数 + 市集还没寄出的笔数(两个变量 1.1.0 起数字相同)
{listings} / {limit}你上架中的数量 / 一口价上限
{player}看菜单的玩家

商品(listing-item,以及购买 / 出价 / 卖给收购单菜单):

变量内容
{seller} / {owner}卖家(收购单是收购方)
{amount}剩余数量
{unit}单价(拍卖是目前价格 ÷ 数量)
{total}一口价:剩下的总价;拍卖:目前出价(没人出价时是起拍价);收购单:剩下的预付款
{price}一口价与收购单是单价;拍卖是目前价格
{start}起拍价
{time} / {end} / {listed}剩余时间 / 结束时间 / 上架时间(menu.date-format)
{bids} / {bidder} / {min_bid}出价次数 / 最高出价者 / 最低出价
{buyout} / {reserve}一口价 / 保留价
{id}商品编号
{currency}货币名称
{type}一口价 / 拍卖 / 收购(messages.yml 的 type)
{partial}「可以只买一部分」/「整批出售」
{tax}这件商品的交易税(%)
{server}上架的子服
{days} / {avg}(avg-line 里)均价的天数 / 均价
整行:{buyout_line}、{reserve_line}、{bidder_line}、{avg_line}、{actions}见上

分类菜单 categories.yml​

分类本身(名称、图示、位置、条件)写在 plugins/StarAuction/categories.yml,见 逛市集 · 分类。这个文件只管菜单的外观:

键作用
content-slots没写 slot 的分类自动排进这些格子
category-item.name分类按钮的名称({name} = 分类名称)
category-item.lore / lore-active一般 / 目前所在的分类的说明({count} = 商品数)。目前所在的分类会发光
buttons.back返回市集

购买 buy.yml​

键作用状态
item商品本身,lore 会接在物品说明后面—
amount数量加减按钮(type: amount,value = 加减量)。名称里 {value} 显示 +10 / -10disabled:超出范围时
max / min全部买下 / 只买 1 个—
info显示数量、合计、余额—
confirm确认购买confirm:等待第二次点击;poor:余额不足
back返回—

整批出售的商品不显示 amount、max、min。

变量:商品变量,加上 {qty} 购买数量、{cost} 合计、{balance} 余额、{max_qty} 最多能买几个。

拍卖出价 bid.yml​

键作用状态
item商品本身;lore 里的 {bid_lines} = 最近 5 次出价—
bid-min设成最低出价—
raise加价按钮(type: raise,value = 百分比),以目前出价(没人出价时起拍价)为基础,至少是最低出价。名称里 {abs} = 百分比—
bid-custom输入金额—
confirm出价(按两次)confirm:等待第二次点击;poor:余额不足
buyout一口价买下(按两次),没设一口价时不显示confirm
back返回—
其他键作用
bid-line{bid_lines} 每一行的格式({name} {amount} {time})
no-bids还没人出价时的那一行

变量:商品变量,加上 {bid} 准备出的价、{balance} 余额。

卖给收购单 fill.yml​

键作用状态
item收购的物品(样品)—
amount数量加减disabled
max全部卖出—
info可得金额与交易税—
confirm确认卖出(按一次)none:背包里没有符合的物品
back返回—

变量:商品变量,加上 {qty} 卖出数量、{have} 背包里符合的数量、{income} 可得(扣税后)、{tax_money} 交易税、{max_qty}。

上架物品 create.yml​

content-slots 是放物品的格子(默认中间 3 行 × 7 格)。关闭菜单或取消时,放进去的物品全部退回。收购单放进去的只是样品,确认后会还给玩家。

键作用状态
type方式:一口价 → 拍卖 → 收购(跳过没开放或没权限的)—
price价格(一口价按 command-price 是总价或单价;拍卖是起拍价;收购是单价)—
buyout-price拍卖的一口价:左键设置、右键清除(只在拍卖显示)—
reserve拍卖的保留价:左键设置、右键清除(只在拍卖显示)—
partial一口价的零买开关(只在一口价显示)off:关
order-amount收购数量:点击输入(只在收购显示)—
amount(选填)收购数量加减按钮,value = 加减量(只在收购显示)—
duration时长:左键下一个、右键上一个—
currency货币:点击切换single:只有一种可用货币时
info费用说明—
cancel取消(物品退回)—
confirm确认上架(按两次)empty:还没放物品;mixed:放了不同的物品;no-price:还没设价格;confirm:等待第二次点击

变量:{type} / {next_type}、{price} 输入的价格、{total} 总价、{unit} 单价、{amount} 数量、{buyout}、{reserve}、{duration}、{currency}、{partial}、{fee} 手续费、{tax} 交易税 %、{deposit} 收购单预付、{price_mode} 总价 / 单价、{player}。没设定的价格显示 messages.yml 的 not-set。

我的上架 mine.yml​

键作用状态
back返回市集—
sell打开上架菜单—
previous / next翻页—
info显示上架数、上限、权限组、交易税—
history交易记录—
stash打开星月邮箱—
cancel-all全部下架(按两次);有人出价的拍卖不会下架confirm

listing-item 的写法同市集,操作提示改用 actions-mine-sell、actions-mine-auction、actions-mine-buy。商品左键改价、右键下架(按两次)。

变量:{count} 上架中的数量、{limit} / {limit_auction} / {limit_order} 三种上限、{group} 权限组、{tax} 一口价交易税、{page} / {pages}、{player}。

旧版领取箱 stash.yml​

1.1.0 起不再使用

1.1.0 起市集给玩家的东西都寄到 星月邮箱,这个菜单不会再打开(文件仍会生成,留着或删掉都可以)。/sa stash、市集与我的上架的 stash 按钮都改为打开星月邮箱。下面是旧版的写法,供参考。

键作用状态
back返回市集—
previous / next翻页—
claim-all全部领取none:没有可领取的东西
close关闭—
其他键作用
stash-item.item-lore物品那一笔的说明(接在物品说明后面)
stash-item.money-name / money-lore货币那一笔的名称与说明(图示是货币的 icon)
empty领取箱是空的时显示的物品

变量:{reason} 来源(messages.yml 的 reason)、{amount} 数量、{money} 金额、{item} 相关物品、{player} 交易对象、{time}、{id} 商品编号;按钮用 {count} 笔数、{page} / {pages}。

交易记录 history.yml​

显示最近 135 笔你参与的成交(卖出与买入)。

键作用
trade-item.lore-sold卖出的那一笔的说明
trade-item.lore-bought买入的那一笔的说明
empty没有记录时
buttons.back / previous / next返回市集 / 翻页

变量:{other} 交易对象、{type}、{amount}、{total} 成交金额、{tax} 交易税、{income} 实收、{time}、{id} 商品编号。

小技巧​

  • 换成资源包的 GUI:把装饰的玻璃板改成透明材质 + item-model,按钮也加上 item-model / custom-model-data,标题用资源包字体画背景。
  • 移动按钮:改 slot 就好;记得 content-slots 不要和按钮重叠(重叠的格位会被当成按钮,不放内容)。
  • 只给 VIP 看的按钮:加 permission: group.vip。
  • 不想要某个按钮:加 enabled: false,或整段删掉。