跳到主要内容

界面配置

玩家看到的三个界面都可以自定义,文件在 plugins/StarCrate/menus/:

文件界面什么时候出现
preview.yml奖池预览(也是自选奖池的选择界面)点抽奖方块、右键宝箱物品、/sc open
results.yml抽奖结果动画结束后(config.yml 的 animation.results-menu)
history.yml抽奖记录/sc history、预览里的「抽奖记录」按钮

改完 /sc reload 生效。文件被删掉时,/sc reload 或重启会重新生成默认文件。

安装了云界面 CloudUI 时

「抽奖」与「立即抽取」奖池的预览会改用云界面的全屏画面,不使用 preview.yml(自选奖池的选择界面、无法显示云界面的玩家仍使用 preview.yml)。 抽奖结果与抽奖记录界面照常使用这里的设定。见 云界面预览。

编辑器与抽奖动画的界面不在这里:编辑器的文字在 messages.yml 的 editor,动画在 animations.yml。

通用写法​

title: '<dark_gray>✦ </dark_gray>{crate}'
rows: 6
content-slots: ['10-16', '19-25', '28-34']
sounds:
open: 'BLOCK_ENDER_CHEST_OPEN:0.4:1.4'
click: 'UI_BUTTON_CLICK:0.4:1.4'
decorations:
frame:
material: BLACK_STAINED_GLASS_PANE
slots: ['0-8', '36-53', 9, 17, 18, 26, 27, 35]
buttons:
close:
slot: 40
material: BARRIER
name: '<red>关闭'
键作用
title界面标题,可用颜色与变量
rows行数 1 ~ 6
content-slots放奖品(或记录)的格位。被按钮占用的格位会自动跳过。没写时使用除了最后一行以外的全部格位
items-per-page每页放几个(选填,默认 = content-slots 的格数)
sounds界面音效:open 打开时、click 点按钮时(预览另有 select 自选选择时)。写法同 稀有度 的音效,留空不播放
decorations装饰物品(先画,按钮与奖品盖在上面)。每一项的写法和按钮相同,名称默认空白
buttons按钮

格位写法​

格位从 0 开始:第一行是 0 ~ 8,第二行 9 ~ 17……第六行 45 ~ 53。

slot: 4 # 一格
slots: [45, 53] # 多格
slots: ['0-8', 17, '36-44'] # 范围(要加引号)
slots: '0-8, 45-53' # 一个字符串也可以,用逗号分隔

按钮的键​

键默认作用
slot / slots—放在哪里(可以同时放好几格)
type按钮名称按钮的功能。按钮名称是内置功能(例如 single、close)时自动使用该功能;其他名称一律是 action(只执行 actions)。也可以写 type: 指定,例如名称叫 my-close 但 type: close
enabledtruefalse = 不显示这个按钮
materialSTONE材质
amount1数量(1 ~ 64)
name''名称
lore[]说明
custom-model-data0CustomModelData(0 = 不设)
item-model''item_model(1.21.4+),例如 myserver:gui/draw
tooltip-style''提示框样式(1.21.2+)
head''材质是 PLAYER_HEAD 时的头颅:{player} = 看界面的玩家、玩家名称、UUID,或 base64 材质值
glowfalse附魔光泽
sound—点这个按钮的音效(取代界面的 click 音效)
permission''没有这个权限的玩家看不到这个按钮(预览与结果界面)
states—不同状态的外观,见下方 confirm 按钮
actions[]type: action 的按钮点击时执行的动作

按钮物品的原版提示(攻击伤害、附魔等)会自动隐藏。

自定义动作(actions)​

名称不是内置功能的按钮就是自定义按钮,点击时依序执行 actions:

buttons:
warp-shop:
slot: 45
material: EMERALD
name: '<green>去商店买钥匙'
actions:
- 'close'
- 'command: warp shop'
- 'message: <gray>欢迎光临!'
动作作用
command: 指令玩家执行指令(不用 /)
console: 指令控制台执行指令
message: 文字发一条消息给玩家
sound: 音效播放音效
close关闭界面

动作里可用 {player}(玩家名称)。没有 actions 的自定义按钮就只是展示用(例如结果界面的「保底进度」)。

preview.yml(奖池预览)​

变量​

标题、按钮名称与说明都可以用:

变量内容
{crate}奖池显示名称
{player}玩家名称
{cost_single} / {cost_ten}单抽 / 十连花费,例如 免费、100 金币、50 点券、1 × 星辉宝箱 钥匙(货币文字在 messages.yml 的 currency)
{pity}保底次数
{pity_max}硬保底次数(没有时 ∞)
{pity_left}再抽几次必出终极大奖(没有硬保底时 ∞)
{pity_bar}20 格的保底进度条(格子样式在 messages.yml 的 pity-bar)
{total}玩家在这个奖池已经抽了几次
{prizes}奖品数量
{ten_guarantee}实际生效的十连保底稀有度名称:奖池自己的设定,没设定时是 config.yml 的 defaults.ten-guarantee;都没有时显示 messages.yml 的 none「无」
{soft_start}软保底起点
{select_count} / {selected}自选奖池要选几个 / 已经选了几个
{daily_limit}每日上限(不限时 ∞)
{key}钥匙名称
{page} / {pages}目前页数 / 总页数

{page}、{pages}、{selected} 只能用在按钮与装饰上,标题里不会替换。自选奖池使用 select-title 当标题(默认 {crate} · 选择 {select_count} 个)。

