Performance Improves
- Optimized shop loading logic, significantly improved the loading speed of stores when the world loads, now skipping any unrelated stores.
Bug Fixes
- Fixed NoClassDefError when starting up without ProtocolLib
- Fixed cached stock/space API
New Features
- Added CoinsEngine Economy API support
- Added Treasury Economy API support
- [Compat] Added VoidChest compatibility module, contributed by @GeorgeV220 (first contribution)
Changes
- Number formatting now follows player's locale
- Messages now will delay to send while player logging in
- QUser now use Fork-Join-Pool to resolve
- InventoryWrapper can now verify that it is still valid
Performance
- Display item teleport now use Paper API if available
- Avoid create empty YamlConfiguration instance if no extra data for shop to save memory (lazy init)
Bug Fixes
- Compat/Addon's API
getShops
may returns the shops that not in selection and cause accident deletion if they in same chunk - Added multiple missing localization keys
- Player may still to charged even ShopPriceChangeEvent has been cancelled
- Shop creation may failed if user entered a super large number like
999999999999999999999999999999.99
with default new generated configuration - Some parts didn't use QuickShop's Permission Manager
- Some commands are using the wrong permission node
quickshop.use
permission node was ignored/qs staff clear
and/qs staff remove
won't save to database after modified staff list- Shop display still spawned even player use
/qs toggledisplay
to turned it off if server enabled display auto despawn - Fixed TNE economy type may populate StackOverFlow error while purchasing
Other
Several new Startup Flags have been added to allow users to fine-tune the internal implementation, which will be made available on-demand by developers in the support channel.
Bug Fixes
- Plugin may crashed on startup due incorrect configuration upgrade script.
- (Try-to) fix double-chest may cannot detect another half-part items.
- [COMPACT] GriefPrevention compatibility module may crash on startup if build don't have ClaimResizeEvent.
Summary by CodeRabbit
- New Features
- Enhanced logging in the GriefPrevention compatibility module for better startup and event handling visibility.
- Improved error handling in the configuration reload process to ensure stability.
- Bug Fixes
- Fixed an issue with handling
DoubleChest
instances in inventory management, ensuring proper functionality.
- Fixed an issue with handling
- Chores
- Updated dependencies to the latest version (
6.0.0.9
) across various modules for improved performance and compatibility. - Adjusted configuration scripts to accommodate new donation key handling.
- Updated dependencies to the latest version (
If you meet HikariPool-1 - Connection is not available, request timed out after 30000ms. errors in past versions, please upgrade to this version and see if it still happening, and join our Discord server to participate in the discussion of the issue. We are investigating this issue and releasing mitigation measures.
Bug Fixes
- Fixed NoClassDefError on Paper 1.20.1 (It's definitely fixed this time :) )
Optimization
- Resolved SQL query performance to avoid performing full table scans and causing severe query performance degradation
Changes
- Temporarily deactivated statistical metrics about the database, which we found were blocking in the main server thread and triggering a server crash when there were problems with the database connection
- Add performance indicators for newly added ShopHistory-related queries to provide feedback on query performance in Paste.
- Adjust logger to reduce useless logging.
- Added several debug subcommands to check for database performance issues and HikariCP related issues.
- Changed ShopHistory related queries from parallel to serial and limited the number of simultaneous executions to 1 to avoid completely exhausting all available connections to HikariCP and crashing the plugin.
Bug Fixes
- Fixed shop history query use database executor, causes a deadlock on execution resources and results in a query execution failure
- Fixed an issue where the default HikariCP pool parameters in the configuration file were incorrect, now incorrect configuration keys and configuration values will be automatically migrated and adjusted. Care should be taken to avoid accidental value changes if you have changed the relevant parameters manually.
Optimization
- We have noticed that the new
/quickshop history
feature is applying more database pressure due tolog_purchase
not being configured with proper indexing. This hot patch will create an index for log_purchase to alleviate the performance issue.- If you still continue to experience query performance issues after this update, please join our Discord to provide feedback.
This is a hot-patch for 6.0.0.0 major update.
Fixes
- [ADDON] Reremake-Migrator doesn't work with 6.0.0.0
- [ADDON] BlueMap Addon doesn't work (NullPointerException)
- [ADDON] ItemsAdder Addon don't load due package name changes
Although all updates is addon related, but you also need update QuickShop-Hikari it self.
6.0.0.0 Major Update - Furina
Focalors & Furina, Artist Tiko
For the Lunar New Year, QuickShop-Hikari has received a new major update that includes several feature updates for large networks and transaction-oriented servers. At the same time, we also fixed some bugs.
New Features
Shop History
The new Shop History feature allows you to open a store history panel for all past trade requests that have occurred in this store.
At the same time, you will be able to see your Most Valuable Customers, showing those players who have made the most transactions in your store.
The panel also will allow you to view the number and value of transactions for the last 24h, 3d, 7d, 30d, all-time, and unique purchasers count.
This feature is based on a long-existing transaction logging system, so after you upgrade, you can view the transaction history that created before the upgrade.
Change the shop sign material
New command /quickshop sign <material>
that allow users to change their shop's info sign material.
Transfer Shop Ownership
Added New command /quickshop transferownership
for shop transfer.
- This new command will allow player request to transfer a shop to another player, without re-create the shop.
- To complete the transfer, the requested player must accept the transfer request.
- To avoid ambiguity, the old
/quickshop transfer
command is now renamed/quickshop transferall
.
Price Suggestion
New command /quickshop suggestprice
that calculates the most expensive price, the cheapest price, the average price, and the median price for other stores on this server that have the same items and selling patterns as the current store, so that players can set appropriate prices for their stores.
Addons
- [Addon][Discoumt] New command
/quickshop discount listall
- The new command allows server administrators to list all discount codes on the server for better management.
- [Addon][Slimefun] New Addon to allow the use Item Expression to reference a Slimefun items.
- [Addon][ItemAdder] New Addon to allow the use Item Expression to reference a ItemAdder items.
- [Addon][Lands] Now supports deleting all stores in Land when it's deleted.
- [Addon][List] The command
/quickshop list
are now presented in a paged format, and you can toggle the paging by appending a number. No more crowding the chat box when there are tons of stores.
Misc
- Added new configuration item
shop.info-panel.show-enchantments
,shop.info-panel.show-effects
,shop.info-panel.show-durability
, to allow you disable some information on shop info panel to avoid too much data crowned your chat.
Improvements
- Added delete confirmation for [Remove Shop] button in shop control panel.
Optimization
- Improved checking of the best mirror source, which now gains speed and enables correct use of the best mirror source to resolve plugin dependencies. This is a significant improvement for users in mainland China.
- Multiplexing of libraries cached by the Spigot Libraries Loader (
SERVER_ROOT/libraries
) is now supported to reduce network requests and traffic consumption.
- Multiplexing of libraries cached by the Spigot Libraries Loader (
Refactor / Changes
- Introduced a new registry system and plan to convert more modules to use this system in the future.
- The control panel now suggest new
/quickshop transferownership
instead/quickshop setowner
. - API to
Shop#getRemainingStock
andShop#getRemaingingSpace
now supports async call, to retrieve cached data from database.
Bug Fixes
- EconomyFormatter may use incorrect currency to format the balance.
- Fix NoClassDefError on some Paper 1.20.2 instances. (hopefully)
- Fixed the command sounds doesn't work at all
- Fixed tab-complete doesn't work for non-operator players.
- Fixed
respect-item-flag
option doesn't work.
Addons
- [Addon][DiscordSRV] Re-build with DiscordSRV 1.27.0 to fix linked accounts related features.
- [Addon][DiscordSRV] Fixed messages may send twice for shop owners.
Tweaks
- EcoEnchants fixes missing enchantments, QuickShop-Hikari now works with EcoEnchants 12.2.1 or later, and the compatibility module works properly.
- The ability for users to disable the built-in dependency resolver via startup flag and fallback to SpigotLibraryLoader by copying the list of dependencies into the libraries field of plugin.yml helps to solve the Aether illegal access issue reported on Mohist. We are still working with the Mohist developers to resolve this issue. MC 1.20.4 or later builds of Mohist are not affected by this issue.
Bug Fixes
- Fixed
/qs permisison
doesn't save the changes - Fixed plugin on Paper 1.20.1 may report NoClassDefException.
Optimization
- SpigotLibraryLoader is abandoned and dependency resolution is now handled by QuickShop-Hikari itself.
- Added mirror for dependency resolution for server in China.
- Users in China will use Maven Central mirrors from Aliyun, Tencent Cloud, and NetEase to accelerate dependency resolution.
- Users in Global will keep the original (Maven Central) repository.
Fixed a security issue:
Missing store ownership check when a player modifies a user's store permissions using the /qs permission command. This allows the user to take over arbitrary store permissions, including the administrator store.
This patch will not revoke permissions, you will need to do a check on the store's already set Per-player permissions property to avoid pre-existing exploits. For past versions, you can disable the command interface for the per-player permission system to avoid new exploits /lp group default permission set quickshop.permission false. However, upgrading is still recommended.
Considering that this security vulnerability allows for store privilege escalation (including unlimited stores, aka AdminShop) and allows for the modification of store transaction contents, prices, and disruption of the server's economic system, we strongly recommend that you plan an update immediately and utilize LuckPerms through the guide to disable this feature before you maintain it.
Bug Fixes
/qs reload
will cause OngoingFeeWatcher to be executed early- Repeated execution of restarting the server is within the design.
- Fixed an issue where store owners would not automatically grant ADMINISTRATOR permissions.
Summary by CodeRabbit
-
Dependency Updates
- Updated
quickshop-hikari
to version5.2.0.9
. - Upgraded Maven compiler plugin to version
3.12.1
. - Updated versions-maven-plugin to version
2.16.2
. - Incremented
EcoEnchants
to version11.2.0
. - Updated
eco
to version6.68.0
. - Upgraded
LandsAPI
to version6.42.15
. - Updated
towny
to version0.100.0.17
. - Incremented
EconomyCore
dependency to version0.1.2.6-Pre3
.
- Updated
-
Refactor
- Modified permission handling logic in
ContainerShop
. - Adjusted module reload process in
QuickShop
.
- Modified permission handling logic in
This update introduces support for Spigot 1.20.4.
New Features
- 1.20.4 supports
- You may need update ProtocolLib to ProtocolLib#675 or higher if you're running a 1.20.4 server.
- You may need update NBT-API to 2.12.2-SNAPSHOT or higher if you're running a 1.20.4 server, you can download from QuickShop-Hikari's support channel or click here