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 below. The new format offers much more flexibility, including accurate predictions for the paydays.
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.
What is PuzzlePayday
PuzzlePayday is a premium version of the Payday plugin. It was created to give salaries to players on your server. The plugin is highly customizable: you can configure almost everything, including time intervals, salary amounts, messages, group salaries, offline salaries with groups, and more.
This plugin is safe for servers with a large number of players online at the same time. It uses fast, multithreaded logic to process payments efficiently. You can also adjust the plugin’s performance to suit your specific requirements using a dedicated configuration file.
Most features and differences compared to the Lite version can be found in the “Features” section below.
Contacts
If you want new features added to this plugin, feel free to suggest them; I will try to implement them if they are interesting and useful. If you have any questions about using this plugin or encounter any bugs, you can contact me on my Discord channel.
Flexible payday configuration: start time, payment interval, and salary amount.
Fully customizable messages for players via configuration files.
Permission-based control over who can receive payday rewards and which salary distribution by groups with different amounts per group.
Custom group display names.
Support for groups even without LuckPerms (custom permission-based groups).
Customizable money format (shared across Puzzle plugins via PuzzleLib).
Commands can be executed for every player during online payday.
Offline payday support (requires Vault and Economy. Can work without permission plugins with limitations in unsafe mode, so I highly recommend you to use permission plugin for this feature).
Ability to use group salaries for offline payday with configurable reduction percentage.
Option to disable online payday and pay only offline players.
AFK player ignore option during payday.
Customizable title messages and sounds during payday.
Streak Bonus system to reward players with a salary multiplier for receiving consecutive paydays in a single session (PERMANENT mode only).
A lot of placeholders related to payday information.
HEX and gradient color support in messages.
Payment history logging to file.
/payday reschedule command to reload config and reschedule payday without server restart.
Features (Premium Version):
All features from the Lite version.
Advanced payday processing with lag protection for both online and offline paydays to maintain stable TPS.
Extremely fast and safe processing for large servers (1000+ online and 20,000+ offline players has been tested).
Fully customizable /payday command for players.
Expanded placeholder system.
Database integration for payday data storage.
Multi-group engine: support for players with multiple ranks. Choose from 5 calculation modes (HIGHEST, LOWEST, SUM, HIGHEST_PAYMENT, LOWEST_PAYMENT) and use IgnoreSum to fine-tune individual rank contributions.
Offline messages: configurable messages sent to players when they join the server after earning offline payday.
Offline payday limit to control the maximum amount a player can earn while offline. Permission to bypass offline payday limit: puzzlepayday.receive.offline.overlimit.
Playtime requirement for online payday rewards. Permission to bypass playtime requirement: puzzlepayday.receive.notime.
Group-specific command execution.
{commands} placeholder to control where command output messages appear (The main problem is that commands are very different in every plugin and I can't control it from every external plugin, so that's why this feature has been added).
performance.yml for manual tuning of advanced processing logic (Can be very helpful for servers with large amount of online/offline players or when a lot of commands from external plugins are used).
Silent console mode to redirect command spam into log files and keep console clean (Works only when external plugins use traditional logger system).
Streak Bonus system to reward consecutive paydays with two calculation modes (INTERVAL and PERMANENT) and a customizable save-time for temporarily disconnected players.
Weekend Bonus multiplier to automatically increase salaries on Saturdays and Sundays.
Lucky Bonus system with a customizable percentage chance to grant players an extra multiplier on their payday salary.
Fully modular bonus design: every bonus (Streak, Weekend, Lucky) can be independently enabled, disabled, and configured.
Bonus-specific messages and command execution to run additional commands and messages when a player receives a specific bonus.
Dependencies
Required:
PuzzleLib 1.1+ - all Puzzle plugins need this to work.
Optional (external plugins for extended features):
Vault and any Economy plugin compatible with Vault (such as EssentialsX) - adds the ability to pay paydays with money and add offline payday feature; otherwise, only command rewards will be available for online payday.
LuckPerms - adds the ability to use faster and safer logic to salary by groups; otherwise, custom groups logic will be used.
EssentialsX - adds the ability to use AFK ignore function.
PlaceholderAPI - adds the ability to use placeholders from the list below.
Commands
/payday reload | [admins] Reload the plugin.
/payday reschedule | [admins] Reload the plugin and reschedule the payday scheduler (use this to change the salary time when the server is running after changing the Period section in the config).
/payday give | [admins] Give payday once. (It doesn’t affect periodic payday).
/payday | Command for players with information about played time, time until the next payday, or other customized info.
Permissions
puzzlepayday.admin | Use admin commands.
puzzlepayday.receive | Receive salary at payday time (enabled for the default group).
puzzlepayday.receive.afk | Receive salary even if the AFK ignore function is enabled and the player is AFK.
puzzlepayday.receive.notime | Receive salary even if time checking is enabled and the player hasn’t played enough time to receive payday.
puzzlepayday.receive.offline.groups | Receive group salary in offline payday.
puzzlepayday.receive.offline.overlimit | Receive offline salary over the limit if enabled.
Placeholders
%puzzlepayday_time% |
Current server time. %puzzlepayday_time_left% |
Time left until the next payday. %puzzlepayday_time_left_minutes% |
Time left until the next payday in minutes. %puzzlepayday_time_next_payday% |
Time of the next payday. %puzzlepayday_datetime_next_payday% |
Date and time of the next payday.
%puzzlepayday_time_played% |
Player’s played time in minutes. %puzzlepayday_time_required% |
Required playtime to receive a payday. %puzzlepayday_time_remaining% |
Remaining playtime needed to receive a payday.
%puzzlepayday_group_name% |
Player’s group name. %puzzlepayday_group_displayname% |
Player’s group display name.
%puzzlepayday_salary_standard% |
Standard payday salary. %puzzlepayday_salary_standard_raw% |
Standard payday salary (raw). %puzzlepayday_salary_group% |
Current group bonus amount. %puzzlepayday_salary_group_raw% |
Current group bonus amount (raw). %puzzlepayday_salary_total% |
Current total salary. %puzzlepayday_salary_total_raw% |
Current total salary (raw). %puzzlepayday_salary_total_no_bonus% |
Current total salary without bonuses. %puzzlepayday_salary_total_no_bonus_raw% |
Current total salary without bonuses (raw). %puzzlepayday_bonus_streak% |
Last received streak bonus. %puzzlepayday_bonus_streak_raw% |
Last received streak bonus (raw). %puzzlepayday_bonus_weekend% |
Last received weekend bonus. %puzzlepayday_bonus_weekend_raw% |
Last received weekend bonus (raw). %puzzlepayday_bonus_lucky% |
Last received lucky bonus. %puzzlepayday_bonus_lucky_raw% |
Last received lucky bonus (raw).
%puzzlepayday_streak% |
Current player streak count. %puzzlepayday_streak_remaining% |
Paydays remaining to get the next streak bonus. %puzzlepayday_streak_required% |
Configured streak interval required for bonus. %puzzlepayday_streak_multiplier% |
Configured streak multiplier. %puzzlepayday_weekend_active% |
Is weekend bonus active? (true/false). %puzzlepayday_weekend_active_next% |
Will weekend bonus be active next payday? (true/false). %puzzlepayday_weekend_multiplier% |
Configured weekend multiplier. %puzzlepayday_lucky_chance% |
Configured chance for lucky bonus. %puzzlepayday_lucky_multiplier% |
Configured lucky multiplier.
%puzzlepayday_stats_last_online_paid% |
Number of online players paid. %puzzlepayday_stats_last_offline_paid% |
Number of offline players paid. %puzzlepayday_stats_last_afk% |
Number of AFK players ignored. %puzzlepayday_stats_last_notime% |
Number of players without enough playtime. %puzzlepayday_stats_last_streaked% |
Number of players with streak bonus. %puzzlepayday_stats_last_weekend% |
Number of players with weekend bonus. %puzzlepayday_stats_last_lucky% |
Number of players with lucky bonus. %puzzlepayday_stats_last_online_duration_seconds% |
Time spent processing online payday. %puzzlepayday_stats_last_offline_duration_seconds% |
Time spent processing offline payday. %puzzlepayday_stats_last_duration_seconds% |
Total processing time in seconds. %puzzlepayday_stats_last_online_maxsalary% |
Highest salary paid in online payday. %puzzlepayday_stats_last_online_maxsalary_raw% |
Highest salary paid in online payday (raw). %puzzlepayday_stats_last_online_given% |
Total money given to online players. %puzzlepayday_stats_last_online_given_raw% |
Total money given to online players (raw). %puzzlepayday_stats_last_offline_maxsalary% |
Highest salary paid in offline payday. %puzzlepayday_stats_last_offline_maxsalary_raw% |
Highest salary paid in offline payday (raw). %puzzlepayday_stats_last_offline_given% |
Total money given to offline players. %puzzlepayday_stats_last_offline_given_raw% |
Total money given to offline players (raw).
These values are calculated dynamically based on the player's current status. %puzzlepayday_next_salary_group% |
Calculated group salary. %puzzlepayday_next_salary_group_raw% |
Calculated group salary (raw). %puzzlepayday_next_salary_total% |
Calculated total salary. %puzzlepayday_next_salary_total_raw% |
Calculated total salary (raw). %puzzlepayday_next_salary_total_no_bonus% |
Calculated total salary without bonuses. %puzzlepayday_next_salary_total_no_bonus_raw% |
Calculated total salary without bonuses (raw). %puzzlepayday_next_bonus_streak% |
Calculated streak bonus. %puzzlepayday_next_bonus_streak_raw% |
Calculated streak bonus (raw). %puzzlepayday_next_bonus_weekend% |
Calculated weekend bonus. %puzzlepayday_next_bonus_weekend_raw% |
Calculated weekend bonus (raw).
Additional information
You can find additional useful information regarding Puzzle plugins on the
PuzzleLib page: