Plan - Player Analytics, Sponge/Bukkit/Bungee support


This is a discussion topic for the Ore project, Plan. View the full project on Ore for downloads and more information.


Player Analytics is the ultimate server staff tool to monitor how players are playing your server.
It includes a Web View for Player Activity Graphs, Information, Lists and much more!

The plugin gathers data to a local database (SQLite/MySQL) via Listeners.
This data is then analyzed on the spot and displayed via the WebServer.

Please report any issues here

This is a port of Spigot version of the plugin. All of the Bukkit documentation on Github is valid for this version.

This version is for Sponge servers - If you want to install this plugin on Bungee or Spigot servers as well, get the proper version on Spigot


External Connections

WebServer (Disabled by default):The plugin hosts a WebServer on configurable port (default 8804)
The WebServer can and should be secured with a login by installing HTTPS Certificate on the plugin.

Geolocations (Disabled by default): The plugin is capable of downloading MaxMinds GeoIP Database - This can be enabled in the config under Data.Geolocations

Version Check: The plugin will check for new version via Spiget and from Github on enable.



You can follow Bukkit Set-Up guide to install Plan on Sponge.

WebServer is disabled by default, enable it with WebServer.DisableWebServer: false
Geolocation is disabled by default, enable it with Data.Geolocations: true

Looking for a server wrapper

A new version has been released for Plan, it is available for download here.

Player Analytics by Rsl1122
Change log 4.2.1 (Sponge Release)


  • MySQL now available!
  • Fixed /plan reload command
  • Fixed other small things
    • Fixed Database open fail logging causing an exception that prevented seeing the actual error.
    • Fixed locale files not being shaded in the jar
    • Replaced deprecated StrSubstitutor with StringSubstitutor


neato! I’ve been looking for something like this for ages. Thanks for giving sponge some love <3


Awesome ! I might take inspiration from your html code :slight_smile:


A new version has been released for Plan, it is available for download here.

Change log 4.3.0

IPs in the database will be anonymised!
Some Plan logs and inacative users may be deleted by the update.

  • Per day logs Error logs are now per day logs. Added a setting for automatic log removal after x days. (7 by default)

  • Clean inactive players Added an option to remove player’s data after they’ve been inactive for x days. (180 by default)

  • Database schema change: IPs now anonymised (last 16 bits) and hashed to keep same IPs from clogging up the db.

This update contains features that improve GDPR compliance.

In order to make your life easier, I decided to write down the data Plan gathers. This is just for disclosure to your users and is optional.

If you get any errors or have issues don’t be afraid to join the Support on Discord or report the issue (This one is easier for me). Cheers!


bug that removed all data was present so update was removed


A new version has been released for Plan, it is available for download here.

Fixed a critical bug that caused active players to be cleaned from the database


A new version has been released for Plan, it is available for download here.

