PlayerLogger

PlayerLogger logs player joins, quits, commands, playtime, and online status to a SQLite or MySQL database and provides admin commands for statistics and management.

30

PlayerLogger

PlayerLogger – Advanced Playtime & Command Logging

PlayerLogger is a lightweight yet powerful Paper plugin that logs player activity to a database, including joins, quits, commands, total playtime, and online status.

Designed for server administrators who need accurate tracking, moderation insights, or statistical data.

Supports SQLite and MySQL out of the box.

What Does PlayerLogger Track?

- Player Join & Quit Events - Total Playtime (with live session calculation) - Online / Offline Status - Command Execution Logs - First Seen & Last Seen timestamps - Historical Session Data

All data is stored efficiently in a database with optimized indexing for performance.

Features

⚡ Optimized for Paper 1.21+

💾 SQLite (default) or MySQL support

🔄 Real-time playtime calculation

🌍 Multi-language support (English & German)

📃 Configurable command filtering (e.g., ignore /login, /register)

🧵 Async database handling (non-blocking)

🧹 Automatic offline correction after crashes

📈 Top 10 playtime ranking

✒️ Admin tools for adjusting or deleting data

Commands

``` /plog stats /plog stats <player> /plog top /plog reload /plog delete <player> /plog add <player> <time> ``` Permissions included for each subcommand.

Permissions

Player Permissions

| Permission | Description | | :----------------------: | :------------------------------------: | | playerlogger.stats | Allows viewing own playtime | | playerlogger.stats.other | Allows viewing other players' playtime | | playerlogger.top | Allows viewing the top ranking |

Admin Permissions

| Permission | Description | | :-----------------------: | :--------------------------------: | | playerlogger.Admin.reload | Allows reloading the plugin | | playerlogger.Admin.delete | Allows deleting stored player data | | playerlogger.Admin.add | Allows viewing the top ranking |

Database Structure

Tables: ``` player sessions command_logs ``` - UPSERT support (MySQL + SQLite) - Indexed queries - Foreign keys - Optimized schema for large servers

Configuration

- SQLite or MySQL - Command logging toggle - Join/Quit logging toggle - Command blacklist filter - Language selection

config.yml

``` database: type: SQLITE # SQLITE or MYSQL sqlite-file: playerlogger.db

mysql: host: localhost port: 3306 database: minecraft user: minecraft password: ""

language: de #de or en language-auto: false

logging: join-quit: true commands: true

command-filter: enabled: true deny-prefixes: - "/login" - "/register" - "/changepassword"

```

Use Cases

- Staff activity monitoring - Player engagement tracking - Server statistics - Moderation investigation - Playtime-based rewards - Admin auditing

Performance

- Uses a dedicated async database thread - No main-thread blocking queries - Safe shutdown handling - Scales well for medium to large servers

Compatibility

- Paper 1.21+ - Java 21 - Works on Windows, Linux, and hosting providers - Compatible with MySQL & MariaDB

Why Choose PlayerLogger?

Unlike simple playtime plugins, PlayerLogger provides:

- Command history logging - Persistent session tracking - Database-level integrity - Clean and structured codebase - Multilingual support

If you're looking for a reliable, database-driven player tracking solution for Paper servers — PlayerLogger delivers.

ADS