基本信息
我的世界Java版本
1.21.x
1.20.x
1.19.x
1.18.2
平台
Bukkit
运行环境
其他链接
搬运团队
详情信息
许可证 GPL-3.0-only
发布于 6 months ago
更新于 2 months ago
更新日志
6.2.0.9 - 重要提示:包含漏洞修复,请尽快更新。
更新前请记得备份您的数据库。
主要变更
包含针对图形用户界面(GUI)漏洞的修复
此版本修复了近期所提及的图形用户界面系统中的一个漏洞。
大量事件变更
控制面板组件系统全面改造
商店控制面板系统已进行全面改造,将其拆分为不同的类。这使得第三方插件能够轻松地向控制面板添加额外组件。此外还新增了一个事件,即ControlComponentGenerateEvent,它会在生成ControlComponent的前置(PRE)、主要(MAIN)和后置(POST)阶段被调用。在主要阶段,支持用自定义的ControlComponent对象替换原始对象,该自定义对象将在发送控制面板时替换原始对象。
改进后的数据包系统介绍
-
关于:
- 一个用于管理《我的世界》中与虚拟展示物品相关数据包的模块化且可扩展的系统。
- 为了提高灵活性,同时支持ProtocolLib和PacketEvents依赖。
-
自定义数据包工厂:
- 针对游戏版本1.20.x和1.21.x对
PacketFactory
进行模块化实现。 - 数据包类型:
- 生成数据包:在特定位置生成一个虚拟物品实体。
- 元数据数据包:更新虚拟物品的视觉属性。
- 速度数据包:为实体添加运动/速度(目前为可选)。
- 销毁数据包:从客户端视图中移除实体。
- 针对游戏版本1.20.x和1.21.x对
-
错误处理和日志记录:
- 增强调试日志以追踪与数据包相关的问题。
- 针对缺失工厂或未注册监听器提供详细的错误消息。
改进之处:
- 更好的模块化设计,以便于对未来《我的世界》版本的支持。
弃用内容:
- 旧的数据包处理机制已被此新数据包系统取代。
事件系统全面改造
新增内容
- event/Phase.java - 引入一个基于阶段的事件系统,以跟踪事件生命周期的不同阶段。
- event/PhasedEvent.java - 定义在不同阶段发生的事件,以便更好地进行事件状态管理。
数据包处理事件:
- event/packet/handler/PacketHandlerAddedEvent.java - 当系统中注册一个新的数据包处理程序时触发。
- event/packet/handler/PacketHandlerInitEvent.java - 当一个数据包处理程序初始化时触发,对调试或自定义设置很有用。
- event/packet/send/PacketHandlerSendDestroyEvent.java - 当一个数据包指示客户端从其视图中移除一个实体时派发。
- event/packet/send/PacketHandlerSendMetaEvent.java - 当通过数据包发送关于一个实体的元数据时触发。
- event/packet/send/PacketHandlerSendSpawnEvent.java - 当使用基于数据包的通信生成一个实体时触发。
商店事件
- ShopUpdateEvent已被ShopDatabaseEvent取代。
- ShopAuthorizeEvent已被ShopPermissionCheckEvent取代。
- ShopClick、ShopCreate、ShopDelete、ShopLoad已被类似名称的事件取代,不过它们现在位于event.management包中,并且是分阶段的事件。
商店设置事件:
- event/settings/ShopSettingEvent.java - 用于动态处理商店设置变更的通用事件。
- event/settings/package-info.java - 包含商店设置元数据的文档包。
商店特定类型设置:
- event/settings/type/ShopCurrencyEvent.java - 处理商店中所使用货币类型的变更。
- event/settings/type/ShopDisplayEvent.java - 当商店的展示设置(例如,全息影像、标识牌)被修改时触发更新。
- event/settings/type/ShopItemEvent.java - 当商店中所售卖的主要物品被改变时触发。
- event/settings/type/ShopNameEvent.java - 当商店的名称被更新时发生。
- event/settings/type/ShopOwnerEvent.java - 管理商店中的所有权转移和修改。
- event/settings/type/ShopOwnerNameEvent.java - 当所有者的显示名称被修改时触发。
- event/settings/type/ShopPlayerGroupEvent.java - 处理与商店相关联的玩家组的更新。
- event/settings/type/ShopPriceEvent.java - 当商店中一个物品的价格被改变时派发。
- event/settings/type/ShopSignLinesEvent.java - 管理基于标识牌的商店展示的更新。
- event/settings/type/ShopTaxAccountEvent.java - 当商店的税务账户信息被修改时触发。
- event/settings/type/ShopTypeEvent.java - 跟踪商店分类或类型的变更。
- event/settings/type/ShopUnlimitedEvent.java - 处理商店无限库存设置的变更。
商店福利系统:
- event/settings/type/benefit/ShopBenefitAddEvent.java - 当向商店添加一个新福利(例如,折扣、忠诚度奖励)时触发。
- event/settings/type/benefit/ShopBenefitEvent.java - 用于跟踪商店福利修改的通用事件。
- event/settings/type/benefit/ShopBenefitRemoveEvent.java - 当一个商店福利被移除时触发。
移除内容
- event/details/ShopItemChangeEvent.java - 为了更一致的结构,已被
ShopItemEvent.java
取代。 - event/details/ShopNamingEvent.java - 已合并到
ShopNameEvent.java
中。 - event/details/ShopOwnerNameGettingEvent.java - 已被
ShopOwnerNameEvent.java
取代。 - event/details/ShopOwnershipTransferEvent.java - 现在由
ShopOwnerEvent.java
处理。 - event/details/ShopPlayerGroupSetEvent.java - 已整合到
ShopPlayerGroupEvent.java
中。 - event/details/ShopPriceChangeEvent.java - 已合并到
ShopPriceEvent.java
中。 - event/details/ShopTypeChangeEvent.java - 已被
ShopTypeEvent.java
取代。 - event/details/ShopUnlimitedStatusEvent.java - 现在由
ShopUnlimitedEvent.java
管理。 - event/display/ShopDisplayItemDespawnEvent.java - 为了支持
ShopDisplayEvent.java
已被移除。 - event/display/ShopDisplayItemSafeGuardEvent.java - 已整合到一个更广泛的展示事件类别中。
- event/economy/ShopTaxAccountChangeEvent.java - 现在已包含在
ShopTaxAccountEvent.java
中。 - event/economy/ShopTaxAccountGettingEvent.java - 由于商店经济系统的重构,已不再需要。
- event/packet/PacketHandlerAddedEvent.java - 已移至
event/packet/handler/PacketHandlerAddedEvent.java
。 - event/packet/PacketHandlerInitEvent.java - 现在由
event/packet/handler/PacketHandlerInitEvent.java
处理。
修改内容
- event/AbstractQSEvent.java - 更新了基础事件结构以支持基于阶段的执行。
- event/QSCancellable.java - 添加了新的取消条件以防止意外的事件终止。
数据包事件:
- event/package-info.java - 已更新以反映新的事件结构。
- event/packet/PacketHandlerEvent.java - 现在支持额外的数据包处理场景。
次要变更
- 如果玩家没有CONTROL_PANEL_UI的权限,将为其打开TRADE_UI。
- 添加了quickshopdontsend覆盖设置,允许服务器所有者阻止发送某些消息(仅Paper服务器)。
- 使得用户界面(UI)的无效聊天输入能够退出聊天用户界面。
配置变更
- 添加了shop.control-panel来控制文本控制面板的哪些组件被启用。
- 添加了shop.sign-wax来控制商店标识牌是否上蜡,默认值为否。
- 添加了shop.display-protocol,它允许您选择PacketEvents或ProtocolLib进行数据包处理。
修复内容
- 将/qs历史权限重新添加到默认的quickshop.player中。
- 修复了一些人没有编码数据库列的问题。
- 修复了reached-maximum-can-create未正确实现的问题。
- 修复了活塞会移动潜影盒商店的问题。
- 修复了彩色潜影盒可以被购买并放入非彩色潜影盒的问题。
- 修复了GriefPrevent的/transfer命令未注销所有者的问题。
- 修复了标识牌在锁定设置为否时未更新的问题。
- 修复了史莱姆兼容爆炸镐未被QS捕获的问题(感谢YuanYuanOwO和Starfruit)。
- 修复了一个漏洞(感谢macaw/casper首先报告此问题)。
版本变更
- 移除了对1.18和1.19版本的支持。这些版本的使用率极低。
- 添加了对1.21.5版本的支持。