Shop SearchСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачать
ВЕРСИИ (30)
beta
2.0.8.3-SNAPSHOT-36
2.0.8.3-SNAPSHOT-3614 окт. 2026 г.135Minecraft: 26.2folia, paper, purpur
Что нового
### What's new for server owners
- **Admins can now hide/reveal any player's shop**: players with `finditem.admin` can use `/finditem hideshop` and `/finditem revealshop` on shops they don't own.
- **Much less server lag when running `/finditem` on servers with many shops**: every search used to check each shop's hidden status by scanning the full list of shops, so the cost grew with the square of your shop count and landed on the main thread in a single tick. That check is now an instant lookup, and shops that don't sell the searched item are filtered out before the more expensive permission checks run.
- Fixed the "last page" button opening an empty page when the number of results was an exact multiple of 45 (e.g. 90 or 450 shops).
### Changes (technical)
- `ShopSearchActivityStorageUtil` keeps a location index alongside `globalShopsList`; `isShopHidden`, `getPlayerVisitCount`, `getShopOwnerUUID`, visit tracking and hide/reveal now use O(1) lookups instead of linear scans
- Search match phase now runs as one region task over all shops instead of one scheduler task, future and timeout per shop, with the match checks reordered cheapest/most selective first
release
2.0.8.2-RELEASE
2.0.8.2-RELEASE11 сент. 2026 г.397Minecraft: 26.2folia, paper, purpur
Что нового
### 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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/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.
- **Faster stock/space checks on servers with lots of unloaded shops**: instead of force-loading a shop's chunk just to count what's inside it, FindItem now asks QuickShop-Hikari for its own stored stock/space figure first. Chunk loading is now a last resort, used only when QuickShop has no stored figure yet. This should also resolve reports of `/finditem` only listing a handful of shops after updating QuickShop-Hikari to 6.3.x — its stock/space check changed to return `0` for any shop in an unloaded chunk, which `ignore-empty-chests: true` (the default) then silently dropped from results.
- Fixed a typo in the sample `custom-commands` list in `config.yml`: `{PLAYER}` is not a valid placeholder, `{PLAYER_NAME}` is.
### 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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/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`)
- Bumped QuickShop-Hikari to the released `6.3.0.2` and migrated to its new CodeMC repository (`repo.codemc.io/repository/ghost-chu/`); the split `quickshop-api` / `quickshop-bukkit:shaded` artifacts were replaced by a single `com.ghostchu:quickshop-hikari` dependency, which QuickShop now publishes there
- Stock/space resolution now follows a ladder: unlimited shop → live read if the chunk is loaded → QuickShop's persisted inventory count cache (`ShopManager#queryShopInventoryCacheInDatabase`) → chunk force-load as a last resort
- Search stock reads use QuickShop-Hikari 6.3.0.0's `ShopInventory#getRemainingStockAsync()` and are composed into the existing `CompletableFuture` chain, removing the per-shop 5-second blocking `join()`
- Fixed a thread-safety violation: QuickShop-Hikari's `ShopManager#queryShopInventoryCacheInDatabase` asserts its caller is already off the main/region thread and throws otherwise. `QSHikariAPIHandler.processShopMatchFuture`'s dispatch into `finalizeMatchedShop` is now pinned to the virtual-thread executor so it never runs on the region thread
- Removed the `Util.ensureThread(true)` assertion from the stock/space cache read — QuickShop-Hikari's own getters no longer require an off-main caller as of 6.3.0.0, and the explicit virtual-thread dispatch above now guarantees it regardless
- Migrated off `Shop#getPrice()` (deprecated for removal in 6.3.0.0) to `ShopPrice#price()`
beta
2.0.8.2-SNAPSHOT-32
2.0.8.2-SNAPSHOT-325 сент. 2026 г.73Minecraft: 26.2folia, paper, purpur
Что нового
### 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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/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.
- **Faster stock/space checks on servers with lots of unloaded shops**: instead of force-loading a shop's chunk just to count what's inside it, FindItem now asks QuickShop-Hikari for its own stored stock/space figure first. Chunk loading is now a last resort, used only when QuickShop has no stored figure yet. This should also resolve reports of `/finditem` only listing a handful of shops after updating QuickShop-Hikari to 6.3.x — its stock/space check changed to return `0` for any shop in an unloaded chunk, which `ignore-empty-chests: true` (the default) then silently dropped from results.
- Fixed a typo in the sample `custom-commands` list in `config.yml`: `{PLAYER}` is not a valid placeholder, `{PLAYER_NAME}` is.
### 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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/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`)
- Bumped QuickShop-Hikari to the released `6.3.0.2` and migrated to its new CodeMC repository (`repo.codemc.io/repository/ghost-chu/`); the split `quickshop-api` / `quickshop-bukkit:shaded` artifacts were replaced by a single `com.ghostchu:quickshop-hikari` dependency, which QuickShop now publishes there
- Stock/space resolution now follows a ladder: unlimited shop → live read if the chunk is loaded → QuickShop's persisted inventory count cache (`ShopManager#queryShopInventoryCacheInDatabase`) → chunk force-load as a last resort
- Search stock reads use QuickShop-Hikari 6.3.0.0's `ShopInventory#getRemainingStockAsync()` and are composed into the existing `CompletableFuture` chain, removing the per-shop 5-second blocking `join()`
- Fixed a thread-safety violation: QuickShop-Hikari's `ShopManager#queryShopInventoryCacheInDatabase` asserts its caller is already off the main/region thread and throws otherwise. `QSHikariAPIHandler.processShopMatchFuture`'s dispatch into `finalizeMatchedShop` is now pinned to the virtual-thread executor so it never runs on the region thread
- Removed the `Util.ensureThread(true)` assertion from the stock/space cache read — QuickShop-Hikari's own getters no longer require an off-main caller as of 6.3.0.0, and the explicit virtual-thread dispatch above now guarantees it regardless
- Migrated off `Shop#getPrice()` (deprecated for removal in 6.3.0.0) to `ShopPrice#price()`
beta
2.0.8.1-SNAPSHOT-31
2.0.8.1-SNAPSHOT-319 авг. 2026 г.189Minecraft: 26.2folia, paper, purpur
Что нового
### 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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/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`)
beta
2.0.8.1-SNAPSHOT-28
2.0.8.1-SNAPSHOT-287 авг. 2026 г.103Minecraft: 26.1.2folia, paper, purpur
Что нового
### 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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/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.
### 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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/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](https://github.com/myzticbean/QSFindItemAddOn/issues/110))
beta
Build-260517
2.0.8.1-SNAPSHOT17 мая 2026 г.496Minecraft: 26.1, 26.1.1, 26.1.2folia, paper, purpur
Что нового
### Changelog
- **Java 25 & Paper API 26.x support**: ready for the latest server versions out of the box.
- **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.
- **New: limit search results by distance** ([#107](https://github.com/myzticbean/QSFindItemAddOn/issues/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`).
**_PS: This is a snapshot build and bugs may arise._**
release
2.0.8.0-RELEASE
2.0.8.0-RELEASE17 мая 2026 г.726Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11folia, paper, purpur
Что нового
### Changes
- QS-Reremake support has been dropped completely
- GUI click is now async
- Added debug mode control via command: `/finditemadmin debug-mode {enable | disable}`
- Bumped Paper API version to `1.21.11-R0.1-SNAPSHOT`
- Bumped Kyori's `adventure-api` to 4.26.1
- Bumped `worldguard-bukkit` to 7.0.16
- Bumped `playerwarps-api` to 7.10.0
- Removed Spigot API dependency
- Bumped `Quickshop-Hikari` to 6.2.0.11
- Folia support by Jsinco
- Bumped `essentialsX` to 2.21.2
### Bug fixes
- Fixed a bug during loadShopsFromFile if one of the loaded shops was null by adding a null check
- Bug fix for update checker, notify snapshot version availability for snapshot users only (#102)
beta
Build-260308
2.0.8.0-SNAPSHOT8 мар. 2026 г.580Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11folia, paper, purpur
Что нового
## Bug fixes
- fix(folia): teleporting to shops on folia
_PS: Folia support is in early stages and bugs may arise._
beta
Build-260225
2.0.8.0-SNAPSHOT1 мар. 2026 г.318Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11folia, paper, purpur
Что нового
## Changes
- Folia Support
- QS-Hikari `6.2.0.11` Support
_PS: Folia support is in early stages and bugs may arise._
beta
2.0.8.0-SNAPSHOT
2.0.8.0-SNAPSHOT1 февр. 2026 г.453Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper, purpur
Что нового
- QS-Reremake support has been dropped completely
- GUI click is now async
- Added debug mode control via command: `/finditemadmin debug-mode {enable | disable}`
- Version bumps for dependencies.
- Support for `Quickshop-Hikari 6.2.0.11-RELEASE-CANDIDATE-2`
NOTE: This is a snapshot version and is only compatible with `QS-Hikari v6.2.0.11-RELEASE-CANDIDATE-2`. If you are using QS-Hikari v6.2.0.10, then use AddOn [v2.0.7.7-RELEASE](https://modrinth.com/plugin/shop-search/version/2.0.7.7-RELEASE).
beta
2.0.8.0-SNAPSHOT
2.0.8.0-SNAPSHOT31 окт. 2025 г.645Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10paper, purpur
Что нового
**NOTE:** This is a snapshot version and is only compatible with **QS-Hikari v6.2.0.11 snapshots**. If you are using QS-Hikari v6.2.0.10, then use AddOn [v2.0.7.7-RELEASE](https://modrinth.com/plugin/shop-search/version/2.0.7.7-RELEASE).
### Changes
- GUI click is now async
- Some performance tweaks
- Added debug mode control via command: `/finditemadmin debug-mode {enable | disable}`
- Internal API changes to make it compatible with QS-Hikari v6.2.0.11
- QS-Reremake support has been dropped completely
release
2.0.7.7-RELEASE
2.0.7.7-RELEASE24 сент. 2025 г.874Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8paper, purpur, spigot
Что нового
### Changes
- Bumped Spigot dependency to `1.21.8-R0.1-SNAPSHOT`
- Bumped QS-Hikari dependency to `6.2.0.10`
- Bumped Bentobox dependency to `3.7.3`
- Internal refactoring that shouldn't impact gameplay
release
2.0.7.6-RELEASE
2.0.7.6-RELEASE28 мая 2025 г.848Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5paper, purpur, spigot
Что нового
### Bug fixes
- Fixed `/finditem hideshop`/`/finditem revealshop` not working for newly created shop
- Added support for custom-model-data to the GUI filler item
- Added support for `{SHOP_WORLD}` placeholder in custom commands
### Changes
- Optimized the size of the `shops.json` file
- Updated config version to `21`
release
2.0.7.5-RELEASE
2.0.7.5-RELEASE12 мая 2025 г.201Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5bukkit, paper, purpur, spigot
Что нового
### Changes
- Updated dependencies to latest version
- Fixed a bug teleporting to a shop without essentials (Thanks Jaden!)
release
2.0.7.4-RELEASE
2.0.7.4-RELEASE23 мар. 2025 г.469Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4paper, purpur, spigot
Что нового
### Bug fixes
- Fix for /finditem shows only 'searching...' but no GUI [Thanks @Jsinco!]
If you would also like to contribute to the plugin updates, check out the github repository [here](https://github.com/myzticbean/QSFindItemAddOn).
release
2.0.7.3-RELEASE
2.0.7.3-RELEASE18 февр. 2025 г.216Minecraft: 1.20.6, 1.21.4paper, purpur, spigot
Что нового
### Changes
- JDK version upgraded from 17 to 21
- Added check to exclude shops of `buying` shops for owners who don't have enough money.
- Bentobox integration to ignore shops in locked islands
### Bug fixes
- Hideshop/revealshop should work with double chests also
release
2.0.7.2-RELEASE
2.0.7.2-RELEASE25 нояб. 2024 г.448Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3paper, purpur, spigot
Что нового
- fixed item meta not showing correctly in Search GUI
- Player Warps dependency updated
release
2.0.7.1-RELEASE
2.0.7.1-RELEASE28 окт. 2024 г.186Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3paper, purpur, spigot
Что нового
- Added config option to suppress update notifications in chat
```yaml
suppress-update-notifications: false
```
- Added config option to configure blacklisted materials
```yaml
blacklisted-materials:
- "BARRIER"
- "STRUCTURE_BLOCK"
- "COMMAND_BLOCK"
```
release
2.0.7.0-RELEASE
2.0.7.0-RELEASE16 окт. 2024 г.157Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1paper, purpur, spigot
Что нового
- Added runnable custom commands on GUI item click. New related config options added.
- Added a new permission to bypass safety check for shop tp.
beta
2.0.7.0-SNAPSHOT
2.0.7.0-SNAPSHOT1 окт. 2024 г.63Minecraft: 1.20, 1.20.6, 1.21, 1.21.1paper, purpur, spigot
Что нового
### Changes
- Added runnable custom commands on GUI item click. New related config options added.
- Added a new permission to bypass safety check for shop tp (`finditem.shoptp.bypass-safetycheck`).
release
2.0.6.4-RELEASE
2.0.6.4-RELEASE27 июл. 2024 г.375Minecraft: 1.20.6, 1.21paper, purpur, spigot
Что нового
### Changes
- Residence support for fetching the residence the shop is in (including subzones) ([#45](https://github.com/myzticbean/QSFindItemAddOn/pull/45)) [Contribution by SengyEU]
- Configurable "No ... near shop" messages ([#45](https://github.com/myzticbean/QSFindItemAddOn/pull/45)) [Contribution by SengyEU]
- Spigot API updated to 1.21.
### Bug fixes
- Fixed NPE when putting AIR as a filler item ([#46](https://github.com/myzticbean/QSFindItemAddOn/pull/46)) [Contribution by SengyEU]
- Fixed bug where exception was thrown when trying to render player heads in GUI buttons (Broke in 1.21 update)
release
2.0.6.3-RELEASE
2.0.6.3-RELEASE6 июл. 2024 г.209Minecraft: 1.19.4, 1.20.6paper, purpur, spigot
Что нового
### Changes
- Added stack size placeholder to shop lore ([#37](https://github.com/myzticbean/QSFindItemAddOn/issues/37))
- Added a 500 block limit for searching nearby PlayerWarp (ToDo: to be made configurable in a future version)
release
2.0.6.2-RELEASE
2.0.6.2-RELEASE6 июл. 2024 г.59Minecraft: 1.19.4, 1.20.6paper, purpur, spigot
Что нового
### Changes
- Added option to show only player owned warps in GUI ([#38](https://github.com/myzticbean/QSFindItemAddOn/issues/38)) [Contribution by lukemango]
release
2.0.6.1-RELEASE
2.0.6.1-RELEASE7 мая 2024 г.334Minecraft: 1.16.5, 1.17.1, 1.18.2, 1.19.4, 1.20.6paper, purpur, spigot
Что нового
## Release 2.0.6.1
### Bug fixes
- Changed scheduled task loggers to debug-mode only ([#29](https://github.com/myzticbean/QSFindItemAddOn/issues/29))
- **Critical fix** for players not getting teleported ([#30](https://github.com/myzticbean/QSFindItemAddOn/issues/30))
release
2.0.6.0-RELEASE
2.0.6.0-RELEASE29 апр. 2024 г.114Minecraft: 1.17.1, 1.18.2, 1.19.3, 1.19.4, 1.20.4, 1.20.5paper, purpur, spigot
Что нового
## Release 2.0.6.0
### Changes (Feature request [#23](https://github.com/myzticbean/QSFindItemAddOn/issues/23))
- Plugin updated for Minecraft version 1.20.5.
- Changed 15Min Scheduled Task to run in async thread (should help with lag).
- Reremake implementation will no longer be updated. Last support is for QS-Reremake v5.1.2.5.
- Changed logger statements to show Main/Async thread state.
- Structural changes in the config.yml, specifically for shop-gui related options.
- Fixed an issue with showing large numbers in currency.
- Added new feature to format currency format. For example: `$10,210,100` will be shown as `$10.21M`. New config option to toggle it:
```yaml
shop-gui:
use-shorter-currency-format: true
```
- New config option added as below to toggle if players should be allowed to warp to locked warps (Only for PlayerWarps).
```yaml
player-shop-teleportation:
nearest-warp-tp-mode:
do-not-tp-if-warp-locked: true
```
- Config version is now 15.
release
2.0.5.7-RELEASE
2.0.5.7-RELEASE22 апр. 2024 г.103Minecraft: 1.16.5, 1.17.1, 1.18.2, 1.19.4, 1.20.4paper, purpur, spigot
Что нового
## Release 2.0.5.7
### Bug fixes
- Fixed a bug where disabling hideshop/revealshop will not disable it for `/qs finditem` ([#13](https://github.com/myzticbean/QSFindItemAddOn/issues/13))
- Fixed stock/space not updating properly from QS cache ([#17](https://github.com/myzticbean/QSFindItemAddOn/issues/17))
beta
2.0.5.7-SNAPSHOT
2.0.5.7-SNAPSHOT31 мар. 2024 г.75Minecraft: 1.19.4, 1.20.4paper, purpur, spigot
Что нового
## Snapshot 2.0.5.7
### Bug fixes
- Fixed a bug where disabling hideshop/revealshop will not disable it for `/qs finditem` ([#13](https://github.com/myzticbean/QSFindItemAddOn/issues/13))
- Fixed stock/space not updating properly from QS cache ([#17](https://github.com/myzticbean/QSFindItemAddOn/issues/17))
_Note: This is a snapshot build, and not recommended for use on production servers right now._
release
2.0.5.6-RELEASE
2.0.5.6-RELEASE24 мар. 2024 г.148Minecraft: 1.16.5, 1.17.1, 1.18.2, 1.19.4, 1.20.4paper, purpur, spigot
Что нового
## Release 2.0.5.6 (Recommended Update)
### Bug fixes
- Fix the lag issue caused due to new QS-Hikari cache feature impl ([#12](https://github.com/myzticbean/QSFindItemAddOn/issues/12))
- Fixed a code refactoring bug where search all shops would return no shops for Quickshop Reremake
- Added a INFO level logger to log time taken for a search process
release
2.0.5.5-RELEASE
2.0.5.5-RELEASE10 мар. 2024 г.145Minecraft: 1.16.5, 1.17.1, 1.18.2, 1.19.4, 1.20.4paper, purpur, spigot
Что нового
## Release 2.0.5.5 (RECOMMENDED UPDATE)
### Bug fixes
- Fixed /finditem command not working in some cases ([#9](https://github.com/myzticbean/QSFindItemAddOn/issues/9))
- Added a config option to disable the `/finditem {TO_BUY | TO_SELL} *`
release
2.0.5.4-RELEASE
2.0.5.4-RELEASE18 февр. 2024 г.164Minecraft: 1.16.5, 1.17.1, 1.18.2, 1.19.4, 1.20.4paper, purpur, spigot
Что нового
### Features
- Added Go to First and Last page GUI buttons ([#3](https://github.com/myzticbean/QSFindItemAddOn/issues/3))
- Added new config option to include empty chests in the search result ([#3](https://github.com/myzticbean/QSFindItemAddOn/issues/3))
- Added compatibility with QS Hikari 6.* shop stock/space fetch from cache feature. This should help prevent massive lag spikes.
### Bug fixes
- Full/out of space chests will be excluded from `/finditem TO-SELL <item_name>` ([#3](https://github.com/myzticbean/QSFindItemAddOn/issues/3))
- Bug fix to prevent lag when during `/finditem TO_BUY *` on large servers (Only for QS Hikari)
- Fix for issue [#5](https://github.com/myzticbean/QSFindItemAddOn/issues/5)