Skip to content

GroovyValueReader - 数值读取器基类

本篇由 AI 生成

📖 概述

GroovyValueReader 是从物品 Lore、名称等配置中提取属性值的抽象基类,继承自 Kotlin 核心的 ValueReader 类。它用于解析物品描述中的数值信息并转换为属性系统可识别的数据格式。

🎯 核心功能

  • 配置管理:自动管理读取器在配置文件中的路径和优先级
  • 正则提取:提供便捷的正则表达式数值提取工具
  • 缓存支持:预留缓存机制扩展点以提升性能
  • 标准化接口:统一数值读取器的实现规范

📝 类定义

groovy
@CompileStatic
abstract class GroovyValueReader extends ValueReader {
    
    String name                    // 读取器名称
    String configKey               // 配置键名
    int priority                   // 执行优先级
    List<ConfigSetting> settingConfig  // 配置项列表
    
    // 构造函数
    GroovyValueReader(String name, int priority) {
        // ...
    }
}

💡 使用示例

groovy
import scripts.libs.GroovyValueReader
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.read.data.ReadValueResult

class AttackValueReader extends GroovyValueReader {
    
    AttackValueReader() {
        super("attack_value", 10)
    }
    
    @Override
    ReadValueResult read(ReadableLine readableLine, AttributeData data, AttributeSource attributeSource) {
        // 实现处理逻辑
        return new ReadValueResult(0.0D, false)
    }
}

🔧 核心方法

extractValues()

从配置行中提取数值,支持两种模式:

groovy
// 使用默认数值正则
List<String> extractValues(ReadableLine readableLine, List<String> readFormat)

// 使用自定义数值正则
List<String> extractValues(ReadableLine readableLine, List<String> readFormat, String valueRegex)

🔧 返回值说明

返回类型说明
ReadValueResult包含属性ID和解析后的数值
null表示该行不匹配此读取器规则

📌 注意事项

  1. 正则表达式:确保正则表达式能正确匹配目标格式
  2. 异常处理:解析数值时注意处理 NumberFormatException
  3. 优先级设置:合理设置 priority 避免冲突
  4. 空值检查:始终检查 extractValues 的返回值是否为 null