Releases: HotWaterFlask/AntiProtocolOverflow
Releases · HotWaterFlask/AntiProtocolOverflow
Release list
v1.0.3
这是一次重要更新
- 无感优化实现
实现了物品检查的无感优化,核心改进包括:
- 在物品检查过程中(无论是容器内还是背包)跳过普通物品,仅处理潜影盒
- 对潜影盒的处理采用两步发送策略:先发送空潜影盒给客户端,再逐一发送潜影盒内容
- 对于本就为空的潜影盒直接跳过处理,减少不必要的操作
- 数据同步与内存优化
为解决数据同步问题和优化内存管理,添加了以下关键功能:
方块状态同步
- 添加 BlockBreakEvent 监听器,在方块被破坏时清除对应位置的隐藏方块记录
- 添加 BlockPlaceEvent 监听器,在方块被放置时清除对应位置的隐藏方块记录
区块管理优化 - 添加 ChunkUnloadEvent 监听器,在区块卸载时安全地清除该区块内所有玩家的隐藏方块记录和已处理区块记录
- 使用迭代器进行安全遍历和移除,避免并发修改异常
资源清理机制 - 在 PacketHandler 类中新增 clearAllData() 方法,用于全面清理所有存储的数据结构
- 修改 AntiProtocolOverflow 类的 onDisable() 方法,在服务器关闭时调用数据清理逻辑,释放内存
- 清理范围包括 hiddenBlocks 、 processedChunks 以及所有玩家相关的数据结构
- 保护覆盖更加全面
- 覆盖了副手栏和防具栏的保护,不会再卡掉玩家的防具和副手物品。
- 版本管理
完成了版本号的统一更新:
- 将 pom.xml 文件中的版本号从 v1.0.2 更新为 v1.0.3
- 将 plugin.yml 文件中的版本号从 v1.0.2 更新为 v1.0.3
- 通过 mvn clean install 和 mvn clean package 验证所有修改的正确性并成功构建
v1.0.2
强烈建议更新:这个更新可以修复上个版本空的告示牌引起的发送block_entity_type为null的数据包导致玩家被迫断开连接
这个新版本已成功从源头修改告示牌的隐藏与加载逻辑,避免产生block_entity_type为null的数据包:
-
在
PacketHandler.java文件的updateSignText方法中新增了空告示牌检测逻辑:- 检查告示牌的所有4行文本是否都为空
- 如果是空白告示牌(所有行都为空),则直接返回,不发送UPDATE_SIGN数据包
- 添加了详细的日志记录,便于调试和监控
-
这个修改从根本上解决了问题,通过避免为空告示牌发送UPDATE_SIGN数据包,彻底消除了产生block_entity_type为null数据包的可能性,从而防止玩家因此断开连接
-
结合之前在handleBlockEntityDataPacket方法中添加的防御性检查,现在插件既能从源头避免产生有问题的数据包,又能安全处理任何可能出现的异常情况,提供了双重保障。
v1.0.1
已成功修复告示牌文本更新时出现的"Field index 0 is out of bounds for length 0"错误。
v1.0.0
Supported Minecraft: 1.13 up to and including 1.21.10