Plugin now supports 1.8+ (Previously only from 1.11+)
Grief Prevention integration now has an additional field active-claims-only that if set to true, will only tax players based on the claims actively used (wiki has been updated)
Fixed:
Fixed an issue where collectactivity cannot be used in schedule
Users can now optionally specify use-percentage within each tax bracket as well if they only wish to apply percentage tax to certain brackets.
Note:
Existing users do not need to make any changes if they don't need this new feature.
Although not an encouraged use-case, it is now also possible to set negative values for balance amount which will give money from the server tax account to the players instead. Use this cautiously!
3 new options have been added into config.yml to provide more control over penalizing players with not enough balance to pay taxes. For instructions on how to use the following new options, please refer to the wiki tutorial:
debt-mode
debt-commands
auto-remove-claims
Note:
For existing users who are uninterested in the above additions, you do not have to make any changes to your config file as the default behavior of not having these new options remain compatible with older versions.
For existing users who are interested in the above additions, you need to either regenerate your config.yml or manually add these new options in. Again, refer to the wiki tutorialfor a guide on using these new options.
Now supports tax exemptions via the following 6 permission nodes:
quicktax.exempt.*
quicktax.exempt.collectname
quicktax.exempt.collectall
quicktax.exempt.collectbal
quicktax.exempt.collectrank
quicktax.exempt.collectactivity
Updated wiki to include more information on these new permission nodes.
New "tax-exempt" field added into lang/en.yml, intended to notify command sender when a user is tax-exempted. Recommended to regenerate your language file or refer to the default configurations and add in this one new line.
New collectactivity command that allows collecting of taxes based on player last seen activity (regenerate your config or refer to the wiki to paste the configuration section for this into your config.yml).
Note:
Minor configuration change for better structure in config.yml, no changes required (but you should paste in the new collect activity section if you intend to use it).
Collect command now properly says invalid command if not used with any of its sub-commands.
An extra check has been added for a rare bug related to vault. No guarantees it will resolve the rare bug occurrence but a good check to have nonetheless.
Notes:
The QuickTax plugin will be receiving a huge rewrite in part to improve the plugin and make it more maintainable/extensible for new features. There will be some configuration changes as well which will all be part of QuickTax 2.0.0 - a better version of the plugin that I hope to release sometime later this month or early December.
Today's update cleans up the code and improves config/schedule file comments to better guide new users (no action required for existing users except dropping in the new jar file).
Barring any severe bugs that require urgent fixing, the next update for this plugin (version 1.4.0) will happen around the end of November when my winter break begins. As a heads up, updates in the winter are planned to introduce the following features (some of them may drop in 1.4.1 instead):
Allow users to specify commands to run at the end of scheduled tax collection/at the end of a leaderboard update. This will also support PAPI variables to be used in the commands, useful for broadcasting, rewarding players etc.
GUI (inventory playerhead) option for leaderboard instead of just chat.
A QuickTax addon that will allow the collection of taxes based on other values such as SurvivalTop wealth. There is a possibility that current support for GriefPrevention will also be shifted into the new addon to keep things more organised.
A github wiki for the plugin will be added!
I hope users are looking forward to the above improvements for the winter update. If you have any suggestions, please do not hesitate to hop into our discord and share them. Thank you for all the support for this plugin thus far, cheers!^^
Users can now specify their MySQL port as a separate parameter (previously you would have to append the port to the end of the host). Simply use the following to specify MySQL port in config.yml:
port: 3306 (3306 is the default if not specified)
Fixed:
Fixed an issue where collectrank may not tax players who are offline. If your server actively uses collectrank, do update!
Fixed a rare bug where scheduled collections are collected twice.
Fixed a rare bug where attempting to collectrank without a proper permissions plugin throws a plugin error (now handles error correctly instead of spamming console).
Fixed an issue where taxes paid is shown in scientific notation for large values.
Fixed a minor bug with leaderboard introduced in a previous update.
Notes:
Apologies for the many bugs introduced and I'll try to do more thorough testing in future ;-; As of this latest update, most of the important bugs should have been fixed. Thank you for your continued support^^
Fixed a rare bug where some economy plugins might throw an error on async tax collections. This was first discovered with XConomy raising such an error so if you are using this as your economy plugin, you will need this patch.
Fixed a bug introduced alongside MySQL support where player data folder (if using yaml) would not be created. This bug does not affect previous users who already have player data files so existing users need not take any action. For new users having issues with player data files, please update to this version. Apologies for the inconvenience
A leaderboard bug may occur if a world folder is deleted (along with player data) and re-generated. Just found this bug a moment ago while fixing other bugs so many apologies for the back-to-back update ;-;
Unfortunately, the plugin does not currently provide a method for migrating data across different storage types. However, I promise to add this feature in a future update when I have more free time^^
Several optimizations have been done to improve plugin performance (particularly for loading and checking of player stats).
Multiple collections are now prevented from running at the same time due to possible unexpected behaviors (e.g. a collectrank collection running at the same time as a collectbal collection may lead to unexpected tax amounts). In other words, if an existing collection is ongoing, a new collection cannot be run until the current collection is complete.
2 new lines have been added into the language file to reflect the above changes:
Code (Text):
tax-collect-already-running: '&cAn existing tax collection is ongoing, please try again later!'
player-load-in-progress: '&cLoading player data, please try again later.'
Lastly, if you do encounter any bugs or have any suggestions, please do not hesitate to reach out on discord^^
Fixed a rare bug that causes leaderboard signs to overwrite each other if they are placed in the same xyz locations but in different worlds. This bug is a rare occurrence but it is still recommended to delete your signs.yml file and re-setup your leaderboard signs to be 100% sure that you will not run into this bug in future. Many apologies for this inconvenience >.<
New leaderboard feature (/qt top) that allows players to view the top tax payers! Note that this feature requires the new option storage-type (which replaces track-stats) to be set in config.yml.
The leaderboard feature also comes with signs + heads that allows admins to designate a physical leaderboard area. Click on the spoiler below to see how to add yours today! If you are updating from a previous version, there are new lines you need to add to the language file so do read the notes at the end of this post^^
Place a wall sign and type the following:
1st line of sign: [quicktax]
2nd line of sign: <rank>
Note that the <rank> above refers to the leaderboard rank that you wish to set the sign for. So for example, here is what you will type exactly for a leaderboard rank 1 sign:
1st line of sign: [quicktax]
2nd line of sign: 1
The 3rd and 4th line will be automatically updated with the player at that particular position.
Player heads are optional and should you wish to include them, you may place any player headone block directly above the sign or one block above the block on which the wall sign is being placed on.
The leaderboard signs and heads will then automatically update themselves on every leaderboard update whose interval can be configured inside the config.yml file.
Alternatively, leaderboard updates can also be set to run after a scheduled tax collection via the new update-leaderboard-on-run option.
Notes:
Changes have been made to config.yml, schedule.yml and language files. It is recommended to regenerate them due to the plentiful updates but you may also read on the changes below and manually update those files if you wish. You may also refer to the newly updated default files on the main page if you need examples.
4 new permission nodes have been added:
quicktax.sign.add (adding a leaderboard sign)
quicktax.sign.remove (removing a leaderboard sign)
quicktax.top (for viewing the leaderboard)
quicktax.update (for manually updating the leaderboard)
3 new options have been added in config.yml:
update-interval (the interval between leaderboard updates)
update-on-start (true/false to indicate whether a leaderboard update should run on server start)
storage-type (to indicate the type of storage used)
Note that track-stats has now been replaced with storage-type to facilitate the eventual support for MySQL.
1 new option has been added into schedule.yml:
update-leaderboard-on-run (true/false to indicate whether a leaderboard update should run after a scheduled collection)
2 new PAPI placeholders:
%qtax_top_name_{rank}% (retrieve the name of the player at a particular leaderboard rank)
%qtax_top_tax_{rank}% (retrieve the total tax paid by the player at a particular leaderboard rank)
Again, due to the significant amount of changes above, it is recommended to regenerate your language file for the new messages to be applied. However, should you insist, you may also manually update your language file by copy and pasting the following lines:
Code (Text):
storage-disabled: '&cA valid storage type must be set in config for this feature to work!'
# leaderboard messages
update-started: '&aStarted tax payer leaderboard update.'
update-in-progress: '&cUpdate is currently in progress, please try again later.'
update-complete: '&aThe leaderboard update is complete!'
no-updated-leaderboard: '&cThere is no updated leaderboard!'
quicktax-sign-placed: '&aLeaderboard sign for rank %rank% has been placed!' #%rank%
quicktax-sign-broken: '&aLeaderboard sign for rank %rank% has been broken!' #%rank%
no-quicktax-sign-add-permission: '&cYou do not have permission to create a leaderboard sign!'
no-quicktax-sign-remove-permission: '&cYou do not have permission to break a leaderboard sign!'
# format for leaderboard sign message (line 1 and 2 are fixed, only line 3 and 4 are customizable)
# supports the following placeholders:
# %player%
# %totaltaxpaid%
leaderboard-sign: |
&a&l%player%
&c&l%totaltaxpaid%
# format for leaderboard
leaderboard-header: |
&b----- &6Tax Payer Leaderboard &b-----
# %num% is rank position, %player% is player name and %totaltaxpaid% is player total tax paid
leaderboard-body: |
&a%num% &b%player%: &e%totaltaxpaid%
# %page% is the next page number
leaderboard-footer: |
&6Type &e/qt top %page% &6to view next page
Fixed an issue with PAPI placeholders that threw an error when getting schedule information while the scheduler is not running.
Notes:
I have just released my second plugin, SurvivalTop! If you've been enjoying QuickTax, then SurvivalTop might just be another economy plugin that you will be interested in Do give it a look!^^
Plugin now automatically checks for updates on server start and pops up a prompt in the console to inform if a new update is available^^
Fixed:
Fixed a bug where if claim-ratio was set above 1.0 then it would not work.
Added error handling for a seemingly rare bug that can occur with essentials economy. If you do bump into such issues, please do reach out to me on discord with the logs^^
Notes:
Further minor optimizations were done to shift some work into compilation-time instead of runtime.
No other action required from users other than downloading and dropping the new JAR into the server^^
4 additional PAPI placeholders for schedules have been added. Note that {scheduleName} is a variable and has to be the name of a valid schedule configured:
%qtax_schedule_type_{scheduleName}% - get the schedule type
%qtax_schedule_freq_{scheduleName}% - get the schedule frequency (seconds)
%qtax_schedule_next_run_{scheduleName}% - get the time for schedule's next run
%qtax_schedule_timezone_{scheduleName}% - get the schedule timezone
New /quicktax schedule view <name> command to allow viewing the details of a specific schedule (obeys current permission nodes). You no longer have to scour through a list of schedules to find the one you are interested in!
The help command is now listed in pages for easier reading!
Additional messages have been added to improve clarity with the use of certain commands such as reload.
Removed a massive dependency that was resulting in more than thrice the size of the plugin size than necessary (yay!)^^
Fixed:
Fixed an incorrect error message related to the /quicktax collectname command.
Fixed a bug in scheduling logic where the scheduling may not be precise down to the seconds as provided in the config.
Fixed a bug in /quicktax schedule view where the "next run" field is not immediately updated upon starting the scheduler.
Notes:
With this update, majority of the bugs/issues have been fixed and QuickTax is now considerably stable with plenty of features and flexibility (YAY)^^
That said, I will still continue to update and maintain the plugin so feel free to keep any suggestions coming!
Lastly, I have updated the config.yml and en.yml yet again. While there is no need to regenerate the config file, the language file has to be regenerated as there are significant changes. Alternatively, you may manually edit your language file with the new fields (but that's really troublesome :3)
The last update introduced a bug in the group of collect commands which incorrectly threw an "invalid command" message. I've since patched up the issue! Sorry for the inconvenience >.<
Fixed a typo in a message key within the language file:
A new option has been added to configure whether players will hear a sound play when tax is collected from/paid by them. The following 2 fields will have to be added into config.yml (or you could delete and regenerate the config):
enable-sound: true
play-sound: ENTITY_PLAYER_LEVELUP (sound can be changed!)
Schedule view now comes with the following 3 permission nodes:
Many apologies for the double update, the previous update contained the wrong JAR.
Fixed:
Fixed an issue with fixed-time collection tasks being thrown off by server restarts/plugin reloads (this bug only affected scheduled collections with intervals more than a day).
Please do read the notes below.
Notes:
Both config.yml and schedule.yml have been updated to provide much more guidance to plugin setup. If you are still confused about scheduling collections, do consider regenerating your schedule.yml file (by deleting it and reloading the plugin) for better explanations.
After this update, users will notice a new schedules folder. Do not edit the files within this folder unnecessarily because they are used to properly maintain and persist repeated task timings even through server failures, crashes or any reloads (basically a safety mechanism of sorts)
If you need any help with scheduling, please do not hesitate to reach out to me on my discord. Enjoy the update!^^
Fixed an issue with fixed-time collection tasks being thrown off by server restarts/plugin reloads (this bug only affected scheduled collections with intervals more than a day).
Please do read the notes below.
Notes:
Both config.yml and schedule.yml have been updated to provide much more guidance to plugin setup. If you are still confused about scheduling collections, do consider regenerating your schedule.yml file (by deleting it and reloading the plugin) for better explanations.
After this update, users will notice a new schedules folder. Do not edit the files within this folder unnecessarily because they are used to properly maintain and persist repeated task timings even through server failures, crashes or any reloads (basically a safety mechanism of sorts)
If you need any help with scheduling, please do not hesitate to reach out to me on my discord. Enjoy the update!^^
Huge feature addition that allows highly customisable scheduling of tax collections within the schedule.yml file!
Detailed explanations and examples have been provided in schedule.yml itself but this change adds the following 3 new commands:
/quicktax schedule start
/quicktax schedule stop
/quicktax schedule view
This adds a whole lot of convenience for managing the economy on your server, just make sure to read the documentation in detail to not misconfigure your schedules! Owing to the complexity of this scheduling, if you bump into any issues or need help, do reach out to me on discord!
Minor Additions:
The collect command has been removed and is replaced with 3 separate new commands: collectall, collectrank and collectbal
Given the change in the above collect command, users no longer have to specify the type of tax collection to use in the config (much easier to do it through commands!)
The collectname command now takes in a name argument and amount argument instead of using the default config for collectall (much more convenient!)
Spanish translation is now included with the plugin - simply change en.yml to es.yml in the config
The /qt alias has been added as a shorthand for the plugin base command (even more convenience!)
Fixed:
Many miscellaneous bug fixes, frankly too hard and many to keep track off but I've fixed up quite a couple of things along the way^^
Notes:
You will have to regenerate your config file and language file or manually add in the missing fields for this update. I apologise for the many inconvenience but I've restructured the code a bit and future updates should be much less troublesome^^
Permissions and commands have also been updated on the main page
Lastly, this update brings about the long awaited schedule feature that should bring about a lot of convenience. I have also refactored various parts of the code to streamline and improve performance^^
Should you have any suggestions or issues, again please do reach out to me on discord. I really hope you will all find this plugin useful!^^ Cheers!
New stats feature to track the amount of taxes paid (toggle-able if you are worried about performance, disabled by default)
New editable message file (with minimal placeholders) to customize your own plugin messages (or provide translations)!
Plugin now supports 1.11-1.17!
Fixed:
Fixed a bug where a success message is shown despite collecting tax from non-existent player.
Fixed an error related to the plugin not loading grief prevention properly.
Fixed an error which allowed for negative taxes.
Notes:
If you were using the previous version, this update introduces 2 new lines of configurations into the config.yml file:
track-stats (a boolean indicating whether you want stats to be tracked)
lang-file (a string indicating the language file to use)
It is important that you include these 2 new lines into your existing configuration file. Alternatively, you may refer to the updated default configuration file on the plugin main page.
Permissions and commands have also been updated on the main page.
Lastly, do feel free to share any suggestions/improvements for the plugin!