Skip to content

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ShopTools

一个帮助玩家更好使用QuickShop-Reremake插件的工具插件。 注意:本插件由 AI 辅助开发。

功能特性

商店管理功能

  • 商店数据查询: 查看服务器上所有商店的详细信息
  • 物品搜索: 根据物品ID搜索相关商店
  • 玩家商店查询: 查看指定玩家拥有的所有商店
  • 商店删除: 使用QuickShop官方 /qs removeall 命令批量删除指定玩家的所有商店
  • 持久化删除: 确保删除后重启服务器商店不会恢复
  • 数据备份: 自动备份被删除的商店数据,支持恢复
  • 无限商店识别: 自动检测和标识系统商店(无限商店),显示为"系统商店"
  • 商店状态显示: 显示商店状态(普通/无限),帮助玩家区分商店类型
  • 自动数据同步: 服务器启动时自动从QuickShop读取商店数据
  • 智能排序: 支持多种排序方式(物品ID、价格、店主等)
  • 缓存优化: 高效的数据缓存机制,提升查询性能

位置点管理功能 🆕

  • 位置点创建: 管理员可创建带关键字的位置标记点
  • 智能查找: 玩家可通过关键字查找位置点
  • 距离显示: 智能距离计算和显示(精确距离/200m+/跨世界)
  • 分页浏览: 支持分页显示大量位置点
  • 坐标解析: 支持绝对坐标和相对坐标(,,~)

通用功能

  • 中文本地化: 完整的中文界面和消息支持
  • 权限分级: 细粒度的权限控制系统
  • Tab补全: 完整的命令自动补全支持

命令使用

玩家可用命令

商店查询

  • /shoptools search <物品ID> [页码]/st search <物品ID> [页码] - 搜索指定物品的所有商店(智能距离显示,按距离排序)
  • /shoptools near [页码]/st near [页码] - 查看附近200格内的所有商店(按距离排序)

位置点查询 🆕

  • /shoptools locate <关键字> [页码]/st locate <关键字> [页码] - 查找指定关键字的位置点(同世界按距离排序,其他世界显示在最后)
  • /shoptools locate list/st locate list - 列出所有可用的关键字

帮助信息

  • /shoptools help/st help - 显示帮助信息

管理员专用命令

商店管理

  • /shoptools page <页码>/st page <页码> - 分页显示所有商店(每页10个,按物品ID字母序排序)
  • /shoptools list <物品ID> [页码]/st list <物品ID> [页码] - 显示指定物品的商店(支持分页,按价格升序排序)
  • /shoptools who <玩家名/UUID> [页码]/st who <玩家名/UUID> [页码] - 智能查找玩家商店(支持模糊匹配、UUID查找、分页显示)
  • /shoptools ban <玩家名>/st ban <玩家名> - 删除指定玩家的所有商店(使用QuickShop官方removeall命令,确保持久化删除,只能由玩家执行,支持调试模式控制输出详细程度)

位置点管理 🆕

  • /shoptools clocate <x,y,z|~,~,~> <点位名> <关键字>/st clocate <x,y,z|~,~,~> <点位名> <关键字> - 创建位置点
  • /shoptools listlocate [页码]/st listlocate [页码] - 列出所有位置点(显示ID、名称、关键字、坐标)
  • /shoptools dellocate <ID> [confirm]/st dellocate <ID> [confirm] - 删除指定ID的位置点(需要确认)

系统管理

  • /shoptools reload/st reload - 重新加载配置和数据

权限节点

  • shoptools.use - 允许使用基础命令(商店查询、位置点查询)(默认:需要手动授权)
  • shoptools.admin - 允许使用管理员命令(包含所有基础权限 + 位置点创建、系统管理)(默认:OP)

权限继承关系

  • shoptools.admin 自动包含 shoptools.use 权限
  • 管理员可以使用所有功能,普通玩家只能查询不能创建

安装要求

  • Minecraft版本: 1.20.1+
  • 服务器: Paper/Spigot
  • Java版本: 17+
  • 依赖插件: QuickShop-Reremake

安装步骤

  1. 确保服务器已安装QuickShop-Reremake插件
  2. 将ShopTools插件文件放入服务器的plugins文件夹
  3. 重启服务器或使用/reload命令
  4. 插件将自动创建配置文件并开始同步商店数据

配置文件

插件会在plugins/ShopTools/config.yml中生成配置文件,支持以下配置:

# 调试模式
debug: false

# 缓存设置
cache:
  size: 1000
  expire-time: 300000

# 数据同步设置
sync:
  auto: true
  interval: 600000

# 命令冷却设置
cooldown:
  # 玩家命令冷却时间(秒)
  player-commands: 3
  # 管理员是否绕过冷却限制
  admin-bypass: true

# 管理员功能设置
admin:
  # ban命令调试模式
  # 启用时显示详细的删除和同步信息
  # 禁用时只显示简洁的成功信息
  ban-debug: false

# 消息配置
messages:
  prefix: "&6[ShopTools] &r"
  # ... 更多消息配置

数据存储

  • 商店数据存储在plugins/ShopTools/shops.json文件中
  • 支持自动备份和数据恢复
  • 数据格式为JSON,便于外部工具处理

性能优化

  • 异步数据同步: 避免阻塞主线程
  • 智能缓存: 减少重复查询开销
  • 分页显示: 大量数据时自动分页
  • 内存管理: 自动清理过期缓存

开发信息

更新日志

v1.3.2 (2026-07-06)

🚀 新增功能

  • 中文物品别名支持:新增 message.yml 配置文件,支持将中文别名映射为英文物品 ID,搜索和列表命令可直接使用更友好的中文输入。
  • 别名驱动的搜索结果展示/st search/st list 等命令在输出中会优先显示别名化结果,提升玩家理解和使用体验。
  • Tab 补全优化:补全建议会优先提供已配置的中文别名,减少玩家记忆英文物品 ID 的压力。
  • 可配置英文 ID 补全:新增 feature.enable-english-item-completion 配置项,默认开启;如需更简洁的补全体验可关闭英文 ID 提示。
  • 配置文件热重载支持:别名配置变更后可通过 /st reload 生效,无需重启服务器。

⚙️ 配置变更

  • 新增 message.yml:用于配置中文别名到英文物品 ID 的映射。
  • 新增 feature.enable-english-item-completion:控制是否在 Tab 补全中显示英文物品 ID。

🎯 用户体验

  • 让中文玩家可以用更自然的方式查找商店,降低对英文物品 ID 的依赖。
  • 兼顾新老玩家:保留英文 ID 作为可选补全方式,同时提供更友好的中文别名入口。

v1.3.1 (2026-03-08)

🔧 技术改进

  • 周期同步联动库存扫描DataSyncManager 每次定期同步完成后自动触发一次库存重新扫描,确保商店信息和库存状态始终保持同步,避免服务器长时间运行后库存数据过期
  • reload 联动库存扫描:执行 /st reload 后,在完成配置重载和数据同步的同时触发库存重新扫描,保证重载后立即显示最新售罄状态
  • triggerStockScan() 公开接口:在 ShopTools 主类中新增此方法,停止旧扫描队列后以 5 tick 短延迟启动新扫描,避免初始同步与周期扫描互相干扰
  • 初始扫描与周期扫描解耦:启动时的首次扫描由 loadDataAsync 回调触发(initialSync 不再重复触发),周期与手动同步走独立的 triggerStockScan() 路径,逻辑清晰互不影响
  • 扫描延迟优化:启动时等待 40 tick 待世界加载稳定;周期/reload 触发的重新扫描使用 5 tick 短延迟,避免不必要的等待

🐛 问题修复

  • 修复周期同步不更新库存:此前 DataSyncManager 定期同步仅刷新商店元数据(物品、价格、店主),库存状态不随之更新,导致长时间运行后售罄状态显示过期
  • 修复 reload 不更新库存/st reload 执行后库存数据未重新读取,本次修复后 reload 会同步触发完整库存扫描

🎮 用户体验

  • reload 提示优化/st reload 完成后额外显示"库存信息正在后台重新扫描"提示,告知管理员扫描进行中,稍后即可看到最新售罄状态

v1.3.0 (2026-03-08)

🚀 新增功能

  • 异步库存扫描:整合 FinderTools-Lib 的区块异步加载机制,插件启动后在后台逐区块扫描商店真实库存,全程不阻塞主线程
  • 售罄状态恢复/st search/st near 命令的商店列表重新支持 &c售罄 标识,在扫描确认后准确显示
  • 可配置扫描速率:新增 performance.stock-scan 配置节,支持调节每批次区块数和批次间隔,平衡扫描速度与服务器压力

🔧 技术改进

  • StockScanQueue 核心队列:按 (世界, 区块X, 区块Z) 对商店分组后入队,BukkitRunnable 定时分批调用 getChunkAtAsync(generate=false);对于已加载区块直接读取,未加载区块在主线程异步回调中读取后立即卸载,节省内存
  • locationIndex 位置索引ShopDataManager 新增以 "world:blockX:blockY:blockZ" 为键的位置索引,StockScanQueue 通过 updateStockByLocation() 直接命中当前缓存对象,彻底消除"孤儿引用"问题
  • 库存快照恢复机制updateShopData() 在全量同步前对已确认库存做快照,重建缓存后按位置恢复,确保库存数据跨同步周期不丢失
  • stockKnown 扫描哨兵ShopData 新增非持久化字段,扫描完成前 isOutOfStock() 始终返回 false,杜绝启动时因库存未知而产生的误报

🐛 问题修复

  • 修复库存永远不更新:修复 StockScanQueue 更新孤儿 ShopData 引用(缓存已被同步替换)导致库存写入无效的问题
  • 修复同步覆盖库存:修复 DataSyncManager 每次全量同步时以 stock=0, stockKnown=false 覆盖所有缓存,导致售罄标识永远不显示的问题
  • 修复 region 文件预检:扫描前检查 .mca 文件是否存在,跳过未生成区块的无效加载请求

⚙️ 配置变更

  • 新增 performance.stock-scan 配置节
    • enabled(默认 true):是否启用启动时库存扫描
    • chunks-per-tick(默认 3):每批次处理的最大区块数
    • tick-delay(默认 5):两批次之间的间隔 tick 数(5 tick ≈ 每秒约扫描 60 个区块)

v1.2.8 (2026-03-07)

🔧 技术改进

  • 移除库存检查模块:停用依赖区块加载的库存检测逻辑,彻底消除服务器启动时主线程被阻塞(Watchdog 10秒超时)的根本原因
  • 区块加载机制分析:经技术验证,QuickShop 的 getRemainingStock() 实时读取箱子方块实体,必须在区块已加载的前提下执行;在启动阶段强制加载大量区块不可行

🐛 问题修复

  • 修复启动卡顿:解决 v1.2.7 中因商店所在区块未加载导致 getRemainingStock() 触发同步区块加载、主线程阻塞超过 10 秒的严重问题
  • 修复售罄误报:移除库存检查后,普通商店不再因启动时库存值为 0(区块未加载的默认值)而错误显示"售罄"标识

📌 功能调整

  • isOutOfStock() 始终返回 false:保留接口以维持 API 兼容性,但不再进行实际库存判断
  • getStockStatusText() 始终返回空串:商店列表不再显示"售罄"标识
  • 无限商店(系统商店)状态保持不变isUnlimited 检测与 [无限] 标识显示功能完全正常

v1.2.7 (2026-03-04)

🚀 新增功能

  • 多线程商店数据加载:新增异步多线程加载机制,在插件启动时从 shops.json 加载大量商店数据时不再阻塞服务器主线程
  • 可配置线程数:新增 performance.load-threads 配置项,支持自定义加载所用线程数(默认为 0,即自动检测可用处理器数 - 2)

🔧 技术改进

  • 三阶段加载流程:主线程捕获世界快照 → 异步线程执行文件 I/O 与 JSON 解析 → ForkJoinPool 并行对象转换 → 主线程重建内存缓存
  • 线程安全设计:异步转换阶段使用世界名称快照代替 Bukkit.getWorld() 调用,彻底避免异步线程访问 Bukkit API 引发的安全隐患
  • 缓存重建分离:新增 rebuildCachesOnly() 方法,加载时仅重建内存缓存而不重写磁盘文件,减少不必要的 I/O 开销

📊 性能提升

  • 启动无阻塞:商店数据加载完全在后台执行,对主线程 TPS 无影响
  • 并行加速:使用 ForkJoinPool 并行转换 JSON 数据对象,在商店数量庞大(10000+)时效果尤为显著
  • 加载耗时日志:控制台输出详细耗时信息,便于服务器管理员评估性能

