⚠️ WARNING FOR 3.5.2 USERS:
A critical bug has been fixed where players’ AFK time was being subtracted twice when ignore-afk-time was enabled. This caused total playtime to be undercounted after players quit the server. Updating to this version is strongly recommended to ensure accurate playtime tracking.
❗️**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**
## AFK detection system is here!
Introduced AFK detection capabilities with external plugins integration:
- **`afk-detection-plugin`** – Configure which plugin will serve as the AFK detector that PTM will hook into (currently only EssentialsX is supported)
- **`ignore-afk-time`** – When enabled, AFK time is excluded from total playtime calculations used throughout the plugin (goals requirements, displays, etc.)
- Enhanced player information display with dedicated AFK time tracking in the new stats GUI
- Added new PAPI placeholders for AFK time monitoring:
- `%PTM_afk_playtime%`, `%PTM_afk_playtime_#%`, `%PTM_afk_playtime_<nickname>%`, `%PTM_afk_playtime_<nickname>_#%`
## New customizable stats GUI system
Completely redesigned the stats display system with a flexible, view-based GUI:
- **Command restructure:** `/playtime <target> stats` has been converted to `/playtimestats <target>` with enhanced functionality
- **View-based customization:** GUI adapts based on the player accessing it and their permission level
- **Owner view:** Full access to personal statistics when players check their own stats
- **Player view:** Public statistics display when viewing other players
- **Staff view:** Enhanced administrative details for users with `playtime.others.stats.staff` permission
- **New permission system:** Updated permissions structure for granular access control
- `playtime.stats` – Access to `/playtimestats` (`/ptstats`) | AKA access to personal statistics (enabled by default)
- `playtime.others.stats` – Access to `/playtimestats <target>` (`/ptstats <target>`) | AKA View other players' statistics (disabled by default)
- `playtime.others.stats.staff` – Enhanced staff view with administrative details
- **Console compatibility:** Text-based statistics output for console usage with detailed formatting instead of in-game GUI.
- **Configuration location**: The new stats GUI can be found in `Customizations/GUIs/GUIs-config.yml`
- **Wiki documentation**: A detailed guide on the views system and customization tutorial is available in the wiki
## Internal placeholder format update
Updated internal placeholder formatting for improved consistency:
**Format change**: Internal placeholders have been converted from `{placeholders}` to `%PLACEHOLDER%`.
Do not confuse internal placeholders with PAPI placeholders, which maintain the format `%PTM_PLACEHOLDER%`.
# Bug fixes
- Fixed `PTM_Rank` placeholder showing `0` instead of `placeholders.not-in-leaderboard-message` config field (again)
- Fixed a case where, if the `first_join` db field is null for a player, a double join streak increment is given.
- Fixed tab completion for `/playtime` command
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" }