WarZHongBao —— 全版本|金币红包|点券红包|物品红包|拼手气机制|沉浸互动【1.7 - 1.21+ 全兼容(Folia)】

原创 娱乐 经济 WarZHongBao —— 全版本|金币红包|点券红包|物品红包|拼手气机制|沉浸互动【1.7 - 1.21+ 全兼容(Folia)】 1.9.15

请登录后获取
更新内容总结 (v1.7.7)
本次更新主要修复了物品红包广播显示的 Bug:

1. 修复运气王物品显示错误 :

- 问题 : 之前物品红包被抢完后,全服广播的“运气王”信息中,抢到的物品数量显示为数字 1.0 ,而不是具体的物品名称(如“钻石”或“3件物品”)。
- 修复 : 修改了运气王 ( LuckKing ) 的数据存储格式,现在会同时记录“用于比较的数量”和“用于展示的文本”。
- 效果 : 现在广播会正确显示如 玩家:xxx 的红包被抢完了,运气王是xxx,抢到了物品 钻石 。
2. 代码变更 :

- 更新了 plugin.yml 和 pom.xml 版本号至 1.7.7 。
- 修改了 WarZHongBao.java 中的 updateLuckKing 方法和相关广播逻辑,支持传递展示文本。
- 同步修改了 RedPacketDAO.java 以确保数据库模式下也能正确存储和读取物品展示名称。
本次更新主要包含以下改进和修复:

- MySQL 多服同步支持 :
- 新增数据库存储功能,支持多服务器共享红包数据。
- 实现了跨服红包通知与领取功能,玩家在任意服务器均可收到提示并抢红包。
- 使用 HikariCP 连接池和事务锁 ( FOR UPDATE ) 确保高并发下的数据安全。
- 红包封面优化 :
- 可点击图片 : 点击红包封面图片即可直接尝试抢红包,提升交互体验。
- 可隐藏图片 : 在 config.yml 中将 image_size 设置为 0 即可不发送图片,仅发送文字提示。
- 修复跨服通知 : 增加了数据库轮询机制,确保连接同一数据库的所有服务器都能实时同步红包状态。
  • 喜欢
反馈: 心海
核心更新内容 (Version 1.7.5)
1. 跨服 MySQL 数据同步支持

- 功能描述 :实现了完整的 MySQL 数据库支持,允许在多个服务器之间共享红包数据。
- 技术细节 :
- 引入 HikariCP 连接池管理数据库连接。
- 新增 redpackets 数据表,持久化存储红包信息。
- 实现了事务锁 ( FOR UPDATE ),防止跨服并发抢红包导致的数据不一致问题。
- 支持跨服过期退款:当红包过期时,系统会通过原子操作确保仅退款一次,避免重复领取。
- 配置 :在 config.yml 中新增了 database 配置段,可开启并配置 MySQL 连接信息。
2. 物品红包 Lore 屏蔽功能

- 功能描述 :新增了禁止发送包含特定 Lore(描述)物品红包的功能。
- 应用场景 :防止玩家将“绑定”、“禁止交易”或任务物品通过红包系统流通。
- 配置 :在 config.yml 中新增 blocked_lores 配置项,可自定义屏蔽关键字列表。
1. 代码修正 : 修改了 WarZHongBao.java 中的 qhbTicket 方法,将原来的 replace 替换逻辑改为标准的 MessageFormat.format 调用,与配置文件格式保持一致。
2. 版本更新 : 版本号已升级至 1.7.4 。
修复红包分配算法不公问题

- 问题 :原算法采用“剩余金额/剩余人数”作为随机上限,导致越靠后领取的人越容易获得大额红包,且最后一人必定获得所有剩余的大量金额(手气最佳)。
- 修复 :将金币 ( qhbMoney ) 和点券 ( qhbTicket ) 的分配逻辑修改为 二倍均值法 (Double Average Algorithm) 。
- 效果 :现在每个人抢到的红包金额期望值相等(等于当前剩余人均值),且允许出现超过平均值的幸运红包,同时保证了整体的随机性和公平性。最后一位领取者不再总是“运气王”。
更新内容摘要(1.7.2)