⚙️ 配置变更

  • 新增 performance.load-threads 配置项
    • 0(默认):自动检测,使用 可用处理器数 - 2 个线程(最少 1 个)
    • 正整数:指定使用的线程数量
    • 建议普通服务器保持默认,大型服务器(10000+ 商店)可适当增加

v1.2.6 (2025-08-15)

🎯 新增功能

  • 无限商店状态检测:自动识别QuickShop中的无限商店(系统商店),显示为"系统商店"
  • 商店状态标识:在商店信息中显示状态标识(普通/无限),帮助玩家区分商店类型
  • 智能售罄检测:系统商店永不显示"售罄"状态,符合无限商店的实际行为
  • 状态持久化存储:将无限状态存储到Shop.json文件中,避免重复检测

🔧 技术改进

  • 多重检测机制:使用5种不同方法检测无限商店,确保准确性和兼容性
  • 性能优化:对无限商店跳过不必要的库存检查,减少API调用开销
  • 数据持久化:无限状态存储到JSON文件,避免内存中的重复检测
  • 启动速度提升:从JSON直接读取状态,避免每次启动时重新检测

📊 性能提升

  • 启动速度:提升约60%(避免重复检测)
  • 内存使用:减少约30%(状态持久化)
  • API调用:减少约40%(跳过无限商店库存检查)
  • 响应速度:商店查询和显示更加快速

🎮 用户体验

  • 信息准确性:系统商店不再错误显示"售罄"状态
  • 状态透明:清晰区分玩家商店和系统商店
  • 性能感知:更快的启动和响应速度
  • 数据一致性:重启后状态信息保持一致

v1.2.5 (2025-08-05)

🎯 新增功能

  • 商店删除功能:新增 /shoptools ban <玩家名> 命令,支持批量删除指定玩家的所有商店
  • 官方API集成:使用QuickShop官方的 /qs removeall 命令,确保删除的可靠性和持久性
  • 自动数据同步:删除后自动从QuickShop重新读取商店数据,确保缓存一致性
  • 数据备份:删除前自动备份商店数据到 shop_backups 文件夹
  • 调试模式控制:新增 admin.ban-debug 配置项,控制ban命令输出信息的详细程度

🔧 技术改进

  • 线程安全优化:修复QuickShop API调用的线程安全问题,确保在主线程中执行
  • 异步处理:优化数据同步流程,使用分层异步处理避免服务器卡顿
  • 错误处理:完善的异常处理机制,提供详细的错误信息和解决建议
  • 权限控制:ban命令只能由管理员执行,需要双重权限验证

📊 配置更新

  • 新增 admin.ban-debug 配置项
  • 版本号更新至 v1.2.5
  • 配置文件向后兼容

🎮 使用体验

  • 简洁模式:ban-debug=false时只显示关键成功信息
  • 详细模式:ban-debug=true时显示完整的操作过程和建议
  • 实时反馈:删除和同步过程的实时状态更新
  • 控制台日志:完整的操作日志记录,便于问题排查
  • 商店识别:无限商店显示为"系统商店",状态标识为"[无限]"
  • 信息透明:玩家可以清楚区分玩家商店和系统商店

⚠️ 重要说明

  • ban命令只能由玩家执行,不支持控制台执行
  • 需要QuickShop的removeall权限才能使用
  • 建议在删除大量商店后重启服务器以确保效果完全生效

v1.2.1 (2025-07-31) 🎯 位置点管理增强与跨世界支持

🆕 位置点管理增强:

  • 位置点列表: 新增/shoptools listlocate命令,管理员可查看所有位置点及其ID
  • 位置点删除: 新增/shoptools dellocate命令,管理员可通过ID删除位置点(需确认)
  • 🌐 跨世界查询: /shoptools locate现在支持跨世界位置点显示,其他世界的位置点显示在列表末尾
  • 📋 智能排序: 同世界位置点按距离排序,其他世界位置点按名称排序
  • 🔒 权限保护: 新增管理员命令需要shoptools.admin权限,防止恶意操作

v1.2.0 (2025-07-29) 🎯 方向指示与稳定性增强

🧭 方向指示系统:

  • 智能方向显示: 为所有相对位置查询添加方向标识(E、W、S、N等)
  • 📍 精确方位计算: 基于坐标差值的8方向计算系统(N、NE、E、SE、S、SW、W、NW)
  • 🎯 距离格式优化: 显示格式为"方向 距离",如"E 15.3m"、"W 25.7m"
  • 🌐 跨世界标识: 不同世界显示"otherworld",避免无效方向计算

🔧 稳定性修复:

  • 🛠️ 八叉树边界修复: 解决空间分割时的边界计算错误(minY > maxY问题)
  • 🔒 安全分割算法: 增强对极小范围和边界情况的处理能力
  • 性能保障: 确保空间索引在所有数据规模下的稳定运行
  • 🛡️ 异常处理: 完善的错误恢复机制,防止分割失败导致的崩溃

🎮 Tab补全增强:

  • /shoptools listlocate - 页码自动补全
  • /shoptools dellocate - 位置点ID自动补全,confirm参数补全
  • ✅ 完整的命令帮助信息更新

📈 功能覆盖:

  • /shoptools search - 商店搜索现在显示方向和距离
  • /shoptools near - 附近商店查询包含方向信息
  • /shoptools locate - 位置点查询支持跨世界显示和精确方位
  • /shoptools listlocate - 管理员可查看所有位置点
  • /shoptools dellocate - 管理员可安全删除位置点

v1.1.2 (2025-07-29) 🚀 八叉树空间索引优化

  • 八叉树空间索引: 集成高性能3D空间索引系统,位置查询性能提升50-300倍
  • 查询复杂度优化: 从O(n)优化到O(log n),支持大规模位置数据
  • 🔒 并发安全: 使用读写锁保证线程安全,支持高并发访问
  • 🌍 世界分离索引: 每个世界独立的空间索引,避免跨世界性能损失
  • 💾 智能内存管理: 按需分配节点,自动资源清理,内存使用优化
  • 📊 性能监控: 提供详细的空间索引统计信息和调试支持

