Releases: QuickShop-Community/QuickShop-Hikari
5.1.1.0
New Features
- [ADDON] Reremake Migrator (docs)
- We have finally released the available QuickShop-Reremake data migration tool that helps you to migrate from QuickShop-Reremake to QuickShop-Hikari!
- The data migration tool migrates most of the configuration settings, created stores, store metadata, store extension data.
- To learn how to use this tool, see the wiki page.
- The tool is currently an experimental feature, and despite our internal testing, it may not cover all edge cases. If problems arise, please join the Discord server for technical support.
Bug Fixes
- Privacy settings and caching settings may not write into configuration correctly, it will cause all privacy options default to DECLINED and shop lookup caching will be disabled, it may hurt the server performance. This build fixed and re-enabled them.
5.1.0.0
Artist: Ghost_chu - Server group photo
Another regular update for QuickShop-Hikari! In this update we've made a special update to privacy protection, increasing user control over data collection and sending. In addition to this, we have fixed several bugs, optimized performance, and brought some extended feature updates.
The Minecraft 1.20.2 is coming soon, and we'll be adapting the new version as soon as it's released, so we'll see you again in 1.20.2! (If there are no new bugs that need to be fixed urgently ;))
New Features
- Privacy Controller
- We've always taken our users' privacy seriously, and in 5.1.0.0 we've added a brand new privacy management tool.
- The privacy controller and reviews all privacy related requests, like paste, bStats, rollbar error tracker.
- This tool provides an efficient switch for data processing within QuickShop-Hikari, allowing the management of data processing for the entire assortment or for individual modules.
- You can review the audit log in
/quickshop paste
report. - The goal of this tool is not GDPR compliance, but we also don't deal with non-anonymized processing; the data transferred to bStats, Rollbar etc. is all anonymized; the tool primarily allows users to opt-out of some outgoing data. This provides an option other than disabling the entire bStats or error handler.
- Our goal is to plug as many modules that will execute external data transfer into this controller as possible and provide a command that allows you to quickly disable, enable them, these missing pieces will be added gradually in future versions.
- [COMPACT] AngelChest Compatibility Module.
- This module can disallow users create shop on a AngenChest and prevent AngelChest being deleted when executing Protection Checking.
- [COMPACT] ChestProtect Compatibility Module.
- This module can disallow users create shop on a container that proteced by ChestProtect, and prevent protect removing by executing Protection Checking.
Reworks
- Rewrited shop cache system
- The new Shop Lookup Cache module improves code maintainability so that we can apply it to more places in future releases.
- After the rewrite, the cache hit statistics for this module now reflect the real data.
- Reduced cache size, too large a size reduces cache lookup performance and leads to wasted memory usage.
Optimizes
- Improved performance of out-of-cache shop lookups, and chunk loading is now no longer performed in non-necessary cases.
Changes
- Added and default enabled option that cancel the fake Protection Checking Event (BlockBreakEvent) before pass to MONITOR listeners.
- This can alleviate conflicts or error logging with some plugins.
- Updated TNE-API to TNE-Recode (0.1.2.2-Pre-1), this should fix an incompatibility issue that arose with newer versions of TNE. (contributed by @creatorfromhell )
- [ADDON] Improved BlueMap addon. (contributed by @ItsJuls )
Bug Fixes
- Fixed
shop.blacklist-lores
setting doesn't work at all.- The code implementation of this feature was accidentally removed in an earlier updates.
- We rewrote the code for the relevant functions and the new check will ignore color and style symbols in lores.
- Fixed minor CSS issue in generated paste.
- [ADDON] Fixed DiscordSRV json message template parsing issue, now load the JSON message template from the language file with the correct mapping name.
API Changes
- Added
ShopManager#getShopsViaCache
andShopManager#getShopsIncludeAttachedViaCache
interfaces. - Deleted ShopCache class cause it was replaced by new ShopCaching system.
Privacy Changes
- We've added a new bStats data collection (similar to QuickShop-Reremake) Here's a list of all the new collection items, you can opt out of them at any time using the new PrivacyController.
- In order to comply with our privacy transparency requirements, we explain the uses of the metrics we collect in more detail below.
- Collecting the all QuickShop-Hikari's addons/compactibility module's name that installed on your server.
- We use this metric to understand the popularity of extensions among the user community and consider merging popular expansions into the core. We also use this metric to discover new third-party modules.
- Collecting the QuickShop-Hikari's feature status of allow-stacks
- We use this metric to understand the popularity of this feature and decide if we should put it default enabled in default configuration.
- Collecting the QuickShop-Hikari's feature status of protection-checker-listener-blacklist
- We use this metric to understand most popular blacklist settings across our users, this allows us to work with its authors to improve compatibility.
- Collecting the QuickShop-Hikari's command alias.
- We use this metric to understand most popular/most disabled command alias of quickshop, then we will consider put them into/remove them from default alias list.
- Collecting the QuickShop-Hikari's database type you're using.
- We use this metric to understand most popular database type, and targeted to improve its query, insert and modify performance.
- Collecting the QuickShop-Hikari's database version.
- We use this metric as a reference so that we don't drop support for older but popular database versions.
- Collecting the QuickShop-Hikari's database vendor.
- We use this metric to know the name of the specific database vendor that the user is using so that we can use an optimized JDBC driver for the specific database vendor, such as MariaDB or OceanBase.
- Collecting the QuickShop-Hikari's economy bridge type that user using.
- We use this metric to understand the types of economic bridging plugins used by our users so that we can improve the corresponding economic bridging plugin transaction processing and transactional performance, and optimize performance using asynchrony and callbacks where supported.
- Collecting QuickShop-Hikari's item matcher type that user using.
- We use this metric to check the popularity between different ItemMatchers in order to improve them. It also helps us understand the popularity of some of the ItemMatcher implementations that are known to be problematic in order to decide if we should write mitigations.
- Collecting QuickShop-Hikari's display type that user using.
- We use this metric to check the popularity of different DisplayImpl's across servers so that we can decide whether to optimize them or maintain the status quo. It also helps us to see if the popularity of the faster VirtualDisplayItem has suffered due to the demand for ProtocolLib.
- Collecting QuickShop-Hikari's total shops amount on your server.
- This metric ends up on bStats as a total of all stores on all servers. This metric helps us average the size of the number of server stores in order to decide whether to optimize lookup or cache performance, or whether we should not over-optimize. When this value rises for a period of time, we may initiate a performance optimization topic update program within Discord so that we can look for potential operational performance issues.
- Collecting QuickShop-Hikari's background debug logger switch status.
- We use this metric as a reference to get a rough idea of whether a large number of users are being affected by the unknown performance degradation of DebugLogger and to improve its performance if needed, which seems to be good, at least for now.
- Other metrics collected by bStats it self.
- Just like other plugins and your server software, here is some basic metrics data collected by bStats and we can't control them. To out-put from them, go to
/plugins/bStats/config.yml
to disable bStats.
- Just like other plugins and your server software, here is some basic metrics data collected by bStats and we can't control them. To out-put from them, go to
- Collecting the all QuickShop-Hikari's addons/compactibility module's name that installed on your server.
5.0.0.7
4.x to 5.x is a major breaking update, read the 5.x main-changelog here before upgrading from 4.x to 5.
New Features
/qs find
outputs now support hover item previewing- [ADDON]
/qs list
outputs now support hover item previewing - [ADDON]
/qs list
now supports tab-completing for online players if player have permission to listing other shops
Changes
- Barrel now added to default store container list, this change will only affect the new generated configuration.
- Maxmium item price in
price-restriction.yml
was limit to up to999999999999999999999999999999.99 (1.0E30)
to adapt decimal (32,2) to avoid over database data type limit to prevent SQLException, this change will only affect the new generated configuration. - Some invalid configuration nodes will be removed from configuration after this update (those options nolonger works for a long time ago).
Bug Fixes
- Fixed shop deleting was recorded as shop creating in database.
- Fixed
PackageUtil#parsePackageProperly
doesn't work when user disabled debug logger, it also affected-Dcom.ghostchu.quickshop
properly args.
5.0.0.6
4.x to 5.x is a major breaking update, read the 5.x main-changelog here before upgrading from 4.x to 5.
This is a hot fix for 5.0.0.5 version.
Hot fix
- Fixed SQLException when trying to fetch players offline messages from database.
5.0.0.5
New Features
- Added new
backup-policy
settings.- This option allows the user to control the triggering of database backups
- Rate-limit for player block clicking
- This is a very basic frequency limit, QuickShop will only respond to a single click event from the same player within 125 milliseconds.
- This helps to solve the problem of players maliciously clicking on squares quickly, causing QuickShop to look up, parse, and calculate store data frequently, resulting in tick-time increases
- Shop locks are not limited by this frequency; they are fast enough to find without excessive computation, and in redstone environments will even use cached lookups without causing computational stress.
We're planned apply the rate-limit to more modules in future to avoid affect server performances by players maliciously actions.
Optimization
- The players offline messages are not persistent in memory but fetch from database in async.
- We note that on large networks huge amounts of transaction logs may be generated, which are loaded into memory at startup and increase RAM usage.
- However QuickShop will always perform the same operation on the database while manipulating the content. This made the in-memory copy meaningless, so we moved it all to the database and read and write asynchronously when needed.
Changes
- QuickShop-Hikari nolonger automaticlly backup H2 databases on startup.
- QuickShop-Hikari nolonger automaticlly backup databases on shop purges.
Bug Fixes
- Fixed debug logs in paste is all empty lines.
- [ADDON] Fixed discount addon lost all discount codes after server restart.
5.0.0.5
4.x to 5.x is a major breaking update, read the 5.x main-changelog here before upgrading from 4.x to 5.
New Features
- Added new
backup-policy
settings.- This option allows the user to control the triggering of database backups
- Rate-limit for player block clicking
- This is a very basic frequency limit, QuickShop will only respond to a single click event from the same player within 125 milliseconds.
- This helps to solve the problem of players maliciously clicking on squares quickly, causing QuickShop to look up, parse, and calculate store data frequently, resulting in tick-time increases
- Shop locks are not limited by this frequency; they are fast enough to find without excessive computation, and in redstone environments will even use cached lookups without causing computational stress.
We're planned apply the rate-limit to more modules in future to avoid affect server performances by players maliciously actions.
Optimization
- The players offline messages are not persistent in memory but fetch from database in async.
- We note that on large networks huge amounts of transaction logs may be generated, which are loaded into memory at startup and increase RAM usage.
- However QuickShop will always perform the same operation on the database while manipulating the content. This made the in-memory copy meaningless, so we moved it all to the database and read and write asynchronously when needed.
Changes
- QuickShop-Hikari nolonger automaticlly backup H2 databases on startup.
- QuickShop-Hikari nolonger automaticlly backup databases on shop purges.
Bug Fixes
- Fixed debug logs in paste is all empty lines.
- [ADDON] Fixed discount addon lost all discount codes after server restart.
5.0.0.4
4.x to 5.x is a major breaking update, read the 5.x main-changelog here before upgrading from 4.x to 5.
Bug Fixes
- Fixed background logger's logs always unreadable random string in debug paste.
- 5.0.0.1 to 5.0.0.3 now marked unsupported due this bug. To continue get the support, please use the version > 5.0.0.4 or the latest LTS (4.2.2.12).
- [ADDON] Fixed discount addon will always apply -100% discounting to percentage discount code.
5.0.0.3
4.x to 5.x is a major breaking update, read the 5.x main-changelog here before upgrading from 4.x to 5.
New Features
- QuickShop-Hikari now able to automaticlly download NBT-API from Modrinth on Spigot server, this improves the out-of-the-box experience for users of Spigot.
Bug Fixes
- The
[Preview Item]
button doesn't work and only print the command help. - Shop creation failure when user trying make a shop with item that name contains Emoji due database tables is
utf8
chatset rather thanutf8mb4
. Thanks 针织薄外套 (kioproject) and Clxdy (clxdywindows) report it.- By install this update, your quickshop tables in database will automaticlly convert to
utf8mb4
charset.
- By install this update, your quickshop tables in database will automaticlly convert to
- The empty signs won't be removed after shop creation failed. Thanks 针织薄外套 (kioproject) report it.
- [ADDON] DiscordSRV addon doesn't work when sending embed messages. Thanks @Subdevell and Maoyue report it.
- The purchase log won't send and out-of-stock log will send twich when a selling shop run out of stock. Thanks 针织薄外套 (kioproject) report it.
- [ADDON] Fixed Velocity compatibility module doesn't work. Thanks @Q2297045667 (Missing_Love) report it.
5.0.0.2
4.x to 5.x is a major breaking update, read the 5.x main-changelog here before upgrading from 4.x to 5.
New Feature
- New
/qs debug set-property <key-value>
sub command to dynamically change the JVM property.- For safety, you're only able to change the quickshop related properties.
Improved
- Improved background debug logger
- From
0.1329ms
per record to0.0061ms
per record by moving cost tasks into a async executor, it improved the performance on busy server when there have LOTS of debug logs on server main thread. - By set
-Dquickshop-hikari-disable-debug-logger=true
will able to disable the debug logger's stack trace completely when you running a huge server, but remember you will need re-enable it before reporting the bugs/errors to us.
- From
5.0.0.1
5.0.0.1
A small fix for multiple NPE on the server who set tax-account
to empty string.
5.0.0.0 - Cyno
5.0.0.0 is a BREAKING UPDATE with ton of BREAKING CHANGES, and will kill most of 3rd-party addons.
It may also lead to data corrupt, world corrupt, MAKE SURE YOU CREATE A FULL BACKUP BEFORE INSTALL THE UPDATE.
Latest LTS build: 4.2.2.12
September is coming, welcome to the new "Cyno" update!
Cyno update mainly makes drastic changes to the underlying code of QuickShop-Hikari in order to solve some performance issues and historical problems.
New Features
- System account support (QUser)
- QuickShop-Hikari now able to handle the system account (username based)
- To specify a system account, you need to add square brackets around the account name:
[SystemAccount]
- This feature is useful when economy plugins handle player-based UUIDs separately from system-based Usernames.
- The system account will not trigger the query from Username to UUID, and the standard Bukkit OfflinePlayer method will be used to calculate UUID
- All player-related API and internal calls are replaced with QUser.
- Player related inputs now support UUID, username, username based on system account
- For example:
/qs setowner Ghost_chu
(Username)/qs setowner 7351a6fd-a09a-4c2d-aae9-86252d079a4c
(UUID)/qs setowner [SystemAccount]
(Username based System account)
- The store information panel now provides store owner information viewing.
- Including UUID, Username, Display As. Both support for Virtual Account (System Account) and Real Player Account
Real Exists Player | Virtual System Account |
---|---|
Changes
- Shop Purger's return-fee settings has been removed (Now keeps the same logic as normal user delete).
- Name lookup in async settings has been removed, almost all name lookup are async now.
/qs
nolonger as main-command, but/quickshop
instead./qs
still presents in config.yml as a alias of/quickshop
.
Improves & Optimized
- Improved shop register logic to relieve the shop loading issue on modded servers.
- [ADDON] Prevent un-necessary chunks loading during handle the island delete.
- [ADDON] Handle the island delete chunks operations in async if user using Paper or Paper's fork server software.
- Improved store loading performance, it can save lots of time on both large network and small server.
- Improved symlink resolution performance for InventoryWrapper.
- Improved uuid2Name or name2Uuid lookups in a number of locations, they will now be handled in an asynchronous thread to avoid network IO on the ServerThread.
- Inventory check alert now included into i18n system and translatable.
Bug Fixes
- Fixed the URL in update notification are non-clickable.
- [ADDON] Fix multiple addons's permission override doesn't work.
- Fixed
/qs setowner
result may won't save into database. - Fixed store information panel missing the centered enchantments title for enchanted items.
New Compatibility Modules
EcoEnchants
This addon added EcoEnchants support for:
- Display the EcoEnchants's enchantments name on sign and shop info panel.
- Display the EcoEnchants's enchantments in the hover item previewing.
Click Here To EcoEnchants Addon Wiki
Reforges
This addon added Reforges support for:
- Display the Reforges's reforges on shop info panel
Click Here To Reforges Addon Wiki
API Changes
- Added ItemPreviewComponentPopulateEvent
- Added ItemPreviewComponentPrePopulateEvent
- Removed outdated API endpoints.
- Refactored ShopManager API & Shops API
Dependencies
The following Maven dependencies were updated.
- BlueMapAPI
- Plan
- BentoBox
- Towny
- LandsAPI
- Apache Commons Lang3
- WorldGuard
- EssentialsX
- BungeeCord-API
First time contributor
5.0.0.0
5.0.0.0 - Cyno
5.0.0.0 is a BREAKING UPDATE with ton of BREAKING CHANGES, and will kill most of 3rd-party addons.
It may also lead to data corrupt, world corrupt, MAKE SURE YOU CREATE A FULL BACKUP BEFORE INSTALL THE UPDATE.
Latest LTS build: 4.2.2.12
September is coming, welcome to the new "Cyno" update!
Cyno update mainly makes drastic changes to the underlying code of QuickShop-Hikari in order to solve some performance issues and historical problems.
New Features
- System account support (QUser)
- QuickShop-Hikari now able to handle the system account (username based)
- To specify a system account, you need to add square brackets around the account name:
[SystemAccount]
- This feature is useful when economy plugins handle player-based UUIDs separately from system-based Usernames.
- The system account will not trigger the query from Username to UUID, and the standard Bukkit OfflinePlayer method will be used to calculate UUID
- All player-related API and internal calls are replaced with QUser.
- Player related inputs now support UUID, username, username based on system account
- For example:
/qs setowner Ghost_chu
(Username)/qs setowner 7351a6fd-a09a-4c2d-aae9-86252d079a4c
(UUID)/qs setowner [SystemAccount]
(Username based System account)
- The store information panel now provides store owner information viewing.
- Including UUID, Username, Display As. Both support for Virtual Account (System Account) and Real Player Account
Real Exists Player | Virtual System Account |
---|---|
Changes
- Shop Purger's return-fee settings has been removed (Now keeps the same logic as normal user delete).
- Name lookup in async settings has been removed, almost all name lookup are async now.
/qs
nolonger as main-command, but/quickshop
instead./qs
still presents in config.yml as a alias of/quickshop
.
Improves & Optimized
- Improved shop register logic to relieve the shop loading issue on modded servers.
- [ADDON] Prevent un-necessary chunks loading during handle the island delete.
- [ADDON] Handle the island delete chunks operations in async if user using Paper or Paper's fork server software.
- Improved store loading performance, it can save lots of time on both large network and small server.
- Improved symlink resolution performance for InventoryWrapper.
- Improved uuid2Name or name2Uuid lookups in a number of locations, they will now be handled in an asynchronous thread to avoid network IO on the ServerThread.
- Inventory check alert now included into i18n system and translatable.
Bug Fixes
- Fixed the URL in update notification are non-clickable.
- [ADDON] Fix multiple addons's permission override doesn't work.
- Fixed
/qs setowner
result may won't save into database. - Fixed store information panel missing the centered enchantments title for enchanted items.
New Compatibility Modules
EcoEnchants
This addon added EcoEnchants support for:
- Display the EcoEnchants's enchantments name on sign and shop info panel.
- Display the EcoEnchants's enchantments in the hover item previewing.
Click Here To EcoEnchants Addon Wiki
Reforges
This addon added Reforges support for:
- Display the Reforges's reforges on shop info panel
Click Here To Reforges Addon Wiki
API Changes
- Added ItemPreviewComponentPopulateEvent
- Added ItemPreviewComponentPrePopulateEvent
- Removed outdated API endpoints.
- Refactored ShopManager API & Shops API
Dependencies
The following Maven dependencies were updated.
- BlueMapAPI
- Plan
- BentoBox
- Towny
- LandsAPI
- Apache Commons Lang3
- WorldGuard
- EssentialsX
- BungeeCord-API