Skip to content

掉落重置版 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 支持版本范围,因此不能据此扩展声明其他服务端版本。

玩法与处理流程

怪物死亡后,插件会按以下顺序处理奖励:

  1. 根据 MythicMobs 内部 ID、普通实体自定义名称或配置的通配规则查找掉落组。
  2. 根据掉落组的 drop-type 确定本次参与掉落的玩家。
  3. 检查掉落组的玩家权限和 PlaceholderAPI 条件。
  4. 通过 group-select 为每名玩家选择掉落分组。
  5. 计算掉宝率带来的额外掉落次数。
  6. 处理独立概率掉落、权重掉落、经验、货币和指令。
  7. 检查全服标记限制、玩家个人标记限制及每日金币上限。
  8. 根据玩家状态把物品优先发往仓库、背包或怪物死亡位置。

同一怪物可以触发多个掉落组,同一掉落组也可以分配给多个怪物。使用 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 还包含驯服狼击杀时使用狼主人作为击杀者的处理。

奖励类型

物品与指令前缀

前缀奖励来源基本格式
mmMythicMobs 物品mm{物品ID#数量}
lisMythicMobs 旧版物品读取方式lis{物品ID#数量}
niNeigeItems 物品ni{物品ID#数量}
siSX-Item 物品si{物品ID#数量}
nfNeonFlash 物品nf{物品ID#数量}
afAzureFlow 物品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.ymlmysql.enable,切换后需要重启服务器。启用后必须保证 LyMySQLCore 已安装并成功连接;数据库未完成连接时,插件会阻止玩家登录,OP 会看到数据库尚未连接的提示。

没有建立 MySQL 连接时,玩家数据会回退到本地 YAML 文件。个人标记限制并非只能在 MySQL 模式下使用,本地 YAML 模式同样会保存该数据。

指令

插件没有在 plugin.yml 中声明固定权限节点。管理指令通过 OP 状态判断,玩家指令要求执行者为玩家。

指令使用者说明
/ldrOP显示插件指令帮助。
/ldr reloadOP重载 config.ymldrop/ 下的掉落组,同时刷新玩家金币权限规则与入包配置。
/ldr tagreloadOP重新读取掉落文件,刷新全服公告与标记限制,并把全服标记剩余次数重置到上限。
/ldr playertagreloadOP重新读取掉落文件,清空当前已加载玩家的个人标记记录并保存数据。
/ldr ecoreloadOP清空当前已加载玩家的今日金币记录并保存数据。
/ldr drop [玩家] [掉落组]OP对在线玩家强制执行一次指定掉落组。该命令跳过 drop-type 的目标选择,但仍执行条件、分组、概率和限制判断。
/ldr drop [玩家] [掉落组] [次数]OP对在线玩家重复执行指定次数,次数必须是整数。
/ldr switch玩家切换仓库优先与背包优先状态。仅在 drop-to-warehouse-command-enable 启用时影响最终投递顺序。
/ldr hide玩家切换物品和经验获得消息的显示状态。

reloadtagreloadplayertagreloadecoreload 的作用不同。需要保留现有次数时,不要使用会明确重置对应数据的命令。

配置文件

路径用途
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_...% 变量、返回值及无效标记的处理。
APIDropAPIItemDropEvent 及可确认的开发接口行为。
常见问题掉落不触发、物品不存在、数据库连接、金币上限、仓库投递和标记次数排查。