WarZDuelTime —— 经典单挑插件的重制版|1.13-1.21+ | 多竞技场 / 排位 / 商城 / Folia 支持

二次开发 游戏模式 WarZDuelTime —— 经典单挑插件的重制版|1.13-1.21+ | 多竞技场 / 排位 / 商城 / Folia 支持 2.6.17

完成注册/登录后下载
新增配置项 : Arena.wait.broadcast-enabled
- 位置: config.yml -> Arena -> wait -> broadcast-enabled
- 功能: 控制玩家加入等待队列时是否进行全服广播。
- 默认值: true (开启)。
- 用途: 允许管理员关闭刷屏的队列加入消息,仅对玩家本人提示。
WarZDueltimev1.9.9
- 修复 : 修复了在 Folia/Lophine 等区域线程服务器上使用传送指令(如 /dt l )时的 UnsupportedOperationException 报错。
- 优化 : 优化了非战斗玩家误入战斗中竞技场的处理逻辑。现在玩家不会被卡住或抽搐,而是会自动传送到单挑大厅或主城出生点。
- 优化 : 优化了观战传送和重生传送的底层逻辑,确保在所有服务器环境下的稳定性。
WarZDuelTime v1.9.8 版本更新公告(2026-01-28)
本次版本核心修复 2 个关键问题,提升插件运行稳定性与玩家体验,具体更新如下:
修复全息图导致的服务器崩溃问题:新增独立FancyHologramsHandler隔离相关类引用,仅在配置启用且服务器安装该插件时才加载,彻底解决未安装插件引发的NoClassDefFoundError报错。
修复玩家比赛异常卡状态问题:
竞技场启动方法增加异常捕获,启动失败时自动回滚并清理玩家状态;
结束 / 停止方法新增安全扫描机制,强制检查并移除竞技场关联的玩家状态,避免异常结束后玩家卡在 “比赛中” 无法匹配 / 使用指令的情况。
WarZDuelTime
🛠️ 修复与更新报告 (Fix & Update Report)
图片中的报错原因已查明并修复。该错误是由于 MailboxManager 在初始化时尝试连接数据库,但对应的数据库工厂(Factory)尚未正确注册导致的。
1. 问题分析
- 报错信息 : java.lang.NullPointerException: ... because "factory" is null
- 发生位置 : MailboxManager.initTable (初始化数据库表时)
- 根本原因 : 插件版本 1.9.2 缺少 MailboxManager 到 MyBatisManager 的模块映射注册,导致获取到的 factory 为 null 。
WarZDuelTime更新日志 v1.9.7

本次更新主要聚焦于全息图功能扩展以及若干已知问题的修复与清理,提升了插件的兼容性与稳定性。

✨ 新增功能

支持 FancyHolograms

排行榜全息图模块现已兼容 FancyHolograms 插件。

相关实现与改动:

在 HologramPluginType.java 中新增 FancyHolograms 枚举类型。

在 HologramInstance.java 中实现全息图的 创建、更新、移动与删除 逻辑。

在 plugin.yml 中添加 FancyHolograms 的 软依赖声明,确保兼容性。

🐛 问题修复

修复 KitPvP 竞技场类型缺失问题

问题表现:创建竞技场或查看竞技场类型列表时,KitPvP 类型可能不显示。

原因分析:重载配置时未清理旧的竞技场类型列表,导致逻辑异常。

修复方式:在 ArenaTypeManager.java 的 reload() 方法中添加
arenaTypeList.clear(),确保数据正确刷新。

移除失效的更新检查提示

移除了玩家进服时显示的“发现新版本”提示。

原因:该更新检查指向已失效的原作者仓库。

实现方式:注释掉 VersionChecker.java 中的相关检查逻辑。
WarZDuelTime 1.9.6
🔧 问题修复

修复了在 Folia / Lophine 环境中可能出现的以下异常:

java.lang.NullPointerException: Cannot read field "captureDrops"
at net.minecraft.server.level.ServerLevel.addEntity


该问题会在对局结算或玩家复活阶段触发,可能导致控制台报错,甚至影响对局流程。

🧠 问题原因说明

旧版本在 Global Region Scheduler(全局线程) 中直接执行了以下操作:

world.strikeLightningEffect(loc)(生成闪电效果)

player.spigot().respawn()(玩家复活)

在 Folia / Lophine 架构 下,全局线程 不允许直接操作世界实体或玩家对象,从而在 NMS 层触发空指针异常。

✅ 解决方案(v1.9.6)

已对 ClassicArena.java 进行线程安全重构:

闪电效果已通过 SchedulerUtil.runTask(loc, ...) 调度至对应 Region Thread(区块线程) 执行

玩家复活与生命值设置已通过 SchedulerUtil.runTask(player, ...) 调度至 玩家所属线程 执行

现在所有世界与玩家操作均符合 Folia 的线程模型要求

🛠️ WarZDuelTime 更新日志​


v1.9.5(推荐版本)​


🐞 问题修复(Bug Fixes)​


  • MailboxManager 空指针异常(NPE)防护
    • 修复在初始化数据库表时,由于 MyBatis 工厂未正确注册导致的 NullPointerException。
    • 新增防御性检查:当 SqlSessionFactory 为 null 时,仅输出警告日志而不再导致插件或服务器崩溃。
    • 提升插件在数据库配置异常或模块缺失情况下的稳定性。

🔐 稳定性增强(Stability Improvements)​


  • 即使数据库模块配置不完整,插件也可安全启动并继续运行,避免影响服务器主进程。



v1.9.4​


🐞 问题修复(Bug Fixes)​


  • MailboxManager 初始化缺陷修复
    • 修复 MailboxManager 未注册至 MyBatisManager 的问题,补全 mailbox 模块的数据库工厂映射逻辑。
  • 潜影盒误触竞技场队列问题
    • 修复玩家操作潜影盒时被错误加入竞技场队列的问题。
    • 通过严格校验 CustomInventoryHolder,避免非预期交互触发。
- **Bug 修复**: 修复了玩家在打开其他容器(如潜影盒)时,点击特定位置(RawSlot 49)会错误触发竞技场“加入/退出队列”逻辑的问题。现在加入了严格的 Inventory 类型检查。
📦 DuelTime 更新公告 — v1.9.1(系统完善版)

本次 v1.9.1 并非单纯功能新增版本,而是一次关键系统补强与逻辑完善更新。
在补齐 v1.9.0 文档说明 的基础上,对商城、赛季、观战、押注等核心系统进行了确认、重构或新增,确保插件在真实长期运营环境下具备完整可用性。

所有内容已同步更新至 WIKI.md。

🏆 一、排行榜系统(告示牌 & 玩家头)【v1.9.1】

支持将排行榜实时绑定至实体告示牌

自动更新告示牌周围玩家头颅皮肤(展示榜单玩家)

排名变化后自动刷新,无需手动干预

相关指令

/dt rank setsign <榜单ID> <排名>

/dt rank removesign

📖 文档位置:
Wiki →「指令与权限」
Wiki →「功能详解 → 排行榜与全息图」

📉 二、失败方扣分机制(Classic Arena)【v1.9.1】

经典竞技场失败方现在支持 积分扣除

与原有少量经验奖励并存

新增配置项

Arena:
classic:
reward:
lose-point: 5


📖 文档位置:Wiki →「配置文件」

📬 三、赛季系统重构(结算 & 奖励发放)【v1.9.1】

原问题

旧版赛季奖励依赖 pending-rewards

玩家未及时上线可能导致奖励错过

本次完善

重构 SeasonManager.java

赛季结算时,奖励直接发送至 Mailbox 邮箱系统

完全支持 离线玩家

修正赛季结束触发逻辑,确保:

自动执行段位降级

自动发放赛季奖励

玩家可随时通过:

/dt mailbox


领取赛季奖励

🛒 四、商城 / 商店系统(段位限制购买)【确认完善】

状态:✅ 已确认逻辑完整,无需修改

说明

插件内部将 段位(Tier)与等级(Level)绑定

例如:

Level 1–10 → 青铜

Level 11–20 → 白银

商城物品已支持 levelNeed 检查

通过配置等级限制,即可实现 段位限制购买

涉及代码

ShopListener.java

逻辑完整,功能已覆盖实际需求

👁 五、观战系统完善(Spectate)【v1.9.1】

原情况

存在 /duel spectate 指令

在部分场景下无法正确进入观战状态

本次完善

在 ClassicArenaListener.java 中补充 onTryToSpectate 处理

新增:

权限校验

观战传送逻辑

自动切换至 旁观者模式(Spectator)

确保:

观战玩家无法干扰比赛

可正常退出观战

🎲 六、押注 / 赌注系统(Bet System)【新增并完善】

系统状态:✅ 全新实现并完成集成

核心功能

新增 BetManager

新增指令:

/duel bet <player> <amount>


固定 1:1 赔率

胜利方获得双倍押注点数

离线安全机制

若押注玩家在结算时离线:

奖励将自动发送至 邮箱系统

确保点数不会丢失

系统集成

押注结算逻辑已接入 Classic Arena 比赛结束流程

⚔ 七、KitPVP 模式自定义装备【v1.9.0】

支持在 config.yml 中为 KitPVP 配置:

头盔 / 胸甲

主手武器

副手物品(支持 1.9+ 盾牌)

📖 文档位置:Wiki →「配置文件」

🚫 八、比赛指令白名单系统【v1.9.0】

比赛中限制玩家可执行指令

防止通过指令干扰对局

支持:

command-whitelist

管理员权限 dueltime.admin 绕过限制
WarZDuelTime 1.8.8更新
1. 版本更新
- 插件版本 : 从 1.8.7 更新至 1.8.8 。
- 文件修改 :
- pom.xml : 版本号已更新。
- src/main/resources/plugin.yml : 版本号已更新。
### 2. 更新内容
本次更新主要修复了语言文件配置缺失的问题:

- 修复 : 在所有语言文件(简体中文、繁體中文、繁體中文機翻)中添加了 Arena.wait.broadcast 配置项。
- 影响 : 解决了玩家加入竞技场等待队列时,广播消息无法正确显示或显示为默认内部代码的问题。
后退
顶部 底部