
主要更新内容
1. 多版本兼容性 (1.7-1.21)
- 引入并配置了 XSeries 库,通过 XMaterial 自动处理跨版本的物品材质名称差异(如 GOLDEN_AXE 在旧版本可能不同,或新旧材质名映射)。
- 重构了 PlayerListener ,兼容旧版 getItemInHand 和新版 getItemInMainHand ,并处理了 1.9+ 的副手交互问题。
- 调整构建配置为 Java 8 ( 1.8 ),确保插件可以在运行 Java 8 的旧版服务器(如 1.7.10/1.8.8)上正常加载,同时也兼容运行 Java 17/21 的新版服务器。
2. Folia 架构支持
- 创建了 SchedulerUtil 工具类,自动检测运行环境。
- 在 Folia 环境下,使用反射调用 RegionScheduler 或实体调度器 ( runAtFixedRate ),确保任务在正确的线程上执行,避免并发报错。
- 在 Spigot/Paper 环境下,自动回退到标准的 BukkitScheduler 。
- 将全局循环检测任务重构为 基于玩家的独立任务 ,玩家加入时开启检测,退出时停止。这符合 Folia 的设计规范,也提高了性能。
3. 线程安全与并发优化
- 将 radiationZones 存储结构由 HashSet 升级为 CopyOnWriteArraySet ,支持高并发读取(如在多线程环境下判断玩家是否在区域内)。
- 将 SelectionManager 中的 Map 升级为 ConcurrentHashMap ,确保多名玩家同时选点时的线程安全。