▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Плагины/Shop Search
Shop Search

Shop Search

An add-on for the QuickShop Hikari spigot plugin. Adds a /finditem command in game for searching through all the shops on the server.

Оцените первым
8.1K
28
Все версии2.0.8.1-SNAPSHOT-31

2.0.8.1-SNAPSHOT-31

Beta09.08.2026

Список изменений

What's new for server owners

  • Noticeably faster searches on large servers — the shop list sync that runs every 15 minutes (and on startup) has been rewritten to scale linearly instead of getting slower the more shops your server has. Servers with thousands of shops will see a significant drop in that sync time.
  • Search results now always respect your configured sorting method — previously, browsing all shops (/finditem TO_BUY *) ignored your shop-sorting-method setting and always sorted by a fixed method. It now behaves the same as all other searches.
  • Snappier GUI clicks — shop teleportation and custom command execution on GUI click are now faster under the hood, with less redundant work per click.
  • Java 25 & Paper API 26.x support — ready for the latest server versions out of the box.
  • New: limit search results by distance (#107): a new shop-search-max-distance config option lets you hide shops that are too far away from the searching player. Set it to a block radius (e.g. 1000) to keep results local. Disabled by default (set to 0).
  • Fixed /finditem silently doing nothing when searching enchanted books (#110), most noticeable with custom-enchantment plugins installed — a per-shop item check was running off the main thread and any error there was being swallowed instead of shown to the player.
  • Fixed shops in unloaded chunks showing 0 stock/space and dropping out of search results (#111): with search-loaded-shops-only: false, a matched shop whose chunk wasn't currently loaded could report as out of stock even when it wasn't, and get silently filtered out. FindItem now double-checks with a live read before discarding a shop like that.

Changes (technical)

  • Upgraded to Paper API 26.x / Java 25
  • Added PlatformBridge abstraction (BukkitPlatformBridge) to decouple platform-specific calls from core logic
  • Refactored QSHikariAPIHandler: consolidated three duplicate shop-search methods into a single searchShops(Predicate, boolean, Player) method, removing ~70 lines of duplication
  • Optimized syncShopsListForStorage from O(n²) nested loop to O(n) HashMap lookup — significant speedup on servers with large shop counts
  • fetchAllItemsFromAllShops now respects the configured shop-sorting-method (previously hardcoded to method 1)
  • Eliminated per-shop QS version string parse in stock/space cache lookup — replaced with boolean flag computed once at startup
  • MC version regex in GUI compiled once as static final instead of on every menu open
  • Tab-completion material list in BuySubCmd / SellSubCmd built once statically instead of per instance
  • Shop location string parsed once per GUI click and passed to all handlers, instead of being re-parsed by each handler independently
  • Cleaned up ShopSearchActivityStorageUtil: loadShopsFromFile now calls syncShops() consistently; marked Reremake-era addShop overload and getShopOwner as @Deprecated
  • Added shop-search-max-distance config option (#107): filters out shops beyond a configurable block radius from the searching player; 0 disables (default); cross-world shops are always included; bumped config version to 22
  • QSHikariAPIHandler.searchShops: merged the per-shop permission check and item-match filtering into a single scheduler hop (processShopMatchFuture) so item/meta reads always happen on the entity's region thread instead of ForkJoinPool.commonPool(); per-shop failures are now logged and skipped instead of failing the whole search (#110)
  • CmdExecutorHandler.handleShopSearch: added .exceptionally handling to all three search futures so an unexpected failure logs and notifies the player instead of the command silently doing nothing (#110)
  • Fixed a thread-safety violation introduced by the #110 fix: QuickShop-Hikari's cache-backed stock/space read (Util.ensureThread(true)) requires running off the main thread, but #110 moved the entire per-shop check — including that stock read — onto the region thread, which would throw on any QuickShop-Hikari v6+ install. QSHikariAPIHandler.processShopMatchFuture now splits into two phases: permission/item-meta matching stays on the region thread (preserving #110's fix), while stock/space reads and list insertion (finalizeMatchedShop) move to a virtual thread so QuickShop-Hikari's threading contract is satisfied (#111)
  • Matched shops with a cached/DB stock reading of 0 are now re-verified live if their chunk isn't loaded: QSHikariAPIHandler hops to the shop's own region (FoliaLib#runAtLocation), force-loads the chunk, re-reads stock/space, then unloads the chunk again if it was the one that loaded it (#111)
  • shopsFoundList changed from ArrayList to CopyOnWriteArrayList since matched shops are now added concurrently from multiple virtual threads
  • Bumped QuickShop-Hikari to 6.3.0.0-SNAPSHOT-12 and Paper API to 26.2.build.111-stable; migrated all Shop#getLocation() calls to Shop#bukkitLocation() (QuickShop-Hikari made Shop generic, so the raw-typed getLocation() call now erases to Object instead of org.bukkit.Location)

Файлы

QSFindItemAddOn-2.0.8.1-SNAPSHOT-31.jar(4.01 MiB)
Основной
Скачать

Метаданные

Канал релиза

Beta

Номер версии

2.0.8.1-SNAPSHOT-31

Загрузчики

Folia
Paper
Purpur

Версии игры

26.2

Загрузок

145

Дата публикации

09.08.2026

Загрузил

ID версии

Главная