Skip to content

配置说明

LyCharging 的配置分为全局配置、怪物组配置和充能方案配置。修改后可使用 /lycn reload 重载。

涉及前置插件加载、服务端版本适配或 NBT 兼容问题时,应重启服务器,不要只依赖重载。

配置文件

文件 / 目录用途
config.yml设置识别字符、在线充能任务、公式边界、DragonCore 槽位接管和全局消息。
charge/存放充能方案。插件会递归读取目录内所有 .yml 文件。
charge/示例充能道具.yml默认示例文件,每次重载都会被覆盖。需要使用时应先复制为其他文件。
怪物组配置.yml把 MythicMobs 怪物 ID、自定义实体名称归入怪物组。

同一个充能方案文件可以包含多个顶层节点,每个顶层节点都是独立的充能 ID。

config.yml

默认配置如下:

yaml
match-key: '§l§y§c§n'

online-gain-exp-interval: 3
sync-online-task-enable: true

calculate-key-left: '<'
calculate-key-right: '>'

dragoncore-slot-control: true

message:
  CHARGE_GET_EXP: '§7你的[{item}§7]获得了 §6{exp}§7(+{extra_exp}) 点充能经验.'
  CHARGE_LEVEL_UP: '§7你的[{item}§7]升到了 §6{level}级!'

全局节点

节点类型默认值说明
match-key字符串§l§y§c§n插件附加在等级 lore 后的识别字符,用于定位和替换充能 lore。已有物品也会保存该标记,不了解用途时不要修改。
online-gain-exp-interval整数3在线充能任务的执行间隔,单位为秒。
sync-online-task-enable布尔值true是否在服务器主线程执行在线充能任务。关闭后会改为异步任务,但项目配置明确提示可能产生物品复制风险。
calculate-key-left字符串<lore 公式的左边界。
calculate-key-right字符串>lore 公式的右边界。
dragoncore-slot-control布尔值true是否由 LyCharging 接管已注册 DragonCore 槽位的点击与物品写入,用于避免部分情况下点击槽位复制物品。未配置时默认开启。
message.CHARGE_GET_EXP字符串见默认配置全局获得充能经验消息。充能方案未设置同名消息时使用该内容。
message.CHARGE_LEVEL_UP字符串见默认配置全局升级消息。充能方案未设置同名消息时使用该内容。

全局消息变量

变量可用消息说明
{item}获得经验、升级充能物品的显示名。
{exp}获得经验本次基础充能经验。
{extra_exp}获得经验本次经验加成产生的额外经验。
{level}升级升级后的等级。
{loop_count}获得经验、升级该物品已经完成的循环充能次数。
{loop_count_max}获得经验、升级当前充能方案允许的最大循环次数。

怪物组配置.yml

怪物组用于集中管理 kill 经验来源需要匹配的怪物名称或 MythicMobs 内部 ID。

yaml
怪物组1:
  - '比克大魔王'
  - '孙悟空·卡卡罗特'
怪物组2:
  - '魔人布欧'

在充能方案中写入:

yaml
gain-exp:
  1-10:
    - 'kill:怪物组1:1'

玩家击杀属于 怪物组1 的任意目标时,对应物品获得 1 点充能经验。

kill 还支持两个特殊目标:

目标说明
player击杀任意玩家。
*匹配任意能够被击杀监听识别的怪物。

MythicMobs 同时适配 4.x 与 5.x 的死亡事件。击杀者可以是玩家,也可以是拥有玩家主人的狼。项目还包含对部分模组实体和 CustomNPCs 实体名称的识别。

charge/ 充能方案

默认示例文件 charge/示例充能道具.yml 会在每次重载时强制覆盖。不要直接在该文件中保存正式配置,应复制并重命名,例如:

text
charge/武器充能.yml
charge/饰品充能.yml

charge/ 支持子目录,插件会递归载入其中所有以 .yml 结尾的文件。

完整结构

yaml
示例充能道具:
  slot:
    - 'Origin#MainHand'

  match-name:
    - 'contain@充能道具1'
    - 'equals@充能道具2'

  init-lore: 'equals@&7充能进度未开启'
  max-level: 10

  charge-exp-overflow-enable: false
  charge-loop-enable: false
  charge-loop-max: 0

  gain-exp:
    1-10:
      - 'kill:怪物组1:1'
      - 'online:1'
      - 'llexp:0.01'
      - 'item:&6充能核心:1'
      - 'mcitem:DIAMOND:1'

  condition:
    - 'permission:{充能.权限}'

  level-exp:
    1-10: '(1+{level}*{level})*5'

  level-lore:
    1-10:
      - '&7当前等级: &e{level} &7/ {level_max}'
      - '&7当前经验: &e{exp_now} &7/ &e{exp_next}'

  lore-black-list:
    - '&7此物品无法被充能'

  lore-get-value:
    '变量1':
      default-value: 1
      lore-formula: '&7充能个体值: <value>'

  message:
    CHARGE_GET_EXP: '§7你的[{item}§7]获得了 §6{exp}§7(+{extra_exp}) 点充能经验.'
    CHARGE_LEVEL_UP: '§7你的[{item}§7]升到了 §6{level}级!'

  send-charge-exp-message: true
  exp-addition-placeholder: ''

  permanent-lore: {}
  level-reward: {}

基础匹配节点

节点必需默认值说明
slot自动检查该充能物品的槽位列表。击杀、在线、等级经验转换和管理指令按此列表查找物品。
match-name可匹配的物品显示名列表。
init-lore未初始化物品必须具有的初始 lore。第一次获得正数经验时,这一行会被等级 lore 替换。
max-level最大等级。必须与 level-explevel-lore 和奖励配置保持一致。

slot 为空不会自动检查任意槽位。因为自动经验来源会遍历此列表,空列表表示这些来源没有可处理的槽位。玩家在原版生存背包或创造背包中使用材料点击充能物品时,不依赖 slot 列表。

已经初始化的物品会写入对应充能 ID。之后再次匹配时,会优先按该 ID 绑定原方案,避免多个同名方案之间串用配置。

名称与初始 lore 匹配

match-nameinit-lore 支持以下前缀:

前缀说明
contain@文本目标内容包含指定文本时匹配。
equals@文本目标内容与指定文本完全相同时匹配,忽略大小写。

示例:

yaml
match-name:
  - 'contain@充能武器'
  - 'equals@&6远古长剑'

init-lore: 'equals@&7充能进度未开启'

颜色符号可以使用 &,读取配置时会转换为 §

插件只处理具有自定义显示名和 lore 的物品。数量大于 1 的充能物品不会被自动充能、管理指令充能或材料点击充能。

槽位格式

来源格式说明
DragonCoreDragonCore#槽位名读取 DragonCore 已注册槽位。
GermPluginGermPlugin#槽位名读取 GermPlugin 槽位。当前服务端初始化代码没有注册 GermPlugin 材料点击监听。
APInventoryAPInventory#分页ID#槽位ID槽位 ID 按示例为 053
LyInventoryLyInventory#背包ID#类型读取旧版 LyInventory 背包。
LyInventoryReloadLyInventoryReload#背包ID#类型读取重置版 LyInventory 背包。
YeeJewelryYeeJewelry#背包ID#槽位ID读取 YeeJewelry 饰品槽位。
原版主手Origin#MainHand玩家主手。
原版副手Origin#OffHand玩家副手。
旧版原版主手Origin2#MainHand使用旧版 Bukkit 主手接口读取物品。
原版头盔Origin#Helmet玩家头盔栏。
原版胸甲Origin#ChestPlate玩家胸甲栏。
原版护腿Origin#Legging玩家护腿栏。
原版靴子Origin#Boots玩家靴子栏。
原版背包Minecraft#槽位ID按 Bukkit 背包槽位编号读取物品。默认示例标注范围为 036

示例:

yaml
slot:
  - 'Origin#MainHand'
  - 'Origin#OffHand'
  - 'DragonCore#武器槽'
  - 'APInventory#饰品#3'

使用某个扩展背包或槽位来源前,服务器必须安装对应插件并保证其 API 可用。

经验来源 gain-exp

gain-exp 按当前等级选择可用的经验来源。等级键可以是单个等级,也可以是闭区间。

yaml
gain-exp:
  1-5:
    - 'kill:怪物组1:1'
    - 'online:1'
  6:
    - 'kill:*:2-4'
  7-10:
    - 'llexp:0.01'
    - 'item:&6充能核心:5'

当多个等级段同时覆盖当前等级时,插件使用遍历时首先匹配到的配置。不要编写互相重叠的等级段。

来源格式

格式说明
kill:怪物组ID:经验击杀怪物组内目标时获得经验。怪物组可写 player*
online:经验每隔 online-gain-exp-interval 秒获得经验。
llexp:比例把 LyLevelPlus 或 LyGalaxyLevel 本次增加的有效经验按比例转换为充能经验。
item:物品显示名:经验在原版玩家背包中,用具有指定自定义显示名的物品左键点击充能物品。成功后消耗光标上的一个物品。
mcitem:数字ID:子ID:经验Minecraft 1.12.2 及以下使用的原版物品格式。
mcitem:材料枚举名:经验Minecraft 1.13.2 及以上使用的原版物品格式,例如 DIAMOND

llexp 同时用于 LyLevelPlus 和 LyGalaxyLevel 的经验增加事件。例如 llexp:0.01 表示原等级插件每增加 100 点经验,理论上转换为 1 点充能经验;最终结果会格式化为整数。

经验数值支持固定值或 最小值-最大值 随机范围:

yaml
gain-exp:
  1-10:
    - 'kill:怪物组1:1-3'
    - 'online:1'

已经初始化的物品允许从经验来源读取负数。负数会扣除充能经验,经验不足时可能回退等级,最低回到 10 经验。未初始化物品只有获得正数经验时才会开始充能。

使用物品点击充能时,只监听原版合成背包和创造背包中的左键光标交换操作。

充能条件 condition

条件在物品匹配时检查。未配置时不限制玩家。

yaml
condition:
  - 'permission:{充能.权限}'
  - 'nopermission:{充能.禁止}'
  - 'papi:{%player_level% >= 1}'
  - "papi:{'%player_name%' == '离渊'}"
格式说明
permission:{权限}玩家必须拥有指定权限。
nopermission:{权限}玩家必须没有指定权限。
papi:{表达式}先解析 PlaceholderAPI 变量,再判断表达式结果。

多个条件需要全部满足。条件检查会在方案匹配过程中频繁调用,充能方案较多时不要堆叠大量复杂 PlaceholderAPI 表达式。

PAPI 表达式

类型支持内容
数值比较>>=<<===!=
字符串比较==!=,字符串两侧需要使用相同类型的引号
逻辑运算&&、`
数学运算+-*/、圆括号
布尔值true

示例:

yaml
condition:
  - 'papi:{%player_level% >= 10 && %player_level% <= 50}'
  - "papi:{'%player_world%' != '资源世界'}"

使用 papi 条件、PAPI 变量或经验加成变量时,需要安装 PlaceholderAPI,并安装对应变量扩展。

等级经验 level-exp

level-exp 定义升级到下一等级需要的经验。

yaml
level-exp:
  1-10: '(1+{level}*{level})*5'

等级键支持单个等级和范围。计算指定目标等级的需求时,{level} 会替换为“目标等级减 1”。例如计算从 1 级升到 2 级所需经验时,公式中的 {level}1

可用内容:

内容说明
{level}当前升级阶段使用的等级数值,即目标等级减 1
{loop_count}已完成的循环次数。
{loop_count_max}最大循环次数。
PlaceholderAPI 变量先按玩家解析,再参与公式计算。
运算符支持 +-*/ 和圆括号。

示例:

yaml
level-exp:
  1-10: '(1+{level}*{level})*5'
  11-20: '100+{level}*20+{loop_count}*50'

某等级没有匹配到经验配置时,下一级需求返回 0,通常会被视为没有下一等级。若物品已经达到 max-level,是否还能继续接收经验由经验溢出和循环充能配置决定。

等级 lore level-lore

level-lore 定义各等级显示在物品上的动态 lore。初始化时会替换 init-lore,以后升级、扣除经验或循环时会重新生成。

yaml
level-lore:
  1-10:
    - '&7当前等级: &e{level} &7/ {level_max}'
    - '&7当前经验: &e{exp_now} &7/ &e{exp_next}'
    - '&7循环次数: &e{loop_count} &7/ &e{loop_count_max}'
    - '&f物理伤害: &e<1*{level}~%.0f>'
    - '&f暴击几率: &e<0.01*{level}~%.1f>%'

等级 lore 变量

变量说明
{level}当前物品等级。
{level_max}max-level 设置的最大等级。
{exp_now}当前等级已保存的经验。
{exp_next}下一级所需经验。不存在下一级经验配置时显示 Max
{loop_count}已完成的循环次数。
{loop_count_max}最大循环次数。
{v.变量ID}lore-get-value 读取出的固定 lore 数值,格式化为两位小数。
PlaceholderAPI 变量按物品所属玩家解析。

等级 lore 生成后会附加 match-key,插件依靠该标记删除旧的动态 lore 并写入新内容。

lore 公式

公式默认写在 <> 之间。为避免 Vue 解析,文档中的公式边界均放在代码中,例如 <1*{level}~%.0f>

yaml
level-lore:
  1-10:
    - '&f攻击力: &e<10+2*{level}~%.0f>'
    - '&f暴击率: &e<0.5*{level}~%.1f>%'

~ 后填写 Java 数字格式:

格式结果
%.0f不保留小数。
%.1f保留一位小数。
%.2f保留两位小数。

省略格式时默认使用 %.0f

公式支持整数、浮点数、+-*/ 和圆括号。若 <> 与其他插件或文本冲突,可以修改全局 calculate-key-leftcalculate-key-right,并同步修改所有充能方案中的公式写法。

经验溢出

yaml
charge-exp-overflow-enable: false
行为
false达到最高等级后,当前经验保存为 0。未达到最高等级时,多余经验仍会正常结转到后续等级。
true最高等级后仍允许保留经验,当前经验最多保存到 Java long 上限 9223372036854775807

该节点未配置时默认为 false

经验累加超过 long 上限时会固定在上限,不会继续溢出。

循环充能

yaml
charge-loop-enable: false
charge-loop-max: 0
节点默认值说明
charge-loop-enablefalse是否允许满级物品重新回到 1 级并继续结算经验。
charge-loop-max0最多可以完成的循环次数。负数会按 0 处理。

循环必须同时满足以下条件:

  • charge-loop-enabletrue
  • charge-loop-max 大于 0
  • 已完成循环次数小于最大循环次数。
  • 物品 lore 没有命中 lore-black-list
  • 物品达到最高等级后没有被 level-reward.replace 替换或删除。

进入下一轮时,等级重置为 1,循环次数增加,剩余经验继续结算。达到最大循环次数后不再重置,最高等级经验是否保留由 charge-exp-overflow-enable 决定。

循环变量可用于以下位置:

  • level-exp
  • level-lore
  • 全局或方案独立消息
  • permanent-lore 的 lore、NBT 和指令

黑名单 lore lore-black-list

当物品 lore 中任意一行包含黑名单文本时,该物品不会通过自动经验、材料点击等处理;循环充能也会被阻止。

yaml
lore-black-list:
  - '&7此物品无法被充能'
  - '&c禁止循环'

此节点按“包含文本”判断,代码不会解析 contain@equals@ 前缀。因此应直接填写 lore 文本,不要写成 equals@&7此物品无法被充能

颜色符号 & 会转换为 §

固定 lore 取值 lore-get-value

该功能从现有 lore 的固定位置提取数字,并转换为 {v.变量ID}

yaml
lore-get-value:
  '变量1':
    default-value: 1
    lore-formula: '&7充能个体值: <value>'
  '强化系数':
    default-value: 0
    lore-formula: '&7强化系数: <value>%'
节点说明
lore-get-value.变量ID自定义变量 ID,调用格式为 {v.变量ID}
default-value未找到对应 lore 或数字解析失败时使用的默认值,默认是 1.0
lore-formula固定 lore 格式,使用 <value> 标记需要提取数字的位置。

<value> 可以位于行尾,也可以位于左右固定文本之间。提取内容必须能够转换为数字。

示例物品 lore:

text
§7充能个体值: 1.25
§7强化系数: 15%

调用示例:

yaml
level-lore:
  1-10:
    - '&f最终攻击: &e<10*{v.变量1}*{level}~%.2f>'

该功能适合读取不会被充能系统替换的固定 lore。不要使用它套娃读取 level-lore 自身生成的动态内容。

经验加成 exp-addition-placeholder

yaml
exp-addition-placeholder: '%player_charge_bonus%'

该节点会先解析 PlaceholderAPI 和 {v.变量ID},然后把结果作为数学公式计算。每返回 1,表示增加 1% 额外充能经验。

yaml
exp-addition-placeholder: '%player_charge_bonus%+{v.强化系数}'

假设基础经验为 100,计算结果为 15,则额外经验为 15,实际增加 115 点。额外经验会格式化为整数,较小数值可能因取整而没有可见效果。

不需要时删除该节点或设置为空字符串:

yaml
exp-addition-placeholder: ''

独立消息 message

每个充能方案可以覆盖全局经验和升级消息。

yaml
message:
  CHARGE_GET_EXP: '§7[{item}§7]获得 §6{exp}§7(+{extra_exp}) 点经验,循环 {loop_count}/{loop_count_max}。'
  CHARGE_LEVEL_UP: '§7[{item}§7]升到 §6{level} §7级。'

未配置某个消息节点时,插件使用 config.yml 中的同名全局消息。

消息支持的变量与全局消息变量一致。

经验消息开关 send-charge-exp-message

yaml
send-charge-exp-message: true
说明
true发送 CHARGE_GET_EXP 消息。
false不发送获得充能经验消息。

未配置时默认 true。该开关只控制获得经验消息,不影响 CHARGE_LEVEL_UP 升级消息。

永久词条 permanent-lore

永久词条在物品升级到指定单个等级时触发。每个等级可以按权重抽取一个或多个结果,并写入 lore、NBT 或执行控制台指令。

yaml
permanent-lore:
  10:
    lore-put: 'next'
    locate-lore: '&7定位文本'
    spawn-count: '1-2'
    spawn-repeat: true
    generate-lore:
      攻击词条:
        weight: 20
        lore:
          - '&6攻击加成: <0.01*{level}~%.1f>'
        nbt:
          attack_bonus: '<0.01*{level}~%.1f>'
        command:
          - 'bc %player_name%为{item}抽取到了{lore}'
      生命词条:
        weight: 20
        lore:
          - '&a生命加成'
        command: []
      未抽中:
        weight: 20
        lore: 'none'
        command: []

永久词条节点

节点默认值说明
permanent-lore.等级触发等级,只支持单个整数等级。
lore-putnext对定位 lore 的处理方式。
locate-lore用于查找插入位置的完整 lore。未找到时默认定位到最后一行。
spawn-count1本级抽取次数,支持固定整数或 最小值-最大值
spawn-repeatfalse设为 true 时,本级多次抽取不会重复抽到同一个结果。
generate-lore本等级的随机结果池。
generate-lore.结果ID.weight抽取权重。小于或等于 0 的结果不会参与抽取。
generate-lore.结果ID.lore抽中后生成的 lore 列表。配置为 none 时不生成 lore。
generate-lore.结果ID.nbt可选抽中后写入的字符串 NBT 节点。
generate-lore.结果ID.command可选抽中后由控制台执行的指令列表。

lore-put 模式

行为
next插入到定位 lore 的下一行。
last插入到定位 lore 的上一行。
replace第一次生成时替换定位 lore;同级继续生成的其他 lore 插入到后面。
remove删除定位 lore,不进行随机词条抽取。

抽取次数

yaml
spawn-count: '1'

表示固定抽取一次。

yaml
spawn-count: '1-3'

表示本次随机抽取一至三次。范围两端写反时,插件会自动交换最小值和最大值;负数会限制为 0

抽取次数上限不能超过 generate-lore 中的结果数量。超过时插件会限制范围,并在控制台输出提示。

spawn-repeat: true 时,多次抽取会排除本级已经抽中的结果。可用结果耗尽后,本级后续抽取会提前结束。

权重

每个可用结果的概率为:

text
当前结果权重 / 所有可用结果的总权重

例如三个结果的权重均为 20,每个结果的概率都是三分之一。权重不需要相加为 100

永久词条变量

变量可用位置说明
{level}lore、NBT、指令触发词条时的等级。
{loop_count}lore、NBT、指令当前已完成循环次数。
{loop_count_max}lore、NBT、指令最大循环次数。
{v.变量ID}lore、NBT固定 lore 取值。
{random:最小值-最大值}lore、NBT生成范围内的随机小数,结果保留两位小数。
PlaceholderAPI 变量lore、NBT、指令按玩家解析。
{item}指令物品显示名。
{lore}指令本次生成的 lore 列表文本。

{random:最小值-最大值} 的最小值大于最大值时会自动交换。例如:

yaml
lore:
  - '&6随机属性: {random:1.5-3.5}'

永久词条中的 lore 与 NBT 同样支持由 calculate-key-leftcalculate-key-right 定义的公式。

当结果的 lorenone 时,该结果不会写入 lore 和 NBT,但仍会执行其 command

等级奖励 level-reward

等级奖励在物品升到指定等级后触发,支持单个等级或等级范围。

yaml
level-reward:
  '1-9':
    replace: 'none'
    command: []
  '10':
    replace: 'MythicMobs#毕业的神器'
    command:
      - 'bc %player_name%充能物品完毕~'
节点说明
level-reward.等级或范围触发等级,例如 '10''1-9'
replace达到等级后是否替换当前物品。
command由控制台执行的指令列表,会先解析 PlaceholderAPI。

replace 格式

说明
none不替换物品。
'null'把物品替换为空气,即删除当前物品。建议保留引号,确保 YAML 按字符串读取。
MythicMobs#物品ID替换为 MythicMobs 物品。
NeigeItems#物品ID替换为 NeigeItems 物品。
SX-Item#物品ID替换为 SX-Item 物品。

使用扩展物品来源前必须安装对应插件。替换或删除发生后,本次充能处理会直接返回替换结果,原物品不会再进入下一轮循环充能。

等级范围存在重叠时,插件使用首先匹配到的奖励配置,应避免重复覆盖同一等级。

配置优先级与处理顺序

一次正数经验结算的主要流程如下:

  1. 按物品绑定的充能 ID或名称、条件匹配充能方案。
  2. 检查初始 lore、等级 NBT、物品数量和黑名单 lore。
  3. 计算基础经验与 exp-addition-placeholder 额外经验。
  4. 增加当前经验并发送经验消息。
  5. 按当前等级需求连续升级,结转多余经验。
  6. 触发该等级的 permanent-lore
  7. 触发该等级的 level-reward 指令和物品替换。
  8. 满级且满足条件时进入下一轮循环。
  9. 重新生成 level-lore 并写入等级、经验、充能 ID和循环次数 NBT。

如果溢出经验使物品连续提升多个等级,但升级后新等级没有配置本次使用的经验来源,插件会停止本次继续升级,并把当前经验清零。因此需要连续结算的经验来源,应覆盖所有相关等级。

重载注意事项

使用以下指令重载配置:

text
/lycn reload

重载会执行以下操作:

  • 重新读取 config.yml
  • 重新载入全局消息和公式边界。
  • 重新载入 怪物组配置.yml
  • 清空并重新读取 charge/ 中的所有 .yml 文件。
  • 重启在线充能定时任务。
  • 强制覆盖 charge/示例充能道具.yml

新增正式充能方案时,必须复制示例文件并使用其他文件名,否则下一次重载会丢失对默认示例文件的修改。