跳到主要内容

方块交互事件

KetherModulesLite 的核心功能之一。通过配置文件定义玩家与方块交互时触发的 Kether 脚本。

事件类型

事件标识说明配置文件夹
break_block破坏方块break_block/
leftClick_block左键方块click_block/
rightClick_block右键方块click_block/
walk_on_block行走在方块上on_block/
sneak_on_block蹲下在方块上on_block/
jump_on_block跳跃在方块上on_block/

每个文件夹支持放入多个 .yml 文件,插件会自动加载。

配置结构

每种事件下按方块材质名(小写)配置。每个材质下支持两种匹配模式:

模式一:全局匹配(all)

对所有该材质的方块生效,不限坐标。

模式二:精确坐标匹配

用数字编号(123...)定义特定坐标的方块,通过 position 指定坐标。

每个条目包含:

  • cancel — Kether 表达式,返回 true 则取消原版事件(如阻止破坏)
  • actions — 触发时执行的 Kether 脚本
  • position — 仅精确匹配需要,格式 'world,x,y,z'(支持字符串或列表)

破坏方块事件

配置文件位于 break_block/ 文件夹。

默认 break_block.yml

break_block:
drop_period: 1
all_drop: true
diamond_ore: |-
set amt to 10
set item to "zap:Gem"
set vel to inline "-0.5~0.5,0.2,0~0.8"
if eventlite drop &item amount &amt to ~,~,~+2,~ chance 50 throw &vel then {
tell "好哦"
evel drop exp amount &amt to sender chance 100
}
false
diamond_block:
all:
cancel: |-
not eventlite drop "mm:mmID" amount 1 to "{block}" chance 50
actions: |-
set item to "mm:mmID"
eventlite give &item amount 1 to sender chance 50
1:
position: 'world,x,y,z'
cancel: "true"
actions: |-
tell "special location"
oak_log: |-
tell inline node "def4"
evel delay 1s kml setblock at "{block}" this name
true

说明:

  • drop_period — 掉落冷却(tick)
  • all_drop — 是否允许所有掉落
  • 破坏方块事件支持简写模式:直接写 Kether 脚本字符串(如 diamond_ore 示例),脚本返回值作为是否取消事件的判断
  • 也支持完整模式:all + 编号条目(如 diamond_block 示例)

简写模式 vs 完整模式

简写模式(直接写脚本):

break_block:
oak_log: |-
tell inline node "def4"
evel delay 1s kml setblock at "{block}" this name
true

脚本返回 true 表示取消原版破坏事件,false 表示不取消。

完整模式(all + 编号):

break_block:
diamond_block:
all:
cancel: "true"
actions: |-
tell "所有钻石块都不能破坏"
1:
position: 'world,100,64,100'
cancel: "true"
actions: |-
tell "这个特殊位置的钻石块"

点击方块事件

配置文件位于 click_block/ 文件夹,包含左键和右键两种事件。

默认 click_block.yml

leftClick_block:
crafting_table:
all:
cancel: true
actions: |-
tell "sb2"
1:
position:
- 'world,x,y,z'
cancel: 'false'
actions: |-
tell "sb1"

rightClick_block:
crafting_table:
all:
cancel: "not perm vip"
actions: |-
tell "sb2"
1:
position: 'world,x,y,z'
cancel: false
actions: |-
tell "sb1"

注意 cancel 支持 Kether 表达式,比如 "not perm vip" 表示没有 vip 权限的玩家会被取消事件。

行走/蹲下/跳跃事件

配置文件位于 on_block/ 文件夹。

默认 on_block.yml

walk_on_block:
crafting_table:
all:
cancel: "not perm vip"
actions: |-
tell "sb2"
1:
position: 'world,x,y,z'
cancel: false
actions: |-
tell "sb1"

sneak_on_block:
crafting_table:
all:
cancel: "not perm vip"
actions: |-
tell "sb2"

jump_on_block:
crafting_table:
all:
cancel: "not perm vip"
actions: |-
tell "sb2"

事件冷却

config.yml 中配置各事件的触发冷却(tick),防止频繁触发:

prevent_period:
left_click_block: 5
right_click_block: 5
jump_on_block: 5
sneak_on_block: 5
walk_on_block: 5

获取坐标

使用 /kml getloc 命令获取准星指向方块的坐标,直接复制到 position 配置中。

检测距离和忽略方块在 config.yml 中配置:

target_block:
distance: 64
ignore_block:
- air
- stone

Kether 内置变量

在方块事件的 Kether 脚本中,可以使用以下内置功能:

  • this name — 当前方块材质名
  • this age — 方块 age 属性
  • this data — 方块 data 值
  • "{block}" — 当前方块的位置字符串
  • sender — 触发事件的玩家