๐ฅ๏ธFor Developers
Last updated
PlayerDataHistory does not ship a public API artifact or service provider. This page documents its architecture and storage schema so you can integrate by reading the database directly.
The plugin is split into platform-independent and platform-specific modules:
common โ the shared core: command framework, storage layer, action logging, configuration and localisation.
bukkit / bukkit-loader โ the Bukkit/Spigot/Paper platform and its jar-in-jar loader.
velocity โ the Velocity proxy platform.
The core is built on a LuckPerms-style foundation: a JarInJar loader unpacks the plugin and downloads its runtime dependencies on first start, a Storage abstraction sits over the SQL implementations (H2 and MariaDB via HikariCP), and buffered actions are flushed to storage on the configured interval.
All tables use the configured data.table-prefix (default datahistory_) in place of {prefix}. Every log table references players(id) by user_id.
{prefix}playersid
INT (PK)
Internal user id
username
VARCHAR(16)
Last known username
uuid
VARCHAR(36)
Unique
date
DATETIME
First seen
{prefix}sessionsid
INT (PK)
user_id
INT (FK)
โ players.id
ip
VARCHAR(32)
Connecting IP
connect
DATETIME
Join time
disconnect
DATETIME
Leave time (null while online)
playtime
BIGINT
Session playtime
client_brand
VARCHAR(64)
Client brand, if known
version
INT
Protocol version
{prefix}serversuser_id
INT (FK)
โ players.id
depart
VARCHAR(32)
Server left
arrive
VARCHAR(32)
Server joined
date
DATETIME
When the switch happened
{prefix}commandsuser_id
INT (FK)
โ players.id
command
VARCHAR(512)
Command executed
server
VARCHAR(64)
Origin server
date
DATETIME
{prefix}messagesuser_id
INT (FK)
โ players.id
message
VARCHAR(512)
Chat message
server
VARCHAR(64)
Origin server
date
DATETIME
datahistory_web_usersStores web-panel accounts created with /dh register (username, hashed password).
Last updated