- 口令金币红包:修复并发/重复领取导致的“一个人一次抢完、重复成功提示”等问题(领取逻辑加锁与计数修正) WarZHongBao.java
- 经济兼容性:经济挂钩改为运行时反射获取 Economy 服务,避免强依赖 Vault 插件本体;并将 Vault 从硬依赖改为软依赖 Eco.java / plugin.yml
- 经济不可用时的保护:金币发放失败不会消耗红包份数/金额,避免状态异常 WarZHongBao.java
- 物品红包翻页功能失效修复
📝 更新日志 (v1.7)
本次更新主要修复了两个影响用户体验的高危 Bug,建议所有用户升级。
1. 修复物品红包翻页物品丢失问题
- 现象 :在发放物品红包时,如果物品超过一页(>45个),翻页后可能导致之前的物品丢失,或者最后发放时只发放了当前页面的物品。
- 修复 :重写了 GUI 翻页逻辑,现在在翻页时会正确克隆并保存所有页面的物品数据,确保多页物品都能完整发放。 2. 修复口令红包并发领取异常(严重)
- 现象 :在某些高性能核心(如 Lophine, Paper)上,或者玩家网络波动时,可能出现“同一玩家领取两次”或“多人输入口令只有一人能领”的情况。
- 原因 :原有的领取逻辑存在竞态条件(Race Condition),未考虑到高并发下的重复请求。
- 修复 :
- 引入了 双重检查锁定(Double-Checked Locking) 机制,在异步监听和同步执行阶段都对玩家领取状态进行校验。
- 增加了红包剩余数量的安全边界检查,防止计数器溢出导致红包被错误移除。
- 优化了数据结构初始化,消除了潜在的空指针异常。
更新内容
1. 新增后台定时发红包功能 ( ScheduledPacketManager )

- 支持类型 :金币 (Money)、点券 (Ticket)、物品 (Item)。
- 定时方式 :支持精确到秒的时间设置(如 12:00:00 ),支持指定星期(如仅周六日发送)。
- 自动运行 :插件启动时自动加载任务,每 60 秒(可配置)检查一次。
2. 配置文件更新 ( config.yml )

- 新增 scheduled_packets 模块。
- 关键参数 owner :
- 作用 :决定红包是谁发的。
- 退款逻辑 :如果红包过期没人领,剩余的钱/物品会退还给这个 owner 。
- 默认值 :如果不填,默认为 Console (控制台)。
- 建议 :如果是服务器福利,可以设为 Console (退款就相当于回收了);如果是服主个人发福利,可以填服主的游戏名(退款会回到服主背包/账户)。
WarZHongBao更新内容:
1. 核心功能重构 (Core Features)
- 物品红包 GUI 化 :
- 将 /fhb item 指令升级为可视化 GUI 操作。
- 界面布局 :54 格大箱子界面,前 45 格用于放置物品,底部 9 格为功能按钮。
- 多物品支持 :支持一次性放入多种、多个物品,并支持翻页操作(无限页数)。
- 参数配置 :在 GUI 内直接调整红包份数,无需通过指令参数输入。
- 随机分配算法优化 :
- 重写了物品分配逻辑,采用“二倍均值法”的变种算法。
- 现在物品会随机分配到各个红包中(不再是一次性给第一个人),保证每份红包至少有物品(在数量充足时),且最后一份红包会自动包含剩余所有物品,杜绝物品丢失。
2. 用户体验与自定义 (UX & Customization)
- 语言文件全面化 :
- 修复了硬编码的 "Money" 和 "Ticket" 字符串,现在可以在 lang_zh.yml 中自定义单位名称。
- 修复了口令红包提示信息硬编码的问题,已移入语言文件。
- 新增了大量 GUI 相关的提示信息(如背包满、退回物品、数量限制提示等)。
- GUI 高级自定义 :
- GUI 底部按钮的材质、名称、Lore 均可在 config.yml 中自定义。
- CustomModelData 支持 :按钮配置新增 custom_model_data 字段,支持 1.14+ 版本使用自定义材质模型。
- 指令补全优化 :
- 修复了 /fhb item 的 Tab 补全提示,现在正确显示 [口令] [玩家] 。
3. 安全性与稳定性 (Safety & Stability)
- 物品安全机制 :
- 退回机制 :如果玩家在 GUI 中放入物品后未点击确认直接关闭界面,物品会自动退回背包;若背包已满,则掉落在脚下。
- 数量限制 :增加了逻辑判断,禁止设置的红包份数大于物品总数,防止出现空包。
- 广播逻辑修正 :
- 修复了“红包被抢完”的全服广播在每次领取时都会触发的 Bug,现在仅在最后一份红包被领取时触发。
4. 版本兼容性 (Compatibility)
- 全版本支持 :
- 代码增加了对 1.8 - 1.20+ 的自动适配。
- 自动识别服务器版本:高版本使用 GRAY_STAINED_GLASS_PANE ,低版本自动回退到 STAINED_GLASS_PANE:7 。
- plugin.yml 添加了 api-version: 1.13 以支持现代服务端特性(Folia/Paper)。
修复口令红包Bug
后退
顶部 底部