▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Моды/ShopTools
ShopTools

ShopTools

A powerful Minecraft shop query plugin that provides comprehensive shop information management and intelligent search capabilities for QuickShop-Reremake.

61
0

ShopTools 1.3.1

release8 марта 2026 г.

更新日志

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 完成后额外显示"库存信息正在后台重新扫描"提示,告知管理员扫描进行中,稍后即可看到最新售罄状态

ShopTools 1.3.0

release8 марта 2026 г.

更新日志

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 个区块)

ShopTools 1.2.8

release7 марта 2026 г.

更新日志

v1.2.8 (2026-03-07)

🔧 技术改进

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

🐛 问题修复

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

📌 功能调整

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

ShopTools 1.2.7

release4 марта 2026 г.

更新日志

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+ 商店)可适当增加

ShopTools 1.2.6

release25 октября 2025 г.

更新日志

v1.2.6 (2025-08-15)

🎯 新增功能

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

🔧 技术改进

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

📊 性能提升

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

🎮 用户体验

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

Совместимость

Minecraft: Java Edition

1.20.x

Платформы

Поддерживаемые окружения

Сервер

Создатели

Детали

Лицензия:MIT
Опубликован:5 месяцев назад
Обновлён:1 месяц назад
Главная