跳到主要内容

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
不要写在 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-closeicons.actions、claim.generator.actions、单次领取的 claim 事件
tsl-claimevents.close、icons.actions、claim.generator.actions、单次领取的 claim 事件

事件脚本中的变量​

变量可用事件说明
&amountclaim, generator actions领取的物品数量
&has_amountopen_key.deny玩家手持物品数量
&required_amountopen_key.deny本次需要的钥匙数量
&consumeopen_key.deny是否需要消耗钥匙
&chest-* 变量不存在

早期资料和默认配置里的 &chest-world、&chest-x、&chest-y、&chest-z 属于未实现的预留变量,配合 events.spawn 一起都不会生效。当前版本没有可用的宝箱坐标变量。

自定义事件​

插件提供以下 Bukkit 事件,可在其他插件中监听:

事件类触发时机可取消
TreasureOpenEvent玩家右键打开宝箱是
TreasureSpawnEvent宝箱发包显示给玩家否
TreasureDestroyEvent宝箱 GUI 关闭后销毁否