内置按钮​

按钮(type)作用什么时候显示
single单抽不是自选奖池
ten十连不是自选奖池,且奖池允许十连
draw左键单抽、右键十连(一个按钮做两件事,默认文件没有用到)不是自选奖池
confirm自选奖池:确认选择并领取。选的数量不对时使用 states.incomplete 的外观只有自选奖池
pity保底进度(只是显示)不是自选奖池,且奖池有硬保底
info奖池信息(只是显示)一直
history打开自己在这个奖池的抽奖记录一直
stash领取暂存奖励(/sc stash)一直
previous / next上一页 / 下一页有上一页 / 下一页时
close关闭界面一直

默认的 single(48)、pity / confirm(49)、ten(50)放在同一排;自选奖池时 confirm 取代 pity 的位置。

奖品说明(prize)​

每个奖品会在它自己的说明下面加上这一段:

prize:
lore:
- ''
- '<gray>稀有度 {rarity}'
- '{chance_line}'
- '{grand_line}'
- '{limit_line}'
- '{rarity_lore}'
- '{select_line}'
chance-line: '<gray>概率 <white>{chance}%'
grand-line: '<gold><bold>✦ 终极大奖</bold> <gray>(计入保底)'
limit-line: '<gray>已获得 <white>{won}<gray>/{limit}'
limit-reached-line: '<red>已达获得上限 {won}/{limit}'
select-line: '<yellow>➥ 点击选择'
selected-line: '<green>✔ 已选择(再点一次取消)'

lore 里含有下面这些标记的行,只有符合条件时才会出现(不符合时整行拿掉):

标记出现条件换成
{chance_line}奖池开启「显示概率」chance-line,{chance} = 这位玩家下一抽的真实概率(见 概率与保底)
{grand_line}奖品是终极大奖grand-line
{limit_line}奖品有每人上限limit-line({won} 已获得次数、{limit} 上限);已达上限时用 limit-reached-line
{rarity_lore}稀有度有 lore稀有度的 lore(可以有多行)
{select_line}自选奖池没选时 select-line,已选时 selected-line

其他行可以用 {rarity}(稀有度名称)。开头、结尾与连续的空白行会自动整理掉。 稀有度设定发光的奖品、自选奖池里已选的奖品会带附魔光泽。

results.yml(抽奖结果)​

title: '<dark_gray>✦ </dark_gray>{crate}<dark_gray> · 抽奖结果'
rows: 6
single-slots: [22]
ten-slots: [20, 21, 22, 23, 24, 29, 30, 31, 32, 33]
rarity-lights: true
result-lore:
- ''
- '<gray>稀有度 {rarity}'
- '{grand_line}'
- '{pity_line}'
- '{guarantee_line}'
grand-line: '<gold><bold>✦ 终极大奖'
pity-line: '<yellow>✦ 保底触发'
guarantee-line: '<aqua>✦ 十连保底'
键作用
single-slots单抽时结果放的格位
ten-slots十连时结果放的格位(依抽出的顺序)
rarity-lights奖品旁边亮起稀有度颜色的玻璃板:单抽亮起周围 8 格;十连时第 3 行以上的结果亮上面一格,其他亮下面一格
result-lore加在奖品说明后面的行。{grand_line} 只有终极大奖、{pity_line} 只有硬保底触发的那一个、{guarantee_line} 只有十连保底换上的那一个才会出现
grand-line / pity-line / guarantee-line上面三个标记换成的文字

变量与 preview.yml 相同,另外有 {count} = 这次的奖品数量。

内置按钮(type)作用什么时候显示
again-single再抽一次(单抽)不是自选奖池
again-ten再来十连奖池类型是「抽奖」且允许十连
back回到奖池预览一直
close关闭一直

「再抽一次」「再来十连」「回到奖池」沿用这个奖池原本的开启方式:例如从宝箱物品打开的,再抽同样会消耗宝箱物品。 由 /sc draw … free 或 API 免费代抽后打开的结果界面例外,按钮是一般的付费抽奖(照常扣花费、检查权限与每日上限)。

single、ten 也可以放在结果界面,作用与 again-single、again-ten 相同。默认文件里的 pity 写成 type: action,只用来显示保底进度。

history.yml(抽奖记录)​

title: '<dark_gray>✦ {player} 的抽奖记录'
rows: 6
content-slots: ['0-44']
entry:
name: '{rarity} <white>{prize}'
lore:
- '<gray>{time}'
- '<gray>奖池 {crate}'
- '{grand}'
  • 显示最近 200 条记录,新的在前,每一条用奖品的物品材质当图标;终极大奖或稀有度会发光的记录带附魔光泽。
  • entry 是每一条记录的外观,可用:{prize} 奖品名称、{rarity} 稀有度、{time} 时间(格式见 config.yml 的 menu.date-format)、{crate} 奖池名称、{server} 抽奖的子服 ID、{grand} 终极大奖标记(messages.yml 的 grand-mark,不是终极大奖时为空白)。
  • 界面变量:{player} 记录的主人、{crate} 奖池名称(看全部奖池时为「全部奖池」)、{count} 记录数、{grand} 其中终极大奖的次数、{page}、{pages}。
内置按钮(type)作用
previous / next上一页 / 下一页(有的时候才显示)
back从奖池预览打开时回到那个奖池;用 /sc history 打开(全部奖池)时关闭界面
close关闭

默认文件里的 summary(「最近 N 次」)是 type: action 的显示用按钮。