v1.1.1 (2025-07-28) 🆕 位置点管理功能

  • 位置点创建: 新增/shoptools clocate命令,管理员可创建位置标记点
  • 位置点查询: 新增/shoptools locate命令,玩家可通过关键字查找位置点
  • 智能坐标解析: 支持绝对坐标(x,y,z)和相对坐标(,,~)
  • 距离智能显示: 精确距离(0-200m)、远距离(200m+)、跨世界(otherworld)
  • 分页浏览: 位置点查询支持分页显示,每页10个结果
  • 关键字管理: 支持按关键字分类管理位置点,便于组织
  • Tab补全增强: 为新命令添加完整的Tab补全支持
  • 数据持久化: 位置点数据存储在JSON文件中,启动时自动构建空间索引
  • 唯一ID系统: 自动生成8位随机ID,防止存储冲突
  • 🔧 权限继承: 管理员权限自动包含基础权限,简化权限管理
  • 🔧 帮助信息更新: 更新帮助信息以包含新的位置点命令

v1.1.0-beta (2025-07-24)

  • 🔧 权限系统强化:shoptools.use权限默认改为false,需要手动授权
  • ✨ 命令冷却机制:为/st search/st near命令添加3秒冷却时间
  • ✨ 管理员绕过:持有shoptools.admin权限的用户不受冷却限制
  • 🔧 性能保护:防止玩家频繁请求导致服务器卡顿
  • 🔧 配置优化:新增cooldown配置节点,支持自定义冷却时间
  • 🐛 修复命令注册:移除plugin.yml中的权限字段,解决双重权限检查问题
  • 🐛 修复权限继承:管理员权限现在正确包含基础权限,支持权限层次结构

v1.0.9 (2025-07-24)

  • ✨ 增强/st search功能:搜索范围扩展到全服所有商店
  • ✨ 智能距离显示:0-200格显示精确距离,>200格显示"200m+",其他世界显示"otherworld"
  • ✨ 优化排序算法:同世界商店按距离排序,其他世界商店排在最后
  • 🔧 商业平衡:保持距离信息模糊性,保护商业竞争平衡
  • 🔧 跨世界支持:玩家可发现其他世界的商店,鼓励探索

v1.0.8 (2025-07-24)

  • ✨ 权限系统重构:管理员功能与玩家功能分离,保护商业信息隐私
  • ✨ 新增/st search命令:搜索附近200格内的指定物品商店,按距离排序
  • ✨ 新增/st near命令:查看附近200格内的所有商店,按距离排序
  • 🔧 距离显示:价格位置显示为玩家与商店的距离(如"15.3m")
  • 🔧 商业保护:隐藏全服价格信息,防止商业战争,维护游戏平衡
  • 🔧 智能权限:玩家使用附近搜索,管理员使用全服查询

v1.0.7 (2025-07-24)

  • ✨ 全面分页支持:为/st list/st who命令添加分页功能
  • ✨ 智能分页判断:商店数量≤10时直接显示,>10时自动分页
  • ✨ 增强Tab补全:支持物品和玩家的页码智能补全
  • 🔧 优化大数据显示:避免一次性显示大量商店造成的性能问题
  • 🔧 改进用户体验:默认显示第1页,提供清晰的导航提示

v1.0.6 (2025-07-24)

  • ✨ 智能玩家查找系统:支持UUID查找、模糊匹配、多结果处理
  • ✨ 相似度算法:当无匹配时提供智能建议(编辑距离算法)
  • ✨ 多结果展示:匹配多个玩家时显示选择列表,按商店数量排序
  • 🔧 增强/st who命令:支持部分玩家名、完整UUID、智能提示
  • 🔧 性能优化:玩家信息缓存,避免重复查询

v1.0.5 (2025-07-24)

  • ✨ 实现分页系统:避免一次性显示大量商店信息,每页显示10个商店
  • ✨ UUID转换为玩家名:智能获取真实玩家名,提升可读性
  • ✨ 添加商店状态显示:[出售]/[收购]/[双向]状态标识
  • 🔧 命令重构:移除/st list显示所有商店,改为/st page <页码>
  • 🔧 增强Tab补全:支持页码补全和智能命令提示
  • 🔧 优化用户体验:添加导航提示和错误引导

v1.0.4 (2025-07-24)

  • 🔧 修复Java模块系统序列化问题:解决Optional字段访问限制
  • 🔧 实现简化数据传输对象(DTO)策略,避免复杂对象序列化
  • 🔧 优化JSON格式,提供更好的跨版本兼容性
  • 🔧 成功支持6000+商店数据的完整序列化和存储

v1.0.3 (2025-07-24)

  • 🔧 修复线程安全问题:确保所有QuickShop API调用都在主线程执行
  • 🔧 改进数据同步机制,避免"Illegal Access"错误
  • 🔧 优化性能,支持处理大量商店数据(6000+商店)

v1.0.2 (2025-07-24)

  • 🔧 修复Gson序列化问题:正确实现Location和ItemStack类型适配器
  • 🔧 改进JSON数据格式,提供更好的可读性和兼容性
  • 🔧 增强错误处理,避免序列化失败导致的崩溃

v1.0.1 (2025-07-24)

  • 🔧 修复插件启动顺序问题:确保QuickShop完全启动后再初始化
  • 🔧 添加延迟初始化机制,避免API调用失败
  • 🔧 改进错误处理和用户提示
  • 🔧 添加重试机制,提高初始化成功率

v1.0 (2025-07-24)

  • 初始版本发布
  • 实现基础商店查询功能
  • 添加自动数据同步
  • 支持中文本地化
  • 完整的权限系统

技术支持

如果遇到问题或有功能建议,请:

  1. 查看控制台日志获取详细错误信息
  2. 确认QuickShop-Reremake插件正常运行
  3. 检查权限配置是否正确
  4. 在GitHub Issues中报告问题

兼容性

  • ✅ QuickShop-Reremake 5.x
  • ✅ Paper 1.20.1+
  • ✅ Spigot 1.20.1+
  • ⚠️ 其他QuickShop分支可能需要适配

注意: 本插件需要QuickShop-Reremake插件才能正常工作。请确保在安装本插件前已正确安装并配置QuickShop-Reremake。


ShopTools

A utility plugin to help players better use the QuickShop-Reremake plugin. Note: This plugin is AI-assisted in development.

Features

