掉落重置版 LyDropReload
MySQL 前置要求
启用 MySQL 存储时,必须安装 LyMySQLCore,并确认它已成功连接数据库。否则本插件的 MySQL 数据读取、保存、同步及玩家登录相关功能不会生效。
LyDropReload 用于重写怪物死亡后的奖励分配流程。管理员可以把怪物绑定到独立掉落组,再根据玩家条件选择掉落分组,发放经验、金币、点券、自定义货币、物品库物品或执行指令。
插件支持把一次击杀的奖励分配给击杀者、近期参战者、附近玩家、随机附近玩家、当前世界玩家或全服在线玩家。掉落还可以受到掉宝率属性、货币加成、全服标记次数、玩家个人标记次数和每日金币上限影响。
插件信息
| 项目 | 内容 |
|---|---|
| 插件名 | LyDropReload |
| 中文名 | 掉落重置版 |
| 插件版本 | 1.1.3 |
| 作者 | 离渊 |
| 主命令 | /ldr |
| Java 版本 | Java 8 |
| 可确认构建目标 | Paper API 1.16.5 |
| 数据存储 | 本地 YAML;可选 MySQL |
服务端版本说明
项目构建文件明确使用 Paper API 1.16.5。代码中包含旧版实体名称和 MythicMobs 4、5 的兼容处理,但项目没有提供完整的 Minecraft 支持版本范围,因此不能据此扩展声明其他服务端版本。
玩法与处理流程
怪物死亡后,插件会按以下顺序处理奖励:
- 根据 MythicMobs 内部 ID、普通实体自定义名称或配置的通配规则查找掉落组。
- 根据掉落组的
drop-type确定本次参与掉落的玩家。 - 检查掉落组的玩家权限和 PlaceholderAPI 条件。
- 通过
group-select为每名玩家选择掉落分组。 - 计算掉宝率带来的额外掉落次数。
- 处理独立概率掉落、权重掉落、经验、货币和指令。
- 检查全服标记限制、玩家个人标记限制及每日金币上限。
- 根据玩家状态把物品优先发往仓库、背包或怪物死亡位置。
同一怪物可以触发多个掉落组,同一掉落组也可以分配给多个怪物。使用 monster-drop-allocation 时还可以通过 * 匹配任意怪物。
依赖与兼容
插件声明的软依赖
| 插件 | 用途 |
|---|---|
PlaceholderAPI | 解析条件、掉率变量、指令变量并注册 %ldr_...% 变量。大量掉落判断依赖该插件。 |
MythicMobs | 监听 MythicMobs 怪物死亡、识别内部怪物 ID,并读取 MythicMobs 物品。代码包含 MythicMobs 4、5 的处理。 |
NeigeItems | 通过 ni{物品ID#数量} 发放 NeigeItems 物品。 |
SX-Item | 通过 si{物品ID#数量} 发放 SX-Item 物品。 |
Vault | 处理 eco 金币奖励,需要服务器存在可用的 Vault 经济实现。 |
PlayerPoint | 处理 point 点券奖励。插件声明和运行检测使用的名称为 PlayerPoint。 |
LyShopReload | 把除内置类型外的货币 ID 交给 LyShopReload 发放。 |
软依赖不是全部强制安装。实际需要哪些插件,取决于掉落配置中使用的物品、货币、条件和变量类型。
其他代码兼容
| 插件或系统 | 用途 |
|---|---|
NeonFlash | 通过 nf{物品ID#数量} 读取物品。 |
AzureFlow | 通过 af{物品ID#数量} 读取物品。 |
CraftX | 通过 CX_变量ID 形式增加玩家变量货币。 |
LyLootsWareHouse | 使用 llwh 仓库顺序标识,把已登记的物品发送到离渊战利品仓库。 |
LyWarehouse | 使用 lyck 仓库顺序标识,把物品发送到离渊传统仓库。 |
YeeCore | 使用 srp 仓库顺序标识,对接清守灵魂空间。 |
StarStorage | 使用 ds 仓库顺序标识,把物品发送到默认仓库。 |
核心功能
| 功能 | 说明 |
|---|---|
| 掉落组分离 | 怪物分配与掉落内容分开配置,支持多个怪物共用掉落组,也支持一个怪物触发多个掉落组。 |
| 通配怪物 | monster-drop-allocation 中可使用 * 匹配任意怪物。 |
| 多种分配方式 | 支持击杀者、近期参战者、附近玩家、随机附近玩家、当前世界玩家和全服在线玩家。 |
| 参战记录 | participant#秒数 根据玩家最后一次对目标造成伤害的时间筛选参与者。 |
| 观察者过滤 | 世界、全服、附近和参战者分配可以按配置排除观察者模式玩家。 |
| 玩家条件 | 支持 permission:{权限}、nopermission:{权限} 和 papi:{表达式}。 |
| 条件分组 | 每名玩家必须通过 group-select 匹配一个分组,再读取该分组对应的经验、货币和掉落。 |
| 独立概率掉落 | default 中的每一项分别计算概率,可以同时产出多项奖励。 |
| 权重掉落 | weight 根据可用条目的权重选出一项奖励。受标记限制阻止的条目不会加入本次总权重。 |
| 数量与公式 | 物品数量支持固定值、整数范围及四则运算;独立掉落概率支持四则运算表达式。 |
| 经验奖励 | 按固定值或范围生成经验值,再通过 exp-command 执行外部经验指令。 |
| 多种货币 | 支持 Vault 金币、PlayerPoint 点券、LyShopReload 货币和 CraftX 变量货币。 |
| 每日金币上限 | 可设置默认上限和权限分级上限;达到上限时只发放剩余额度,并在本地日期跨天后重置。 |
| 掉宝率加成 | 每 100 点掉宝率固定增加一次完整物品掉落,不足 100 的部分按百分比概率再增加一次。 |
| 独立掉率变量 | 每个掉落组可以通过 drop-add-placeholder 覆盖全局掉率变量。 |
| 货币加成 | 可为不同货币配置独立加成变量,并决定货币是否重复享受掉宝率触发次数。 |
| MythicMobs 原掉落加成 | 可选让掉宝率额外触发 MythicMobs 4 的原生物品掉落,并可再次发送对应掉落事件。 |
| 全服标记限制 | 带标记的奖励可以限制全服剩余产出次数,并按秒自动恢复到最大值。 |
| 个人标记限制 | 带标记的奖励可以为每名玩家单独限制产出次数,并保存当前次数和下次刷新时间。 |
| 标记公告 | 标记奖励成功产出后,可以向全服发送消息或执行指令。 |
| 数据持久化 | 玩家每日金币和个人标记数据保存到 YAML 或 MySQL;全服标记剩余次数保存到 taglimit.yml。 |
| 自动保存 | 按 auto-save-interval 定期保存玩家数据和全服标记次数,关闭插件时也会保存。 |
| 安全写入 | YAML 数据写入使用备份与恢复逻辑,降低文件写入异常造成的数据损坏风险。 |
| 自动入包 | 物品可以先进入指定仓库或玩家背包,背包无法容纳的剩余物品会掉落到怪物死亡位置。 |
| 仓库顺序 | custom-drop-index 可以设置多个仓库的尝试顺序,插件只尝试当前已安装的兼容仓库。 |
| 玩家切换 | 玩家可以切换仓库优先或背包优先;每次加入服务器时按默认配置重新设置状态。 |
| 消息隐藏 | 玩家可以临时隐藏物品和经验获得消息。该状态仅保存在运行内存中。 |
| 掉落事件 | 物品最终发放前会触发 ItemDropEvent,其他插件可以取消掉落或替换物品。 |
| 配置校验 | 重载掉落文件时会检查已安装物品库中的静态物品 ID,并在控制台指出文件、掉落组、分组和错误条目。 |
| 重复触发保护 | 同一实体的掉落分配带有元数据保护,避免多个监听流程重复处理同一次死亡。 |
| OP 调试 | 可让 OP 在击杀时看到识别到的怪物 ID,并可通过命令直接测试指定掉落组。 |
掉落对象
drop-type | 说明 |
|---|---|
killer | 只对击杀者执行掉落。 |
participant#30 | 对最后一次伤害发生在 30 秒内的在线参战玩家执行掉落。 |
nearby#8 | 对死亡实体周围横向和纵向 8 格范围内的玩家执行掉落。可配置是否强制补入击杀者。 |
nearby_random#8 | 从死亡实体周围 8 格范围内随机选择一名玩家。附近没有符合条件的玩家时不执行。 |
world | 对击杀者所在世界的所有玩家执行掉落。 |
server | 对服务器全部在线玩家执行掉落。 |
当 MythicMobs 死亡事件没有提供击杀者时,插件会尝试寻找目标或死亡位置 32 格内最近的玩家。普通实体和 MythicMobs 4 还包含驯服狼击杀时使用狼主人作为击杀者的处理。
奖励类型
物品与指令前缀
| 前缀 | 奖励来源 | 基本格式 |
|---|---|---|
mm | MythicMobs 物品 | mm{物品ID#数量} |
lis | MythicMobs 旧版物品读取方式 | lis{物品ID#数量} |
ni | NeigeItems 物品 | ni{物品ID#数量} |
si | SX-Item 物品 | si{物品ID#数量} |
nf | NeonFlash 物品 | nf{物品ID#数量} |
af | AzureFlow 物品 | af{物品ID#数量} |
cmd | 执行指令 | cmd{指令} |
掉落条目可以在右花括号后继续填写概率或权重,并可追加一个标记名称。完整格式、概率计算和标记规则见掉落规则。
货币 ID
| 货币 ID | 处理方式 |
|---|---|
eco | 通过 Vault 经济服务发放金币,并应用每日金币上限。 |
point | 通过 PlayerPoint 发放点券。 |
CX_变量ID | 读取并增加 CraftX 中对应的玩家变量。 |
| 其他 ID | 安装并启用 LyShopReload 时,作为 LyShopReload 货币 ID 发放。 |
数据存储
| 数据 | 本地模式 | MySQL 模式 |
|---|---|---|
| 玩家今日金币记录 | playerdata/玩家UUID.yml | 保存到插件创建的玩家数据表 |
| 玩家个人标记限制 | playerdata/玩家UUID.yml | 保存到插件创建的玩家数据表 |
| 全服标记剩余次数 | taglimit.yml | 仍保存到 taglimit.yml |
| 自动保存 | 按 auto-save-interval 执行 | 按 auto-save-interval 执行 |
MySQL 开关位于 config.yml 的 mysql.enable,切换后需要重启服务器。启用后必须保证 LyMySQLCore 已安装并成功连接;数据库未完成连接时,插件会阻止玩家登录,OP 会看到数据库尚未连接的提示。
没有建立 MySQL 连接时,玩家数据会回退到本地 YAML 文件。个人标记限制并非只能在 MySQL 模式下使用,本地 YAML 模式同样会保存该数据。
指令
插件没有在 plugin.yml 中声明固定权限节点。管理指令通过 OP 状态判断,玩家指令要求执行者为玩家。
| 指令 | 使用者 | 说明 |
|---|---|---|
/ldr | OP | 显示插件指令帮助。 |
/ldr reload | OP | 重载 config.yml 和 drop/ 下的掉落组,同时刷新玩家金币权限规则与入包配置。 |
/ldr tagreload | OP | 重新读取掉落文件,刷新全服公告与标记限制,并把全服标记剩余次数重置到上限。 |
/ldr playertagreload | OP | 重新读取掉落文件,清空当前已加载玩家的个人标记记录并保存数据。 |
/ldr ecoreload | OP | 清空当前已加载玩家的今日金币记录并保存数据。 |
/ldr drop [玩家] [掉落组] | OP | 对在线玩家强制执行一次指定掉落组。该命令跳过 drop-type 的目标选择,但仍执行条件、分组、概率和限制判断。 |
/ldr drop [玩家] [掉落组] [次数] | OP | 对在线玩家重复执行指定次数,次数必须是整数。 |
/ldr switch | 玩家 | 切换仓库优先与背包优先状态。仅在 drop-to-warehouse-command-enable 启用时影响最终投递顺序。 |
/ldr hide | 玩家 | 切换物品和经验获得消息的显示状态。 |
reload、tagreload、playertagreload 和 ecoreload 的作用不同。需要保留现有次数时,不要使用会明确重置对应数据的命令。
配置文件
| 路径 | 用途 |
|---|---|
plugins/LyDropReload/config.yml | 消息、数据库、金币上限、掉宝率、自动入包、仓库顺序和怪物分配。 |
plugins/LyDropReload/drop/*.yml | 定义掉落组、条件分组、经验、货币、物品、指令、公告和标记限制。支持递归读取子目录中的 YAML 文件。 |
plugins/LyDropReload/drop/示例掉落配置.yml | 插件重载时覆盖生成的参考文件,不应直接作为正式配置编辑。 |
plugins/LyDropReload/playerdata/*.yml | 未连接 MySQL 时保存玩家每日金币和个人标记数据。 |
plugins/LyDropReload/taglimit.yml | 保存全服标记当前剩余次数。 |
掉落组必须配置 group-select,并且匹配到的分组需要在 drop 中存在对应节点。配置缺失或玩家没有匹配任何分组时,插件会跳过该玩家的掉落并在控制台输出具体原因。
文档索引
| 页面 | 内容 |
|---|---|
| 配置说明 | config.yml、掉落文件、数据库、消息、金币上限、掉宝率和自动入包配置。 |
| 掉落规则 | 掉落对象、条件、分组、概率、权重、物品、货币、公告与标记限制。 |
| 插件变量 | %ldr_...% 变量、返回值及无效标记的处理。 |
| API | DropAPI、ItemDropEvent 及可确认的开发接口行为。 |
| 常见问题 | 掉落不触发、物品不存在、数据库连接、金币上限、仓库投递和标记次数排查。 |