New permissions have been added for bonuses. These are disabled by default. If you were previously using these features, please ensure you grant these permissions to your players or default groups to maintain the expected functionality.
The group calculation logic has been completely updated and now includes specific calculation modes for online and offline paydays separately.
New configuration options have been added. Existing configurations will be automatically migrated to the new format upon startup — no manual file recreation is required. (To see the new comments with instructions for existing keys, use the #load_info feature from PuzzleLib).
Main changes:
Added multi-group support with 5 calculation modes: HIGHEST, LOWEST, SUM, HIGHEST_PAYMENT, LOWEST_PAYMENT. You can now choose exactly how players with multiple ranks receive their salaries.
Added IgnoreSum setting for groups. This allows you to exclude specific groups from the SUM calculation mode while still allowing them to function as standalone ranks.
Expanded the message system:
Added [group_list]: A new tag that automatically duplicates your message line for every group a player receives.
Added [group_only_<n>]: Target specific group indices in your messages.
Added new placeholders for multi-group setups:
Now you can access specific group data using indices (e.g., %puzzlepayday_group_name_1%, %puzzlepayday_group_amount_1%).
Added %puzzlepayday_group_count% to display the number of active groups.
Added next_ prefixed placeholders (e.g., %puzzlepayday_next_group_name%) to see live group calculations before the actual payday arrives.
Added _highest and _lowest suffixes to group placeholders to always pull data from the most/least prioritized group, regardless of your chosen calculation mode.
New permissions have been added:
puzzlepayday.bonus.streak — grants the ability to receive Streak bonuses.
puzzlepayday.bonus.weekend — grants the ability to receive Weekend salary multipliers.
puzzlepayday.bonus.lucky — grants the ability to trigger the Lucky chance bonus.
puzzlepayday.receive.offline.noreduce — allows players to receive their full offline salary without the reduction percentage applied.
The placeholder system has been completely reworked. While legacy placeholders are still fully supported (meaning your current scoreboards, menus, and external usages won't break), I highly recommend reviewing the placeholders you are using and migrating to the new ones listed on the plugin page. The new format offers much more flexibility, including accurate predictions for the paydays.
All new configuration sections, along with their instructions and comments, will be automatically added to your existing config.yml during the update. You don't need to delete or recreate your config file!
Main changes:
Added a new Streak Bonus system. You can now reward players for receiving multiple paydays in a row. It supports two modes: INTERVAL (bonus every X paydays) and PERMANENT (bonus for every payday after reaching X streak). It also includes a customizable save-time to keep streaks alive when players temporarily disconnect.
Added a Weekend Bonus. You can now enable an automatic multiplier to increase salaries during Saturdays and Sundays.
Added a Lucky Bonus. Introduces a customizable percentage chance for players to receive an extra multiplier on their payday salary.
All these new bonuses are applied only to online paydays and are calculated from the no-bonus salary (standard + group).
Bonuses are disabled by default, so you need to enable them in the config if you want to use them.
All new bonus systems are completely modular: every bonus can be independently enabled, disabled, and configured.
You can also use commands in bonuses. If a player receives a bonus, its specific commands will be added to the list of all commands executed for that player during payday.
Payday messages now support new special prefixes ([streak], [weekend], [lucky]). This allows you to send specific messages only to players who trigger those exact bonuses.
Placeholders have been massively reworked and expanded. You can find a lot of new placeholders in the description of this plugin.