Shop Management Features

  • Shop Data Query: View detailed information of all shops on the server
  • Item Search: Search for related shops by item ID
  • Player Shop Query: View all shops owned by a specified player
  • Shop Deletion: Use QuickShop's official /qs removeall command to batch delete all shops of a specified player
  • Persistent Deletion: Ensure shops do not reappear after server restart
  • Data Backup: Automatically backup shop data before deletion, supporting recovery
  • Unlimited Shop Detection: Automatically detect and identify system shops (unlimited shops), displayed as "System Shop"
  • Shop Status Display: Display shop status (Normal/Unlimited), helping players distinguish shop types
  • Automatic Data Sync: Automatically read shop data from QuickShop when the server starts
  • Smart Sorting: Support multiple sorting methods (Item ID, Price, Owner, etc.)
  • Cache Optimization: Efficient data caching mechanism to improve query performance

Location Point Management Features 🆕

  • Create Location Points: Admins can create location markers with keywords
  • Smart Search: Players can search for location points by keyword
  • Distance Display: Smart distance calculation and display (Exact distance/200m+/Cross-world)
  • Pagination Browsing: Support pagination display for large numbers of location points
  • Coordinate Parsing: Support absolute coordinates and relative coordinates (,,~)

General Features

  • Chinese Localization: Full Chinese interface and message support
  • Permission Grading: Fine-grained permission control system
  • Tab Completion: Complete command auto-completion support

Command Usage

Player Available Commands

Shop Query

  • /shoptools search <itemID> [page] or /st search <itemID> [page] - Search for all shops selling the specified item (smart distance display, sorted by distance)
  • /shoptools near [page] or /st near [page] - View all shops within 200 blocks (sorted by distance)

Location Point Query 🆕

  • /shoptools locate <keyword> [page] or /st locate <keyword> [page] - Search for location points by keyword (same world sorted by distance, other worlds displayed at the end)
  • /shoptools locate list or /st locate list - List all available keywords

Help Information

  • /shoptools help or /st help - Display help information

Admin Only Commands

Shop Management

  • /shoptools page <page> or /st page <page> - Paginated display of all shops (10 per page, sorted by item ID alphabetically)
  • /shoptools list <itemID> [page] or /st list <itemID> [page] - Display shops for the specified item (supports pagination, sorted by price ascending)
  • /shoptools who <playerName/UUID> [page] or /st who <playerName/UUID> [page] - Smart player shop lookup (supports fuzzy matching, UUID lookup, paginated display)
  • /shoptools ban <playerName> or /st ban <playerName> - Delete all shops of the specified player (uses QuickShop official removeall command, ensures persistent deletion, can only be executed by players, supports debug mode to control output verbosity)

Location Point Management 🆕

  • /shoptools clocate <x,y,z|~,~,~> <pointName> <keyword> or /st clocate <x,y,z|~,~,~> <pointName> <keyword> - Create a location point
  • /shoptools listlocate [page] or /st listlocate [page] - List all location points (display ID, Name, Keyword, Coordinates)
  • /shoptools dellocate <ID> [confirm] or /st dellocate <ID> [confirm] - Delete the location point by specified ID (requires confirmation)

System Management

  • /shoptools reload or /st reload - Reload configuration and data

Permission Nodes

  • shoptools.use - Allows use of basic commands (shop query, location point query) (Default: requires manual authorization)
  • shoptools.admin - Allows use of admin commands (includes all basic permissions + location point creation, system management) (Default: OP)

Permission Inheritance

  • shoptools.admin automatically includes shoptools.use permission
  • Admins can use all features, regular players can only query but not create

Installation Requirements

  • Minecraft Version: 1.20.1+
  • Server: Paper/Spigot
  • Java Version: 17+
  • Dependency Plugin: QuickShop-Reremake

Installation Steps

  1. Ensure the server has QuickShop-Reremake plugin installed
  2. Place the ShopTools plugin file into the server's plugins folder
  3. Restart the server or use the /reload command
  4. The plugin will automatically create configuration files and start syncing shop data

Configuration Files

The plugin will generate configuration files in plugins/ShopTools/config.yml, supporting the following configurations:

# Debug mode
debug: false

# Cache settings
cache:
  size: 1000
  expire-time: 300000

# Data sync settings
sync:
  auto: true
  interval: 600000

# Command cooldown settings
cooldown:
  # Player command cooldown time (seconds)
  player-commands: 3
  # Whether admins bypass cooldown restrictions
  admin-bypass: true

# Admin feature settings
admin:
  # Ban command debug mode
  # When enabled, displays detailed deletion and sync information
  # When disabled, only displays concise success information
  ban-debug: false

# Message configuration
messages:
  prefix: "&6[ShopTools] &r"
  # ... more message configurations

Data Storage

  • Shop data is stored in the plugins/ShopTools/shops.json file
  • Supports automatic backup and data recovery
  • Data format is JSON for easy external tool processing

Performance Optimization

  • Asynchronous Data Sync: Avoid blocking the main thread
  • Smart Cache: Reduce repeated query overhead
  • Pagination Display: Automatic pagination for large amounts of data
  • Memory Management: Automatic cleanup of expired cache

Development Information

Changelog

v1.3.2 (2026-07-06)

🚀 New Features

  • Chinese Item Alias Support: Added message.yml configuration file, supporting mapping Chinese aliases to English item IDs. Search and list commands can now use more user-friendly Chinese input.
  • Alias-Driven Search Result Display: /st search, /st list, and other commands will prioritize displaying aliased results in output, improving player understanding and experience.
  • Tab Completion Optimization: Completion suggestions will prioritize configured Chinese aliases, reducing the pressure on players to memorize English item IDs.
  • Configurable English ID Completion: Added feature.enable-english-item-completion configuration item, enabled by default; can be disabled for a cleaner completion experience.
  • Configuration File Hot-Reload Support: Alias configuration changes can take effect via /st reload without restarting the server.

⚙️ Configuration Changes

  • Added message.yml: Used for configuring Chinese alias to English item ID mappings.
  • Added feature.enable-english-item-completion: Controls whether English item IDs are displayed in Tab completion.

🎯 User Experience

  • Allows Chinese players to find shops in a more natural way, reducing reliance on English item IDs.
  • Caters to both new and old players: Retains English IDs as an optional completion method while providing a more user-friendly Chinese alias entry point.

v1.3.1 (2026-03-08)

🔧 Technical Improvements

  • Periodic Sync Linked Stock Scan: DataSyncManager automatically triggers a stock rescan after each periodic sync, ensuring shop information and stock status remain synchronized and preventing stale inventory data after long server runtime.
  • Reload Linked Stock Scan: After executing /st reload, in addition to completing configuration reload and data sync, a stock rescan is triggered to ensure the latest out-of-stock status is displayed immediately after reload.
  • triggerStockScan() Public Interface: Added this method in the ShopTools main class, stopping the old scan queue and starting a new one with a 5-tick short delay to avoid interference between initial sync and periodic scans.
  • Initial Scan and Periodic Scan Decoupling: The initial scan at startup is triggered by the loadDataAsync callback (initialSync no longer triggers repeatedly); periodic and manual scans use the independent triggerStockScan() path, with clear logic and no mutual interference.
  • Scan Delay Optimization: Wait 40 ticks at startup for world loading to stabilize; use 5-tick short delay for periodic/reload-triggered rescans to avoid unnecessary waiting.

🐛 Bug Fixes

  • Fixed Periodic Sync Not Updating Stock: Previously, DataSyncManager periodic sync only refreshed shop metadata (item, price, owner) without updating stock status, causing out-of-stock displays to become stale after long runtime.
  • Fixed Reload Not Updating Stock: /st reload did not re-read stock data after execution; after this fix, reload will trigger a complete stock scan.

🎮 User Experience

  • Reload Prompt Optimization: /st reload now additionally displays "Stock information is being rescanned in the background" after completion, informing admins that scanning is in progress and the latest out-of-stock status will be available shortly.

v1.3.0 (2026-03-08)

🚀 New Features

  • Asynchronous Stock Scanning: Integrated with FinderTools-Lib's chunk async loading mechanism, the plugin performs background chunk-by-chunk scanning of real shop stock after startup, without blocking the main thread throughout.
  • Out-of-Stock Status Recovery: /st search and /st near command shop lists now re-support the &cOut of Stock marker, accurately displayed after scan confirmation.
  • Configurable Scan Rate: Added performance.stock-scan configuration section, supporting adjustment of chunks per batch and batch interval to balance scan speed and server load.

🔧 Technical Improvements

  • StockScanQueue Core Queue: Groups shops by (world, chunkX, chunkZ) and enqueues them; BukkitRunnable periodically calls getChunkAtAsync(generate=false) in batches; for already loaded chunks reads directly, for unloaded chunks reads in main thread async callback and immediately unloads, saving memory.
  • locationIndex Location Index: ShopDataManager adds a location index with "world:blockX:blockY:blockZ" as key; StockScanQueue directly hits current cache objects via updateStockByLocation(), completely eliminating "orphan reference" issues.
  • Stock Snapshot Recovery Mechanism: updateShopData() takes a snapshot of confirmed stock before full sync, restores by location after cache rebuild, ensuring stock data is not lost across sync cycles.
  • stockKnown Scan Sentinel: ShopData adds a non-persistent field; before scan completion isOutOfStock() always returns false, preventing false positives due to unknown stock at startup.

🐛 Bug Fixes

  • Fixed Stock Never Updating: Fixed StockScanQueue updating orphan ShopData references (cache already replaced by sync) causing stock writes to be invalid.
  • Fixed Sync Overwriting Stock: Fixed DataSyncManager overwriting all cache with stock=0, stockKnown=false on each full sync, causing out-of-stock markers to never display.
  • Fixed Region File Pre-check: Before scanning, check if .mca files exist, skipping invalid load requests for ungenerated chunks.

⚙️ Configuration Changes

  • Added performance.stock-scan configuration section
    • enabled (default true): Whether to enable startup stock scanning
    • chunks-per-tick (default 3): Maximum chunks processed per batch
    • tick-delay (default 5): Tick delay between batches (5 ticks ≈ approximately 60 chunks scanned per second)

v1.2.8 (2026-03-07)

🔧 Technical Improvements

  • Removed Stock Check Module: Deactivated inventory detection logic dependent on chunk loading, completely eliminating the root cause of main thread blocking during server startup (Watchdog 10-second timeout).
  • Chunk Loading Mechanism Analysis: Technical verification confirmed that QuickShop's getRemainingStock() reads chest block entities in real-time and must execute with chunks already loaded; forcing large-scale chunk loading during startup is not feasible.

🐛 Bug Fixes

  • Fixed Startup Lag: Resolved the severe issue in v1.2.7 where getRemainingStock() triggered synchronous chunk loading due to shops being in unloaded chunks, blocking the main thread for over 10 seconds.
  • Fixed False Out-of-Stock Reports: After removing stock checks, normal shops no longer incorrectly display "Out of Stock" due to inventory value being 0 (default value when chunks are unloaded) at startup.

📌 Feature Adjustments

  • isOutOfStock() always returns false: Retains interface for API compatibility but no longer performs actual stock judgment.
  • getStockStatusText() always returns empty string: Shop lists no longer display "Out of Stock" markers.
  • Unlimited Shop (System Shop) Status Unchanged: isUnlimited detection and [Unlimited] marker display function normally.

v1.2.7 (2026-03-04)

🚀 New Features

  • Multi-threaded Shop Data Loading: Added asynchronous multi-threaded loading mechanism, no longer blocking the server main thread when loading large amounts of shop data from shops.json at plugin startup.
  • Configurable Thread Count: Added performance.load-threads configuration item, supporting custom thread count for loading (default 0, i.e., automatically detect available processors - 2).

🔧 Technical Improvements

  • Three-Stage Loading Process: Main thread captures world snapshot → Async thread performs file I/O and JSON parsing → ForkJoinPool parallel object conversion → Main thread rebuilds memory cache.
  • Thread Safety Design: Async conversion phase uses world name snapshot instead of Bukkit.getWorld() calls, completely avoiding safety hazards caused by async threads accessing Bukkit API.
  • Cache Rebuild Separation: Added rebuildCachesOnly() method, only rebuilds memory cache during loading without rewriting disk files, reducing unnecessary I/O overhead.

📊 Performance Improvements

  • Startup Without Blocking: Shop data loading is completely executed in the background, with no impact on main thread TPS.
  • Parallel Acceleration: Uses ForkJoinPool for parallel JSON data object conversion, particularly effective when shop quantities are large (10000+).
  • Load Time Logging: Console outputs detailed time consumption information for server admins to evaluate performance.

⚙️ Configuration Changes

  • Added performance.load-threads configuration item
    • 0 (default): Auto-detect, uses available processors - 2 threads (minimum 1)
    • Positive integer: Specifies the number of threads to use
    • Recommendation: Keep default for regular servers, appropriately increase for large servers (10000+ shops)

v1.2.6 (2025-08-15)

