QuickShop-Hikari - A powerful, user-friendly and reliable ChestShop plugin [1.20-1.21] icon

QuickShop-Hikari - A powerful, user-friendly and reliable ChestShop plugin [1.20-1.21] -----

A shop plugin that allows players to easily sell/buy any items from container without any commands.




Changelog
  • Completely rewrote display item code
  • Added new completely revamped item matcher, set work-type to 3 which corrects lots of issues(still in testing phase)
  • Added 1.21.1 support, this will be the new default, which should allow for future updates to continue to work so long as the protocol doesn't change.
  • Add finding enchantments on books and gear support for find sub command(thanks SarahGreyWolf)
Other Notes
  • Testing builds for folia support may be found on the discord.
  • RealItemDisplay will be getting removed in a future release. It is inefficient and causes more issues than it's worth. Please move to virtual displays.

    Looking for Suggested Plugin Pairs?
    Try out my Vault fork that has various enhancements for plugin authors to take advantage of, and Folia Support Need an economy plugin that provides lots of functionality, as well as, is efficient? Try TNE: https://www.spigotmc.org/resources/the-new-economy.7805/
----------, Aug 25, 2024

Bug Fixes
  • Fixed exploit with shop items and certain functionality(thanks to bridgelol)
  • Temporarily disabled QS history while working on replacement due to errors end-users are running into.
  • Fixed issue with enchantment restrictions not detecting them in enchanted books(thanks toTauCubed)
----------, Jul 21, 2024

New Features
  1. 1.21 support
Bug Fixes
  1. Fixed /qs clean may delete all stores in previous release
  2. Fixed /qs cleanghost may delete all stores in previous release
----------, Jun 14, 2024

Changes
  • Virtual Display Item available again when use ProtocolLib Build 710 and up, please update your ProtocolLib
Bug Fixes
  1. Fixed display item check when using RealDisplayItem, the check may delete non-display item from player/container inventory if an item contains lore that is a valid JSON string. It should won't affcet most servers.
  2. Fixed /quickshop cleanghost won't delete the stores that trading blacklisted items
----------, Jun 8, 2024

Same with 6.2.0.3 but forget to update version number!
----------, May 29, 2024

Bug Fixes
  • Fixed entity explosion may not check attached block
Bug Fixes (6.2.0.1)
  • History GUI's paging button doesn't use translated text
  • 1.20.4/1.20.5 didn't use Spigot new potion API
  • The potion effect level in shop info panel always smaller one than actual level in RomanNumber
  • The blank lines may send to players when you set a translatable text to empty
  • Fixed quickshop.alert that should be use as quickshop.alerts in PlayerListener
----------, May 29, 2024

Warning! Due to Minecraft's major update to ItemStack, downgrading is not an option! Please backup all data before upgrading!

Reremake users: This is the last chance to complete your migration from Reremake to Hikari before you upgrade to 1.20.5/1.20.6. The migration requires QuickShop-Reremake to be up and running. After upgrading to 1.20.5/1.20.6, Reremake will no longer work properly.

1.18, 1.19 users: All versions 1.18 and 1.19 have been marked as “End Of Life” and these versions are no longer supported. It may be broken in a future update. Please consider upgrading to 1.20.x!

It's been a long time! This release has been delayed several times due to huge changes in 1.20.5/1.20.6. But anyway, 6.2.0.0 is here now!

New Features
  • 1.20.5/1.20.6 supports both for Spigot and Paper
    • The hover item preview function on Spigot 1.20.6 is not available at the moment, please click to access the GUI to preview the item
    • The virtual DisplayItem feature of 1.20.6 has been temporarily disabled because ProtocolLib has not been updated yet.
  • Display entity support for display-item
    • The use of ItemDisplay as a hover is now supported, which has better performance than RealDisplayItem (both for Server and Client). Set display-type to 3 to enable ItemDisplay entity
  • Displaying detailed levels of potion effects is now supported on 1.20.5+
  • /quickshop history enhance
    • New subcommands: /quickshop history owned, /quickshop history accessible and /quickshop history global to allow you query multiple stores transaction history in single query
      • owned: Select all shops which you're owner
      • accessible: Select all shops which you have per-shop permission to access the store history
      • global: Select all shops on this server (require permission)
Bug Fixes
  • Fixed /quickshop benefit command may not save when remove users
  • Fixed chunks load/unload loop on specific Spigot versions when use RealDisplayItem
  • Fixed double-chest related issues
    • QuickShop may only recognizes half inventory of a DoubleChest store that spans a Chunk junction after chunk unload/server restart
    • When creating a store on a DoubleChest, symbolLink is always bound to the side with type=left, no matter which side of the DoubleChest the store cube is on. After the user destroys the corresponding side of the chest, the store will be invalidated.
  • Fixed the issue that some items in the History GUI could not be displayed because they were out of the GUI display range.
  • Fixed show-tax purchase messages doesn't show tax currency in message.
Debugging
We added localized text and Tab completion to allow all users to use QuickShop-Hikari's built-in debugging tools.

These debug commands are for debugging purposes only and have no operational confirmation. Using them incorrectly may result in inconsistent status or loss of data. Figure out what happens before you execute them.

All commands are started with prefix: /quickshop debug

  • dev/debug/devmode: Toggle debug mode
  • signs: Print the coordinates of the all identifiable information sign for the store you are looking at
  • updateplayersigns <player name>: Refresh the contents of the store information boards in all designated players' stores.
  • force-shops-reload: Unload all loaded stores and re-load them (to refresh the state)
  • force-shoploader-reload: Unload and delete them from memory, then re-execute the ShopLoader sequence to reload all stores from the database.
  • check-shop-status/check-shop-debug: Prints quite useful store status debugging information to confirm the current state of the store in memory
  • toggle-shop-load-status: Simulate store loading/unloading without changing the chunks loading state
  • set-property: Register/change the Java property sheet to change specific behavior via property switch without touch startup command line (They are usually changed through the startup parameters). For security reasons, this command is restricted to change QuickShop-Hikari properties only, any request to change any other properties will be denied.
  • reset-shop-caches: Reset store lookup cache for benchmark/or debugging possible cache update issues
  • reset-dbmanager: Force reset of SQLManager, only for MySQL data sources, using this command on H2 will cause the plugin to crash
  • dump-db-connections: Dump SQLManager's Current Active Queries on chat.
  • stop-db-any-queries: Force close SQLManager's currently active queries.
  • toggle-db-debugmode: Toggles the debugging state of SQLManager and prints the executed SQL statements and performance timings on the console when SQLManager debug mode is enabled.
  • dump-hikaricp-status: Printing status information for HikariCP.
  • set-hikaricp-capacity: Dynamically change the size of HikariCP's connection pool to allow more connections to be fetched urgently.
  • item-info: Prints the NBT data for the item in hand (if any) and the item in the store (if any). If the item is in the hand and is looking at a store, it will also output the item match.
  • mark-all-shops-dirty: Forces all store change status indicators to be flagged as changes not saved in order to force a refresh of their current data into the database.
  • clean-display-entities: Scans all loaded blocks and removes any entities recognized as QuickShop DisplayItem. Useful when uncleared entities appear after changing the DisplayItem type.
Ko-fi supporters
Thanks to these friends on Ko-fi for their support in this update, they are:

  • GradynWursten(GNUGradyn)
  • Namiu
  • narumincho
  • lunar
(The names are in no particular order)
----------, May 15, 2024

Bug fixes
  1. Fixed H2 driver conflict on some server setup and cause the startup failure.
----------, Apr 21, 2024

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
----------, Apr 17, 2024

New Features
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.
----------, Apr 10, 2024

Bug Fixes
  1. On some server platform, database sources settings may not read properly.
----------, Feb 22, 2024

Bug Fixes
  1. Plugin may crashed on startup due incorrect configuration upgrade script.
  2. (Try-to) fix double-chest may cannot detect another half-part items.
  3. [COMPACT] GriefPrevention compatibility module may crash on startup if build don't have ClaimResizeEvent.
----------, Feb 22, 2024

Bug Fixes
  1. Fixed top N valuable customers query
  2. Fixed Minecraft vanilla bug can break the shop container
  3. (Try to-) fix the GriefPrevention compat's permission override
  4. Fixed ItemFlag may not respected
----------, Feb 14, 2024

Bug Fixes
  • Fixed /quickshop history command will stuck when user using MySQL.
Optimization
  • The store now saves after startup only after modifications have occurred.
----------, Feb 7, 2024

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.
----------, Feb 6, 2024

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.
----------, Feb 5, 2024

Optimization
  • We have noticed that the new /quickshop history feature is applying more database pressure due to log_purchase not being configured with proper indexing. This hot update 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.
----------, Feb 5, 2024

This is a hot-patch for 6.0.0.0 major update.

Fixes
  1. [ADDON] Reremake-Migrator doesn't work with 6.0.0.0
  2. [ADDON] BlueMap Addon doesn't work (NullPointerException)
  3. [ADDON] ItemsAdder Addon don't load due package name changes
----------, Feb 4, 2024

6.0.0.0 Major Update - Furina
[​IMG]

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 a large number of 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]
    • 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.
    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 and Shop#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.
----------, Feb 3, 2024

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.
----------, Jan 14, 2024

Bug Fixes
  • Fixed relocation bug that caused addons reporting NoClassDefFoundError/ClassCastException.
  • Fixed decimal-format always report the language key is missing.
----------, Jan 8, 2024

Bug Fixes
  • Fixed broken DiscordSRV addon (maybe also other 3rd-party addons).
  • Fixed China Geo detection for optimized libraries resolver doesn't work if CloudFlare services cannot be accessed (which is common in China mainland).
----------, Jan 5, 2024

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.
----------, Jan 5, 2024

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.
----------, Jan 3, 2024

This is a quick update to prevent QuickShop-Hikari running on server which installed EcoEnchants v11+ to avoid data corruption.
Also updated Adventure Lib to 4.15.0 for MC 1.20.3+ compatibility.
----------, Dec 19, 2023

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
----------, Dec 10, 2023

As always, we keep it updated with bug fixes and performance improvements.

New
  • -Dcom.ghostchu.quickshop.shop.ContainerShop.updateShopSignOnLoad debug startup flag was added, when it set to true, the shop will update their signs when shop enter the loaded state from unloaded state, This will result in lower performance, but will improve the update lag of the signs. Startup use only on servers that are confirmed to have this issue.
  • [ADDON] Reremake-Migrator now able to migrate QuickShopBan addon's data.
  • [ADDON] Reremake-Migrator now able to migrate QuickShop-Reremake's transaction logs into database.
Optimization
  • Reintroduced an optimized StackWalker API to improve the performance of the background logger.
    This contribution was submitted by @SirYwell.
Changes
  • In new QuickShop-Hikari installations, transaction logs are now logged to the database by default instead of the qs.log file, and you can manually change the configuration file to restore the original behavior.
Bug Fixes
  • Fixed Inventory Holder isValid() check issue
  • Disabled the BlockState fetching optimization for the Paper platform, which seems to no longer be needed since the 1.16 update, when the speed of the BS API was significantly improved, and was causing inconsistent fetched state errors.
  • Fixed the issue where the display of some words in the store information board did not follow the language setting.
  • Fixed plugin crash when ProtocolLib not installed and display-type was set to VIRUAL_DISPLAYITEM.
