How thegabr0/playtimemanager works
PlayTimeManager is a Minecraft server plugin for tracking player playtime and turning it into statistics, rewards, and administrative actions. The main workflow starts with server lifecycle and player events, maintains online and cached player state, and persists that state through configurable database backends. Separate product branches provide goals, join-streak rewards, commands and GUIs, placeholders, AFK detection, and LuckPerms actions. The supplied excerpts and source index show some wiring directly; links for documented but unsampled capabilities are marked dashed and unverified.
Main entry points: PlayTimeManager.java Plugin lifecycle · OnlineUsersManager.java Online user manager · DatabaseHandler.java Database access · GoalsManager.java Playtime goals
Components 20
Plugin runtime
- Plugin lifecycle
src/main/java/me/thegabro/playtimemanager/PlayTimeManager.java - Configuration
src/main/java/me/thegabro/playtimemanager/Configuration.java - Data and config upgrades
src/main/java/me/thegabro/playtimemanager/Updates/UpdateManager.java
Player tracking
- Player events
src/main/java/me/thegabro/playtimemanager/Events - Online player state
src/main/java/me/thegabro/playtimemanager/Users/OnlineUser.java - Online user manager
src/main/java/me/thegabro/playtimemanager/Users/OnlineUsersManager.java - Cached player records
src/main/java/me/thegabro/playtimemanager/Users/DBUsersManager.java
Goals and rewards
- Playtime goals
src/main/java/me/thegabro/playtimemanager/Goals/GoalsManager.java - Goal rules
src/main/java/me/thegabro/playtimemanager/Goals/Goal.java - Join-streak rewards
src/main/java/me/thegabro/playtimemanager/JoinStreaks/ManagingClasses/JoinStreaksManager.java - Reward registry
src/main/java/me/thegabro/playtimemanager/JoinStreaks/ManagingClasses/RewardRegistry.java
Player and admin interfaces
- Commands
src/main/java/me/thegabro/playtimemanager/Commands/PlayTimeCommandManager/PlayTimeCommandManager.java - Admin and player GUIs
src/main/java/me/thegabro/playtimemanager/GUIs - Playtime formatting
src/main/java/me/thegabro/playtimemanager/Customizations/PlaytimeFormats/PlaytimeFormat.java
Integrations and storage
- PlaceholderAPI expansion
src/main/java/me/thegabro/playtimemanager/ExternalPluginSupport/PlaceHolders/PlayTimePlaceHolders.java - AFK detection
src/main/java/me/thegabro/playtimemanager/ExternalPluginSupport/AFKManager.java - LuckPerms actions
src/main/java/me/thegabro/playtimemanager/ExternalPluginSupport/LuckPerms/LuckPermsManager.java - Database access
src/main/java/me/thegabro/playtimemanager/Database/DatabaseHandler.java - SQL backends
src/main/java/me/thegabro/playtimemanager/Database/DatabaseTypes
Other components
- Minecraft server
Connections 25
- Minecraft server → Plugin lifecycle: loads plugin
- Plugin lifecycle → Configuration: loads config
src/main/java/me/thegabro/playtimemanager/PlayTimeManager.java - Plugin lifecycle → Data and config upgrades: initializes updates
src/main/java/me/thegabro/playtimemanager/PlayTimeManager.java - Plugin lifecycle → Commands: registers commands
src/main/java/me/thegabro/playtimemanager/PlayTimeManager.java - Plugin lifecycle → AFK detection: initializes detection
src/main/java/me/thegabro/playtimemanager/PlayTimeManager.java - Plugin lifecycle → PlaceholderAPI expansion: registers expansion
src/main/java/me/thegabro/playtimemanager/PlayTimeManager.java - Plugin lifecycle → Online user manager: initializes tracking
src/main/java/me/thegabro/playtimemanager/PlayTimeManager.java - Plugin lifecycle → Database access: opens database
src/main/java/me/thegabro/playtimemanager/PlayTimeManager.java - Plugin lifecycle → Player events: registers listeners
src/main/java/me/thegabro/playtimemanager/PlayTimeManager.java - Player events → Online user manager: updates player state
src/main/java/me/thegabro/playtimemanager/Events/QuitEventManager.java - Online user manager → Playtime goals: checks player goals
src/main/java/me/thegabro/playtimemanager/Users/OnlineUsersManager.java - Playtime goals → Goal rules: loads and checks
src/main/java/me/thegabro/playtimemanager/Goals/GoalsManager.java - Commands → Cached player records: requests player data
src/main/java/me/thegabro/playtimemanager/Commands/PlayTimeCommandManager/PlayTimeCommandManager.java - Online player state → Database access: persists player state
src/main/java/me/thegabro/playtimemanager/Users/OnlineUser.java - Cached player records → Database access: loads player records
src/main/java/me/thegabro/playtimemanager/Users/DBUsersManager.java - Database access → SQL backends: creates backend
- Plugin lifecycle → Join-streak rewards: initializes rewards
src/main/java/me/thegabro/playtimemanager/PlayTimeManager.java - Join-streak rewards → Reward registry: loads reward definitions
src/main/java/me/thegabro/playtimemanager/JoinStreaks/ManagingClasses/JoinStreaksManager.java - Plugin lifecycle → Admin and player GUIs: registers interfaces
src/main/java/me/thegabro/playtimemanager/PlayTimeManager.java - Plugin lifecycle → Playtime formatting: initializes formats
src/main/java/me/thegabro/playtimemanager/PlayTimeManager.java - AFK detection → Online player state: excludes idle time
- Playtime goals → LuckPerms actions: grants configured rewards
- Join-streak rewards → LuckPerms actions: grants configured rewards
- PlaceholderAPI expansion → Online user manager: reads player state
- Commands → Playtime formatting: formats playtime