方块交互事件
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)
对所有该材质的方块生效,不限坐标。
模式二:精确坐标匹配
用数字编号(1、2、3...)定义特定坐标的方块,通过 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— 触发事件的玩家