❗️The plugin remains fully compatible with data from version 3.1 and later. 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
Revamped Goals System with Flexible Scheduling
The goals system has been completely redesigned with individual completion check schedules for each goal:
- Individual scheduling per goal – Each goal now operates independently instead of relying on a single global schedule
- Two scheduling types available:
- Seconds-based intervals – Traditional timer system (schedules reset on server restart)
- Cron-based scheduling – Advanced time-based scheduling with automatic restoration after server restarts
- Cron scheduling advantages:
- Automatically restored and continue running at defined times after server restarts
- Precise control over when goals are checked (specific times, days, etc.)
- Cron scheduling limitations:
- If a scheduled time is missed (due to maintenance or downtime), that execution will be skipped and not retried automatically
- Repeatable Goals – Goals can now be set as repeatable, allowing players to:
- Complete the same goal multiple times
- Earn rewards each time the conditions are met
- Offline Reward Delivery – Goals now support rewarding players even when they're offline:
- When enabled, players who meet goal requirements while offline automatically receive rewards on their next login
- Current limitation: Only players who were online during the last completion check interval are tracked for reward eligibility
- Example: If a goal checks daily and a player doesn't join that day, they won't receive rewards for that period—even if conditions were met while offline
- New Goal Management Command – Introduced /playtimegoal <goalname> checknow for immediate goal verification:
- Manually trigger a completion check for any goal
- Restarts the goal's check schedule
- Replaces the previous method of using /playtimereload for goal checks
Enhanced Playtime Format System
- Distribute Removed Time Option – Added Distribute Removed Time configuration field to control how omitted time units are handled
- When enabled:
- Time from hidden larger units is converted and added to the next visible unit
- Example: 1 day, 12 hours, 1 minute with format %h%{hours}, %m%{minutes} displays 36h, 1m
- The 1 day converts to 24 hours and adds to the existing 12 hours
- When disabled:
- Hidden units are simply ignored
- Example: Same playtime displays 12h, 1m
- The day is hidden without conversion
AFK Detection Integration
- AntiAFKPlus support – Integrated AntiAFKPlus as an additional AFK detector option alongside EssentialsX and Purpur
Database System Overhaul & Optimizations
- Complete rewrite of the database management system:
- Future database support – Architecture now supports different database types (e.g., MySQL) for future releases
- Async data retrieval – Player data is now fetched completely asynchronously. These async improvements ensure smoother gameplay experiences, faster load times, and better scalability across all database operations
- Enhanced caching system – Improved data optimization for better performance
Configuration Reorganization
- Relocated common command-related options to commands.yml for better organization:
- prefix
- playtime-message-self
- playtime-message-others
- Added additional translation options for error-related messages in the commands configuration
Join Streak Rewards GUI Enhancements
- Expanded placeholder support in the join streak rewards claiming GUI:
- %PLAYER_NAME%, %REQUIRED_JOINS%, and %JOIN_STREAK% are now usable in:
- reward-message field
- description field
- reward-description field
Support for version 3.0.4 dropped
- Now it is no longer possible to update from 3.0.4 directly to 3.6 version. A mid update to 3.5.4 is necessary to then update to future versions.
Bug fixes
- Fixed a rare bug where the onlineUser entry was missing during the join event, causing data inconsistency issues.
- Various fixes and improvements all around