数据包扩展指南
概述
本页面修缮中……
注意:目前为止,仅Forge版支持数据驱动!
SmartKeyPrompts 支持通过数据包扩展按键提示功能,允许不精通 Kubejs 的整合包作者与玩家根据实际需求灵活自定义按键显示
数据包使用 MVEL 表达式语言 进行逻辑判断和动作执行,提供强大的表达式支持。
此文档的内置函数部分只适用于1.0.4.2及以上版本,低版本请看 模组内置数据包 / 模组源码作为示例
MVEL 表达式语言简介
MVEL (MVFLEX Expression Language) 是一个强大的表达式语言,支持丰富的语法特性:
基本语法特性
- 三元表达式:
condition ? value1 : value2 - 逻辑运算:
&&(与)、||(或)、!(非) - 比较运算:
==、!=、>、<、>=、<= - 字符串操作:
+(连接)、.startsWith()、.contains()等 - 空值检查:
value != null、value == null - 函数调用:支持调用注册的静态方法
示例表达式
// 三元表达式
keyUse == 'key.keyboard.unknown' ? 'key.mouse.right' : keyUse
// 逻辑组合
isModLoaded('tacz') && mainHandItem() == 'tacz:modern_kinetic_gun'
// 字符串匹配
vehicleType() != null && vehicleType().startsWith('immersive_aircraft:')
// 复杂条件
mainHandItem() != 'minecraft:sugar' && mainHandItem() != 'diligentstalker:stalker_master'
更多详细语法请参考:
数据包结构
文件路径
数据包文件应存放于:
data/[namespace]/smartkeyprompts/key_prompts/[文件名].json
例如:
data/smartkeyprompts/smartkeyprompts/key_prompts/tacz.json
文件格式
{
"modid": "按键组标识符",
"vars": {
"变量名": "MVEL 表达式"
},
"entries": [
{
"when": {
"条件变量": "期望值或表达式"
},
"then": [
"动作表达式"
]
}
]
}
字段说明
modid
- 类型:
string - 说明:用于标识此数据包所属模组,一般来说,填入要适配的模组id即可。
vars
- 类型:
object - 说明:定义可复用变量,通过 MVEL 表达式实时计算,用于简化条件判断。
entries
- 类型:
array - 说明:定义了一组 “触发条件 - 执行动作” 的逻辑对。每一条目按数组顺序依次进行判断与执行,匹配后则执行相应的动作。
when
-
类型:
object -
说明:触发条件,所有键值对需同时满足。
-
支持:
- 精确匹配
- 通配符匹配(如
"immersive_aircraft:*") - 表达式匹配(如
"modLoaded": "true")
then
- 类型:
string[] - 说明:当
when条件满足时执行的动作表达式。