Skip to content

配置文件

配置文件结构如下

txt
CraneAttribute
├── gui 箱子UI文件目录
│    └── stats.yml 玩家属性统计界面
├── lang 语言文件目录
│    └── zh_CN.yml 语言文件
├── scripts 脚本目录
│    ├── attributes 属性脚本目录
│    ├── expansions 扩展脚本目录
│    ├── libs 脚本共享库目录
│    └── reads 读取组件脚本目录
├── config.yml 核心配置文件
├── attribute.yml 属性相关配置文件
├── read.yml 读取相关配置文件
└── extra.yml 扩展内容配置文件

提示

可在 scripts 文件夹中随意创建、嵌套文件夹

默认配置

YAML
# 数据库设置
sql:
  # 关闭则将数据储存至本地
  enable: false
  host: 127.0.0.1
  port: 3306
  user: root
  password: "123456"
  database: "crane_attribute"
  auto save: 12000

# debug 等级
debug level: 0

# 取消注册的系统属性类型
# 仅在插件启动时生效一次,若取消了属性类型的注册,对应类型的属性也无法被加载
# 无法取消 DEFAULT 类型,它是必须存在的
cancel system attribute type: [ ]

# 创建插件默认资源文件
create system resource file: true

# scripts 下 groovy 脚本加载的顺序
# 文件夹内的顺序按照首字母排序顺序加载
# 若互脚本之间相依赖较为复杂,且顺序混乱的情况下,可能会报错
groovy load sort:
  - "根目录"
  - "libs"
  - "expansions"
  - "attributes"
  - "reads"
YAML
# 这里的属性始终跟随脚本中的设置,脚本中的设置会覆盖这里的设置
# 所以不要在这里改
# 🔢=优先级 💪=战斗力 🔝=最大值
attributes: {}
# ———————————— 属性触发器设置 ————————————
trigger setting: {}
# ——————————————— 其他选项 ———————————————
options:
  # 1️⃣ 取消伤害粒子,依赖 ProtocolLib 插件实现
  cancel heart particle: false
  # 2️⃣ 取消饱食度消耗
  cancel food change: false
  # 3️⃣ 血量相关
  health:
    # 默认生命值
    base value: 20.0
    # 是否生命压缩
    # 如果你使用了其他血条HUD覆盖 建议关闭
    scaled: false
    # 生命压缩血量
    scale: 20
  # 4️⃣ 限制属性的世界
  # 属性触发逻辑会正常触发,只是性值无论如何都会为 0
  # 属性值为 0 是指属性被临时屏蔽了,操作属性源后会在切换到非限制世界后生效
  limit attribute worlds:
    - shop_world
  # 5️⃣ 显示 ActionBar
  action bar:
    # 是否开启
    open: false
    # 刷新间隔
    update interval: 20
    # 显示的文本
    text: "§f生命值 §a%ca_health%/%ca_maxhealth%💗"
YAML
# 数值读取组件的配置
read value: { }
# ———————————— 条件读取组件的配置 ———————————
read condition: { }
# ——————————— 属性映射读取组件的配置 ——————————
read mapping: { }
# ——————————————— 其他选项 ———————————————
options:
  # 1️⃣ 是否检测 lore
  parse lore: true
  # 2️⃣ 是否检测 nbt
  parse nbt: true
  # 3️⃣ nbt 设置
  nbt:
    # 是否开启 COMPOUND 格式的支持
    compound format: true
    # 是否开启 LIST 格式的支持
    list format: true
    # 检测 nbt 使用的标签
    tag:
      - CraneAttribute
      - 属性
  # 4️⃣ 拒绝提供属性检测的字符串
  refuse attribute string:
    - 此物品不提供属性
  # 5️⃣ 过滤符
  # 在高版本使用 §x 貌似也会正常显示成 &x,可以改成正常符号,或使用生僻字然后使用材质包等手段取消显示
  filter char:
    # 无视含有 {cancel} 的字符串
    cancel: "§-"
    # 只取字符串 {left} 的左边
    left: "§|"
    # 只取字符串 {right} 的右边
    right: "§>"
    # 通过 {spilt} 分割字符串
    spilt: "§/"
YAML
attribute sources:
  测试:
    # 属性
    attributes:
      - "生命值 100"
    # 到期时间 毫秒级时间戳 或 -1
    # 如果是一个过去的时间戳,那么将无效
    time: -1
    # 持续时间 毫秒,多少毫秒后失效
    # 如果配置了这个,那么按照这个时间计算失效时间,time 的配置将失效
    # 如果这个配置了 -1 或没有配置,那么按照 time 的配置计算失效时间
    duration: 10000
    # 是否持久化
    persist: false
    # 移除触发器
    remove triggers: []


bukkit attribute modifiers:
  测试:
    # 原版属性
    attribute: ARMOR
    # 在 1.21+,uuid 和 name(就是这里的key:测试) 改为了 NamespacedKey
    # 但为了兼容 1.21 以下版本,还是使用 uuid+name 来创建属性修饰符
    # 注意:在 1.21+,name 无论写什么都没用,默认都是 uuid 的字符串,无法修改。
    # UUID格式 8-4-4-4-12,取值范围:0-9 a-f A-F
    uuid: "17480649-7600-4000-8000-000000000000"
    value: 10
    # 操作类型
    # ADD_NUMBER 直接给基础值加上(或减去)指定的数值。
    # ADD_SCALAR 在当前值基础上,增加“当前值 × 指定百分比”的数值。
    # MULTIPLY_SCALAR_1 在当前值基础上,乘以 (1 + 指定百分比),实现最终倍率加成。
    operation: ADD_NUMBER

脚本目录

scripts 目录中**,可以存入 .js 和** .groovy 文件或任何文件夹

这个里面的文件均会动态编译并加载到 JVM 中,可以在其他脚本文件和此目录下的文件相互调用

脚本文件虽然可以随便创建,随便放,但是还是建议按照不同的文件类型(功能)区分,否则可能混淆文件,不方便管理

需要注意在 config.yml 中根据实际需求配置 groovy load sort,否则加载顺序混乱可能会导致脚本无法加载