跳到主要内容

GUI 与动画

GUI 字符布局

TreasuresLite 使用字符布局系统定义开箱界面。每个字符映射到一个槽位,通过 layout 定义界面结构,通过 claim.keyicons 定义各字符对应的内容。

默认配置示例

title: "奖励箱"

layout:
- '#########'
- ' 1111111 '
- ' 1111111 '
- ' 1111111 '
- ' 1111111 '
- '#########'
  • layout 中的每一行对应 GUI 的一行(每行 9 个字符 = 9 个槽位)
  • 行数决定 GUI 的大小(上例为 6 行 = 54 格)
  • 空格表示空槽位
  • 1 对应 claim.key: 1,即可领取奖励的槽位
  • # 对应 icons 中定义的装饰图标

icons 装饰图标

icons:
'#':
material: "gray glass stane pane"
name: " "
actions:
left: |-
tell "点nm呢"
right: |-
tell "拿不了"

icons 中的每个键对应 layout 中的一个字符。支持配置:

配置项说明
material物品材质,支持所有物品源格式
name显示名称
lore显示 Lore
amount显示数量
actions点击动作(Kether 脚本),支持 leftrightall

开箱动画

插件通过 NMS 发包实现箱子的打开/关闭动画:

  1. 玩家右键点击虚拟宝箱
  2. 发送箱子打开动画数据包(箱盖打开效果)
  3. 打开 GUI 界面供玩家领取奖励
  4. 关闭 GUI 时发送箱子关闭动画数据包
  5. 延迟 15 tick 后还原方块

这个过程是自动的,不需要额外配置。

事件脚本

宝箱配置文件中的 events 节点可以绑定各阶段的 Kether 脚本:

events:
open: |-
tell "打开了闸总"
close: |-
tsl-claim
claim: |-
tell "领取了个什么东西啊"
spawn: |-
tell inline "{{ &chest-world }}位于{{ &chest-x }},{{ &chest-y }},{{ &chest-z }} 出现了一个神秘宝箱"
事件触发时机说明
open玩家右键打开宝箱时在钥匙检查通过后、GUI 打开前执行。可通过 tsl-cancel 取消
closeGUI 关闭时常用于自动领取未领取的奖励(tsl-claim
claim玩家点击领取单个奖励时可用 &amount 获取物品数量
spawn宝箱发包显示时可用 &chest-world&chest-x&chest-y&chest-z 获取坐标

全息文字

警告

全息文字功能依赖 Adyeshach 2.0,目前暂未实现。

配置预留如下:

hologram:
offsetX: 0
offsetY: 0
offsetZ: 0
update: 20
text:
- '这是个全息'
- '这是个全息'
- '这是个全息'

背包锁定

开启 lock_inventory 后,玩家在开箱 GUI 中无法点击自己背包内的物品:

settings:
lock_inventory: true