Change log 4.3.2


  • Player retention calculation now takes into account when the player registered (Improves both month and week calculation for newer players)
  • Player retention prediction now compares new players to average values of all previous players, and determines stickiness from distance between averages of those that stuck around and those who didn’t. (Old compared values to other new players, checking if they’re like 50% of those players that were retained.)
  • Improved the performance impact on MySQL CPU of Bungee geolocation fetch
  • DeathListener now supports wider range of projectiles
  • Security: ConnectionSystem now uses TLSv1.2 instead of SSL
  • Removed “Removed data of x players” log when x = 0


  • Fixed IP table inserting rows every time a player joined
  • Fixed anonymisation of old IPs in IP table
  • Removed produced duplicates from IP table
  • Attempted to fix closed datasource issue on Sponge
  • Fixed Geolocation gathering on Sponge
  • Fixed Processing exceptions not being logged
  • Fixed afk time formatting on server accordion on Player page
  • Fixed wrong link to /players page on /network**/**-page
  • Fixed backup failing if the database contained duplicate sessions caused by old bugs
  • New backup db is now closed properly
  • Improved performance of server specific UUID fetch
  • Fixed /players page not sorting by last seen by default
  • Removed use of Bukkit ChatColor in Analyze and Inspect command (Fixes sponge)

If you get any errors or have issues don’t be afraid to join the Support on Discord or report the issue (This one is easier for me). Cheers!


That’s some great features ! I can’t wait to try it :smiley:


A new version has been released for Plan, it is available for download here.

Data Refactoring Update - Change log 4.4.0

Long time no see! Here is quite massive update to the data object structure of Plan!
In addition to the new structure there are great new features & bugfixes.

Key Features:

Ping Gathering (Bukkit):

Plan now gathers player’s ping on Bukkit based servers. Best, Worst and Average ping is displayed in a graph on Performance tab, as well as on the player’s page. Ping data is stored for 2 weeks.

Ping per Country:

Ping / Country is now displayed on the Geolocations tab in a table.

Unique & New Players Graph:

This graph has been haunting the Online Activity tab for a while, and now it has been implemented. The same data is also visible on the Calendar.

Network Health Info:

Player activity based measures are now available on the network page.
Playerbase Activity Charts are also present

PvP & PvE tab:

Player page now contains a fancy PvP & PvE tab that displays all player kills and deaths as well as Player & Mob KDRs

Country bar chart on Geolocations tabs:

Since hovering over every country can be tedious, now you can see top 20 countries next to the map.

CPU Usage Change:

Old CPU usage method was not actually displaying the CPU usage. New method is now in use that displays the system CPU usage accurately.

Nicknames table Last Seen:

Actions table on Player page has been removed. It’s data has been placed into nickname table.

Font Awesome 5 Icons:

Font awesome has been updated (Thanks @Argetan for the contribution)

New Features:

  • AFK tracking can be ignored with plan.ignore.afk permission
  • PlanBungee can be disabled with /planbungee disable
  • /afk commands are now tracked by AFK Tracker


  • IPv6 addresses now anonymized properly
  • Fixed IP address order in Connection Info table on Player page
  • Activity Index added to /players page
  • Player#isBanned no longer run on server thread
  • Players tables now ordered properly
  • Player page generation is now run on BungeeCord if available.
  • Player Overview tab gets Operator, Ban & Register info added to each server
  • Analysis progress no longer logged on console

Plugin data fixes (Bukkit):

  • Updated AdvancedAchievements hook (Thanks @DarkPyves)
  • McMMO now displays level data on the server page as well.
  • Fixed a Towny bug when Towny didn’t know a player.
  • Multiple fixes to Litebans tables (Table headers, player names, page overflow, ban tag when not banned)
  • Fixed Jobs table header order
  • Changed almost all Kingdoms icons to better fit
  • Fixed Unique Constraint violation related to ProtocolSupport/ViaVersion


  • Fixed some exceptions related to Analysis as a side effect from the refactoring


This was a very large revamp for the data objects in Plan and very important one. The new system allows a lot more flexible expansion and analysis of the existing data.

In addition to this, the Sponge & Bungee set up tutorials have been updated & The plugin has a new fancy icon!

If you get any errors or have issues don’t be afraid to join the Support on Discord or report the issue (This one is easier for me). Cheers!


A new version has been released for Plan, it is available for download here.


  • Fixed Plan randomly running stuff on the main server thread
  • (Bukkit) Fixed Litebans related server page breakage
  • (Bukkit) Fixed Towny tab not showing any towns
  • (Bukkit) Fixed Town Block calculation


Awesome plugin! I did not know that he was on a sponge!


A new version has been released for Plan, it is available for download here.

Bug fixes and Optimizations - Change log 4.4.2

Hello, In this bug fix update the Locale system gets some love and many bugs are fixed. Hopefully the Major bugs are fixed, since they are extremely difficult to reproduce.

paypal Support the Developer


  • Locale System improved, easier to add new messages - Web pages are now translatable through the Locale, so no html changes are necessary.
    • If you have an old locale rename ‘Cmd Usage -’ to ‘Cmd Help -’
    • German locale by Morsmorse
    • Partial Simplified Chinese locale by 佛壁灯 (f0rb1d)
    • Finnish locale by me
  • HikariCP Replaced DHCP2 with HikariCP as connection pool (Bukkit, Bungee), should improve fetch speeds
    • Connections now validated before use to reduce exceptions
  • Database Patching Now patches are applied if they are not already applied, this means if you skip multiple versions in the future, all database patches are applied. Failed applications are also re-applied with this version (Looking at you IP anonymization)
  • Connection System Replaced bare java HttpUrlConnection with Apache HttpClient that has more reliable API in terms of closing resources (No more thread leakage)
  • Font awesome update -> 5.2.0, Thanks to [USER=422592]@Argetan[/USER]
  • Caching layer for page generation 10 second caching layer to reduce repeated page generation database calls on Bungee
  • ‘/’ now redirects to ‘/server’ when using HTTP
  • Litebans tables now display UUID instead of “Unknown to Plan”, also added time issued.

Bug fixes:

  • Major Attempt to fix Stall bug in 4.4.1 caused by Thread starvation (See connection system improvement)
  • Major Attempt to fix Network page hang bug caused by failing database connection pool, occurring more frequently when using External MySQL
  • Major Attempt to fix “Unsupported key” exceptions, possibly caused by improper serialization by JVM
  • Fixed Player online status not updating on Bungee properly
  • Fixed DeathEvent Exception on 1.8.X (Bukkit) when pet kills something
  • Fixed UTF-8 Encoding issue (Umlauts and russian lang now work on website)
  • Fixed Plan on CraftBukkit (Disabled Ping task on CraftBukkit)
  • Fixed Health Index calculation
    • Fixed player retain percentage rounding
    • Fixed server downtime calculation giving values over 30 days
  • Fixed ConcurrentModificationException related to GeoInfoMutator
  • Fixed Sponge PluginData registration
  • Fixed some Litebans PluginData exceptions
  • Fixed CacheInspectPageRequest debug logging an exception on bungee

If any of the major bugs resurface, please Open an issue as soon as possible with as much information as possible, Thanks!

If you get any errors or have issues don’t be afraid to join the Support on Discord or report the issue (This one is easier for me). Cheers!


A new version has been released for Plan, it is available for download here.

Change log 4.4.3


  • Added JSON Export to /player/name/raw and /server/name/raw - Get raw link with /plan m raw <player> or /planbungee raw <player>


  • Simplified Chinese Language finished by f0rb1d
  • Partial RedisBungee support (Supports online player counts)
  • Added bStats to Bungee and Sponge
  • Improved /debug page with tabs, and added Cache information


  • [Major] Fixed thread and socket leakage with proper timeouts
  • Fixed false negative on /plan m setup
  • Fixed inspect page head not displaying sometimes
  • Fixed nickname data truncation
  • Fixed NPE on disable if plugin failed to enable
  • Fixed Nickname LastSeen Patch Application


A new version has been released for Plan, it is available for download here.

Change log 4.4.4


  • /plan m uninstalled [id/name] command to mark servers as uninstalled
    • Marking a server uninstalled stops BungeeCord from attempting to connect to it
    • Re-installed servers will be connected to automatically
  • Two config options for ping gathering delays, server start delay and login delay
  • AdvancedBan support by Vankka


  • Removed DataContainerCache as it was causing large memory usage on networks
  • HikariCP updated to 3.2.0
  • Connection: close added to outbound HTTP connections
  • Reduced player page generation delay from 20s to 5s on login and logout
  • Caches now cleared on disable
  • Network page updated less frequently (Now when you view the page & periodically)
  • Attempt to clean ping data with a filter 0 < ping <= 4000ms
  • Improved ping gathering by changing average to mean
  • AFK ignore permission checked less frequently


  • Fixed Sponge metrics
  • Fixed ConcurrentModificationException related to SessionsMutator
  • Fixed player online status on server switch on networks
  • Fixed longest world time calculation on session accordion
  • Fixed active sessions not displaying on server page
  • Fixed relative links in server.html for FullCalendar.js (Only bug when using a subdirectory rewrite rule on redirection)
  • Fixed Exception when disabling the plugin on server shutdown


A new version has been released for Plan, it is available for download here.

Change log 4.4.5

This update addresses plugin incompatibility issues due to improper shading by splitting Plan into two artifacts. This means that one version will not function on all platforms - Sponge will require a different artifact.

All artifacts are available at - Use this version on Sponge


  • BungeeCord PluginData support: AdvancedBan, BuyCraft, Litebans, ViaVersion
  • Sponge PluginData support: BuyCraft
  • ASkyBlock challenges support to player pages


  • Removed Config from debug page as brute force security concerns were raised & it has not been useful in debugging issues.
  • Updated all PluginData plugins to latest versions


  • Fixed Plan causing LuckPerms to break if another plugin with HikariCP was present (3rd plugin)
  • Fixed Sponge CPU gathering
  • Fixed /plan m uninstalled command not setting servers as uninstalled


A new version has been released for Plan, it is available for download here.

Change log 4.4.6

Thanks to all contributors in this update! :slight_smile:

  • plan.inspect permission changed to plan.inspect.base
  • plan.qinspect permission changed to plan.qinspect.base



  • Reduced memory usage:
    • Player page now rendered on demand instead of on login status change
    • Selective caching in DataContainer
    • ResponseCache now uses Caffeine with 5 minute invalidation - Should reduce memory usage over time by removing unvisited pages.
    • HTML page compression (Unimportant whitespace removed in memory). Speeds up loading & reduces memory usage.
    • Disabled Debug logging in memory temporarily
  • Improvements to DE locale by @Sprungente
  • Named Plan ExecutorService pools
  • PluginData values are now in more sensible order (In order of appearance)


  • Fixed page breakage when using a locale, and odd replacements such as Yesterday -> Jasterday for example.
  • Fixed plan.ignore.afk checking not being reduced.
  • Fixed Extra zeroes time amount formatting when there was 0 second time present.
  • Fixed ConcurrentModificationException related to logs clean task finishing.
  • Fixed MySQL Patch System failiures if two Plan databases were present in the same database software
  • Fixed Last Peak not showing up
  • Fixed Plan WebServer leaking 4 idle threads on a reload
  • Fixed a possible buffer memory leak (InputStream) on first Plan enable in GeolP2 database download code
  • AnalysisContainer no longer held in memory in PluginData objects until next analysis


A new version has been released for Plan, it is available for download here.

Change log 4.4.7

I’ve been working on technical debt goal that should fix memory usage issues, but it’ll take a bit longer to complete and so is not in this update.
Here are things that have been completed in the meanwhile. Special thanks to Vankka :slight_smile:



  • Fixed NPE related to Litebans PluginData on BungeeCord
  • Fixed IPHash database patch failing
  • Fixed PluginData information ordering


A new version has been released for Plan, it is available for download here.

Autumn Cleaning - Change log 4.5…0

This update brings some big changes to the code base, removing a lot of technical debt in the process. This will help writing more tests in the future.
In addition to that, there are some new features that you might like :slight_smile:

Special thanks to all contributors!


  • Free Disk Space tracking on Performance Tab
  • Proxy HTTPS Override This setting can be used if you’re routing Plan traffic through a proxy (like nginx) to remove the need for Java Keystores. More information coming to wiki.
  • Update notification now on the website The notification has been moved from in game to the website for easier use.
  • Partial Velocity support, with help from @Miclebrick, requires another plugin with MySQL Driver shaded in.
  • Made it possible to customize favicon.ico


  • Introduced Dagger a dependency injection framework
  • Removed static usage
  • Updated Plugin Abstraction library. While doing this a few memory leaks were fixed.
  • Network page servers tab now calculated on Bungee server, no more empty servers tab.
  • Added Health Info stuff to Locale
    • German locale updated by @Sprungente


  • Fixed non ASCII symbols (eg. Russian symbols) not being accepted in the URL (For player pages)
  • SLF4J Logger warnings on enable fixed by @PyvesB
  • Fixed ConcurrentModificationException on Bungee ping gathering
  • Fixed “Active players might be running out of things to do” on health tab
  • Fixed issues with Database patches when using MySQL
  • Fixed Plugin Data Exceptions related to new version of AAC
  • Fixed Players page not refreshing often enough


A new version has been released for Plan, it is available for download here.

Change log 4.5.1

This update brings some improvements and bugfixes to bugs that slipped into 4.5.0 release.
Special thanks to @Fuzzlemann and @Sprungente for contributions! :slight_smile:


  • H2 database support by Fuzzlemann, you can use /plan m move sqlite h2 to migrate your current database.


  • German locale improvements by Sprungente
  • Small performance improvements to decimal formatting & medians by Fuzzlemann
  • Large performance improvements to /server/raw/ (Server data JSON)


  • Fixed issues with logging in on servers when Plan and ViaVersion were both installed on BungeeCord
  • Fixed issue where TPS was 0 on Spigot & Bukkit
  • Fixed sessions not being saved on server shutdown
  • [Unit tests] Several issues with test flakiness (JVM crashing / flaky db test) fixed by Fuzzlemann.