配置文件
配置文件结构如下
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,否则加载顺序混乱可能会导致脚本无法加载