Summary by CodeRabbit
  • Dependency Updates
    • Updated quickshop-hikari dependency across multiple modules.
    • Updated BlueMapAPI, Plan, ChestProtectAPI, EcoEnchants, LandsAPI, openinvapi, worldedit-bukkit, Reforges, towny, item-nbt-api-plugin, specialsource-maven-plugin, placeholderapi, EconomyCore, csvjdbc, slf4j-jdk14, commons-text, commons-compress, and various net.kyori artifacts to their latest versions.
  • New Features
    • Introduced new search functionality for transaction logs in the reremake-migrator module.
    • Added a new MockPlugin class for mocking plugin behavior.
    • Implemented a new ShopLogsMigrate class for migrating shop logs to a database.
  • Bug Fixes
    • Fixed null-safe comparison in griefprevention compatibility module.
  • Refactor
    • Simplified error handling in VirtualDisplayItemManager.
    • Streamlined isValid method in BukkitInventoryWrapper.
    • Enhanced double chest handling in BukkitInventoryWrapperManager.
    • Removed unnecessary asynchronous behavior in Util and Log classes.
    • Adjusted PerfMonitor to use Log.Caller directly.
  • Documentation, Style, Tests, Chores, Revert
    • No specific end-user facing changes noted in these categories.
----------, Nov 16, 2023

This is a cumulative update to fix bug reports received since the last LTS release.

Compatibility
We have partnered with the developers of Mohist and worked on improving the stability of QuickShop-Hikari on Hybird Server.

In the latest Mohist 1.20.1/.2 you can run QuickShop-Hikari perfectly and QuickShop-Hikari protects its store containers from being accessed by other mods pipes or machines.

Also, in the latest version of Mohist 1.20.1/.2, QuickShop-Hikari is able to use most of the Mod containers as store containers.

Bug Fixes
  1. Fixed annoying NPE error when loading a store that is in an unloaded world during startup, althrough it won't cause any actual issues.
  2. [Addon] Fixed an issue where the item stack amount setting was not preserved for stores that migrated from Reremake.
Changes
  1. Disabling the H2 compatibility warning on Mohist will test H2 to work fine on Mohist.
  2. Added /quickshop debug reset-shop-caches subcommand to allow user purge all caches from memory to debugging the cache issues.
Privacy
To inform you of warnings about QuickShop-Hikari in accordance with our Privacy Transparency Policy.

We received a data breach alert from the Rollbar* cloud service informing us that our Access Token (post_server_items) had been compromised and a forced reset was performed on our affected Token, not only QuickShop-Hikari but also QuickShop-Reremake affected.
However, our Access Token (post_server_items) is distributed with Jar, so whether it was compromised or not doesn't affect us in any way - it's inherently public and we use it for public purposes. As a result, this forced reset caused the Rollbar to no longer be able to report bugs in older versions of QuickShop-Hikari, where we distributed the new Access Token (post_server_items).

We practice our privacy policy and therefore all submitted data is submitted in the minimal sample and anonymized. Your data is therefore not affected. Although no QuickShop-Hikari is actually affected, you can always disable the error log reporting feature if you want.