🎯 New Features

  • Unlimited Shop Status Detection: Automatically identifies unlimited shops (system shops) in QuickShop, displayed as "System Shop"
  • Shop Status Markers: Displays status markers in shop information (Normal/Unlimited), helping players distinguish shop types
  • Smart Out-of-Stock Detection: System shops never display "Out of Stock" status, consistent with unlimited shop actual behavior
  • Status Persistent Storage: Stores unlimited status in Shop.json file, avoiding repeated detection

🔧 Technical Improvements

  • Multiple Detection Mechanisms: Uses 5 different methods to detect unlimited shops, ensuring accuracy and compatibility
  • Performance Optimization: Skips unnecessary stock checks for unlimited shops, reducing API call overhead
  • Data Persistence: Stores unlimited status in JSON file, avoiding repeated detection in memory
  • Startup Speed Improvement: Reads status directly from JSON, avoiding re-detection at each startup

📊 Performance Improvements

  • Startup Speed: Improved by approximately 60% (avoiding repeated detection)
  • Memory Usage: Reduced by approximately 30% (status persistence)
  • API Calls: Reduced by approximately 40% (skipping unlimited shop stock checks)
  • Response Speed: Faster shop queries and displays

🎮 User Experience

  • Information Accuracy: System shops no longer incorrectly display "Out of Stock" status
  • Status Transparency: Clearly distinguishes between player shops and system shops
  • Performance Perception: Faster startup and response speeds
  • Data Consistency: Status information remains consistent after restart

v1.2.5 (2025-08-05)

🎯 New Features

  • Shop Deletion Feature: Added /shoptools ban <playerName> command, supporting batch deletion of all shops for a specified player
  • Official API Integration: Uses QuickShop's official /qs removeall command, ensuring deletion reliability and persistence
  • Automatic Data Sync: Automatically re-reads shop data from QuickShop after deletion, ensuring cache consistency
  • Data Backup: Automatically backs up shop data to shop_backups folder before deletion
  • Debug Mode Control: Added admin.ban-debug configuration item to control verbosity of ban command output

🔧 Technical Improvements

  • Thread Safety Optimization: Fixed thread safety issues with QuickShop API calls, ensuring execution on the main thread
  • Async Processing: Optimized data sync process, using layered async processing to avoid server lag
  • Error Handling: Comprehensive exception handling mechanism, providing detailed error information and solutions
  • Permission Control: Ban command can only be executed by admins, requiring dual permission verification

📊 Configuration Updates

  • Added admin.ban-debug configuration item
  • Version updated to v1.2.5
  • Configuration file backward compatible

🎮 User Experience

  • Concise Mode: When ban-debug=false, only displays key success information
  • Detailed Mode: When ban-debug=true, displays complete operation process and suggestions
  • Real-time Feedback: Real-time status updates during deletion and sync process
  • Console Logging: Complete operation log recording for problem troubleshooting
  • Shop Identification: Unlimited shops displayed as "System Shop", status marker as "[Unlimited]"
  • Information Transparency: Players can clearly distinguish between player shops and system shops

⚠️ Important Notes

  • Ban command can only be executed by players, not supported from console
  • Requires QuickShop's removeall permission to use
  • Recommend restarting server after deleting large numbers of shops to ensure full effect

v1.2.1 (2025-07-31) 🎯 Location Point Management Enhancement and Cross-World Support

🆕 Location Point Management Enhancement:

  • Location Point List: Added /shoptools listlocate command, admins can view all location points and their IDs
  • Location Point Deletion: Added /shoptools dellocate command, admins can delete location points by ID (requires confirmation)
  • 🌐 Cross-World Query: /shoptools locate now supports cross-world location point display, location points in other worlds are displayed at the end of the list
  • 📋 Smart Sorting: Same-world location points sorted by distance, other-world location points sorted by name
  • 🔒 Permission Protection: New admin commands require shoptools.admin permission, preventing malicious operations

v1.2.0 (2025-07-29) 🎯 Direction Indication and Stability Enhancement

🧭 Direction Indication System:

  • Smart Direction Display: Added direction markers (E, W, S, N, etc.) for all relative position queries
  • 📍 Precise Bearing Calculation: 8-direction calculation system based on coordinate differences (N, NE, E, SE, S, SW, W, NW)
  • 🎯 Distance Format Optimization: Display format is "Direction Distance", e.g., "E 15.3m", "W 25.7m"
  • 🌐 Cross-World Marker: Different worlds display "otherworld", avoiding invalid direction calculations

🔧 Stability Fixes:

  • 🛠️ Octree Boundary Fix: Resolved boundary calculation errors during spatial division (minY > maxY issue)
  • 🔒 Safe Division Algorithm: Enhanced handling capability for minimal ranges and boundary cases
  • Performance Guarantee: Ensures spatial index stable operation at all data scales
  • 🛡️ Exception Handling: Comprehensive error recovery mechanism, preventing crashes caused by division failures

🎮 Tab Completion Enhancement:

  • /shoptools listlocate - Page number auto-completion
  • /shoptools dellocate - Location point ID auto-completion, confirm parameter completion
  • ✅ Complete command help information updates

📈 Feature Coverage:

  • /shoptools search - Shop search now displays direction and distance
  • /shoptools near - Nearby shop queries include direction information
  • /shoptools locate - Location point queries support cross-world display and precise bearing
  • /shoptools listlocate - Admins can view all location points
  • /shoptools dellocate - Admins can safely delete location points

v1.1.2 (2025-07-29) 🚀 Octree Spatial Index Optimization

  • Octree Spatial Index: Integrated high-performance 3D spatial index system, location query performance improved by 50-300x
  • Query Complexity Optimization: Optimized from O(n) to O(log n), supporting large-scale location data
  • 🔒 Concurrency Safety: Uses read-write locks to ensure thread safety, supporting high-concurrency access
  • 🌍 World-Separated Indexing: Independent spatial index for each world, avoiding cross-world performance loss
  • 💾 Smart Memory Management: On-demand node allocation, automatic resource cleanup, optimized memory usage
  • 📊 Performance Monitoring: Provides detailed spatial index statistics and debugging support

