Kether 动作
TreasuresLite 注册了一组 Kether 动作,可在 TabooLib Kether 脚本中使用,与宝箱系统交互。
动作列表
tsl-put
放置一个临时缓存宝箱到指定坐标,并立即更新该玩家的宝箱显示。
语法:
tsl-put {宝箱ID} {x} {y} {z}
tsl-put {宝箱ID} {x} {y} {z} face {朝向}
示例:
action: |-
tsl-put "def" 100 64 200 face "east"
放入的宝箱存储在玩家的临时缓存中,与 normal/random 坐标独立管理。
tsl-open
为当前玩家打开指定宝箱的领取 GUI。
语法:
tsl-open {宝箱ID}
示例:
action: |-
tsl-open "def"
tsl-cancel
取消当前的宝箱打开事件。只能在 events.open 脚本中使用,用于阻止宝箱被打开。
语法:
tsl-cancel
示例:
events:
open: |-
# 如果玩家等级不够,取消打开
if check player level < 10 then {
tell "等级不够,无法打开"
tsl-cancel
}
tsl-close
关闭当前玩家正在查看的宝箱 GUI。支持虚拟化界面和普通界面。
语法:
tsl-close
示例:
claim:
generator:
trap:
chance: 10
material: "stone"
amount: 1
give: none
actions:
all: |-
tell "&c这是个陷阱,箱子关上了"
tsl-close
tsl-close 需要拿到已经建好的界面对象,因此只能写在 icons.<字符>.actions、claim.generator.<编号>.actions 或单次领取触发的 claim 事件里。
写在 events.open 中会报 No GUI selected.,因为那时界面还没建立。想阻止宝箱打开请用 tsl-cancel。
tsl-claim
一次性领取当前 GUI 中所有未领取的奖励物品。通常在 events.close 中使用,确保玩家关闭界面时自动领取剩余奖励。
语法:
tsl-claim
示例:
events:
close: |-
tsl-claim
tsl-claim 会为每个领取的物品再触发一次 claim 事件。如果把 tsl-claim 写进 events.claim,逻辑上会形成自我调用。
它需要界面上下文,可用于 events.close、icons.actions、claim.generator.actions 以及单次领取的 claim 事件;由 tsl-claim 自身批量领取时再触发的 claim 事件不带这些上下文。
动作可用范围一览
这些动作都依赖脚本执行时注入的上下文变量,写错位置会直接报 No ... selected.:
| 动作 | 可用位置 |
|---|---|
tsl-put | 任意玩家脚本 |
tsl-open | 任意玩家脚本 |
tsl-cancel | 仅 events.open |
tsl-close | icons.actions、claim.generator.actions、单次领取的 claim 事件 |
tsl-claim | events.close、icons.actions、claim.generator.actions、单次领取的 claim 事件 |
事件脚本中的变量
| 变量 | 可用事件 | 说明 |
|---|---|---|
&amount | claim, generator actions | 领取的物品数量 |
&has_amount | open_key.deny | 玩家手持物品数量 |
&required_amount | open_key.deny | 本次需要的钥匙数量 |
&consume | open_key.deny | 是否需要消耗钥匙 |
早期资料和默认配置里的 &chest-world、&chest-x、&chest-y、&chest-z 属于未实现的预留变量,配合 events.spawn 一起都不会生效。当前版本没有可用的宝箱坐标变量。
自定义事件
插件提供以下 Bukkit 事件,可在其他插件中监听:
| 事件类 | 触发时机 | 可取消 |
|---|---|---|
TreasureOpenEvent | 玩家右键打开宝箱 | 是 |
TreasureSpawnEvent | 宝箱发包显示给玩家 | 否 |
TreasureDestroyEvent | 宝箱 GUI 关闭后销毁 | 否 |