* Rollbar is a service used by QuickShop-Hikari AND QuickShop-Reremake that used for collecting error logs that generated by QuickShop plugin.
*This warning only affects developers who sign up for Rollbar (that's me), and based on current research, this warning has no effect on QuickShop users.
----------, Oct 14, 2023

[​IMG]

Cheers! Catching up with the tail end of September, we're releasing the first of LTS build of Cyno before October rolls around.

An LTS release is a quality-proven version that we release every so often (usually for a longer period of time).
Long-term stable support releases are selected by observing user reports, logging in automated bug reporters, and manual testing.

The LTS version is suitable for operation in large networks and production environments. It is recommended that you upgrade.

Upgrade from previous LTS (4.2.2.12)
  1. Read the change log of 5.0.0.0 (Cyno), quick look at the major updates in version 5.x. You should also read the changelogs for all versions in between, if possible.
  2. Backup everyting including the databases and worlds.
  3. Upgrade QuickShop-Hikari and all Addons, Compacts, make sure they are the same version.
  4. Upgrade your NBTAPI to a appropriate version if you're on a Spigot server.
  5. Startup the server and check if everything is running correctly.
Tested under
  • Spigot 1.18.2 (EOL): CraftBukkit version 3498-Spigot-b081915-10ba1be (MC: 1.18.2) (Implementing API version 1.18.2-R0.1-SNAPSHOT)
  • Paper 1.18.2 (EOL): Paper version git-Paper-388 (MC: 1.18.2) (Implementing API version 1.18.2-R0.1-SNAPSHOT) (Git: fc9ee65 on ver/1.18.2)
  • Spigot 1.19.1 (EOL): CraftBukkit version 3563-Spigot-2183145-1e3bf58 (MC: 1.19.1) (Implementing API version 1.19.1-R0.1-SNAPSHOT)
  • Paper 1.19.1 (EOL): Paper version git-Paper-111 (MC: 1.19.1) (Implementing API version 1.19.1-R0.1-SNAPSHOT) (Git: 02831e3)
  • Spigot 1.19.2 (EOL): CraftBukkit version 3610-Spigot-6198b5a-19df23a (MC: 1.19.2) (Implementing API version 1.19.2-R0.1-SNAPSHOT)
  • Paper 1.19.2 (EOL): Paper version git-Paper-307 (MC: 1.19.2) (Implementing API version 1.19.2-R0.1-SNAPSHOT) (Git: 476ef25)
  • Spigot 1.19.3 (EOL): CraftBukkit version 3670-Spigot-454acb7-bd29f41 (MC: 1.19.3) (Implementing API version 1.19.3-R0.1-SNAPSHOT)
  • Paper 1.19.3 (EOL): Paper version git-Paper-448 (MC: 1.19.3) (Implementing API version 1.19.3-R0.1-SNAPSHOT) (Git: 155aa36)
  • Spigot 1.19.4: CraftBukkit version 3763-Spigot-7d7b241-5a5e43e (MC: 1.19.4) (Implementing API version 1.19.4-R0.1-SNAPSHOT)
  • Paper 1.19.4: Paper version git-Paper-550 (MC: 1.19.4) (Implementing API version 1.19.4-R0.1-SNAPSHOT) (Git: 483368e on ver/1.19.4)
  • Spigot 1.20.1: CraftBukkit version 3871-Spigot-d2eba2c-3f9263b (MC: 1.20.1) (Implementing API version 1.20.1-R0.1-SNAPSHOT)
  • Paper 1.20.1: Paper version git-Paper-196 (MC: 1.20.1) (Implementing API version 1.20.1-R0.1-SNAPSHOT) (Git: 773dd72)
  • Spigot 1.20.2: CraftBukkit version 3877-Spigot-17ca32d-f070277 (MC: 1.20.2) (Implementing API version 1.20.2-R0.1-SNAPSHOT)
  • Paper 1.20.2: Paper version git-Paper-197 (MC: 1.20.2) (Implementing API version 1.20.2-R0.1-SNAPSHOT) (Git: e284bb1)
For non-1.20.x versions of the Spigot server, you may need to manually download the appropriate NBTAPI plugin.

Versions marked as End Of Life will no longer provide active technical support and we strongly recommend that you upgrade as soon as possible.

The migration script for Hikari-3.x has been removed, so if you are upgrading from Hikari-3.x, please download the last stable version of Hikari-3.x that supports Hikari-3.x to upgrade, and then upgrade to this LTS version.

Changes between 5.2.0.3 to 5.2.0.4
Bug Fixes
  • Fixed 1.18.2, 1.19.1, 1.19.2 compatibilities.
Privacy
We have always valued the privacy of our users, so to ensure our privacy transparency and your right to know, we have publicized changes to our data collection list.
The following statistical metrics have been added to the data collection list.

  • Research - ProtocolLib Version
    • We collect this so we can know the which one ProtocolLib is popular. ProtocolLib sometimes releases destructive updates, so we collect this metric to know the distribution of ProtocolLib versions among users and remove unused ProtocolLib workaround code to improve code maintainability and program performance.
  • Statistic - Server Software Build Version
    • Spigot and Paper always release updates during their version support cycles. Counting the server-side software versions used by users lets us know which builds are popular. And it allows us to be more aggressive with newly added APIs, This can improve code maintainability, stability and program performance.
  • Research - Geyser
    • We've released the display control addon for Geyser users, but we're ultimately undecided about a Geyser-specific update. The data collected from this research allows us to analyze the QuickShop-Hikari user base to check if Geyser or Floodgate is installed, and with the percentage of users who have the statistics, we will decide whether to add support for Geyser GUIs and the like. We also welcome your feedback on our Discord server.
----------, Sep 24, 2023

Bug Fixes
  • [ADDON] Fixed DiscordSRV Addon URL parsing exception.
  • [ADDON] Fixed DiscordSRV Addon Location Z always showing the the Y value.
  • [ADDON] Fixed DiscordSRV Addon displaying the item translation key instead of the item material name.
  • [ADDON] Fixed Reremake-Migrator unloading the Reremake from Async thread, it won't affect upgrade but an exception will thrown.
----------, Sep 24, 2023

This build tested with Spigot server sofware CraftBukkit version 3877-Spigot-17ca32d-f070277 (MC: 1.20.2) (Implementing API version 1.20.2-R0.1-SNAPSHOT).

New Features
  • Introduced VirtualDisplayItem on MC 1.20.2 based on Spigot 1.20.2 and PLIB 1.20.2 Pull Request #2501.
    • This feature is built based on ProtocolLib PR snapshots, so the system may change and cause it to stop working when ProtocolLib is finally released.
    • To use the VDI system on 1.20.2, use the ProtocolLib build from PR #2501, which is available here.
  • [ADDON] Reremake-Migrator now able to migrate the translations from Reremake from MineDown syntax to MiniMessage syntax and also convert file format from JSON to YAML.
Deleted
  • Upgrade scripts for Hikari 3.x and earlier have been removed (both Database and Configurations), and users who are still using a version of Hikari 3.x will need to upgrade to 5.2.0.1, the last version that supported upgrade scripts for 3.x, before upgrading to a higher version.
    • This doesn't happen all the time, and the reason for removing them is that they were used to migrate from Reremake, but there are now better migration tools.
Bug Fixes
  • Fix incorrect initialization of Database Version metadata.
  • [ADDON] Fixed price restrict rules migration bug in Reremake-Migrator.
----------, Sep 23, 2023

This update brings the initial 1.20.2 update, this build tested with Spigot server sofware CraftBukkit version 3877-Spigot-17ca32d-f070277 (MC: 1.20.2) (Implementing API version 1.20.2-R0.1-SNAPSHOT).

New Features
  • [Hightlight] 1.20.2 initial support
    • This build is compatible with Spigot 1.20.2.
    • The compatibility of this build with Paper 1.20.2 is unknown, and Paper 1.20.2 has not been released at the time of this posting.
    • The compatibility of this build with VirtualDisplayItem with ProtocolLib on MC 1.20.2 is unknown, and ProtocolLib not released a version that compatiable with MC 1.20.2 at the time of this posting.
    • When they are released, we will test them as soon as possible and release fixes as soon as they are found to be available.
Bug Fixes
  • If VirtualDisplayItem initialization failed, VDI was incorrectly and permanently disabled (even if the user installed ProtocolLib correctly afterwards), we fixed this issue and automatically re-enabled VDI support for all users.
    • QuickShop-Hikari will test VDI at startup and if it is not available, it will disable VDI for this server session.
  • Fixed text hover, click events, and translation strings not working on Spigot platforms due to Adventure versioning issues.
    • We correctly tuned Adventure's components and passed the Spigot 1.20.2 and Paper 1.20.1 test and made them available to all users in this build.
    • To address chat issues on Spigot, all messages are now converted from Adventure format to Spigot's BungeeChat format before they are about to be sent (on Spigot platform only).
  • Fixed NoSuchMethodError when using RealDisplayItem on some builds of Paper/Paper's forks.
----------, Sep 22, 2023

[​IMG]

As usual, we add more features to QuickShop-Hikari by releasing new versions, optimizing performance and fixing bugs. Sit back with a cup of tea and enjoy the new update!

New Features
  • [Experimental] Added the support for Arclight hybird server software.
    • Tested with Arclight version arclight-1.20.1-1.0.1-c3fc1d3 (MC: 1.20.1) (Implementing API version 1.20.1-R0.1-SNAPSHOT) with mods TwilightForest and Create.
    • When running in Hybird Server Software, the H2 database is temporarily unavailable because it seems unstable and destroying the data. The MySQL must be used.
    • The Bukkit plugin does not prevent Forge Mods from manipulating blocks (In hybird server, Bukkit is a mod that running UNDER Forge), so Mods can bypass QuickShop's store protections unless they use fake players for permission checks.
    • This feature is experimental and at your own risk.
  • MySQL 8+ support
    • We added the MySQL 8+ parameters to the default configuration file and can now connect to MySQL 8+ databases without modifying the QuickShop or MySQL configuration.
Changes
  • The table shop_map's world field data length now extended to 255 for better handling modded server worlds.
Bug Fixes
  • The database upgrade script never runs.
  • The NBTAPI checks didn't runs properly on Spigot. It caused QuickShop-Hikari always repeat downloads NBTAPI.
----------, Sep 21, 2023

Re-published because last update actually still using 5.1.1.1 code base.

Bug Fixes

  • Fixed the commands that need lookup username/uuid stuck on the users who migrated Reremake. (thanks Lunar (dr.lunar))
Changes
  • Rewrite PlayerFinder
    • We've done a major rewrite of PlayerFinder to solve problems and improve performance.
    • Now when the plugin performs a correlation query for a specific username or UUID, if any other part is requesting a correlation query for the same username or UUID, the two query requests will be merged into a single task, which helps to remove duplicated query tasks and minimize the number of unnecessary queries, which helps to alleviate the pressure on the database and reduce the consumption of Mojang API request quota.
    • The maximum execution time for username-to-UUID queries is now reduced from 1 day to 30 seconds to avoid unlimited query task stacking.
    • If the query fails, the username is used to generate a UUID via the Bukkit standard offline player UUID algorithm.
    • By default, the results of successful query requests are now cached in QuickShop-Hikari's database to be optimized for the next query.
    • It is now possible to correctly preheat the PlayerFinder cache from usercache.json, which helps optimize queries and improve cache hit rates.
    • Primary and secondary task executors were introduced, primarily for tasks that are short, small, but require a quick response - such as commands.
      Secondary task executors are used primarily for long, large numbers of tasks that do not require a fast response - such as cache baking.
      The cache baking task should now no longer block commands.
    • Added a new debug subcommand to PlayerFinder, which now allows you to query the primary and secondary ExecuteService's in-queue task stacking and output its specific information. By attaching the reset parameter, you can force the interruption of all outstanding queries and reset the queue.
    • Added new metrics to Paste, you can now view UUID/username cache hits rate via Paste.
----------, Sep 20, 2023

Bug Fixes
  • Fixed the commands that need lookup username/uuid stuck on the users who migrated Reremake. (thanks Lunar (dr.lunar))
Changes
  • Rewrite PlayerFinder
    • We've done a major rewrite of PlayerFinder to solve problems and improve performance.
    • Now when the plugin performs a correlation query for a specific username or UUID, if any other part is requesting a correlation query for the same username or UUID, the two query requests will be merged into a single task, which helps to remove duplicated query tasks and minimize the number of unnecessary queries, which helps to alleviate the pressure on the database and reduce the consumption of Mojang API request quota.
    • The maximum execution time for username-to-UUID queries is now reduced from 1 day to 30 seconds to avoid unlimited query task stacking.
    • If the query fails, the username is used to generate a UUID via the Bukkit standard offline player UUID algorithm.
    • By default, the results of successful query requests are now cached in QuickShop-Hikari's database to be optimized for the next query.
    • It is now possible to correctly preheat the PlayerFinder cache from usercache.json, which helps optimize queries and improve cache hit rates.
    • Primary and secondary task executors were introduced, primarily for tasks that are short, small, but require a quick response - such as commands.
      Secondary task executors are used primarily for long, large numbers of tasks that do not require a fast response - such as cache baking.
      The cache baking task should now no longer block commands.
    • Added a new debug subcommand to PlayerFinder, which now allows you to query the primary and secondary ExecuteService's in-queue task stacking and output its specific information. By attaching the reset parameter, you can force the interruption of all outstanding queries and reset the queue.
    • Added new metrics to Paste, you can now view UUID/username cache hits rate via Paste.
----------, Sep 20, 2023

Bug Fixes
  1. Fixed QUserImpl NullPointerException when player purcahing a converted shop.
----------, Sep 19, 2023

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.
----------, Sep 18, 2023

[​IMG]
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 and ShopManager#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.
----------, Sep 17, 2023

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 to 999999999999999999999999999999.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.
----------, Sep 6, 2023

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.
----------, Aug 31, 2023

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.
----------, Aug 31, 2023

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.
----------, Aug 30, 2023

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 than utf8mb4. Thanks 针织薄外套 (kioproject) and Clxdy (clxdywindows) report it.
    • By install this update, your quickshop tables in database will automaticlly convert to utf8mb4 charset.
  • 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.
----------, Aug 29, 2023

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 to 0.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.
----------, Aug 27, 2023

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

[​IMG]

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
[​IMG] [​IMG]
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

[​IMG]

Reforges
This addon added Reforges support for:
  • Display the Reforges's reforges on shop info panel
Click Here To Reforges Addon Wiki

[​IMG]

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
@tdiant
----------, Aug 24, 2023

Read this changelog on Modrinth.

Due to the limitations of the SpigotMC rich-text editor, the display of the following may be malfunctioning.

---

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

[​IMG]

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
[​IMG] [​IMG]
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

[​IMG]

Reforges
This addon added Reforges support for:
  • Display the Reforges's reforges on shop info panel
Click Here To Reforges Addon Wiki

[​IMG]

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
@tdiant
----------, Aug 23, 2023

Bug Fixes
  1. Fixes an issue where the maximum number of caps is miscalculated when a player has multiple QuickShop Ranks permission nodes at the same time
This should be the last one revision of 4.2.2, it is stable enough and I will focus on adding new features in 4.3/4.2.3, stay tuned!
----------, Jul 15, 2023

Bug Fixes
  1. Fixed plugin NPE when platform module failed to load or failure in boot phase.
  2. Fixed RankLimiter do not use default values when default value larger.
  3. Fixed that quickshop preventing player to editing the non-shop sign that attached on a shop.
  4. Fixed ShopClickEvent never fired.
Changes

Addon-Limited
  1. Displays the player's remaining quota when the player interacts with a restricted shop.
----------, Jul 9, 2023

Bug Fixes
  1. Fixed IllegalArugmentException while shutting down the server when QuickShop-Hikari installed on a server that behind the BungeeCord proxy. (thanks @164ebr)
----------, Jun 14, 2023

Bug Fixes
  1. Fixed NPE when player click the chest with nothing in hand.
----------, Jun 14, 2023

Changes
  1. Dropped 1.18.0, 1.18.1 supports, now we only support 1.18.2 and higher versions.
Bug Fixes
  1. Fixed shop.disable-quick-create doesn't work at all.
  2. Fixed Material translation key doesn't process by config translation keys mapper.
  3. Fixed the ray-tracing for putting the shop information sign incorrect that may lead the shop sign will put in wrong location if the player using Bedrock Edition.
  4. Fixed Player are able edit the shop sign on Minecraft 1.20 and higher.
----------, Jun 14, 2023

Bug Fixes
  1. Fixed the Sign had no texts on Spigot 1.20 platform.
  2. Fixed name resolver may took too much time on every startup, now it will cache the failure requests and save the time in next startup.
  3. Fixed /qs item won't trigger the display update even the shop item already changed. It caused the display desync.
  4. Fixed LocaleLib initialization failure.
  5. Fixed enchantment, material client-side translation doesn't work at all.
----------, Jun 9, 2023

Bug Fixes
  1. Fixed the Sign had no texts on Spigot 1.20 platform.
  2. Fixed name resolver may took too much time on every startup, now it will cache the failure requests and save the time in next startup.
  3. Fixed /qs item won't trigger the display update even the shop item already changed. It caused the display desync.
----------, Jun 9, 2023

Fixed VirtualDisplayItem on Minecraft 1.20.
----------, Jun 8, 2023

This is a quick fix for Bukkit/Spigot 1.20 compatibility.
----------, Jun 8, 2023

New Features
  1. Added support for Minecraft 1.20 and Spigot 1.20.
  2. New DisplayControl addon, it can auto detect Geyser and Floodgate players and disable VirtualDisplayItem for them, it also bring /qs displaycontrol <auto/enable/disable> to allow players control client display behavior.
    If quickshop behind the a bungeecord proxy, you may need install BungeeCord-Geyser compatibility module to make it works.
Performance
  1. Improved VirtualDisplayItem performance.
  2. Improved startup performance on some large network.
Bug Fixes
  1. Fixed resources leaking in database helper.
  2. Fixed paste debug logs are actually pulling timings logs.
  3. Fixed BungeeCord detecting actually doesn't work at all.
    This may also resolved chat workaround on BungeeCord doesn't work issue.
----------, Jun 8, 2023

Bug Fixes
  1. Command /qs buy use wrong permission, it now following the quickshop.create.control as same as /qs sell behavior.
  2. QuickShop Paste Generator use incorrect type Permission for Debug type logs generator.
Flags
  1. New ignoreProtocolLibEnableStatus statup flag allow user disable ProtocolLib enable status check.
----------, May 24, 2023

Rewritten buggy old VirtualDisplayItem system with better one, also fixed dupelicated displays in past versions.

Thanks @kaya @krunchytaco @lufano @maty and @YuanYuanOwO for reporting it!
----------, Apr 17, 2023

Just forget to bump the version number
----------, Apr 14, 2023

Warning: This update contains API changes, some 3rd-party addons may stop working after update.

Removed
  1. 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
  1. 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.
  2. Fixed dupelicated Util reloading registry.
  3. Fixed /qs paste may stop working if updater has been disabled or failed to check the updates.
Changes
  1. Most of errors now contains a human-friendly simple description.
----------, Apr 14, 2023

4.2.0.1's hot fix for removing debug STDOUT.
----------, Mar 25, 2023

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
  1. 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, or Speed -> Potion of Speed.) They are now displayed in the same format as the client.
  2. 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)
  3. Added Dynmap Addon into official addons bundle.
  4. Added BlueMap Addon into official addons bundle.
  5. 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
  1. 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.
  2. Fixed the incorrect price logging in price changing logger.
Optimization
  1. Redesigned BatchBukkitExecutor, it now more smart and reduces the performance overhead associated with frequent thread scheduling.
  2. Move /qs cleanghost command to use new BatchBukkitExecutor.
Misc
  1. Platform field now included into Paste so you can check which one Platform module enabled for your server.
  2. CommandContainer binding now included into Paste so you can check the specificed quickshop subcommand handler class name.
  3. Updated translations from Crowdin.
----------, Mar 24, 2023

New Features
  1. Added Spigot & Paper 1.19.4 supports.
Misc
  1. Bump Adventure to 4.13.0
  2. Bump Adventure Platform Bukkit to 4.3.0
  3. Bump EasySQL-HikariCP to 0.4.7
----------, Mar 20, 2023

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
  1. Fixed /qs export command will create an IOException and doesn't work at all.
  2. Fixed GSON creates IllegalAccessException when I/O per-player notifaction settings on some servers.
  3. Fixed /qs import command doesn't work if database configured prefix.
Removed
  1. 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. If QuickShop-Hikari is conflicting with the anti-cheat plugin you are using, please open an Issue and I will try to resolve it.
  2. Netease regional legal restrictions has been removed since it not necessary anymore.
----------, Mar 11, 2023

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.

IP Detecting

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.
----------, Feb 14, 2023

Bug Fixes
  1. Fixed StackOverFlowError for reloadConfig loop.
----------, Jan 31, 2023

Bug Fixes
  1. The shops around in spawnchunks won't be loaded since 4.0.0.0.
  2. Compatibility Modules doesn't work at all since 4.0.0.0.
Special thanks to @Spaex for reports and help debugging
----------, Jan 31, 2023

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
  1. All compatibility modules stopping works in 4.0.0.0, please update your all compatibility modules to adapt the new versions.
  2. 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
  1. Reduced JAR size from 7.7MB to 2.8MB.
Addons
Discord Addon
  1. Added per-player notifaction settings, player are able to use command /qs discord to toggle the DM.
List Addon
  1. 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
  1. 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
  1. 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.
----------, Jan 30, 2023

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
  1. Added /qs debug purgeplayerscache to purge PLAYERS database table.
  2. 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
  3. 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
  4. Added ItemExpression.
  5. Added enchantment support for both blacklist and price-limit based on new ItemExpression system.
    • Including enchantment level restrictions
  6. Added switch ToggleDisplay ability into shop control panel.
  7. Added /qs debug updateplayersigns <player> command to allow batch updates all shops info sign for a specific player.
Bug fixes
  1. Fixed economy loading issue on serval servers.
  2. Fixed QuickShopItemMatcher cannot correct matching items (thanks @lufano for reporting it).
Performance optimization
  1. Baking shops owner uuid<->name mapping in asynchronous threads.
  2. Loading transaction messages in asynchronous threads.
  3. Reduced unnecessary shop loading.
  4. Restricted the sign update watcher can max cost 50ms in single loop.
  5. Prevent shops loading on server startup if they're in unloaded chunks.
  6. Caching configuration values and pre-bake decimal formatter in busy tasks.
  7. Improved database upgrading / check for schame updates speed.
  8. Improved command handler lookup speed.
API changes
  1. QuickShop no-longer extends the JavaPlugin, this may break some 3rd-party addons.
  2. QuickShop logger now replaced by SLF4J.
  3. Some util funcations moved into PlatformUtil or CommonUtil.
  4. JsonUtil was moved into common module.
  5. Exposed PlayerFinder in QuickShopAPI
  6. Added QuickShopAPI#getSemVersion for returning a Semver object.
  7. 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.
  • 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
----------, Jan 20, 2023

This is a small optional bug fix for Hikari.

Bug Fixes
  1. 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.
----------, Jan 12, 2023

New Features
  • New option shop.async-owner-name-fetch has been added into configuration.
Code (YAML):
  #[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
----------, Jan 6, 2023

Hot fix for 3.6.1.1 for startup NPE on some server
----------, Jan 5, 2023

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):

Code (Text):
-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:

Code (Text):
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
----------, Jan 5, 2023

Please update to this version
Hi there, before the change log content, I want kindly ask you to upgrade your Hikari instance to 3.6.0.3 and I will show you for why.

An E-mail from Crowdin
Today (2022/12/30), I have received a e-mail from Crowdin Team and here is the content:

Code (Text):
Hi there,

Greetings from Crowdin, hope you're going great

Sorry to bother you during the holiday season, but our team did an annual review and we noticed that your team is actively using [Over-The-Air Content Delivery](https://support.crowdin.com/content-delivery/)feature, which is a paid option. The price is based on the number of requests ($3/1M requests) and the transferred data ($2/10GB) - if you have up to 1M requests and 10GB of data transfer, CDN is free.

According to our database, there were already sent 19M requests and 50GB of data was transferred for a total amount of 72 USD. You can also see this information in the [Payments](https://crowdin.com/settings#payments)tab, and I'm also sharing the document with detailed statistics about your OTA usage in the last months; please find it attached.

There is no need for you to pay the previous debt, but as you are already aware that CDN is a paid option, we kindly ask you to remove CDN from your code at your earliest convenience (preferably within the next month), so no new debt will grow or we can discuss the suitable ways for you to pay for future OTA usage if you would like to keep using it

Please let me know your thoughts on the matter

Looking forward to hearing from you,
And the attachment cdn_usage.txt:

Code (Text):
+----------+----------+-----------------------+
| date     | requests | transferred_gigabytes |
+----------+----------+-----------------------+
| Apr 2022 |  1241624 |                 4.729 |
| May 2022 |  1374644 |                 3.768 |
| Jun 2022 |  2477846 |                 6.025 |
| Jul 2022 |  2649011 |                 6.571 |
| Aug 2022 |  2814239 |                 6.446 |
| Sep 2022 |  2255808 |                 4.454 |
| Oct 2022 |  2257621 |                 5.098 |
| Nov 2022 |  2087014 |                 4.902 |
| Dec 2022 |  1924092 |                 7.711 |
I was shocked that I never noticed Crowdin Over-The-Air Distribution as a paid feature. Because it is freely available and unlimited in my Open Source Plans account.

Then I have a quick re-check for the Pricing pages and Crowdin's KB, I still can't find a description of Over-The-Air as a paid feature and its billing standard.

Well, as the email said, "Now I know that it is a charging function", so I deleted the Distributions of Remake and Hikari from the Crowdin Control Panel, and hoped Crowdin would not charge me any more.

After disable the Distributions
After that, I replied this email:

Code (Text):
I'm sorry I didn't realize that my program has so many users and CDN requests!

Follow your advice, I have already removed Distributions from Crowdin's control panel after I received this mail and I will also remove Crowdin Over-The-Air related codes from the next version.

I am very grateful for your willingness to waive my bill for last month.

Since I can't control my users to upgrade to a new version that without Crowdin OTA functionality, I want to know if I will still receive bills from Crowdin OTA functionality after I removed all Distributions from Crowdin control panel?

Thank you for informing me about it.
Later, I was so shocked by Crowdin Team's reply.

Code (Text):
Hi there,

If deleting only distribution (but keeping it in your code still) there will be no data transfer, but there will still be requests

In general, if you do not plan to use it as a paid feature, it would be great to delete it from your code as well
Well, I can't force anyone to update their plugin, this is users right.

So I continued to contact Crowdin Team and got the following reply.

Code (Text):
Thank you for your quick reply!
My code uses GPLv3 license and distributes precompiled JARs in binary form.
I will release a new version that removes OTA functions as soon as possible, but I cannot force users to upgrade to a new version (if users are unwilling to uninstall my software from their devices). I have not designed telemetry and remote disabled functions for my software.
At the same time, my Distributions ID has been distributed along with the source code for a long time.
So I want to confirm the following questions to you:
1. Whether the Over The Air function can be completely disabled by myself or Crowdin Team, or whether I must pay the bill for any invalid request.
2. If I delete the Crowdin Project associated with it and recreate it, will the invalid request of the project before deletion continue to be charged.
3. If I do not pay the relevant bills, only the Over The Air function will be disabled or the entire account (even for the Open Source plan).
4. Whether Open Source plans to have a free Over The Air quota, because for a long time in the past, I did not notice that Crowdin mentioned the cost of Over The Air.

5. Earlier, I agreed to participate in the test invitation of Crowdin Enterprise and created the project and account (Open Source plan). But I didn't really use it because I was an open source project.
Should I contact customer support and delete my account and project in Crowdin Enterprise to avoid unnecessary bills?
Reply:

Code (Text):
Hi Ghost,

Thanks and yes, we understand you cannot force users to use the new version of the app, so for now, what's needed for you is just to remove the OTA functions from your app's code and release the new version. As long as users switch the version, the number of requests will decrease

Currently, we calculate all the requests sent to the distribution and even if you remove the account\project\disctibition, the requests will still be sent to AWS (Over-the-Air technology is built on top of AWS infrastructure)

I'm afraid we also cannot stop the requests sent to AWS as they are external, and we cannot simply control that on our end so a solution for now, let's agree to the following:
you remove OTA feature from your code and release the new version of the app;
we keep monitoring the number of requests received from your users;
in a month, we'll get back to you with the latest statistic - there is a big chance the number of requests will drop significantly and you will fit the free tier of CDN usage (up to 1M requests and 10GB of data transfer).
during this month, there won't be a need to pay any bill for CDN;
you're also welcome to keep your accounts in Crowdin :)

Does it sound fine to you?
Alright, I agree.

So here we go
Since 3.6.0.3, the function of CrowdinOTA is completely disabled from plugin.

For other versions, you should not be able to get the latest translated files from the cloud because we terminated Distributions, the backup translation of the plug-in will replace CrowdinOTA, and you do not need to make any other changes.

For earlier versions that do not yet support offline backup translation, the plug-in may stop working, you must upgrade to any version that support offline translations.

Once again, I am very sorry for the inconvenience.

What about future
Sandtechnology and I are building our own infrastructure for QuickShop, which we are actively discussing and conducting technical verification.
Once we have a viable alternative, we will test it and add it to the official version.

3.6.0.3 Changelog
Removed
  • Removed Crowdin Over-The-Air translations update services.
    • Both Hikari and Reremake has affected, across all versions.
New Features
  • New EliteMobs compatibility modules
    • This module will prevent player create or purchase a shop that trading items with EliteMobs's Soulbound enchantments to avoid trade scam.
Bug Fixes
Everything looks great, no bugs found.
----------, Dec 30, 2022

3.6.0.2
Last update before 2023! Merry Christmas and Happy New Year!

Bug Fixes
  1. Fixed broken display-item-use-name.
  2. Fixed VirtualDisplayItem stuff won't reload on /qs reload command.
  3. Fixed Item Blacklist reloading doesn't work properly, it won't purge already registered entires.
  4. Fixed Adventure mode player shops clicking detecting.
----------, Dec 23, 2022

3.6.0.1
This is a hotfix for 3.6.0.0.

Bug Fixes
  1. Fixed CrowdinOTA will cause plugin hard crash if cannot load manifest over Internet from Crowdin server.
  2. Fixed Language Override system doesn't load overrides from /overrides/<locale>/messages.yml
Addon-Discount
Bug Fixes
  1. Fixed command description translation missing and shown a translate key.
----------, Dec 19, 2022

The update log contains complex elements that the SpigotMC editor does not seem to be able to handle very well.
Read it from Modrinth or Github or Polymart, anyway just not SpigotMC.

Why SpigotMC still not upgrade to XenForo 2, Editor uhhh.....

3.6.0.0
Merry Christmas, everyone!
We brought a Christmas update from QuickShop Hikari! Don't worry, Santa Claus will put the update in your chimney.
Until it is blackened by smoke and becomes outdated.

Highlights
New addons Plan and Discount now joined QuickShop-Hikari addon's family!
Scroll down to read change logs about our addons!

Plan Discount
[​IMG] [​IMG]
New Features
N/A

Bug Fixes
  1. Translation override system doesn't work.
    The file incorrect created as a same file directory.
    Override file incorrect merge with exists translation.
  2. Translation fallback logic doesn't work.
  3. Fixed purchase logger always record zero for item amount in database.
Developer Changes
  1. New event ShopInfoPanelEvent added into QuickShop-Hikari, event will raise after user clicked shop container and info panel printed.
  2. QuickShop-Common module's CommonUtil new added CommonUtil#parseTime(String) method to allow developer convert a Zulu Time (2022-12-17T10:31:37Z) or UNIX Timestamp in seconds 1671273097 to Java Date.
Addon Family
DiscordSRV
Download
  1. Added DiscordSRV artifacts to Modrinth, CodeMC.io and Github Releases artifacts list, You're able to download jars from the sites shown above.
Bug Fixes
  1. Fixed the placeholders with emptry string may cause bad embed message error, it was fixed by replacing empty string to ZERO width space.
Plan
Plan addon allow server owners to showcase the recent QuickShop-Hikari activities on the server.

Data Tracked
Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after version 3.6.0.0 can Item amount in Purchase History be displayed correctly.

Global Scope
  • Total shops amount
  • All shops (to a Shops list)
  • Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up.
Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to 5 in server scope.
And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order.

Player Scope
  • Total shops amount
  • All owned shops (to a Shops list)
  • Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up.
Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to 4 in server scope.
And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order.

Showcase
Global Purchases and Player Purchases
[​IMG] [​IMG]
Global Shops and Player Shops
[​IMG] [​IMG]
Localization
Due the Plan limitations, translate Plan addon is impossible.

Discount
Discount Addon added Discount Code in your QuickShop-Hikari server.

Permission
  • quickshopaddon.discount.use (default: everyone)
    Permission to use any /qs discount commands.
  • quickshopaddon.discount.bypass (default: OP)
    Permission to bypass the owner checks to force config discount codes, add non-self shops in allow list or remove a discount code.
  • quickshopaddon.discount.create.server_all_shops (default: OP)
    Permission to create discount code that applied to all shops in your server.
  • quickshopaddon.discount.create.player_all_shops (default: everyone)
    Permission to create discount code that applied to player themself shops.
  • quickshopaddon.discount.create.specific_shops (default: everyone)
    Permission to create discount code that applied to shops in the code allow list.
Create a discount code
To create a discount code, you need use discount command:

/qs discount create <code> <code-type> <rate> [max-usage] [threshold] [expired-time]

Command pretty long, but you have in-game command assistant to help you in your tab complete hint.

[​IMG]

Available Code Type
  • SERVER_ALL_SHOPS (Applied to all shops in your server)
  • PLAYER_ALL_SHOPS (Applied to all shops belongs to code creator)
  • SPECIFIC_SHOPS (Applied to shops in allow list that added by command /qs discount config <code> addshop)
Install a code
To use a Discount Code, you need install them before purchase shops.

/qs discount install <code>

The installed code will remember during this session.

Uninstall a code
To uninstall a Discount Code, you need use command:

/qs discount uninstall <code>

Show detailes for a installed discount code
To use info subcommand, you can query the code creator, range, remaining usage, expired time, threshold and discount rate.

/qs disount info

[​IMG]

Remove discount code
To remove your a specified discount code, execute command:

/qs discount remove <code>

Check if discount code can be applied to specific shop
You need install a discount code first, then you click the shop you want to check, a promot message will show up when you can enjoy the discount in this shop.
If code not accepted by target shop, you will also receive a warning message when you click it.

[​IMG]

Apply the discounting
You need install a discount code first, then purchase a shop that accept your code.
Then discount will applied to your puchase, and your remaining count will be consumed.

[​IMG]

NOTE: If the above additional conditions are not met, the Discount Code will not be applied and you will not get a discount, but at the same time, the Discount Code will not be consumed, and the prompt message will contain the specific reason.

Auto Purge Expired Code
An expired discount code will automaticlly removed while server startup or in 30mins.
Before they got purged, players who use a expired code will receive a error message that says the code has been expired.

Convert your time
Expired time accepts both Zulu Time format and UNIX Timestamp in seconds format:

[​IMG]

There have a such pretty online website can help you convert the time:
https://www.unixtimestamp.com/

For Zulu Time (ISO 8601 Extended) format:

yyyy-MM-dd'T'HH:mm:ssZZ

Note that the server time zone is used for calculations during the conversion.

Some other stuff
Since Nov 20, 2018, I have spent thousands of hours on QuickShop series projects, I have maintain these projects for up to four years.
The fifth year is coming, I would appreciate it if you could light up Star and Fork buttons for Github ❤.

[​IMG] [​IMG]

Full Changelog: 3.5.0.3...3.6.0.0
----------, Dec 18, 2022

Bug Fixes
  1. Fixed VirtualDisplayItem on 1.19.3 with ProtocolLib build 5.0.0-SNAPSHOT.
Tested on Paper git-Paper-334 (MC: 1.19.3)
----------, Dec 15, 2022

Bug Fixes
  1. Fixed VirtualDisplayItem reporting java.lang.ClassNotFoundException: com.comphenix.protocol.wrappers.WrappedDataValue.
  2. Fixed VirtualDisplayItem reporting java.lang.RuntimeException: Failed to find NMS class: network.syncher.DataWatcher$b.
For 1.19.3 users, no impacts of those bugs, if you hit java.lang.ClassNotFoundException: com.comphenix.protocol.wrappers.WrappedDataValue on 1.19.3, upgrade ProtocolLib.

Tested on Paper 1.19.2 and Paper 1.19.3.
----------, Dec 15, 2022

Bug Fixes
  1. Fixed broken VirualDisplayItem (1.19.2) on 3.5.0.0.
----------, Dec 15, 2022

New Features
  • DiscordSRV addon (beta), it's a standalone plugin and need you install DiscordSRV.
    • Players who linked with their Discord in game now can receive the discord alerts through DM.
      • Including:
        • Anyone sold/bought items to/from your shop.
        • The shop permission settings changed.
        • The shop transfer to you.
        • The shop has run out of space.
        • The shop has run out of stock.
    • Same as QuickShop-Hikari it self, the messages send to players though Discord also use client display languages.
      • If player offline, QuickShop-Hikari will try to use latest known client language.
  • User now able to add new languages by create a folder in overrides folder with locale code as name, and same name yaml file inside folder.
    • You can create a locale named hack for example, and add a same name language to game client by using Resources Pack, and QuickShop-Hikari will detect new language and loading translation from custom languages.
  • (upstream) VirtualDisplayItem 1.19.3 support.
Bug Fixes
  • Rewrtitten SimpleTextManager, CrowdinOTA and LanguageFilesManager
    • Replaced CrowdinOTA codes to a standalone, bug-free library CrowdinOTA
      • This fixed incorrect cache handling, QuickShop-Hikari can correct handling the translations that cached in disk, and validating them when next loading to make sure files exists, up-to-date.
      • This also make translation cache files name be more friendly (human readable).
    • Rewritten files loading logic in SimpleTextManager.
      • This fixed incorrect override order and incorrect whole section override.
      • It always loading files by order: built-in failback -> bundled -> crowdin -> user override
      • Fixed strings lost issue if user or crowdin or bundled translations only override part of strings in a section.
      • Fixed translations merge function.
      • Fixed third-party addons translations registering function.
  • Fixed debug.delete-corrupt-shops doesn't work. (contributed by @Nlkomaru)
Developer
  • ShopPlayerGroupSetEvent now provides player's uuid in event.
Misc
  • Bump adventure-minimessage-platform from 4.1.2 to 4.2.0.
----------, Dec 15, 2022

3.4.0.3 released with 1.19.3 compatibility

New Features
  1. Spigot 1.19.3 compatibility.
  2. New command /qs database purgehistory for purge x days ago logs from your database.
Translations
  1. Updated translations from Crowdin.
----------, Dec 8, 2022

New Features
  • [BETA] Velocity Compatibility Module (contribute by 4drian3d)
  • /qs find now supports Item Reference
Bug Fixes
  • /qs export command doesn't work anymore.
----------, Nov 27, 2022

New Features
  • [BETA] Added BungeeCord Compatibility Module (#536).
Bug Fixes
  • Fixed /qs lookup create command always report name must applied to regex \w.
----------, Nov 24, 2022

Warning: This is a major update, have a lots internal changes, please make sure you have backup for worlds, databases and configs!

Warning: This update contains database structure changes, downgrade without backup is impossible and may kill your shop data!


New Features:
  1. [BETA] Shop Benefits! Now you are able to add players into your shop benefits! Share the earnings together with customize percentage! (only selling shops) [/qs benefit] Check Details
  2. Compatibility module Lands now support LandsAPI 6.22.0 and up only.
  3. Compatibility ARM now build against advanced-region-market 3.13.12.
  4. Discord server link now added into ErrorReporter, now you will see our discord server link while QuickShop catch any internal error then you can report it instantly.
Bug Fixes
  1. Fixed exception in /qs find command when any of shop not loaded correctly.
  2. Fixed RollbarErrorReporter sometimes report non quickshop errors.
  3. Fixed loan feature doesn't work in some situation.
  4. Fixed the tax value range warning description.
  5. Fixed dupilicate Crowdin manifest retrieve, this should can improve CrowdinOTA performance by reduce the Internet API requests.
  6. Fixed debug logger may blocked the threads if any error occurs between after logger lock locked and before lock released.
  7. Fixed incorrect Crowdin link in config.yml
Security
  1. Fixed potential XXE attacks exploit.
Removed
  1. Option trying-fix-banlance-insuffient now removed from configuration since it doesn't work well, most economy plugin can handle balance cache correctly, if something doesn't work, it should be economy plugin side issue.
  2. Removed command /qs debug sql <sql> function now completely removed from source code and binary.
  3. Some un-used classes and staled classes now removed from both source code and binary.
Optimize
  1. Optimized heap memory usage by reduce same fields in objects.
  2. General code clean up and optimize.
Dependencies
  1. Update towny from 0.98.3.10 to 0.98.4.2.
  2. Update PlotSquared-Core from 6.10.1 to 6.10.4.
  3. Update PlotSquared-Bukkit from 6.10.1 to 6.10.4.
  4. Update LandsAPI from 6.15.0 to 6.20.0. (breaking)
  5. Update unirest-java from 3.13.11 to 3.13.12 .
  6. Update commons-compress from 1.21 to 1.22.
  7. Update advanced-region-market from 3.3.6 to 3.13.12.
Misc
  1. Updated developer list in plugin.yml from Github Repository Contributors, thanks for contributing!
----------, Nov 20, 2022

A hot fix for last version that fixed purchase failed bug.
----------, Oct 18, 2022

3.3.0.0 Minor Changelog

[​IMG] This update is sponsored by the club cat, say "Hello" to "Huahua".

New features
  • Per-player i18n shop infomation sign. (img1)
    • QuickShop-Hikari now support packet based shop infomation sign with ProtocolLib installed. Multiple player can see same sign in same time with different language display now.
  • In this version, compatibility modules will provide the shop creation cancel details (like reason).
    • User may need upgrade the compatibility modules to use this feature.
  • In this version, player may able to set the shop stack size over the default limit (64). (img2)
Bug Fixes

  • Fixed SQLite error for username-uuid lookup mapping caches, it now use memory cache instead.
  • Fixed 3rd-party integration resources won't be released after QuickShop-Hikari disabled.
  • Fixed database resources won't be released after QuickShop-Hikari disabled.
  • Fixed economy hooks loaded in early statup stage, it will load in first server tick to make sure all economy plugin can be loaded.
  • Fixed internal-error rollback logic, now it will take a snapshot for shop and trader inventory for error rollbacking instead count amount and add/remove items.
    • Normally, this mechanic should not be triggered, it is a misconfigured or misprogrammed protection mechanism to avoid players or shops from losing/duplicating items and money.
  • Fixed /qs paste reported paste missing the Timings(quickshop internal), Transactions and Cron logs.

API changes
  • TextManager now allow 3rd-party addons register their language k-v to QuickShop locale system.
Images

img1: [​IMG] img2: [​IMG]
----------, Oct 17, 2022

3.0.3.0 Minor Changelog

[​IMG]
This update is sponsored by the club cat, say "Hello" to "Huahua".


New features



    • Per-player i18n shop infomation sign. (img1)
      • QuickShop-Hikari now support packet based shop infomation sign with ProtocolLib installed. Multiple player can see same sign in same time with different language display now.
    • In this version, compatibility modules will provide the shop creation cancel details (like reason).
      • User may need upgrade the compatibility modules to use this feature.
    • In this version, player may able to set the shop stack size over the default limit (64). (img2)
Bug Fixes



    • Fixed SQLite error for username-uuid lookup mapping caches, it now use memory cache instead.
    • Fixed 3rd-party integration resources won't be released after QuickShop-Hikari disabled.
    • Fixed database resources won't be released after QuickShop-Hikari disabled.
    • Fixed economy hooks loaded in early statup stage, it will load in first server tick to make sure all economy plugin can be loaded.
    • Fixed internal-error rollback logic, now it will take a snapshot for shop and trader inventory for error rollbacking instead count amount and add/remove items.
      • Normally, this mechanic should not be triggered, it is a misconfigured or misprogrammed protection mechanism to avoid players or shops from losing/duplicating items and money.
    • Fixed [font=Monaco,Consolas,'Lucida Console','Courier New',serif][backcolor=#dedede]/qs paste[/backcolor][/font] reported paste missing the Timings, Transactions and Cron logs.
API changes


    • TextManager now allow 3rd-party addons register their language k-v to QuickShop locale system.
Images

img1: [​IMG] img2: [​IMG]
----------, Oct 17, 2022

3.2.0.2 ChangeLog
==========================
Hi users, we're migrating QuickShop-Hikari to Modrinth (for better UI and API), SpigotMC nolonger our first priority publish site, check our new page here.

Follow us on Modrinth!

Bug Fixes:
  • Fixed Economy Services Injector.
  • The custom economy services now can be loaded without an native supported economy service.
  • Fixed custom-command-alias feature, it has been broked for a long time and should working now!
  • Fixed /qs taxaccount command may produce NullPointerException.
  • Fixed qscompat-clearlag ConcurrentModificationException.
----------, Sep 12, 2022

Fixed a bug that MySQL driver report exception: Unknown column 'SHOPS.id' in 'on clause'
----------, Aug 28, 2022

BACKUP BEFORE UPGRADING!

3.2.0.0 ChangeLog
======================================

This update tooked a little long of time due my personal things, but anyway, it's here and enjoy it!

Optimize:
  • Improved shops loading logic.
    • should now get better loading performance, compare old and new loading time cost.
  • Improved isolated data logic.
    • the old isolated data scanning will begin once server booted up, which may increase the load on the database.
    • the old isolated data scanning need pull all shops data back to local and calculate one-by-one which slow and may increase the load on the database.
    • new logic will pre-processing them with SQL, calculations will be done on the database so it will have better performance.
      • we do same thing on shops loading logic, seems it working well :)
  • Tweak internal logger buffer size and this should reduce the memory footprint by a small amount.
  • Improved shops auto-save logic.
    • shops auto-save is now parallel.
    • shops are no longer actively saving changes to the database immediately, we will check every shop that has been modified and update the database every once in a while.
    • all changes will save into memory when server shutting down.
  • Improved database auto-backup.
    • hikari now actively backs up the database before breaking changes, both H2 and MySQL users.
Bug fixes:
  • Users may can increase the database load if them spam click the shop block.
  • Hikari may conflict with LastLoginAPI's H2/HikariCP.

We're also preparing release QuickShop-Hikari on BukkitDev and modrinth, see later!
----------, Aug 27, 2022

We noticed last release will fail to load any exists H2 database so I rollback all database patches in last two releases.
----------, Aug 9, 2022

News:
  • Tested on Minecraft 1.19.2 and working properly.
  • Towny-Compat's allow-permission-override now separate to
    allow-mayor-permission-override and allow-king-permission-override to gives server owner more control.
Bug Fixes:
  • Fixed H2 driver may conflicting with other plugins, now it shaded to standalone package instead of use Spigot Library Loader.
----------, Aug 9, 2022

Fixes:
  • Fixed shop loading failed processing logic.
    • On new install, Hikari will try delete bad shops if auto backup successed.
    • You can turn on/off this feature by tweak `debug.delete-corrupt-shops`
  • Fixed exception throws while update check failed.
  • Fixed SQL queries may can't be finished before connection pool closed.
    • Hikari will wait up to 15 seconds for tasks executing before force terminate.
----------, Aug 6, 2022

News:
  • Hikari jar now bundled translations to allow Hikari running without Internet connection or in strict firewall environment.
    • First startup still need Internet connection to allow Spigot resolve the Hikari libraries.
Fixes:
  • Fixed Hikari incorrectly handle ShopPreCreateEvent and block user break blocks if ShopPreCreateEvent cancelled.
Compat-Towny:
  • Fixed Essentials username workaround not actived correctly.
----------, Aug 1, 2022

Fixed:
  • Towny or other plugins username based plugin fake player account under Vault API will always returned 0.0 for balance even account exists and have deposit inside. (reported by @roracle)
----------, Jul 28, 2022

3.1.0.0 Major Update Changelog
======================================

Celebrate for Minecraft 1.19.1 report&ban theme update released with a ton of signature spoof exploits! See https://github.com/nodusclient/gaslight for a spoof exploit.

Removed:
  • 1.19(.0) support has been removed due NMS changes.
    • It only affects Spigot users, Paper and its forks users won't be affected.
    • 1.18.x compatibility won't be affected.
New Features:
  • Compile with Spigot 1.19.1.
  • Towny Integration has been rewritten.
    • You will need to reset qscompat-towny configurations for the new version Towny integration.
    • For Essentials users, turn on workaround-for-account-name in qscompat-towny configuration.
    • The Bank shop features are not compatible with TheNewEconomy, use other economy plugins instead.
    • Mayor and King can create a Town/Nation (bank) shop.
      • By default, a bank shop can only be created in a Bank plot.
      • The Bank shop will deposit and withdraw the Town/Nation bank account.
      • The server owner can fix the price of items selling/buying by Town/Nation shops, or limit the type for selling or buying.
    • Non-Bank shops in a Town will pay taxes to the Town bank instead of the Server tax account.
      • Bank shops' taxes still go to Server tax accounts.
    • Bank shops will show the Town/Nation name instead the player username.
    • Mayor and King can automatically be granted the full-control permission of shops inside the Town or Nation.
      • Including regular player shops.
        • It can be disabled in the configuration.
  • Added Residence Integration.
  • GriefPrevention, Lands, Towny, Residence, and SuperiorSkyblock Integrations canceling messages now can be localized.
  • [api] EconomyTransaction and InventoryTransaction now become an interface and are moved into the API package.
  • [api] Added EconomyTransactionEvent and InventoryTransaction to listening to the any new Transaction created.
Fixes:
  • ErrorReporter may dead-lock the server main thread when too many errors are in the queue for sending.
  • Wither or other entities may bypass the shop protection and change or break the shop container/blocks.
  • Fixed updater may use outdated version and notify the user to upgrade.
----------, Jul 28, 2022

Optimize:
  • QuickShop updater has been rewrited for better performance and readability and use Nexus for update source now.
----------, Jul 26, 2022

Fixes:
  • /qs find command cannot find any shops if command executer is OP or administrators or permission granted.
  • The purchased message will send ItemStack raw dump directly instead of ItemStack name.
  • Successfully sold message's tax display incorrectly.
  • Purchasers won't see tax details even show-tax enabled in buying shops.
----------, Jul 21, 2022

Fixes:
  • Reremake converter failure on SQLite Reremake database.
  • Reremake converter cannot find tables due different behavior about Database Table Prefix.
----------, Jul 18, 2022

3.0.2.2 Change Log
====================================

Fixes:

  • Reremake Converter & v2->v3 migrate script cannot finish on MySQL database due alter table rename may cause table-space desync with file system and failure to create tables.
    • We're switched our script from copy&renaming to create&data copy to avoid use rename sql to prevent MySQL table space desync.
  • Solved Reremake Converter will create multiple EasySQL manager & connection pools to waste the connections and cause resources leaks.
  • QuickShop Dev Mode (debug mode) won't active the EasySQL debug mode.
Translations:
  • Updated Crowdin distributions, all new translations now applied to 3.0.2.x users.
    • You can use /qs reload or restart the server to download&apply new translations.
QuickShop-Suite:
  • QuickShop-Limited
    • Fixed a bug that increase the player purchasing count even player failed on purchasing.
----------, Jul 15, 2022

The 3.0.2.1 update is now released early due to Mojang delaying the 1.19.1 update.

Fixes:
  • The first line and fourth line of the shop information sign didn't follow the interactor locale.
  • The owner name in Shop Control Panel didn't follow the viewer locale when the shop is an unlimited shop.
  • The Paste generator doesn't collect 1.19+ Paper configurations correctly.
  • QuickShop-Hikari still tries loading on unsupported Spigot versions.
    • QuickShop-Hikari uses NMS for Spigot compatibility and you must update QuickShop-Hikari while Spigot has new NMS changes.
      • If you're using Paper, you don't need to worry about this, we support Paper cross-version compatibility.
  • "Data conversion error converting" error when sending the offline message. (Thanks @Andre601 report it)
    • SQLManager now have their name instead of cc.carm.lib.easysql.manager.SQLManagerImpl
Crowdin:
We're moved our Crowdin from QuickShop-Reremake's Crowdin project to a standalone project (yes they'll belong to me).

Translators can access our new translation project here:
https://crowdin.com/project/quickshop-hikari

The old project is still here but won't receive new updates anymore and no longer sync with the repository.
Plugin built-in OTA source now point to new source and old translations all migrated.
If you need to switch the plugin OTA source to the old place for some reason, you can add this line at the bottom of config.yml.
But we might remove this option at any time, so you still should prepare to move new place.
Code (YAML):
custom-crowdin-ota-host : "https://distributions.crowdin.net/24ecd9a81c9f67d200825b7xrm4/"

Technoblade:
Technoblade is a legend in the Minecraft community and will be living in our hearts forever.

o7

In Memoriam: Technoblade -- Hypixel.net
so long nerds -- youtube.com
----------, Jul 1, 2022

Emergency Fix (3.0.2.0)
=====================================

Fixes:
  • [Emergency] Player allow use `/qs transfer <victim>` to transfer BUYING shops to victim player to treat balances from victim player.
    • After 3.0.2.0, shops recevier must accept the transfer request before shops transfering.
      屏幕截图 2022-06-28 222441.png
    • If you cannot update at this moment, revoke the `quickshop.transfer` permission.
New:
  • Sign text now following the interact player's locale.
  • New Paper configurations now included in paste.
  • `/qs export` and `/qs recovery` now works again after heavy rewrite.
    • Those command will export and import all database tables.
    • It is not possible to use the same backup between different database versions.
    • Use export and recovery feature to migrate database type between H2 and MySQL is possible.
  • Transfer command now require receiver confirm.
    • Receiver must online during Sender transfering.
    • Request will expire in 60 seconds.
Removed:
  • AlwaysCounting feature was removed because the unreasonable design.
  • SQL raw executing feature was removed because security reason.

Note: We might release 3.0.2.1 soon if 1.19.1 have NMS changes.
----------, Jun 28, 2022

New:
  • /qs database
    • New command allow server administrator check QuickShop-Hikari's isolated records and give trim advice.
    • 屏幕截图 2022-06-23 155803.png
    • Only OP can execute this command by default
    • Subcommand `/qs database trim` will clean up and trim isolated data from database.
  • /qs debug enhancement
    • New added `/qs debug database sql` command allow server administrator execute raw SQL.
    • SQL must be Base64 encoded.
    • EDIT: Sorry but I didn't noticed this is unsafe, this feature will be removed in next version.
Fixes:
  • SQL Exception while no any other exists shops on this server (new install)
----------, Jun 23, 2022

This version fixed an SQL error that caused by no-id shop trying to update the external cache. (thanks @Kriptiq)
This bug might cause your new created shop loss after server restart.
----------, Jun 22, 2022

Fixed an NullPointerException when player use `/qs currency` command.
----------, Jun 22, 2022

This patch fixed another table -- shop_id tables will create new records in database when shop updating without actual changes.
----------, Jun 20, 2022

Fixes:
  • The bug that creating isolated shops record while shop updating.
    • When you update to this build, isolated data will be purged automaticlly.
  • Exception on console while QuickShop-Hikari saving the shops during server shutting down.
Thanks @Antrox to improve the English translations!
All servers that running Hikari will receive this translations automaticlly from Crowdin OTA.
----------, Jun 20, 2022

New:
  • The [Preview Item] component now hide for players who don't have `quickshop.preview` permission (thanks @Antrox)
  • New placeholder %qs_player_shops-inventory-unavailable[_uuid]% that provide a integer to show the shops that specfic player own that don't have enough stock/space (uuid is optional).(thanks @Antrox)
    • It will load chunks so you probably won't call it freq.
    • 15 mins cache is excepted.
Fixes:
  • The bug that keeping creating data records while shop loading/unloading and increase the database size.(thanks @针织薄外套)
    • Exists isolated data will be purged after you installed this update. (thanks @Antrox, @针织薄外套 and @YuanYuan0w0 for testing)
  • Fixed `/qs paste` generated link unclickable on Minecraft Client. (thanks @Antrox)
Optimize:
  • Move shop deletion SQL to async thread.
----------, Jun 19, 2022

Fixes:
  • Error on converting data from v2 to v3 (thanks @YuanYuan0w0)
  • The qscompat doesn't load at all (thanks @Antrox)
  • Price component always shown in Control Panel even player doesn't permission to do that (thanks @Antrox)
  • QuickShop-Hikari fire ShopPreCreateEvent at wrong position (thanks @Antrox)
  • Plugin pop up strange "Shop creation was cancelled" even plugin never asked player to create shops with qs-compat modules installed (thanks @Antrox)
QS-COMPATIBILITY-MODULES:
  • Fixed the compatibility modules init() won't be fired after loaded.
    • All modules have new updates in this update.
----------, Jun 19, 2022

Fixed:
  • The DatabaseManager always creating the DataRecords and insert to database even nothing changes (cause the database size grow up insane).
  • The control panel always show "set price" even player had no permission to do that.
  • The compat modules doens't load up correctlty (init not called).
Optimize:
  • Optimized performance on large server/database.
----------, Jun 18, 2022

In 3.0.0.4, most SQL operations has been moved to async threads to prevent high tick time usage when using MySQL.

Actuallly this should be a bug since it is async before 3.0.0.0.
----------, Jun 18, 2022

This update fixed another bug that cause the v2->v3 data upgrading failure.
----------, Jun 17, 2022

3.0.0.1 fixed the bug in wrong way and this patch should patched the bug correctly.
----------, Jun 16, 2022

This version fixed a data upgrading bug in 3.0.0.0.

If you already upgrade to 3.0.0.0 and all shops was missing, the database tables actually just renamed, delete bad tables and rename them back and it should works.
----------, Jun 16, 2022

BACKUP: Before upgrading to this version!
This update contains database schema changes and may break your database, create a full backup before continue!


In this version, we have refactored the database schema to expand the ability to storage the history data, so this give us ability to record history metrics and more.

We are planning to add statistics and analytics to facilitate the server owner to analyze the transaction activities on the server.

Due to time, some features have been temporarily disabled in this release and we are working on restoring them as soon as possible:
  • Command `/qs recovery`
  • Command `/qs export`
We also added 1.19.0 Minecraft version compaitbility, and fixed 1.18.x Spigot compaitibility.
----------, Jun 16, 2022

Fixes:
  • Player cannot purchase the shops under Adventure gamemode.
  • Spigot server may cannot preview item caused by reflect failure.
Translations has been updated.

No any other changes.


This should be last one build of v2, I'm working on Hikari v3, focus on refactoring the data-structure for persist purchase metric, optional GUI, spilt API to another module and more.
----------, May 30, 2022

Optimize:
  • Optimized the Hopper listener performance by removing useless CustomInventoryListener#InventoryMoveEvent listener.
    • Should improve some performance on busy server.
  • Optimized compatibility for PlaceHolderAPI feature (thanks @Andre601)
Fixes:
  • Plugin still trying startup even runtimeCheck fails.
  • Fixed the Shop cannot handle Stacking Shops settings change correctly if user changed stacking option in runtime. (/qs reload way)
    • The Item amount will force set to 1 if stacking feature was disabled in runtime, and set back to normal of stacking feature re-enabled.
      • The data stored in the storage won't be affected.
Misc:
  • Updated built-in translations.
    • The old versions user can update translations by type `/qs reload` to download new translations from CrowdinOTA.
----------, May 25, 2022

New:
  • Item Lookup Table
    • New Item Lookup Table feature allows user add a specfic item to item lookup table, and refer it in configuration.
    • For now, the Item blacklist and PriceLimiter both support it.
    • To use this feature, you will need holding an item and type command `/qs lookup create <name>` to create a reference.
    • Then open config.yml or price-limiter.yml, add your reference (by adding '@' prefix) to refer it.
    • 屏幕截图 2022-05-21 223534.png
Fixes:
  • Fixed a bug that cause server OP cannot bypass some resrictions.
----------, May 21, 2022

Thanks Kriptiq to reporting this issue.

2.0.0.4 fixed a bug that preventing the server administrators (OP) bypassing the shop protections after 2.0.0.0 per-shop permission system update.

-----

In same time, we have changed the artifact jars naming style to more readable one. Thanks Andre601 for this sweet advice.
----------, May 18, 2022

QuickShop-Hikari can works without Internet connection now.

* Still requires an Internet connection in order to download the dependencies at the installation first time startup.

No any other changes.
----------, May 15, 2022

Thanks the advice from Chris6ix, the file path and ports in the paste now censored and the System Properties now removed from Paste.

No any other changes.
----------, May 15, 2022

2.0.0.0 Major version update
=====================================
Backup configurations and databases before upgrading.

For details, please expand this updates and scroll down.
New features:
  • Per-shop permission management.
  • QuickShop Paste v2.
  • Compatibility Modules with Permission Override.
  • Compatibility with SuperiorSkyblock2.
Bug fixes:
  • SSL Exception when CI site certificates expired.
  • RealDisplayItem can dupe items (cannot pickup/suck/get) if server shutdown without type /stop.
Per-shop Permission Management
New command `/qs permission` was added into QuickShop.
By default, four system permission groups below was added into QuickShop:
  • quickshop-hikari.everyone
    • The default groups that apply to all players who not in any other groups.
  • quickshop-hikari.blocked
    • When a player was added to this group in some shops, the player will cannot purchase, preview, check information and search target shop by default.
  • quickshop-hikari.staff
    • Same as famous `Shop Staff` feature. In fact, all shop staffs will be automatically added to the this group when use `/qs staff` command.
  • quickshop-hikari.administrator
    • Almost all permissions on this shop, including access inventory, edit prices, change the item and even DELETING the shop.
QQ图片20220515145504.jpg

You can edit `group.yml` to add new groups or edit exists group's permissions.
屏幕截图 2022-05-15 143417.png

Compatibility Modules with Permission Override
New version compatibility modules with Hikari 2.0.0.0 now can override permissions.

For example, any other players created shop on Steve's islands/plots/claims/lands/towns and that will make Steve automaticlly granted the shop deletion permission.
So the region owner can ez delete any other players shop from their home :).

QuickShop Paste v2
Improved paste v2 now released with Hikari 2.0.0.0, contains more useful information and is more user-friendly.
Also, we're improved paste privacy. Hikari will try hide your secrets, tokens, api-keys, seeds from the paste if they're included into paste for some reason.
QQ图片20220514224635.jpg

You can preview it here.

Compatibility with SuperiorSkyblock2
We have added SuperiorSkyblock2 compatibility supports with co-op support, you can download compatibility module from our CI site.


This update sponsored by Fox, give cute Fox some melons so we can get more FoxPower!
6559181bb116e65b.jpg
----------, May 15, 2022

Fixes:
  1. ShopLoader crashes when a ContainerShop failed to initalize.
  2. ClassCastException while user trying to create shop on a block without Inventory but in shop-block list.
----------, May 1, 2022

Thanks @mfnalex for contributing ;)

This update bring the Drop2InventoryPlus compatibility for servers who use RealDisplayItem.

The translation files have been updated as well.
(French, English, Czech, Spanish, Polish, Swedish)
----------, Apr 28, 2022

Fixed:
  • Fixed a Adventure MiniMessage lib NoSuchMethodError (net.kyori.adventure.text.format.TextDecorationAndState net.kyori.adventure.text.format.TextDecoration.withState(boolean)) error , for now, Hikari will create a standalone MiniMessage parser to avoid use a sharing instance with other plugin which it cause ton of mess about versions conflict.
Transations:
  • Updated translations.

I'm tracking down MiniMessage conflicts on users' servers that I can't reproduce locally with Rollbar automatic bug reporter.

If you have any errors related to MiniMessage, please join our Discord server and report it, I will fix it as soon as possible :).
----------, Apr 13, 2022

This version fixed the critical bug in 1.1.3.0 - 1.1.3.2 (plugin doesn't work at all in above version, and 1.1.3.0 - 1.1.3.1 never pulished in public but 1.1.3.2 does).

This release resolved the long-troubled MiniMessage conflict and maven dependency issue.

I'm working on improving the stability of QuickShop-Hikari, no feature updates in recent.
Hope we can see a LTS version come out.
----------, Apr 11, 2022

this update revert to 1.1.2.0 because 1.1.3.2 have important bug need to fix.
----------, Apr 11, 2022

1.1.3.2 changelog
===============================================

You will need update your addon as well cause this update breaks the Adventure package location, update addons and QuickShop-Suite if installed.

Fixes:
  • Again, fixed Adventure MiniMessage dependency issue.
    It should be totally fixed now.
    Thanks to troke.id, Spider and 针织薄外套 to report this bug and help test it ;)
  • Fixed exception while using `/qs reload` command.
Optimize:
  • Heavy optimized the CustomInventoryListener item move performance on busy server.
QuickShop-Suite:
  • QuickShop-Suite has been updated for adapt 1.1.3.2 and higher, please update them here.
Translations:
  • All translations has been updated, restart the server to download and apply it.
    Found the issue about translations? You can correct it / help us translate the QuickShop here.
Developer Note:
  • We finally fixed a bug that breaks the maven dependency.
    Now you will only need add `quickshop-bukkit` into your project instead of add ton of dependencies.
Code (Text):
<dependency>
            <groupId>com.ghostchu</groupId>
            <artifactId>quickshop-bukkit</artifactId>
            <version>1.1.3.2</version>
            <scope>provided</scope>
            <classifier>shaded</classifier>
        </dependency>
----------, Apr 10, 2022

1.1.2.0 changelog
===============================================
Fixes:
  1. Fixed "java.lang.NoSuchMethodError: 'net.kyori.adventure.text.minimessage.MiniMessage net.kyori.adventure.text.minimessage.MiniMessage.miniMessage()'" on some server.
  2. Fixed maximum shop creation amount limit doesn't work.
Refactor:
  1. The shop creation workflow has been refactored.
Translations have been updated, restart the server to apply!
----------, Apr 5, 2022

1.1.1.3 changelog
===============================================

Fixes:

  • Shop rank-based limit doesn't work at all.

Plan:
It's time to talk about the next plan for QuickShop-Hikari.
I have scheduled to refactor Hikari some parts in the next major update.
Because I noticed some parts of QuickShop -- Especially shop creation parts like a mess. The glue code is everywhere in different modules and causes the different behavior between commands and interaction controls.

So I planned to refactor them to reduce the duplicate and messy codes, and if lucky, the performance should also have improved.

The breaking API changes are unavoidable, but I will try my best to keep backward compatibility.

At the same time, I will also tweak other APIs and internal structures, Existing code structure severely hinders the new features adding and flexibility.
----------, Apr 1, 2022

hot fix for shop deleting error when refund from taxAccount enabled but taxAccount not set.
----------, Mar 30, 2022

1.1.1.1 changelog
===============================================

News:
  • New configuration "shop.refund-from-tax-account" that allows refund player by taking tax account balance which is good for the closing economy server.
Fixes:
  • (upstream bug) Fixed shop fee economy confusion under multi-currency mode. All fees out of the shop now will be a global currency as fee currency.
  • (upstream bug) Fixed bug that unregisterListenerClazz method ignores the args that passed in.
  • Fixed ShopControlManager registry multi-thread lock issue.
  • Fixed Hikari converter cannot identify the Reremake shop sign.
  • Fixed broken double-click installation dialog.
API:
  • ShopNamingEvent can modify the shop name.
----------, Mar 30, 2022

⚠ 1.1.1.0 changelog [EXPLOIT FIX]
===============================================
In this version we're fixed an exploit that exists both Reremake and Hikari, please upgrade as soon as possible.


As of the release of the update, Reremake has not fixed this issue yet, please stay tuned to the release note from Reremake if you using it.

Fixes:
  • [Exploit +Reremake] Fixed a bug in QuickShopItemMatcher will skip the item compared to a logic bug which will cause transaction fails.
    • Hikari behavior: An error will be detected and try rollback but will fail due to a bug.
    • Reremake behavior: Transaction will succeed without any error or warning.
  • [Exploit] Fixed a bug in the Transaction system which can dupe items while rolling back the transactions.
  • The shop owner will receive the offline message in which language follows the purchaser.
  • Container Invalid log is always written into the database, now it follows the configuration like other logs.
Changes:
  • QuickShop now uses the Bukkit item matcher by default for new users, any existing configuration won't be changed.
QuickShop-Suite:
  • Fixed a bug in Dynmap integration which cause the marker to show an incorrect item name.
----------, Mar 28, 2022

1.1.0.3 changelog
===============================================

Fixes:

  • When QuickShop runs with a path containing a non-ASCII character will throw FileNotFoundException when reading bundled translations.
----------, Mar 23, 2022

1.1.0.2 changelog
===============================================
Fixes:

  • Fixed a bug that blocks configuration up-to-date and messages converter.
----------, Mar 23, 2022

1.1.0.1 changelog
===============================================
Fixes:

  • Price restriction always denies players while it is turned on.
  • set total price in ShopPurchaseEvent doesn't display correctly in successful purchase message.
  • /qs debug command cannot switch debug mode correctly.
----------, Mar 23, 2022

1.1.0.0 changelog
===============================================


Fixes:

  • The player cannot break shoppable blocks (like chests) with items in hand.
News:
  • MiniMessage now becomes the default parser, old syntax files will automatically convert to MiniMessage format (Except for the part using MineDown).
Refactor:
  • CrowdinOTA module has been refactored, now you can run QuickShop-Hikari in no ethernet environment without the i18n system going down.
    • All related API has been changed, check them out!
----------, Mar 23, 2022

1.0.3.1 changelog
===============================================

Fixes:
  • NullPointerException in the transaction when server disabled tax account.
Changes:
  • Unnecessary metrics were removed from Hikari.
  • /qs reload command now supports more modules.
----------, Mar 22, 2022

1.0.3.0 changelog
===============================================
End of Life for 1.18.0 and 1.18.1 servers!

QuickShop-Hikari schedule for removal compatibility with 1.18.0 and 1.18.1 since 1.18.2 has been released.
You will receive a warning while plugin startup if you're running the version that got impacted.
Consider upgrading!

Compatibility Notice:

API has been changed in this version, some addons that use un-standard API may doesn't work anymore and need an update.

Performance:
  • Username <-> UniqueID mapping cache layer has been added, this will huge helps for servers who have a bad network or slow disk to prevent main-thread blocking HTTP I/O as best as Hikari can.
    • On the Paper platform, Hikari will use Paper Profile API to get a player's unique id and username mapping.
    • On the Spigot platform, Hikari will use local database cache with HTTP Mojang API request to get a player's unique id and username mapping.
  • Adjust EconomyTransaction to prevent UUID <-> Username convert to prevent main-thread blocking network I/O.
  • PlaceHolderAPI provider now has a cache layer to optimize performance in a busy server.
  • Other misc optimize.
New:
  • Adjustable database properties, a new section was added into config.yml and you can adjust properties (or add new properties) to Hikari's database connections.
  • PlaceHolderAPI provider now accepts UUID as a player (no-longer only accepts username).
  • TextMessage now support MiniMessage syntax, new option syntax-parser was added into config.yml. NOTICE: You will need create a new translation file if you switch to MM syntax.
Changes:
  • On 1.18.2 servers, Hikari will mark the display as an unlimited lifetime to prevent despawn by games (RealDisplayItem).
  • ConfigUpdater is now spilled to a single class with multiple methods for better readability.
Fixes:
  • VirtualDisplayItem will thrown NoClassDefError in ProtocolLib 5.0.0 and higher.
  • AdvanvedRegionMarket integration doesn't work.
  • GriefPrevention integration doesn't work.
  • /qs size always use game-language code, now it has the same behavior as other sub-commands in the help menu.
  • Reremake converter doesn't work properly.
QuickShop-Suite:
QSS also has new updates that support 1.0.3.0, check them!

API Changes:
  • Some classes in com.ghostchu.quickshop.shop package was moved into their sub-packages.
  • ShopDisplayItemSafeGuardEvent was added into API.
  • DisplayDupeRemoverWatcher and DisplayWatcher have already been removed from Hikari. They're useless since Hikari refactored display logic.
  • DisplayProvider API now always overrides Hikari's DisplayProvider.
  • QuickShop#getTimerTaskList was removed from Hikari. TimerTaskList has been removed.
  • GameLanguage object was removed from MsgUtil.
----------, Mar 19, 2022

1.0.2.5 changelog
===============================================
Fixed:

  • PlotSquared compat reporting error like "com.ghostchu.quickshop.compatibility.plotsquared.Plotsquared#canTradeShopHere returns non-void type boolean. This is unsupported behavior and will no longer work in a future version of Paper."
  • "org.h2.jdbc.JdbcSQLSyntaxErrorException Duplicate column name"

This should be final update in this week ;3, hope no bugs.
----------, Mar 13, 2022

just a hot fix for another SQLException
----------, Mar 13, 2022

1.0.2.3 changelog
===============================================
Fixes:

  • SQLException when user upgrading to 1.0.2.2 from older version.
    Column "NAME" not found; SQL statement:ALTER TABLE `shops` MODIFY COLUMN `name` TEXT NULL [42122-210] with context: Error when connecting to the database
----------, Mar 13, 2022

1.0.2.2 changelog
===============================================
Changes:

  • This version of QuickShop build against 1.18.2 with latest ProtocolLib and Adventure libs.
Fixes:
  • Fixed exception when user installed outdated NBTAPI on their server.
  • Fixed hikari-converter & configuration updater doesn't work proprely if user converting data from Reremake to Hikari.

No configuration or database changes.
----------, Mar 9, 2022

fixed an sqlexception while startup.
----------, Mar 4, 2022

1.0.2.0 changelog
===============================================

[​IMG]

New features:

  • Named shop
    • Player can use command /qs name to name a shop, and the name will shown in transaction messages.
      • Any format code declared in command will be strip. Only API can add format code into the name to avoid bad input.
      • The name length limit can be tweaks in configuration.
    • We also planned allow player remote modify shop settings throught shop name.
    • Different shops can use the same name, no unique constraints.
  • QuickShop Item Matcher now supports matching the items in the Bundle.
Changes:
  • QuickShop Item Matcher now compare the list related metas with disordered algorithm. Lores not included.
  • Hikari now require Java 17+ for runtime. (But I believe everyone who running 1.18 servers should running J17 already.
  • 1.18.2 supports now explicitly declared in compatibility helper.
  • Reremake migrate tools won't halt the server after migrated to avoid terminate the server console, now use reload the configuration and modules instead. (Reported by Andre601)
Bug Fixes:
  • Player received twice notifaction about "bypassing shop lock" and "trade with self without balance changes".
API Changes:
  • Shop#getShopName and Shop#setShopName now added into API.
    • Shop name can be set with format codes using API.
  • Shop metric query API now added into Hikari (experimental).
    • Metric API tracking the transaction and purchases.
Translations:
  • All new translations included in this updates, thanks contributors on Crowdin!
    • old builds can also receive translation improves through our over-the-air system. Type `/qs reload` or restart the server to update translations!
  • New language now added to locale list and can be translate on Crowdin.
    • The languages was added:
    • It also sync to Reremake.
Keep the safe:
  • I've heard that some countries which our users at are at war. Minecrafters who in the relevant country, be careful!
----------, Mar 2, 2022

1.0.1.2 changelog
=========================================
Description:

I decide directly drop 1.16 and 1.17 supports to remove outdated workaround compaitibility codes. Also this mean QuickShop-Hikari can use latest API stuffs to offer better performance.

Stable:
This build should be stable enough for production environment use.
----------, Feb 22, 2022

1.0.1.2 changelog
=========================================
Description:

I decide directly drop 1.16 and 1.17 supports to remove outdated workaround compaitibility codes. Also this mean QuickShop-Hikari can use latest API stuffs to offer better performance.

Stable:
This build should be stable enough for production environment use.
----------, Feb 22, 2022

1.0.1.0 Change Log
=======================================================
New features:

  • General TranslatableComponent support! Most of item/enchantments and potions will show as your client language!
[​IMG]
[​IMG]
[​IMG]

Note: If you hitting this issue with custom enchantment plugin installed after upgrade:
屏幕截图 2022-02-21 151730.png

Please follow this guide to "fix" them: https://github.com/Ghost-chu/QuickShop-Hikari/wiki/Register-TranslationKey

Your configuration will automaticlly upgrade.
----------, Feb 21, 2022

1.0.0.2 - Bug fixes
==============================================
Bug fixes:
  • Shop loading report "java.lang.IllegalStateException" while shop container missing, now we will handle this error in silent and will prevent shop to continue loading.
  • The message "buying-more-than-selling" may send to player even the doublechest another shop not selling/buying same item or same type.
----------, Feb 19, 2022

1.0.0.1 - Bug fixes
==============================================
Bug fixes:
  • Negative amount message pop up while using Direct Trade.
Changes:
  • Update checker now supports Hikari, you can receive the update notification in-game now.
----------, Feb 19, 2022

Resource Information
Author:
----------
Total Downloads: 39,669
First Release: Feb 18, 2022
Last Update: Aug 25, 2024
Category: ---------------
All-Time Rating:
27 ratings
Find more info at quickshop-community.github.io...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings