Skip to content

Releases: QuickShop-Community/QuickShop-Hikari

3.6.0.3

30 Dec 14:52
66d5675
Compare
Choose a tag to compare

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:

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:

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

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.

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.

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:

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.

3.6.0.2

23 Dec 13:29
dd3d4c5
Compare
Choose a tag to compare

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.

3.6.0.1

19 Dec 09:13
e08c067
Compare
Choose a tag to compare

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.

3.6.0.0

18 Dec 10:18
7d5f553
Compare
Choose a tag to compare

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

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 Player Purchases
Global Shops Player Shops

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.

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

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.

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.

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:

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 Repository❤.

Full Changelog: 3.5.0.3...3.6.0.0

3.6.0.0-beta2

17 Dec 15:28
1074156
Compare
Choose a tag to compare
3.6.0.0-beta2 Pre-release
Pre-release

Discount Addon and Bug Fixes

Discount Addon

Christmas is coming! We've launched a new Beta version of Addon: Discount.
Now create a Discount Code and let others enjoy discounts in your store!

Create a discount code

To create a discount code, you need use command /qs discount create, there have few options you can custom including:

  • code name (e.g XMAS50OFF)
  • code type
    • PLAYER_ALL_SHOPS for all your shops
    • SPECIFIC_SHOPS
    • SERVER_ALL_SHOPS for all shops on this server (administrator)
  • max usage (like you can use this code up to 5 times)
    • -1 for unlimited
  • price rate
    • percentage: 30% is -70%
    • fixed: 50 is -50$
  • threshold (e.g only purchase over 500$ in one time then you can enjoy -50$ discount)
    • -1 for unlimited
  • expire time
    • -1 for unlimited
    • Support UNIX timestamp in seconds format.
    • Support Zulu standard format.

Follow the in-game tab-completer to fill arguments to create a discount code.

There is time format example:

Install your discount code

By execute command /qs discount install <code> to install a discount code, then it will applied to every purchase that applicable your installed discount code.

If discount codes are available, you will receive a prompt message when you clicking the shop.

Check your discount code information

By execute the command /qs discount info, you will able to check discount code information that you installed.

QuickShop-Hikari

New features

  1. Impl ShopInfoPanel event.

Bug Fixes

  1. Fixed QuickShop-Hikari languages override system.
  2. Fixed QuickShop-Hikari languages safe fallback system.

3.6.0.0-beta1 Plan Integration

16 Dec 13:45
bd338fa
Compare
Choose a tag to compare
Pre-release

In 3.6.0.0-beta1, our addon family welcomed a new member, Plan.

By install Plan integration, our addon will add a new page and few panel into your overview and per-player metric page.

It is worth mentioning that QuickShop-Hikari has been available for statistical purposes since it was published, but we have never formally written extensions for it to show the data.

The purchase related history has a bug in the past QuickShop Hikari, which causes all the item amount data of Purchases to be zero.
Since 3.6.0.0-beta1, this error has been repaired and new data has been recorded normally.

WARNING: If you have executed /qs database purgelogs before, all your metrics will be purged.

Global Metrics

Summary

In global metrics summary panel, you will able to check the total shops and total purchases on your server.
image

Purchases

In global metrics purchases panel, you will able to check recent 1000 purchases in recent 365 days.
Even deleted and invalid shops are included.

We intentionally limited the size of the displayed dataset to avoid database pressure on large networks.

image

Shops

In global metrics shops panel, you will able to check all actived shops on your server, even shop out of stock or out of space.
Deleted shops are excluded.

image

Player Metrics

Not only global, but also per player metrics!
By clicking Playerbase -> Player List -> <username>, you will able to access Plan per-player profile page.
In per-player profile page, expand the Plugins menu on the left nav, you will able to see QuickShop-Hikari panels.

Summary

In player metrics summary panel, you will be able to check how many shops that player owned.
image

Purchases

In player metrics purchases panel, you will be able to check this player recent 50 purchases.

We intentionally limited the size of the displayed dataset to avoid database pressure on large networks.

image

Shops

In player metrics shops panel, you will be able to check this player all shops on this server.

image

Limitations

  1. Server global data will update periodical, it finished by Plan's scheduler, we can't control it.
  2. Player personal data will update when they left the server.
  3. Due to the limitations of Plan's API, it is impossible to localize text display.
  4. At present, the number of entries is hard coded and cannot be modified. We will provide the ability to modify them using configuration files later.
  5. Plan will show datas in random order, the only way to keep them in order is add a id column but Plan limits the max column up to 5 for server scope or 4 for player scope.

3.5.0.3

15 Dec 16:48
0719d6d
Compare
Choose a tag to compare

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)

3.5.0.2

15 Dec 14:48
218a434
Compare
Choose a tag to compare

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.

3.5.0.1

15 Dec 13:39
5866571
Compare
Choose a tag to compare

Bug Fixes

  1. Fixed broken VirualDisplayItem (1.19.2) on 3.5.0.0.

3.5.0.0

15 Dec 07:08
4714675
Compare
Choose a tag to compare

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.

Screenshots

There is quick preview of new features: