4.2.2.1
Bug Fixes
- Command
/qs buy
use wrong permission, it now following thequickshop.create.control
as same as/qs sell
behavior. - QuickShop Paste Generator use incorrect type
Permission
forDebug
type logs generator.
Flags
- New
ignoreProtocolLibEnableStatus
statup flag allow user disableProtocolLib enable status
check.
Warning: This update contains API changes, some 3rd-party addons may stop working after update.
Removed
- DisplayItem-Centered on double-chest store now completely deleted, The code maintainer of this function no longer updates it, and it has created a lot of trouble, making it worth not to keep it again.
Fixes
- When the Quickshop-Hikari runs on the Paper software, the custom enchantment added by a third-party plugin may cause the API call error and prevent the player from accessing the store.
- For the enchantments that creates the errors, we will try to display a fallback name.
- Fixed dupelicated Util reloading registry.
- Fixed
/qs paste
may stop working if updater has been disabled or failed to check the updates.
Changes
- Most of errors now contains a human-friendly simple description.
Important: Running QuickShop-Hikari on the Spigot server now requires an NBT-API dependency, Paper and its Fork are not affected.
QuickShop-Hikari 1st Anniversary!
It has been a year since the first stable release of QuickShop-Hikari. Thank you to everyone who supported and used QuickShop-Hikari, your great suggestions and ideas made QuickShop-Hikari get epic feature enhancements in the past year. And thanks to the early supporters and beta testers for their hard work testing so that QuickShop-Hikari becomes more stable and runs smoothly!
New Features
- On Paper and Spigot 1.19.4 or higher, QuickShop-Hikari is now able to display the item names of potions. (example:
Potion
->Potion of Speed
, orSpeed
->Potion of Speed
.) They are now displayed in the same format as the client. - The store information sign on Spigot server are able to correctly display and render translation components by access NBT directly through NBT-API (thanks @tr7zw for the help)
- Added Dynmap Addon into official addons bundle.
- Added BlueMap Addon into official addons bundle.
- Redesigned CommandHandler stuff, The new command system can resolve colon variables from commands.
5.1. Colon variables are separate from the parameter variables, are ordered, and can be added at any position (e.g
-foo:bar
). 5.2. Command now supports arguments with space inside, just wrap the string containing spaces with the "`" symbol. 5.3. The API has been changed accordingly and developers are advised to upgrade the relevant classes. The original classes will not be removed for a long time and every effort will be made to provide forward compatibility.
Bug Fixes
- Fixed translation files locating issue in Apollo Converter (the thing that Hikari used for converting from Reremake), now MineDown messages.json should can be correctly converting to MiniMessage format.
- Fixed the incorrect price logging in price changing logger.
Optimization
- Redesigned BatchBukkitExecutor, it now more smart and reduces the performance overhead associated with frequent thread scheduling.
- Move
/qs cleanghost
command to use new BatchBukkitExecutor.
Misc
- Platform field now included into Paste so you can check which one Platform module enabled for your server.
- CommandContainer binding now included into Paste so you can check the specificed quickshop subcommand handler class name.
- Updated translations from Crowdin.
Long time no see! After a nice holiday and a busy exam week, I'm gradually getting back to my old update frequency and planning new functional updates.
But how, I hope you enjoy the update :)
Paper users: If you're running into java.lang.NoClassDefFoundError
with addons installed but doesn't working, it's a Paper new plugin loader bug, make sure you have update to Paper-#445 or higher.
Bug Fixes
- Fixed
/qs export
command will create an IOException and doesn't work at all. - Fixed GSON creates IllegalAccessException when I/O per-player notifaction settings on some servers.
- Fixed
/qs import
command doesn't work if database configured prefix.
Removed
- NoCheatPlus compatibility module was excluded from bundle compatibility modules pack since it's repository down and nobody maintains it. (If there are other forks of active development, please let me know.) 1.1. If QuickShop-Hikari is conflicting with the anti-cheat plugin you are using, please open an Issue and I will try to resolve it.
- Netease regional legal restrictions has been removed since it not necessary anymore.
There are important notes on this update, please read the changelog
EN: Since 4.1.0.3, QuickShop-Hikari are disallowed to be load that the server located at Mainland China due potential legal risks, please read Regional legal restrictions. This decision should won't affect any users out of mainland China.
ZH: 自 4.1.0.3 以来,由于可能的法律风险,QuickShop-Hikari 将不再允许位于中国大陆地区的服务器加载,请阅读区域法律限制.
Privacy Policy
We have updated our privacy policy to reflect the changes we have made.
We are now sending you our new privacy policy to ensure that you are informed.
We will send an IP lookup request to CloudFlare to determine if your server is located in mainland China. For more information, please see: Regional legal restrictions. The URL we will request: https://cloudflare.com/cdn-cgi/trace.
Fixes
- Fixed H2 database won't close until JVM exited.
Optimization
- Created a new batch processing mechanism to avoid server stopping response issues that can occur when a large number of tasks (e.g ShopPurger) are executed.
- The new mechanism limits the maximum number of tasks that can be executed in a period of time and will try to reduce the impact on TPS as much as possible and compensate for TPS time by suspending tasks when they exceed the expected time.
The first release after the Lunar New Year!
Guys how are you? We're starting to get back to normal life after lighting up a lot of fireworks (hah) to celebrate the Lunar New Year, so now allow me to serve up a stack of delicious updates!
Bug Fixes
- All compatibility modules stopping works in 4.0.0.0, please update your all compatibility modules to adapt the new versions.
- Incorrect dependency structure leads to ClassLoader conflicts on some servers, so that the plugin cannot be loaded, mitigation measures have been invoked in this version, and the effects are still to be observed.
Optimization
- Reduced JAR size from 7.7MB to 2.8MB.
Addons
Discord Addon
- Added per-player notifaction settings, player are able to use command
/qs discord
to toggle the DM.
List Addon
- The addon
list
has been added into main-line, this addon allow player to check all shops they owned, check the document here.
Limited Addon
- The addon
limited
has been added into main-line, this addon allow store owners to set a limit on the number of sales for their store over a period of time,check the document here.
ShopItemOnly addon
- The addon
shopitemonly
has been added into main-line, this addon prevents players from putting non-store items into store containers, check the document here.
Happy Lunar New Year!
We're celebrating our major event - the Lunar New Year!
Like Christmas, Lunar New Year is a fairly important holiday in mainland China. People leave their work behind and return to their hometowns to reunite with their loved ones and family and celebrate the new year of the lunar calendar together.
I'd like to send Lunar New Year wishes to everyone in the lovely Minecraft community!
This update is a major update, please take care to backup your server and database. It is very difficult to roll back without a backup.
New features
- Added
/qs debug purgeplayerscache
to purge PLAYERS database table. - Paster now contains more useful data.
- Those paste entires has been added into paste:
- PlayerFinder
- Performance Monitor logs
- MiscUtils data (including General, Shopable Types, Custom StackSize etc.)
- TextManager data (including fallback language, local mapping prefix, file pathes, distribution url, available languages, post processors and caching stats)
- Nexus Manager data
- ItemMarker rules
- Price Limiter settings and rules
- Rank Limiter permission nodes
- Interaction Controller mappings
- PAPI Manager placeholder handlers and caching stats
- Added ton of new PlaceHolders.
- All placeholders are caching for 15mins by default to reduce the server performance impacts.
- You can find those placeholders from our documents.
- All placeholders:
%qs_metrics_recent_purchases_global_all_x%
- Count all purchases in recent x days with all types%qs_metrics_recent_purchases_global_selling_x%
- Count all purchases in recent x days which only selling shops%qs_metrics_recent_purchases_global_buying_x%
- Count all purchases in recent x days which only buying shops%qs_metrics_recent_purchases_global_buying_x%
- Count all purchases in recent x days which only buying shops%qs_metrics_recent_purchases_player_all_x%
- Count all purchases in recent x days with all types%qs_metrics_recent_purchases_player_selling_x%
- Count all purchases in recent x days which only selling shops for single player%qs_metrics_recent_purchases_player_buying_x%
- Count all purchases in recent x days which only buying shops for single player%qs_metrics_recent_purchases_player_buying_x%
- Count all purchases in recent x days which only buying shops for single player%qs_metrics_recent_transactionamount_global_all_x%
- Count all purchases transaction amount in recent x days with all types%qs_metrics_recent_transactionamount_global_selling_x%
- Count all purchases transaction amount in recent x days which only selling shops%qs_metrics_recent_transactionamount_global_buying_x%
- Count all purchases transaction amount in recent x days which only buying shops%qs_metrics_recent_transactionamount_global_buying_x%
- Count all purchases transaction amount in recent x days which only buying shops%qs_metrics_recent_transactionamount_player_all_x%
- Count all purchases transaction amount in recent x days with all types%qs_metrics_recent_transactionamount_player_selling_x%
- Count all purchases transaction amount in recent x days which only selling shops for single player%qs_metrics_recent_transactionamount_player_buying_x%
- Count all purchases transaction amount in recent x days which only buying shops for single player%qs_metrics_recent_transactionamount_player_buying_x%
- Count all purchases transaction amount in recent x days which only buying shops for single player%qs_shopmanager_global_total_all%
- Count all shops in this server%qs_shopmanager_global_total_selling%
- Count all selling shops in this server%qs_shopmanager_global_total_buying%
- Count all buying in this server%qs_shopmanager_global_total_loaded%
- Count loaded shops in this server%qs_shopmanager_global_total_unloaded%
- Count unloaded shops in this server%qs_shopmanager_player_total_all%
- Count all shops in this server for single player%qs_shopmanager_player_total_selling%
- Count all selling shops in this server for single player%qs_shopmanager_player_total_buying%
- Count all buying in this server for single player%qs_shopmanager_player_total_loaded%
- Count loaded shops in this server for single player%qs_shopmanager_player_total_unloaded%
- Count unloaded shops in this server for single player%qs_metadata_fork%
- Gets the QuickShop fork name%qs_metadata_version%
- Gets the QuickShop version
- Added ItemExpression.
- Please our documents for more.
- Added enchantment support for both blacklist and price-limit based on new ItemExpression system.
- Including enchantment level restrictions
- Added switch ToggleDisplay ability into shop control panel.
- Added
/qs debug updateplayersigns <player>
command to allow batch updates all shops info sign for a specific player.
Bug fixes
- Fixed economy loading issue on serval servers.
- Fixed QuickShopItemMatcher cannot correct matching items (thanks @Lufano for reporting it).
Performance optimization
- Baking shops owner uuid<->name mapping in asynchronous threads.
- Loading transaction messages in asynchronous threads.
- Reduced unnecessary shop loading.
- Restricted the sign update watcher can max cost 50ms in single loop.
- Prevent shops loading on server startup if they're in unloaded chunks.
- Caching configuration values and pre-bake decimal formatter in busy tasks.
- Improved database upgrading / check for schame updates speed.
- Improved command handler lookup speed.
API changes
- QuickShop no-longer extends the JavaPlugin, this may break some 3rd-party addons.
- QuickShop logger now replaced by SLF4J.
- Some util funcations moved into PlatformUtil or CommonUtil.
- JsonUtil was moved into common module.
- Exposed PlayerFinder in QuickShopAPI
- Added
QuickShopAPI#getSemVersion
for returning a Semver object. - Added
ShopCreateSuccessEvent
event.
Upcoming changes
The following features could not be included in 4.0.0.0 due to time constraints. We are celebrating the Lunar New Year, and as soon as our holiday is over, I will get back to development work and bring them to QuickShop-Hikari.
The following features have been confirmed and are in the process of being implemented.
- Shop Inventory Rebinding
- Allow user change the shop inventory out of shop container, player can easily binding to another container, or multiple container, to extend the shop.
- This allows players to add the contents of multiple chests/containers to a single shop and update inventory/space information simultaneously.
- If you have OpenInv installed, it can also bind the player's EnderChest inventory.
- It is also possible to bind inventory from a plugin, or even from players and entities, if someone is willing to support InventoryWrapper API.
- Allow user change the shop inventory out of shop container, player can easily binding to another container, or multiple container, to extend the shop.
- Extend DiscordSRV addon and allow players self enable/disable DM notifactions.
- Add discord commands into DiscordSRV addon that allow players use discord command to query shops or transaction logs.
- Migrate addons from QuickShop-Suite into QuickShop-Hikari mainline, and also adapt the per-player localization system.
- Dynmap Integration
This is a small optional bug fix for Hikari.
Bug Fixes
- If user upgrading from Reremake legacy version (which released before Minecraft 1.16 updates), the shop sign won't be correctly upgraded or recognized. (It fixed in 3.6.1.5 and all exists signs should be recongnized and upgraded after user click it.) Thanks for @Magma from server ria.red for reporting it (Well, that's probably what happens when production environment servers are upgraded only once in many years XD, I recommend that all server administrators for set up a upgrade schedule for updating plugins).
Other Stuff
We're working on Hikari-v4.0.0.0 and focus on performance optimize (multi-threaded, async, caching etc.), improve loading logic, boost startup speed and improve user experience so it will ready for large network.
Also, this is a great opportunity to make feature requests to us (because this change to the API will create changes, and once the API is fixed, it will be difficult for us to make major feature changes)
You can create your feature request on our Discusstions or Issue Tracker, Looking forward to seeing your thoughts.
This might be last version of v3 branch, we're developing Hikari v4!
Unless there are major errors in this version, it is unlikely that we will release a new version in a short time.
3.6.1.4/stable
Bug Fixes
- Fix top-level command tab-complete doesn't work.
- Database version didn't bump to
11
and cause dupilicate upgrade.
New Features
N/A
Optimization
N/A
New Features
- New option
shop.async-owner-name-fetch
has been added into configuration.
#[BETA] Should we async fetch the owner name?
#If you enable this option, the calls for ContainerShop#ownerName will return the cached result.
#If the request out of cache, QuickShop-Hikari will allow up to 20 ms for sync fetch username.
#Then it will turn to background and return "N/A" this time.
#This may cause some display problems (e.g. the info sign will show that the shop owner is N/A)
#But once the cache is completed for fetching in the background, the next request will return the correct username
#This is very useful for large servers, because sometimes players may accidentally load a large number of long ago shops, resulting in a large number of main route IO requests for username queries and causing a spike in lagging
async-owner-name-fetch: false
Optimize
- Improved parallel player username <-> uuid query workflow, reduced unnecessary Bukkit OfflinePlayer API requests (which it really slow)
- Pre-fill username lookup cache with server's
usercache.json
to boost initialization cache for improve the cache hit rate - Added
EssentialsX
data sources, now QuickShop will also use EssentialsX's data for mapping query (still, in parallel) - Move
/qs staff
uuidquery tasks from server thread to standalone async thread to avoid tps loss - Move
/qs unlimited
uuid query tasks from server thread to standalone async thread to avoid tps loss - Move
/qs benefit
uuid query tasks from server thread to standalone async thread to avoid tps loss - Move
/qs staff
uuid query tasks from server thread to standalone async thread to avoid tps loss - Move
/qs transfer
uuid query tasks from server thread to standalone async thread to avoid tps loss - Move
/qs permission
uuid query tasks from server thread to standalone async thread to avoid tps loss - Move MsgUtil msg sending functions username query tasks from server thread to standalone async thread to avoid tps loss
Check the change log in https://modrinth.com/plugin/quickshop-hikari/version/3.6.1.0
This version hot fixed username lookup bugs in 3.6.1.0 and 3.6.1.1.
3.6.1.0
NOTE: Due the API changes, you might need also update your Addons and Compatibility Modules.
WARNING: Due the database updates, downgrade from 3.6.1.0 without backup is impossible, BACKUP BEFORE INSTALLING THE UPDATE.
New Features
- The new FastPlayerFinder.
- The new FastPlayerFinder replaced old PlayerFinder for better uuid<->username lookup performance, see this this article for more.
- The Performance Monitor.
- We have added a Performance Monitor for monitoring the QuickShop-Hikari internal performance, see the article above for more.
Regression
CrowdinOTA back online with alternative.
We moved from Crowdin Content Delivery Network to ourself CloudFlare based infrastructure, see this article for details.
By updating to 3.6.1.0, the CrowdinOTA feature will re-enabled on your server.
If it is inconvenient to update the plug-in at this time (for example, code audit is required), you can make the following adjustments to your startup script to switch your existing installation to the new CrowdinOTA endpoint (required QuickShop-Hikari 3.6.0.2 or 3.6.0.3):
-Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=true -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.crowdinHost=https://crowdinota.hikari.r2.quickshop-powered.top
it should looks like this:
java -Xmx4G -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=true -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.crowdinHost=https://crowdinota.hikari.r2.quickshop-powered.top -jar paper.jar nogui
Optimization
- PlayerFinder performance has been optimized for large minecraft network by rewriting. Now we will execute multiple queries in parallel to maximize response speed. (The working mode of this mechanism is similar to the snap answer.)
- The loading speed of a single shop is improved by removing unnecessary symbol link creation requests (aka.
InventoryWrapper#mklink
). - By disabling the display-item center alignment function by default, the loading speed of a single shop is improved, and the peak of TPS lag caused by chain block loading is avoided as far as possible.
- The schedulded container integrity check is no longer performed after loading in the shop. Due to the introduction of the new InventoryWrapper mechanism, the check has been completed at the time of
InventoryWrapper#locate
.
API Changes
QuickShop#getPlayerFinder has been replaced by FastPlayerFinder.
Database Schema Changes
qs_players
Please see Database Schema page for latest database schema.
Supporters
Thanks for supporters on Ko-fi for donation ❤
- OnlyPW