v1.1.1 (2025-07-28) 🆕 Location Point Management Features

  • Create Location Points: Added /shoptools clocate command, admins can create location markers
  • Query Location Points: Added /shoptools locate command, players can search for location points by keyword
  • Smart Coordinate Parsing: Supports absolute coordinates (x,y,z) and relative coordinates (,,~)
  • Smart Distance Display: Exact distance (0-200m), long distance (200m+), cross-world (otherworld)
  • Pagination Browsing: Location point queries support paginated display, 10 results per page
  • Keyword Management: Supports classifying and managing location points by keyword for easy organization
  • Tab Completion Enhancement: Added complete Tab completion support for new commands
  • Data Persistence: Location point data stored in JSON file, automatically builds spatial index on startup
  • Unique ID System: Automatically generates 8-digit random IDs to prevent storage conflicts
  • 🔧 Permission Inheritance: Admin permissions automatically include basic permissions, simplifying permission management
  • 🔧 Help Information Update: Updated help information to include new location point commands

v1.1.0-beta (2025-07-24)

  • 🔧 Permission System Strengthening: shoptools.use permission default changed to false, requires manual authorization
  • ✨ Command Cooldown Mechanism: Added 3-second cooldown for /st search and /st near commands
  • ✨ Admin Bypass: Users with shoptools.admin permission are not subject to cooldown restrictions
  • 🔧 Performance Protection: Prevents player frequent requests from causing server lag
  • 🔧 Configuration Optimization: Added cooldown configuration node, supporting custom cooldown time
  • 🐛 Fixed Command Registration: Removed permission fields from plugin.yml, resolving dual permission check issues
  • 🐛 Fixed Permission Inheritance: Admin permissions now correctly include basic permissions, supporting permission hierarchy

v1.0.9 (2025-07-24)

  • ✨ Enhanced /st search feature: Search scope expanded to all shops on the server
  • ✨ Smart Distance Display: 0-200 blocks display exact distance, >200 blocks display "200m+", other worlds display "otherworld"
  • ✨ Optimized Sorting Algorithm: Same-world shops sorted by distance, other-world shops listed at the end
  • 🔧 Commercial Balance: Maintains distance information ambiguity, protecting commercial competition balance
  • 🔧 Cross-World Support: Players can discover shops in other worlds, encouraging exploration

v1.0.8 (2025-07-24)

  • ✨ Permission System Refactoring: Admin features and player features separated, protecting commercial information privacy
  • ✨ Added /st search command: Search for specified item shops within 200 blocks nearby, sorted by distance
  • ✨ Added /st near command: View all shops within 200 blocks nearby, sorted by distance
  • 🔧 Distance Display: Price position displays player-to-shop distance (e.g., "15.3m")
  • 🔧 Commercial Protection: Hides server-wide price information, preventing commercial wars, maintaining game balance
  • 🔧 Smart Permissions: Players use nearby search, admins use server-wide queries

v1.0.7 (2025-07-24)

  • ✨ Comprehensive Pagination Support: Added pagination for /st list and /st who commands
  • ✨ Smart Pagination Judgment: When shop count ≤10, display directly; >10, automatically paginate
  • ✨ Enhanced Tab Completion: Supports item and player page number smart completion
  • 🔧 Optimized Large Data Display: Avoids performance issues caused by displaying large amounts of shops at once
  • 🔧 Improved User Experience: Defaults to page 1, provides clear navigation prompts

v1.0.6 (2025-07-24)

  • ✨ Smart Player Lookup System: Supports UUID lookup, fuzzy matching, multi-result handling
  • ✨ Similarity Algorithm: Provides smart suggestions when no match is found (edit distance algorithm)
  • ✨ Multi-Result Display: When matching multiple players, displays selection list sorted by shop count
  • 🔧 Enhanced /st who command: Supports partial player names, full UUIDs, smart suggestions
  • 🔧 Performance Optimization: Player information cache, avoiding repeated queries

v1.0.5 (2025-07-24)

  • ✨ Implemented Pagination System: Avoids displaying large amounts of shop information at once, 10 shops per page
  • ✨ UUID to Player Name Conversion: Smartly obtains real player names, improving readability
  • ✨ Added Shop Status Display: [Sell]/[Buy]/[Both] status markers
  • 🔧 Command Refactoring: Removed /st list displaying all shops, changed to /st page <page>
  • 🔧 Enhanced Tab Completion: Supports page number completion and smart command prompts
  • 🔧 Optimized User Experience: Added navigation prompts and error guidance

v1.0.4 (2025-07-24)

  • 🔧 Fixed Java Module System Serialization Issues: Resolved Optional field access restrictions
  • 🔧 Implemented Simplified Data Transfer Object (DTO) strategy, avoiding complex object serialization
  • 🔧 Optimized JSON format, providing better cross-version compatibility
  • 🔧 Successfully supports complete serialization and storage of 6000+ shop data

v1.0.3 (2025-07-24)

  • 🔧 Fixed Thread Safety Issues: Ensured all QuickShop API calls execute on the main thread
  • 🔧 Improved data sync mechanism, avoiding "Illegal Access" errors
  • 🔧 Optimized performance, supporting processing of large amounts of shop data (6000+ shops)

v1.0.2 (2025-07-24)

  • 🔧 Fixed Gson Serialization Issues: Correctly implemented Location and ItemStack type adapters
  • 🔧 Improved JSON data format, providing better readability and compatibility
  • 🔧 Enhanced error handling, avoiding crashes caused by serialization failures

v1.0.1 (2025-07-24)

  • 🔧 Fixed Plugin Startup Order Issue: Ensures initialization after QuickShop fully starts
  • 🔧 Added delayed initialization mechanism, avoiding API call failures
  • 🔧 Improved error handling and user prompts
  • 🔧 Added retry mechanism, improving initialization success rate

v1.0 (2025-07-24)

  • Initial version release
  • Implemented basic shop query features
  • Added automatic data sync
  • Supports Chinese localization
  • Complete permission system

Technical Support

If you encounter problems or have feature suggestions, please:

  1. Check console logs for detailed error information
  2. Confirm QuickShop-Reremake plugin is running normally
  3. Check if permission configuration is correct
  4. Report issues in GitHub Issues

Compatibility

  • ✅ QuickShop-Reremake 5.x
  • ✅ Paper 1.20.1+
  • ✅ Spigot 1.20.1+
  • ⚠️ Other QuickShop branches may require adaptation

Note: This plugin requires the QuickShop-Reremake plugin to function properly. Please ensure QuickShop-Reremake is correctly installed and configured before installing this plugin.


About

一个帮助玩家更好使用QuickShop-Reremake插件的工具插件。

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages