GroovyConditionReader - 条件读取器基类
本篇由 AI 生成
📖 概述
GroovyConditionReader 是判断条件是否满足的抽象基类,继承自 Kotlin 核心的 ConditionReader 类。它用于解析配置中的条件表达式(如"血量需求: 50~100"),并根据上下文数据判断条件是否成立。
🎯 核心功能
- 条件解析:从配置行中提取条件参数
- 布尔判断:返回条件是否成立的布尔值
- 键名管理:通过
key字段标识条件类型 - 消息反馈:支持在条件不满足时向玩家发送提示信息
📝 类定义
groovy
@CompileStatic
abstract class GroovyConditionReader extends ConditionReader {
String name // 读取器名称
String configKey // 配置键名
int priority // 执行优先级
String key // 条件键名标识
List<ConfigSetting> settingConfig // 配置项列表
// 构造函数
GroovyConditionReader(String name, int priority, String key) {
//...
}💡 使用示例
groovy
import scripts.libs.GroovyConditionReader
import cn.org.bukkit.craneattribute.api.read.ReadableLine
import cn.org.bukkit.craneattribute.api.attribute.data.AttributeData
import cn.org.bukkit.craneattribute.api.attribute.source.AttributeSource
import cn.org.bukkit.craneattribute.core.attribute.data.PlayerAttributeData
class HealthConditionReader extends GroovyConditionReader {
List<String> readFormat = Arrays.asList("{key}:\\s*@value")
HealthConditionReader() {
super("health_condition", 10, "血量需求")
}
@Override
protected boolean read(ReadableLine readableLine, AttributeData data, AttributeSource attributeSource) {
// 实现处理逻辑
return true
}
}🔧 核心方法
condition() - 公共入口
groovy
boolean condition(ReadableLine readableLine, AttributeData data, AttributeSource attributeSource)默认委托给 read() 方法,可重写以添加日志或前置校验。
extractValues() - 数值提取
groovy
// 使用默认正则
List<String> extractValues(ReadableLine readableLine, List<String> readFormat)
// 使用自定义正则
List<String> extractValues(ReadableLine readableLine, List<String> readFormat, String valueRegex)🔧 返回值说明
| 返回值 | 含义 |
|---|---|
true | 条件满足,允许继续执行 |
false | 条件不满足,阻止后续操作 |
📌 注意事项
- 非玩家实体:对于非玩家实体,通常返回
true以避免阻塞 - 性能考虑:避免在条件判断中执行耗时操作
- 用户友好:条件不满足时提供清晰的提示信息
- 容错处理:处理解析失败的情况,避免崩溃
