❗️**The plugin remains fully compatible with data from version 3.0.4 and earlier. Before making any modifications, a backup is automatically created, ensuring a seamless and secure migration to the latest version without data loss.** ❗️
# **New Features & Improvements**
## New goals requirements
Goals can now have customizable requirements that must be met to achieve them. A new "Requirements" section in the goals settings GUI allows you to configure:
- **Time requirement** - Previously mandatory, now optional and can be set to none
- **Permission requirements** - Set group or single permissions (e.g., group.newbie) that players must have
- **Placeholder conditions** - Create boolean conditions using PAPI placeholders from this plugin or others, supporting operators: `==`, `!=`, `>`, `<`, `>=`, `<=`. Includes special `PLAYER_NAME` placeholder for player-specific comparisons (e.g., %PTM_nickname_top_1% == `PLAYER_NAME` for leaderboard-based goals)
All configured requirements must be satisfied simultaneously to receive the reward.
## New GUI sections for goals and join streaks rewards
Goals GUI has been redesigned with significant improvements:
- **Removed Anvil-based GUIs** - Replaced with more customizable chat-based input systems
- **New goal creation method** - Removed `/playtimegoal set` subcommand in favor of a "Create New Goal" button directly in the GUI for easier access
For both goals and join streak GUIs:
- **Reorganized rewards section** - Previous permissions and commands have been moved to a dedicated "Rewards" section within the goal/join streak reward settings GUI for better organization
## Negative playtime values reverted
The restriction on negative playtime values has been removed. Players can now have their playtime reduced below 0 using the /playtime remove command, with values going as low as `-Long.MAX()` value for maximum flexibility in playtime management.
## New translation options
Added new customizable message configurations for playtimetop command, namely:
- Permission denied messages - Custom message when players lack command permissions
- Page navigation messages - Error messages for invalid page numbers and non-existent pages
- Argument validation - Custom message for invalid command arguments
- Player data messages - Messages for when no players have joined and data loading errors
These lines will be automatically added into your `Translations/Commands/commands-config.yml` without interfering with previous values of other fields.
## New playtimejoinstreak set subcommand
A new `set` subcommand for `/playtimejoinstreak` has been added, syntax:
`/playtimejoinstreak set <playername>|* <value>`
This will set the target player's relative join streak to the specified value.
# **Bug Fixes**
- /playtime `remove` subcommand now removes playtime correctly
- /playtime reset `all` subcommand now resets every database record as intended.
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }