配置说明
LyDropReload 使用 config.yml 管理基础设置,使用 drop/ 目录下的 YAML 文件管理掉落组。配置重载时会重新读取这些文件,并重新注册掉落组、标记公告、全服标记限制和个人标记限制。
配置文件
| 文件 / 目录 | 用途 |
|---|---|
config.yml | 经验指令、消息、数据保存、MySQL、每日金币上限、掉宝率、自动入包、怪物与掉落组分配等基础设置。 |
drop/*.yml | 掉落组配置,包括掉落对象、条件、分组、经验、货币、物品、指令、公告和标记限制。 |
taglimit.yml | 插件运行时保存全服标记限制的当前剩余次数。 |
playerdata/<玩家 UUID>.yml | 未使用 MySQL 时保存玩家每日金币数据和个人标记限制数据。 |
drop/示例掉落配置.yml 会在重载时生成,文件仅供参考,插件不会读取该示例文件作为实际掉落组配置。
重载配置
管理员或 OP 可以使用 /ldr reload 重载主配置和掉落组配置。重载时会重新读取 config.yml 和 drop/ 目录下的其他 .yml 文件。
标记限制还可以使用以下指令单独重置:
| 指令 | 作用 |
|---|---|
/ldr tagreload | 重载掉落组中的全服标记限制,并将全服标记剩余次数重置为上限。 |
/ldr playertagreload | 重载掉落组中的个人标记限制,并将在线玩家的个人标记剩余次数重置为上限。 |
/ldr ecoreload | 清空玩家今日已获得的金币记录。 |
config.yml
经验指令
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
exp-command | 字符串 | ll addexp-nomsg %player_name% {exp} | 经验掉落使用的控制台指令模板。{exp} 会替换为本次计算出的经验值,PlaceholderAPI 变量也会在执行前解析。 |
不使用经验插件时,可以将 exp-command 留空或删除。只有配置了有效的 exp-command 且本次经验大于 0 时,插件才会执行经验指令。
消息设置
消息颜色支持使用 & 颜色代码。物品消息还会替换 {item} 和 {count} 等占位内容。
| 配置项 | 说明 |
|---|---|
message.item | 获得物品时发送的消息。支持 {item}、{count}。 |
message.exp | 获得经验时发送的消息。支持 {exp}。 |
message.eco | 获得金币时发送的消息。支持 {value}、{remain}。当金币不受每日上限限制时,{remain} 显示为 ∞。 |
message.eco-limit-reached | 本次金币掉落触发每日上限时发送的消息。 |
message.point | 获得点券时发送的消息。支持 {value}。 |
drop-add-message | 掉宝率加成额外触发掉落时发送的消息列表。支持 {count},表示当前是第几次额外触发。 |
drop-to-inventory-message | 玩家切换为背包优先时发送的消息。 |
drop-to-warehouse-message | 玩家切换为仓库优先时发送的消息。 |
示例:
yaml
message:
item: '&7你获得了 {item}x{count}.'
exp: '&7你获得了 &a{exp}点经验.'
eco: '&7你获得了 &e金币x{value}&7,今日剩余可获得: &e{remain}&7.'
eco-limit-reached: '&c你今日可获得的掉落金币已达上限。'
point: '&7你获得了 &b点券x{value}.'
drop-add-message-enable: true
drop-add-message:
- '&7第{count}次触发爆率加成! 以下为本次爆率加成触发掉落:'玩家使用 /ldr hide 可以切换掉落消息的显示状态。隐藏状态只影响该玩家的掉落消息,不会删除实际掉落。
数据保存
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
auto-save-interval | 整数 | 60 | 自动保存间隔,单位为秒。用于保存玩家数据和全服标记限制数据。小于等于 0 时会按 60 秒处理。 |
tag-limit-debug-message | 布尔值 | false | 是否在控制台输出标记限制扣减调试信息,包括玩家、标记、个人剩余次数和全服剩余次数。 |
tag-refresh-messgae | 布尔值 | true | 是否在控制台提示标记公告注册、标记限制注册和限制刷新消息。配置键名称中的 messgae 拼写必须保持不变。 |
MySQL 数据库
MySQL 前置要求
只要启用 MySQL 存储,就必须安装 LyMySQLCore,并确认它已成功连接数据库。LyMySQLCore 未加载或连接失败时,本插件的 MySQL 数据读取、保存、同步及相关玩家数据功能不会生效。
启用 MySQL 后,插件会使用数据库保存玩家数据,并初始化以插件名称命名的数据表。玩家数据包括每日金币记录和个人标记限制数据。
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
mysql.enable | 布尔值 | false | 是否启用 MySQL 玩家数据存储。启用后需要重启服务器。 |
mysql.ip | 字符串 | 127.0.0.1 | MySQL 地址。 |
mysql.port | 整数 | 3306 | MySQL 端口。 |
mysql.databasename | 字符串 | mc2 | 数据库名称。 |
mysql.username | 字符串 | mc2 | 数据库用户名。 |
mysql.password | 字符串 | mc1234 | 数据库密码。 |
未启用 MySQL 时,玩家数据会保存到插件目录下的 playerdata/。全服标记限制的当前次数会保存到插件目录下的 taglimit.yml。
每日金币上限
eco-daily-limit 用于限制玩家每天通过掉落获得的 eco 金币数量。玩家每日金币记录会在本地时间每天 0 点刷新,也可以使用 /ldr ecoreload 手动清空当前记录。
| 配置项 | 类型 | 说明 |
|---|---|---|
eco-daily-limit.default | 整数 | 没有匹配任何权限时使用的每日上限。-1 表示不限制。 |
eco-daily-limit.permissions | 列表 | 按权限设置每日金币上限。每项包含 permission 和 value。 |
eco-daily-limit.permissions[].permission | 字符串 | 用于匹配玩家的权限。 |
eco-daily-limit.permissions[].value | 整数 | 匹配权限后的每日金币上限。-1 表示不限制。 |
权限规则按配置顺序读取。玩家可以匹配多条规则;普通正数上限取匹配规则中的较大值,匹配到 -1 时直接视为不限制。
示例:
yaml
eco-daily-limit:
default: -1
permissions:
- permission: 'ldr.eco.limit.10000'
value: 10000
- permission: 'ldr.eco.limit.5000'
value: 5000观察者模式
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
viewer-mode-can-get-drop | 布尔值 | true | 是否允许旁观者模式玩家参与掉落。设置为 false 时,world、server、nearby、nearby_random 和 participant 等掉落对象会排除旁观者模式玩家。 |
掉宝率加成
掉宝率属性按以下方式计算:每 100 点增加一次完整掉落判断,不足 100 的部分按百分比概率再增加一次。经验不会受到掉宝率加成影响。
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
drop-add-attribute-placeholder | 字符串 | 空字符串 | 全局掉宝率变量。配置后会覆盖默认的掉宝率变量名称,并通过 PlaceholderAPI 解析为数值。 |
drop-add-attribute-compatible-with-currency | 布尔值 | false | 是否让货币掉落也随掉宝率加成重复计算。 |
currency-add-attribute-placeholder | 节点 | 空 | 为指定货币设置独立的加成变量。变量解析结果会按百分比增加该货币数值。 |
currency-add-attribute-placeholder.<货币 ID> | 字符串 | 空 | 指定货币使用的 PlaceholderAPI 变量。 |
drop-add-message-enable | 布尔值 | true | 是否提示掉宝率加成触发消息。 |
drop-add-message | 字符串列表 | 见示例 | 掉宝率加成触发时发送的消息。 |
drop-add-attribute-mythicmob | 布尔值 | false | 是否让掉宝率加成影响 MythicMobs 的原生物品掉落。该功能只处理原生物品掉落,不处理经验、金币等效果。 |
drop-add-attribute-mythicmob-event | 布尔值 | false | MythicMobs 原生掉落受掉宝率加成额外处理时,是否再次对外调用 MythicMobs 掉落事件。 |
currency-add-attribute-placeholder 的键名就是货币 ID,例如 eco、point 或其他已接入的货币 ID:
yaml
drop-add-attribute-placeholder: ''
drop-add-attribute-compatible-with-currency: false
currency-add-attribute-placeholder:
eco: ''
point: ''
离渊商店重置版货币id: ''自动入包与仓库顺序
插件会按照当前玩家的入包模式处理物品:仓库优先时,先按照 custom-drop-index 尝试仓库;仓库无法接收时,如果启用了自动入包,则尝试玩家背包;背包也无法接收的部分会掉落到怪物死亡位置。未启用自动入包时,物品直接掉落到地面。
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
drop-to-inv | 布尔值 | true | 是否允许掉落物自动进入玩家背包。背包空间不足的部分会掉落到地面。 |
custom-drop-index | 字符串列表 | llwh、lyck、srp、ds | 仓库尝试顺序。只控制各仓库之间的尝试顺序,仓库是否可用由对应插件是否安装并启用决定。 |
drop-to-warehouse-command-enable | 布尔值 | true | 是否允许玩家使用 /ldr switch 在仓库优先和背包优先之间切换。 |
drop-to-inventory-message | 字符串 | 见示例 | 切换到背包优先时发送的消息。 |
drop-to-warehouse-message | 字符串 | 见示例 | 切换到仓库优先时发送的消息。 |
default-drop-to-warehouse | 布尔值 | true | 玩家登录时设置的默认入包状态。true 为仓库优先,false 为背包优先。 |
支持的仓库标识如下:
| 标识 | 对应仓库 | 生效条件 |
|---|---|---|
llwh | LyLootsWareHouse | 对应插件已启用,且仓库中存在该物品 ID。 |
lyck | LyWarehouse | 对应插件已启用,并且仓库接受该物品。 |
srp | YeeCore 的空间仓库 | YeeCore 已启用。 |
ds | StarStorage 默认仓库 | StarStorage 已启用,且玩家仓库缓存已加载。 |
示例:
yaml
drop-to-inv: true
custom-drop-index:
- 'llwh'
- 'lyck'
- 'srp'
- 'ds'
drop-to-warehouse-command-enable: true
drop-to-inventory-message: '&7已切换掉落优先进入: &b背包'
drop-to-warehouse-message: '&7已切换掉落优先进入: &6仓库'
default-drop-to-warehouse: true指令和调试提示
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
run-command-message | 布尔值 | true | 是否在控制台显示插件执行掉落指令的消息。 |
kill-entity-send-name | 布尔值 | false | OP 击杀怪物时,是否向 OP 玩家提示插件识别到的怪物 ID 或名称,适合排查怪物分配配置。 |
怪物与掉落组分配
插件支持两种分配方向。两种配置会同时参与匹配,匹配到的掉落组会合并处理,并去除重复掉落组。
monster-drop-allocation
以掉落组 ID 为键,为掉落组配置可触发的怪物名称或 MythicMobs 内部 ID。怪物名称匹配到列表后,会触发该掉落组。
* 可以匹配任意怪物。
yaml
monster-drop-allocation:
示例掉落组:
- '测试怪物'
- '无极789'
- '千斤哥'
- '西游哥'
- '*'drop-monster-allocation
以怪物名称或怪物 ID 为键,为该怪物配置要触发的掉落组 ID。
yaml
drop-monster-allocation:
牛马赫兹:
- '示例掉落组'普通实体使用实体名称匹配;启用 MythicMobs 时使用 MythicMobs 的内部 ID 匹配。配置的掉落组必须已经从 drop/ 目录成功加载。
drop/*.yml
每个掉落组以顶层键表示。顶层键是掉落组 ID,不是怪物 ID;怪物与掉落组的关系需要通过 config.yml 中的分配节点配置。
yaml
'示例掉落组':
drop-type: 'killer'
group-select:
当前等级:
- 'papi:{%player_level% >= 0 && %player_level% <= 10}'掉落对象:drop-type
drop-type 决定哪些玩家参与该掉落组的掉落判断。
| 值 | 说明 |
|---|---|
killer | 仅对击杀者执行掉落。 |
participant#<秒数> | 对在指定秒数内对实体造成过伤害的玩家执行掉落。 |
nearby#<范围> | 对实体附近指定范围内的玩家执行掉落。范围使用实体周围的 X、Y、Z 三轴范围。 |
nearby_random#<范围> | 从实体附近指定范围内的符合条件玩家中随机选择一名。 |
world | 对实体所在世界的玩家执行掉落。 |
server | 对服务器在线玩家执行掉落。 |
示例:
yaml
drop-type: 'participant#30'viewer-mode-can-get-drop 会影响除强制指定玩家掉落外的玩家筛选。nearby 模式是否强制加入击杀者由 config.yml 的 add-killer-to-the-nearby 控制。
掉宝率开关:use-drop-add-attribute
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
use-drop-add-attribute | 布尔值 | true | 是否允许当前掉落组受到掉宝率加成影响。设置为 false 时,该掉落组不会因掉宝率属性增加额外掉落判断。 |
drop-add-placeholder | 字符串 | 空字符串 | 当前掉落组专用的掉宝率变量。非空时优先使用该变量,否则使用 config.yml 中的全局变量。 |
条件:condition
condition 用于判断玩家是否可以参与当前掉落组。列表中的条件需要全部满足。
支持的条件格式:
| 格式 | 说明 |
|---|---|
permission:{权限节点} | 玩家必须拥有指定权限。 |
nopermission:{权限节点} | 玩家不能拥有指定权限。 |
papi:{表达式} | 先解析 PlaceholderAPI,再计算表达式。 |
yaml
condition:
- 'permission:{kill.测试怪物}'
- 'papi:{%player_level% < 100}'分组判断:group-select
group-select 用于根据条件选择后续的经验、货币和物品掉落分组。每个分组由一个名称和条件列表组成;条件全部满足时选择该分组。配置至少需要存在可用的 group-select 分组,否则无法继续匹配该掉落组。
支持的条件格式与 condition 相同:
yaml
group-select:
当前等级:
- 'papi:{%player_level% >= 0 && %player_level% <= 10}'
高于等级:
- 'papi:{%player_level% > 10}'后续节点会使用相同的分组名称,例如 exp.当前等级、currency.当前等级 和 drop.当前等级。
经验掉落:exp
exp 按分组配置经验数值。可以填写固定值,也可以填写最小值和最大值范围。
| 配置项 | 说明 |
|---|---|
exp.<分组名> | 固定经验值或 最小值-最大值 随机范围。 |
yaml
exp:
当前等级: '50-100'
高于等级: '12-25'经验最终通过 config.yml 的 exp-command 执行。未配置经验指令时,经验不会发放。
货币掉落:currency
currency 按分组配置货币 ID 和数值。数值可以是固定值,也可以是 最小值-最大值 随机范围。
| 货币 ID | 说明 |
|---|---|
eco | 通过 Vault 发放金币,并受到 eco-daily-limit 每日上限限制。 |
point | 通过 PlayerPoint 发放点券。 |
CX_<变量 ID> | 通过 CraftX 变量接口增加指定变量。变量当前值必须是合法数字。 |
| 其他货币 ID | 当 LyShopReload 已启用时,交给 LyShopReload 发放对应货币。 |
yaml
currency:
当前等级:
eco: '50-100'
point: '5-10'
CX_变量id: '0-5'
高于等级:
eco: '5-10'
point: '1'货币是否受到全局掉宝率加成由 config.yml 的 drop-add-attribute-compatible-with-currency 控制;具体货币的加成变量由 currency-add-attribute-placeholder.<货币 ID> 配置。
物品和指令掉落:drop
drop 按分组配置三类内容:
| 配置项 | 说明 |
|---|---|
drop.<分组名>.command | 当前分组成功处理后执行的指令列表,不参与物品概率判断。 |
drop.<分组名>.default | 每一项独立进行概率判断的掉落列表。 |
drop.<分组名>.weight | 按权重从列表中选择一项的掉落列表。 |
yaml
drop:
当前等级:
command:
- 'tell %player_name% 你触发了[当前等级]组掉落'
default:
- 'mm{材料1#1} 0.5 标记1'
- 'ni{材料1#1} 0.5 标记1'
- 'si{材料1#1} 0.5'
- 'af{材料1#1} 0.5'
- 'cmd{mm i give %player_name% 材料3 1} 0.5'
weight:
- 'mm{上般材料#1} 100 标记4'
- 'ni{超等材料#1} 50 标记5'
- 'cmd{mm i give %player_name% 极品材料 1} 20 标记6'掉落条目格式
普通物品掉落的基本格式为:
text
前缀{物品ID#数量} 概率 [标记ID]| 前缀 | 对接物品库 | 说明 |
|---|---|---|
mm | MythicMobs | 获取 MythicMobs 物品。兼容项目检测到的 MythicMobs 4 和 MythicMobs 5 接口。 |
lis | MythicMobs | 使用 MythicMobs 物品接口获取物品。 |
ni | NeigeItems | 获取 NeigeItems 物品。 |
si | SX-Item | 获取 SX-Item 物品。插件检测 SX-Item 或 SXItem 是否启用。 |
nf | NeonFlash | 获取 NeonFlash 物品。 |
af | AzureFlow | 获取 AzureFlow 虚拟物品。 |
cmd | 控制台指令 | 执行花括号中的控制台指令,不生成物品。 |
数量 支持固定数值或范围,例如 1、1-3。default 中的概率支持四则运算表达式;weight 中的第二个参数为整数权重,不是概率。
cmd 条目示例:
text
cmd{mm i give %player_name% 材料3 1} 0.5drop.<分组名>.command 中的指令可以直接写普通指令,也兼容 cmd{指令} 格式。配置中的指令会解析 PlaceholderAPI 变量;以 [op] 开头的指令会临时以 OP 身份执行。
掉落物品校验
重载掉落组时,插件会检查 default 和 weight 中的 mm、lis、ni、si、nf、af 条目。如果对应物品库已启用且物品 ID 不存在,插件会在控制台输出无效物品配置的位置。对应物品库未启用时,插件不会据此判断物品不存在。
全服公告:notice
notice 为标记 ID 配置公告内容。当带有该标记的掉落成功时,普通文本会发送给在线玩家,cmd{指令} 会执行指令。
yaml
notice:
标记4:
- '&7惊为天人! &e%player_name% &7击败了测试怪物时意外获得一块&b上等材料&7!!'
- 'cmd{tell %player_name% 恭喜你获得了上等材料x1}'公告文本支持 PlaceholderAPI。公告指令和掉落指令会替换以下实体与玩家位置变量:
| 变量 | 说明 |
|---|---|
{t_world} | 被击杀实体所在世界。 |
{t_x}、{t_y}、{t_z} | 被击杀实体的坐标。 |
{p_world} | 掉落玩家所在世界。 |
{p_x}、{p_y}、{p_z} | 掉落玩家的坐标。 |
全服标记限制:tag-limit
tag-limit 按标记 ID 设置全服共享的掉落次数。标记被成功消耗后,全服剩余次数减少;达到刷新周期后恢复到 count。
| 配置项 | 类型 | 说明 |
|---|---|---|
tag-limit.<标记 ID>.count | 整数 | 每个刷新周期内全服最多成功掉落次数。 |
tag-limit.<标记 ID>.update-time | 整数 | 刷新周期,单位为秒。 |
yaml
tag-limit:
标记4:
count: 3
update-time: 3600
标记5:
count: 2
update-time: 3600全服标记限制的当前剩余次数会保存到 taglimit.yml。使用 /ldr tagreload 会重新载入配置并将全服标记次数重置为上限。
个人标记限制:player-tag-limit
player-tag-limit 为每名玩家单独计算标记剩余次数。配置结构与 tag-limit 相同,但不会影响其他玩家。
| 配置项 | 类型 | 说明 |
|---|---|---|
player-tag-limit.<标记 ID>.count | 整数 | 每名玩家每个刷新周期内最多成功掉落次数。 |
player-tag-limit.<标记 ID>.update-time | 整数 | 个人限制刷新周期,单位为秒。 |
yaml
player-tag-limit:
标记4:
count: 2
update-time: 3600
标记5:
count: 1
update-time: 3600个人标记限制会随玩家数据保存。启用 MySQL 时保存到 MySQL;未启用 MySQL 时保存到玩家对应的 YAML 数据文件。使用 /ldr playertagreload 会重新载入配置,并将在线玩家的个人标记剩余次数重置为上限。
同一掉落条目同时配置标记时,插件会先检查全服限制和个人限制;只有两者都允许,掉落成功后才会扣减对应次数。掉宝率加成产生的额外掉落也会参与标记限制扣减。
配置相关变量
启用 PlaceholderAPI 后,插件注册 ldr 变量:
| 变量 | 返回值 |
|---|---|
%ldr_drop_to% | 当前玩家的自动入包状态:warehouse 或 inventory。 |
%ldr_eco_daily_limit% | 玩家今日金币上限,-1 表示不限制。 |
%ldr_eco_daily_got% | 玩家今日已经获得的金币数量。 |
%ldr_eco_daily_remain% | 玩家今日剩余可获得的金币数量,-1 表示不限制。 |
%ldr_tag_<标记 ID>% | 全服标记剩余次数。 |
%ldr_tag_max_<标记 ID>% | 全服标记最大次数。 |
%ldr_player_tag_<标记 ID>% | 当前玩家的个人标记剩余次数。未配置或不存在时返回错误文本。 |
%ldr_player_tag_max_<标记 ID>% | 当前玩家的个人标记最大次数。未配置或不存在时返回错误文本。 |
例如:
text
%ldr_tag_标记4%
%ldr_player_tag_标记4%常见配置问题
修改 MySQL 配置后数据没有生效
确认 mysql.enable: true,安装并启用 LyMySQLCore,并确认数据库连接成功。数据库连接失败时,MySQL 数据读取、保存和同步不会生效。
掉落组已经创建但没有掉落
检查以下内容:
- 掉落组文件位于插件的
drop/目录,并且文件扩展名为.yml。 - 顶层掉落组 ID 已在
config.yml的monster-drop-allocation或drop-monster-allocation中分配。 condition条件全部满足。group-select至少匹配一个分组。- 匹配到的分组同时存在于
drop节点。 - 物品前缀、物品 ID、数量和概率格式正确。
nearby 掉落没有击杀者
确认 config.yml 中的 add-killer-to-the-nearby 已设置为 true。启用后,击杀者会被强制加入 nearby 掉落对象,即使击杀者位于指定范围之外。
掉落物没有进入仓库
检查 custom-drop-index 中的仓库标识是否正确,并确认对应仓库插件已安装并启用。仓库无法接收物品时,插件会继续尝试后续仓库;所有仓库都失败后,再根据 drop-to-inv 决定进入背包或掉落到地面。
个人标记限制没有保存
个人标记限制依赖玩家数据保存。启用 MySQL 时必须确认 LyMySQLCore 已成功连接数据库;未启用 MySQL 时检查插件目录下的 playerdata/ 是否可写。