Skip to content

Kether 脚本

AreaModule 使用 TabooLib 的 Kether 脚本引擎,在关卡的各种事件节点中执行自定义逻辑。

可使用脚本的位置

位置说明
主关卡 on-fail关卡失败时执行
子关卡 on-start子关卡开始时执行
子关卡 on-exit子关卡完成时执行
accessible / singleaccess on-enter玩家进入区域时执行
clickable on-click玩家右键点击方块时执行
pressable on-click玩家按压完成时执行
deathtrap on-death玩家死亡时执行
airwall on-enter玩家被弹开时执行
killtrigger on-kill击杀怪物时执行
ady-npc script与 NPC 交互时执行
delay-executor script延迟后执行

自定义语句:score

AreaModule 在 areamodule 命名空间下注册了 score 语句,用于操控关卡分数。

语法

areamodule:score set <key> to <value>    # 设置分数
areamodule:score add <key> by <delta>    # 增加分数(负数则减少)
areamodule:score get <key>               # 获取当前值
areamodule:score max <key>               # 获取最大值
areamodule:score progress <key>          # 获取 "当前/最大" 字符串

关卡推断

score 语句会自动推断当前关卡:

  1. 优先从脚本变量表中获取 level 变量(由框架在执行时注入)
  2. 如果没有,则根据脚本执行者(玩家)的位置匹配所在的关卡

示例

yaml
# 在 killtrigger 的 on-kill 中累加击杀计数
on-kill: |-
  areamodule:score add kill by 1

# 在 on-start 中设置初始值
on-start: |-
  areamodule:score set star to 0
  title color "&a开始收集星星!" by 0 20 10

# 在 clickable 的 on-click 中检查分数
on-click: |-
  areamodule:score add coin by 10
  tell color "&e获得10金币!当前: {{ areamodule:score progress coin }}"

自定义语句:chemdah sync

AreaModule 在 areamodule 命名空间下注册了 chemdah sync 语句,用于将当前关卡的分数立即同步到 Chemdah 任务数据。

前置条件

需要服务器安装 Chemdah 插件,且关卡配置了 chemdah.sync-scores 映射。

语法

areamodule:chemdah sync    # 立即同步当前关卡分数到 Chemdah 任务数据

同步规则由主关卡配置中的 chemdah.sync-scores 映射决定,关卡通过脚本上下文自动推断(规则同 score 语句)。

TIP

其余 Chemdah 操作(接受/完成/放弃任务、操作任务数据等)请直接使用 Chemdah 自带的 Kether 语句,例如 quest acceptquest completequest data 等。

示例

yaml
# 击杀怪物后同步分数到 Chemdah
on-kill: |-
  areamodule:score add kill by 1
  areamodule:chemdah sync

# 配合 Chemdah 自带语句使用
on-exit: |-
  areamodule:chemdah sync
  quest select "my_quest"
  quest complete

通用 Kether 语法

以下是一些常用的 Kether 语句:

# 发送标题
title color "&a&l标题文本" by 0 20 10

# 发送消息
tell color "&e消息内容"

# 发送 ActionBar
actionbar color "&b动作栏消息"

# 播放音效
sound ENTITY_EXPERIENCE_ORB_PICKUP by 1 1

# 设置变量
set my_var to "hello"

# 读取变量
tell &my_var

更多 Kether 语法请参考 TabooLib Kether 文档

基于 TabooLib 构建的 Minecraft 区域关卡插件