QuickShop-Hikari 6.2.0.11
on 2026 Feb 14主要更改
- 移除了 Spigot 平台模块,并在检测到 Spigot 时停止加载 QS。这意味着除非我们用于显示物品的协议发生变化,否则 QS 不需要为每个版本更新。
- 完全重写了经济代码
- 所有与经济相关的系统的新类
- 任何与经济或福利相关的事件都与以前的版本不兼容。
- 增加了每种类型的招牌布局自定义,允许您更改行配置,空字符串('')将使该行为空。
# 商店招牌的布局。
layout:
# 购买商店的布局。
BUYING:
line1: "header"
line2: "trading"
line3: "item"
line4: "price"
# 冻结商店的布局。
FROZEN:
line1: "header"
line2: "trading"
line3: "item"
line4: "price"
# 出售商店的布局。
SELLING:
line1: "header"
line2: "trading"
line3: "item"
line4: "price"
- 添加了对物品黑名单模式的支持(感谢 bennycallanan)
-
在物品黑名单配置中添加了通配符模式支持,允许用户通过简单的模式阻止整个类别的物品。
-
特性
- 通配符模式如 *_AXE 和 *_SPAWN_EGG 现在在黑名单配置中有效
- 支持 * 代表任意字符和 ? 代表单个字符匹配
- 模式匹配不区分大小写
-
- 重构了 GUI 系统(感谢 Yusakidev)
- 实现了 gui.yml 配置文件以自定义 GUI。
- 实现了更好的 qs 浏览过滤功能
- 实现了更稳定且错误较少的 GUI 系统。
- 添加了 gui.yml 以完全可配置的 GUI 布局和文本
- 浏览菜单:搜索、排序(价格/名称/库存)和过滤(全部/购买/出售/有库存)
- 工作人员菜单:玩家/工作人员选择的搜索功能
- 分组的物品页面以更好地浏览商店
- 重构了所有菜单页面以使用可配置的显示/描述
- 内部添加了 WorldEdit 兼容性,因为它被广泛使用。
- 重构了税收系统,使其更加灵活且易于配置。
- 引入了新的累进税制,允许根据玩家的余额征税。(由 YuanYuanOwO 提议)
- 引入了对与商店互动的玩家、店主或两者征税的能力
- 所有与税收相关的配置已移至配置文件的 shop-tax 部分。这可能需要重新配置您的税收设置。
- 添加了新的 ShopEnhancedTaxEvent,弃用了旧的 ShopTaxEvent。
- 添加了新的 TaxManager 和 TaxProvider 接口,这允许通过插件/第三方开发者添加自定义税收提供者。
插件/兼容性更改
- 添加了 UltimateClaims 兼容性
- 添加了 SimpleClaimSystem 兼容性
- 添加了 Pika 的 Quests 插件
- 添加了 BetonQuest 插件
- 添加了 Pl3xMap 插件
- MatcherPlus 兼容性改进
- 添加了对 CrazyCrates 的支持
- 添加了对 ExcellentCrates 的支持
- 添加了对 SilkSpawners 的支持。
- WorldGuard 兼容性改进(感谢 golovin12)
- 添加了明确的权限处理:
- 区域所有者和成员自动拥有在其自己的区域内创建和交易的权限。
- 其他玩家必须启用适当的 WorldGuard 标志(quickshophikari-create, quickshophikari-trade)才能与商店互动。
- 如果商店位于任何区域之外,默认的 QuickShop 行为适用(无额外限制)
- 添加了明确的权限处理:
- 添加了基于商店状态的彩色标记以支持 bluemap(感谢 YusakiDev)
- 更新了 dynmap/towny 插件以使用新的 ShopTypeEnhancedEvent 而不是 ShopTypeEvent。
- 移除了 WorldEdit 兼容性,现在已包含在主插件中。
- 添加了对全局标志的支持以支持 WorldGuard 兼容性。
内部/开发者 API
- 移除了一些已弃用的方法和类。
- 重构了交互管理器。现在更加灵活并允许外部添加
- 这涉及两个类 InteractionBehavior 和 InteractionType。
- InteractionType 详细说明了交互类型,例如:STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP
- InteractionBehavior 概述了 InteractionType 的行为,例如 CONTROL_PANEL 和 TRADE_UI
- 添加了 UserLimitCalculationEvent,允许应用自定义用户限制。
- 这对于限制用户拥有的商店数量或在现有等级系统提供的限制基础上添加新限制非常有用,而无需实现新的 RankLimiter。
- 添加了一个新的 ShopLayoutProvider 接口及其默认实现。
- 这允许使用自定义布局来布置商店,提供更多自定义选项。
- 这还允许开发人员覆盖默认布局提供者并创建自己的实现。
- 如何自行实现?
- 实现您想要注册到 InteractionManager 的类:
-
InteractionManager manager = QuickShop.getInstance().getInteractionManager(); manager.interaction(new MyTradeInteraction()); manager.behavior(new MyTradeBehavior());
- 替换了一些可以轻松替换为内置 Java 方法的 Apache Commons 调用,减少了约 1100ms/方法调用
- 弃用了 ShopType 枚举和 ShopTypeEvent。这些被新的 IShopType 接口和实现类所取代。
- 新的事件是 ShopTypeEnhancedEvent。
- 这允许第三方插件添加自己的商店类型,并简化了代码检查的翻译。
- 更新了配置系统以使用 Boosted-yaml
- 这允许自动更新配置文件而无需复杂的更新脚本
- 这还允许配置系统不依赖于 Minecraft。
- 将逻辑 PaperLib 调用替换为原生 PaperAPI 调用。
次要更改
- 将 Java 版本提升到 21
- 添加了 shop.display-allow-enchants 以启用/禁用商店展示物品上的附魔。
- 为 packetevents 不支持虚拟展示物品上的自定义附魔添加了变通方法。
- 使用本地化翻译进行商店类型的模式切换图标(感谢 ExyiN)
- 提升了 Residence 版本以支持兼容性(感谢 YuanYuanOwO)
- 添加了世界白名单支持(感谢 wling-art)
- 添加了 /qs database save 命令,该命令将所有当前标记为脏数据的商店保存到数据库。
- 将 _SHOPBLOCK 交互拆分为 _SHOPBLOCK 和 _CONTAINER。
- _SHOPBLOCK 与商店相关,_CONTAINER 与当前不是商店的有效商店容器相关。
- 添加了命令面板中的库存选项,这对于为玩家打开商店库存提供了第二个选项很有用。
- 将 Crowdin 参数从系统属性移到 config.yml
- crowdin-host
- use-crowdin-ota
修复
- 修复了物品价格限制的问题(感谢 maxcom1)
- 修复了 1.20.x 协议库显示的问题(感谢 YuanYuanOwO)
- 修复了 itemdebug 中没有手持物品的问题(感谢 YuanYuanOwO)
- 修复了 dominion 插件的问题(感谢 YuanYuanOwO)
- 添加了一个简单的检查以避免这种情况。如果不是自己的商店,直接拒绝限额请求。(感谢 YuanYuanOwO)
- 修复了在 TransactionBuilder 中未设置税费而导致的 NPE(感谢 maxcom1)
- 修复了 /quickshop suggestprice 无法区分购买/出售商店的问题。(感谢 MidSpike)
- 修复了 ProtocolLib 的 PacketEvents ClassNotFoundException(感谢 wling-art)
- 将区块状态访问重新分配到区域线程以进行商店创建(感谢 r00tbeerman)
- 解决了 SLF4J StaticLoggerBinder 加载错误(感谢 wling-art)
- 通过验证招牌朝向解决了招牌劫持问题(感谢 wling-art)
- 对 QuickShop 禁用时的性能改进以防止潜在的冻结。
- 修复了 1.20.4 packetevents 虚拟展示物无法保持位置的问题。
- 修复了 GriefPrevention 兼容性插件中的关键问题。
- 修复了当福利激活时商店所有者无法获得金钱的问题。
- 修复了 folia 上 lands 插件的问题,使用区域线程以支持 Folia 兼容性(感谢 YusakiDev)
- 修复了堆叠商店上 TRADE_DIRECT 的问题
- 修复了 protocollib 5.4.0 由于未记录的包变更导致的问题。
- 修复了创建商店时物品堆叠超过最大堆叠大小的问题。
- 修复了 1.21.11 上与 BukkitAudiences 相关的崩溃问题。
- 修复了商店删除时过于急躁的问题。
- 修复了非所有者拥有的商店转让给其他人时的权限检查问题。(感谢 YuanYuanOwO)
- 修复了超级工具 UI 问题(感谢 YuanYuanOwO)
- 修复了调试模式外生成日志的问题。
- 修复了 /qs find 问题。
- 修复了配置加载时间问题。
- 修复了配置加载/创建警告消息语言问题。
- 修复了命令描述语言键不匹配的问题(感谢 wling-art)
- 修复了 folia 上的 qs clean 命令(感谢 wling-art)
- 修复了 folia 上的 per-player-shop-sign 问题(感谢 wling-art)
- 修复了虚拟展示物包发送中的潜在递归死锁问题(感谢 wling-art)
- 修复了配置加载/创建警告消息语言问题。
- 修复了 folia 上 /qs browse 和 ShopItemOnly 插件不正常工作的问题。
- 修复了 PLAN 使用过时 API 的问题。
- 修复了 folia 上的 /qs clean 问题。(感谢 wling-art)
- 修复了 folia 上的 /qs cleanghost 问题(感谢 wling-art)
- 更多针对 folia 上商店的线程安全修复(感谢 wling-art)
- 修复了福利计算中的所有者付款问题(感谢 wling-art)
QuickShop-Hikari 6.2.0.9-RELEASE-1
on 2025 Oct 086.2.0.9 - 重要提示:包含漏洞修复,请尽快更新。
请在更新前备份您的数据库。
主要变更
修复了 GUI 漏洞
此版本修复了近期披露的 GUI 系统中的一个安全漏洞。
大量事件系统变更
控制面板组件系统重构
商店控制面板系统已重构,拆分为多个独立类。这使得第三方插件可以更轻松地向控制面板添加自定义组件。同时新增了一个事件 ControlComponentGenerateEvent,该事件在控制面板生成过程中分为 PRE、MAIN 和 POST 三个阶段触发。其中 MAIN 阶段支持使用自定义的 ControlComponent 替换原始对象,并在发送控制面板时生效。
全新改版的数据包系统引入
-
简介:
- 一种模块化且可扩展的系统,用于管理 Minecraft 中虚拟显示物品相关的数据包。
- 同时支持 ProtocolLib 和 PacketEvents 库,提供更高的灵活性。
-
自定义数据包工厂:
- 为游戏版本 1.20.x 和 1.21.x 提供了模块化的
PacketFactory实现。 - 数据包类型包括:
- Spawn Packet(生成包):在指定位置生成虚拟物品实体。
- Metadata Packet(元数据包):更新虚拟物品的视觉属性。
- Velocity Packet(速度包):为实体添加运动/速度(当前为可选功能)。
- Destroy Packet(销毁包):从客户端视图中移除实体。
- 为游戏版本 1.20.x 和 1.21.x 提供了模块化的
-
错误处理与日志记录:
- 增强调试日志以追踪数据包相关问题。
- 对缺失工厂或未注册监听器的情况提供详细的错误信息。
改进:
- 更佳的模块化设计,便于未来支持新的 Minecraft 版本。
已弃用:
- 旧版数据包处理机制已被此新数据包系统取代。
事件系统重构
新增
- 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 配置项,控制商店告示牌是否上蜡,默认为 false。
- 新增 shop.display-protocol 配置项,允许选择使用 packetevents 或 protocollib 进行数据包处理。
修复
- 重新将 /qs history 权限添加到默认的 quickshop.player 权限组。
- 修复部分用户缺少编码数据库列的问题。
- 修复 reached-maximum-can-create 限制未正确实现的问题。
- 修复活塞会移动潜影盒商店的问题。
- 修复彩色潜影盒可被购买并放入非彩色潜影盒内的问题。
- 修复 GriefPrevention 的 /transfer 命令未正确注销原所有者的问题。
- 修复当锁定设置为 false 时告示牌未更新的问题。
- 修复 Slimefun 兼容性问题:爆炸镐未被 QuickShop 正确检测(感谢 YuanYuanOwO 和 Starfruit)。
- 修复安全漏洞(感谢 macaw/casper 首次报告此问题)
版本变更
- 移除对 1.18 和 1.19 版本的支持(这些版本使用率极低)。
- 新增对 1.21.5 版本的支持。
QuickShop-Hikari 6.2.0.10
on 2025 Oct 086.2.0.10
主要更新
- 添加对 Paper 的 1.21.6 版本支持(Spigot 尚未更新,因为我们正计划逐步弃用 Spigot 支持,请督促 Spigot 开发者尽快现代化其 API)
- 添加对 Paper 的 1.21.7 版本支持(Spigot 尚未更新,因为我们正计划逐步弃用 Spigot 支持,请督促 Spigot 开发者尽快现代化其 API)
- 添加对 Paper 的 1.21.8 版本支持(Spigot 尚未更新,因为我们正计划逐步弃用 Spigot 支持,请督促 Spigot 开发者尽快现代化其 API)
- 对 packetevents 进行了一些内部更新(现在需要 2.9.0 版本)
- 更新了 Lands 插件的兼容性支持
附加组件变更
- 新增 MatcherPlus 附加组件
- 支持在商店中使用 BreweryX 和 AdvancedItems 的物品堆叠,并提供更精准的匹配功能
- 新增 FabledSkyblock 兼容支持
- 新增 Dominion 兼容支持
- 新增 HuskTowns 兼容支持
- 新增 IridiumSkyblock 兼容支持
- 在 ARM 兼容模块中新增 member-create 功能,用于成员创建
- 在 ARM 中新增 admin-override 功能及 quickshop.arm.admin 权限节点,用于管理员覆盖操作
次要变更
- 新增配置项,可用于设置展示物品的坐标位置
- 新增
/qs toggledisplayall on/off server/owned命令- 玩家需拥有
quickshop.toggledisplayall.admin权限节点才能切换服务器上所有展示物品的显示状态
- 玩家需拥有
- 在
/qs price和/qs create命令中支持使用缩写形式,例如使用 2.5k 表示 2500 - 可通过 config.yml 中的
shop.default-display设置默认的展示状态
修复内容
- 修复了在 1.21.5 版本中展示物品会飞向太空的问题
- 修复了 TRADE_UI 交互干扰快速创建商店的问题
- 修复了使用 ProtocolLib 时展示物体会穿过箱子下落的问题
- 修复了在 .9 及早期 .10 快照版本中告示牌显示异常的问题
- 针对 Paper 服务器实现了一些性能优化
- 修复了所有已知的 Folia 使用问题(感谢 RootB33R/SleazLee 的贡献)
可能的 6.2.0.11 新特性
以下是可能在 6.2.0.11 版本中加入的功能预览:
- 添加更多积压已久的兼容性支持/附加组件
- 引入 Gradle?(期待观察编译时间的提升效果)
- 更新文档
- 更新配置文件中的注释说明
- 重构配置系统?
- 是否支持自动更新?
- 可借此移除旧的更新代码
- 移除冗余的 Spigot 模块?
- 是否可以舍弃使用率极低的 1.20 等旧版本支持?
- 当然还包括常规的漏洞修复
- 实现新的告示牌解析器(sign parser)?
- 可能需要重新评估,毕竟该功能已搁置较长时间...
QuickShop-Hikari 6.2.0.10
on 2025 Aug 086.2.0.10
主要变更
- 为 paper 添加了对 1.21.6 的支持(spigot 尚未更新,因为我们希望弃用 spigot 支持,请催促 spigot 开发者更新其 API)
- 为 paper 添加了对 1.21.7 的支持(spigot 尚未更新,因为我们希望弃用 spigot 支持,请催促 spigot 开发者更新其 API)
- 为 paper 添加了对 1.21.8 的支持(spigot 尚未更新,因为我们希望弃用 spigot 支持,请催促 spigot 开发者更新其 API)
- 对 packetevents 进行了一些内部更新(现在需要 2.9.0 版本)
- 更新了 Lands 支持
附加组件变更
- 添加了 MatcherPlus 附加组件
- 允许在具有改进匹配能力的商店中支持 BreweryX 和 AdvancedItems 堆叠
- 添加了 FabledSkyblock 兼容
- 添加了 Dominion 兼容
- 添加了 HuskTowns 兼容
- 添加了 IridiumSkyblock 兼容
- 在 ARM 兼容中添加了 member-create 用于成员创建
- 在 ARM 中添加了 admin-override 和 quickshop.arm.admin 权限用于管理员覆盖
次要变更
- 为显示项的坐标添加了配置。
- 添加了 /qs toggledisplayall on/off server/owned
- 玩家需要具有权限节点 quickshop.toggledisplayall.admin 才能在服务器上切换所有显示。
- 在 /qs price 和 /qs create 命令中添加了使用缩写的功能,例如 2.5k 表示 2500
- 添加了使用 config.yml 中的 shop.default-display 设置默认显示状态的功能
修复
- 修复了在 1.21.5 上显示项发送到月球的问题
- 修复了 TRADE_UI 交互干扰快速创建的问题。
- 修复了 protocollib 上的显示项穿过箱子的问题
- 修复了早期版本中.9 和之前的.10 快照上的标志问题
- 为 paper 服务器实现了一些性能改进
- 修复了与 Folia 使用相关的所有未解决问题。(感谢 RootB33R/SleazLee 的贡献)
可能的 6.2.0.11 功能
以下是可能在 6.2.0.11 中出现的一些功能的概述:
- 正在堆积的其他兼容/附加组件。
- gradle?(有兴趣查看编译时间的提升)
- 更新文档
- 更新配置注释
- 更新配置系统?
- 自动更新?
- 允许删除更新代码
- 删除废弃的 spigot 模块?
- 由于使用量低,是否可以丢弃任何 1.20 版本?
- 当然是 bug 修复
- 标志解析器实现?
- 由于已经有一段时间没有查看它了,可能需要重新评估...
QuickShop-Hikari 6.2.0.9-RELEASE-1
on 2025 Apr 046.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版本的支持。
QuickShop-Hikari 6.2.0.8
on 2025 Feb 026.2.0.8
主要变更
- 新增了对Folia的初始支持
- CONTROL_PANEL_UI是一种新的交互方式,它允许你使用图形用户界面(GUI)控制面板而非聊天界面来进行操作。
- 通过这个GUI,你可以添加/移除工作人员、转移所有权、设置商店的销售模式、更改价格以及删除商店!
- 重新添加了QS历史记录GUI
- 移除了真实物品和实体显示;相较于虚拟显示,它们没有任何优势,而且主要还会引发一些问题。
- 如果协议库未更新/未安装,它将默认不显示。
- 新增了/qs浏览 [世界]命令,玩家可以根据是否将世界作为参数来按服务器或按世界查看商店。
- 新增了TRADE_UI交互方式,它会为玩家打开一个基于GUI的交易菜单,以便玩家从商店购买/出售预设的以及自定义数量的物品。
- 更新至我的世界1.21.3、我的世界1.21.4版本。
- 新增了VaultUnlocked支持
次要变更
- 新增了两种即将推出的交互行为:CONTROL_PANEL_UI和TRADE_UI
- 进行了设置,使得当价格变更费用设置为0时,不会发送收费消息。
- 新增了/qs staffall命令来管理所有商店的工作人员。
- 新增了一种商店模式:冻结模式。
- 这允许管理员/商店工作人员暂时停止与商店的交易。
- 该模式已添加到店主菜单中。
- 该模式已添加到基于文本的控制面板中。
- 该模式引入了新命令:/qs silentfreeze和/qs freeze
- 设置了/qs suggestprice的默认操作,当看不到商店时,尝试使用手中的物品堆。
- 新增了shop.finding.global来移除/qs find的距离限制
- 将招牌商店的招牌上蜡以防止修改(感谢ThiagoROX)
- 添加了招牌打开监听器(感谢ThiagoROX)
- 添加了子命令覆盖(感谢ThiagoROX)
内部相关
- 新增了样式指南。
- 在可能的情况下,在代码内部添加了final关键字。
- 当取消设置商店名称时,会调用ShopNamingEvent。
- 新增了ShopUnlimitedStatusEvent,在更改商店的无限制状态时会调用该事件。
- 将事件重新整理到不同的包中。这将会导致依赖这些事件的插件出现问题。
Discord相关变更
- 为通过GitHub赞助的人员新增了赞助者角色。
兼容插件
- Towny
- 新增了废弃城镇配置,以便在城镇沦为废墟时移除商店。
附加插件
高级空岛(SuperiorSkyblock)
- 进行了设置,使得兼容插件可以在有人被从岛屿封禁时删除商店。
修复内容
- 修复了Velocity和Bungee兼容Jars的问题
- 修复了Towny兼容Jar在地块被清理或城镇被删除时不删除商店的问题。
- 修复了利用潜影盒绕过物品限制的问题(感谢TauCubed)
- 修复了在Essentials中查询Towny城镇/国家账户的问题(感谢galacticwarrior9)
注意事项
- 即将移除对1.18/1.19版本的支持。
错误修复
- 修复了商店物品和某些功能的漏洞(感谢 bridgelol)
- 由于终端用户遇到错误,在更换时暂时禁用了 QS 历史记录。
- 修复了附魔限制在附魔书中未检测到它们的问题(感谢 TauCubed)
更改内容
完整变更日志:https://github.com/QuickShop-Community/QuickShop-Hikari/compare/6.2.0.5...6.2.0.6



