Releases: plan-player-analytics/Plan
Release list
5.8 build 3577
5.8 build 3577
This update brings new features, refreshes to old features, as well as a big bunch of bugfixes and improvements.
Quick rundown of new big things includes MSPT Jitter, overhauled server performance tab with new performance metrics, overhauled session tabs, date pickers and partial dataload via datapoint endpoint.
Fabric was also updated to support minecraft 26.2 and above.
Special thanks to AnttiMK & Minecraft0122 for contributions to this update
Migration from 5.7
No manual steps are required. Older versions may fail a scheduled task due to plan_settings table removal, but that error can be safely ignored. Migration guide to 5.8
Change log
Data gathering
MSPT Jitter (new metric)
MSPT Jitter (Average, Max) is new gathered performance metric. - Jitter is calculated from difference between subsequent tick speeds (milliseconds per tick) Example: MSPT of 35, 36, 34, 80, 37 -> Jitter = 1, 2, 46, 43 -> Average=23, Max=46. Average and maximum for each minute is recorded.
High jitter indicates that tick speed varies greatly between ticks, and can be used along existing MSPT metrics to further assess how high load affects gameplay.
Database (Breaking changes)
- Removed plan_settings table (breaking) - This table facilitated serverConfiguration folder on Networks, which has now been removed. - Old versions will error upon trying to store settings. If you need to use older versions those errors can be safely ignored.
- Added plan_incomplete_registration table - This table now allows the last step of /plan register to work on any server, when previously it only worked on the server Plan webserver was running on.
Website
New performance metrics
Performance tab was rewritten to include more interesting metrics that reflect how players and chunks impact server load. The impact of players on Entities and Chunks was also taken into account since some servers unload all chunks without players present.
There is now a help button available on the Performance as Numbers card to explain each metric.
Updated Server Performance graph
Server performance graph is now less jumpy and you can select any of the data you want to see rather than just some, using either presets on the left, or the labels at the bottom.
New sessions tab
Sessions tab was rewritten on all pages (Network, Server, Player) and it now gets you up to 10k sessions, which can be searched further and exported as CSV. You can choose a date range using the session calendar or the new date picker component.
All of the data on session page will reflect the selected dates. All ongoing sessions within selected date range are shown, even if they didn't start within the date range, but before it.
On the Export website this feature is not available and defaults to most recent data (Similar to before)


Other
- The new date picker component is in use anywhere you can input dates to a text field (Query page)
- Servers overview (Network) now loads a lot faster (It only gets the data for the server you're looking at)
- Server overview, Network overview, Online Activity overview, Sessions and Performance tabs all got their number tables changed to get individual values independently from each other.
Bugfixes
- Fixed some IPv6 setups being unable to login
- Fixed Average MSPT not showing if MSPT was under 1ms
- Fixed Hour by Hour showing Daily new players and not hourly
- Fixed date saying 'Today' if it was in the future
- Fixed Alternative_IP.Address changes not being reflected in Javascript due to Cache policy
- Fixed boolean Extension values causing 'variable t not found' error.
- Fixed component Extension values erroring
- Fixed redirects on reverse-proxy setups with subdirectory addresses
- Fixed value not defined error on Playerstable when showing time or date from plugin data on player table
- Fixed stacked players online graph not stacking
- Fixed Players Online tooltip going under table headers
Fabric 26.2
- Updated to Fabric 26.2 which required no API changes.
- AnttiMK implemented Fabric 26.1 support. 1.21.9-1.21.11 are no longer supported by this version.
Settings
- serverConfiguration folder and related config sync features have been removed on Networks.
- Display_options.Sessions.Show_on_page setting has been removed
- Changed default value for
Time.Thresholds.Remove_time_series_afterto 3650 on Bungee/Velocity (Default is not automatically replaced)
Locale
- CN locale updated by Minecraft0122
Extensions
- Fixed error related to Folia and CMI extension
- Fixed error related to deleting disabled extension data
Placeholders
- Fixed error on top list placeholders for playtime or kill count
Other
- Added database transaction queue information to /plan info command
- Fixed deadlock related to ban status update task
- Fixed /plan db uninstalled printing "success" before completing properly
- AnttiMK updated Java compile options so that test code can use features from newer JDKs
- Optimized Playerbase development graph generation query
- Optimized Players online peak query
- Possibly fixed TPSTableIdPatch failing on SQLite due to table lock
Webserver: /v1/datapoint
To implement dynamic date based filtering, new endpoint /v1/datapoint was implemented. It makes implementing new single-value metrics a lot easier, since it's possible to produce tables of metrics by just defining a column 'time slot' and each row as a metric - you can already see impacts with the new metrics that were already added. This endpoint will be further expanded upon in the future.
This endpoint takes in after/afterMillisAgo, before/beforeMillisAgo and server or player parameters. server parameter can take in multiple server uuids comma separated. The endpoint returns 200, 302 (cached by browser) or 400 (invalid type). Please use ETag for caching if calling this endpoint from program code.
Example /v1/datapoint?type=PLAYTIME&afterMillisAgo=86400000&server=uuid will get you playtime for last 24h on a server.
All the supported datapoint types can be found from https://github.com/plan-player-analytics/Plan/blob/master/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/json/datapoint/DatapointType.java
Deprecated endpoints
Following endpoints are deprecated in favor of the new /v1/datapoint endpoint:
- /v1/serverOverview
- /v1/network/overview
- /v1/network/servers
- /v1/onlineOverview
- /v1/sessionOverview
- /v1/performanceOverview
- /v1/network/performanceOverview
Accessing the deprecated endpoints will print a warning on the console (Due to performance impact).
New Web permissions
/v1/datapoint uses new web permissions data.player, data.server, data.network (and further subdivisions) to control visiblity. These permissions are granted automatically based on existing permissions:
- access.network -> group is given data.network
- access.server -> group is given data.server
- access.player -> group is given data.player
/v1/datapoint will also check for access.player and access.player.self if looking for player specific data.
5.7 DEV build 3558
5.7 DEV build 3558
This dev release introduces MSPT Jitter, performance graph rewrite, MC version 26.2 on fabric, bugfixes and improvements.
Special thanks to AnttiMK & Minecraft0122 for contributions to this update
Change log
Website
MSPT Jitter
Added new metric called MSPT Jitter which displays the average and maximum difference between subsequent tick speeds (Milliseconds Per Tick). Example: MSPT of 35, 36, 34, 80, 37 -> Jitter = 1, 2, 46, 43 -> Average=23, Max=46.
New performance metrics
Performance tab was rewritten to include more interesting metrics that reflect how players and chunks impact server load. The impact of players on Entities and Chunks was also taken into account since some servers unload all chunks without players present.
There is now a help button available on the Performance as Numbers card to explain each metric.
Updated Server Performance graph
Server performance graph is now less jumpy and you can select any of the data you want to see, using either presets on the left, or the labels at the bottom.
Under the hood the graph no longer renders 6 different HighCharts graphs, instead changing a single instance whenever you pick data. This also means the graph date-range no longer jumps in annoying way when you switch what you are viewing.
New sessions tab
Sessions tab was rewritten on all pages (Network, Server, Player) and it now gets you up to 10k sessions, which can be searched further and exported as CSV. You can choose a date range using the session calendar or the new date picker component.
All of the data on session page will reflect the selected dates. All ongoing sessions within selected date range are shown, even if they didn't start within the date range, but before it.
On the Export website this feature is not available and defaults to most recent data (Similar to before)
Other
The new date picker component is in use anywhere you can input dates to a text field
Also
- Servers overview (Network) now loads a lot faster (It only gets the data for the server you're looking at)
- Server overview, Network overview, Online Acctivity overview, Sessions and Performance tabs all got their number tables changed to get individual values independently from each other. This speeds up loading of data since you no longer need to wait for the slowest query to see all data.
Bugfixes
- Fixed some IPv6 setups being unable to login
- Fixed Average MSPT not showing if MSPT was under 1ms
- Fixed Hour by Hour showing Daily new players and not hourly
- Fixed date saying 'Today' if it was in the future
- Fixed Alternative_IP.Address changes not being reflected in Javascript due to Cache policy
- Fixed boolean Extension values causing 'variable t not found' error.
- Fixed component Extension values erroring
- Fixed redirects on reverse-proxy setups with subdirectory addresses
- Fixed value not defined error on Playerstable when showing time or date from plugin data on player table
- Fixed stacked players online graph not stacking
- Fixed Players Online tooltip going under table headers
/v1/datapoint
To implement dynamic date based filtering seen above, new endpoint /v1/datapoint was implemented. It makes implementing new single-value metrics a lot easier, since it's possible to produce tables of metrics by just defining a column 'time slot' and each row as a metric - you can already see impacts with the new metrics that were already added. This endpoint will be further expanded upon in the future.
This endpoint takes in after/afterMillisAgo, before/beforeMillisAgo and server or player parameters. server parameter can take in multiple server uuids comma separated. The endpoint returns 200, 302 (cached by browser) or 400 (invalid type). Please use ETag for caching if calling this endpoint from program code.
Example /v1/datapoint?type=PLAYTIME&afterMillisAgo=86400000&server=uuid will get you playtime for last 24h on a server.
All the supported datapoint types can be found from https://github.com/plan-player-analytics/Plan/blob/master/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/json/datapoint/DatapointType.java
Deprecated endpoints
Following endpoints are deprecated in favor of the new /v1/datapoint endpoint:
- /v1/serverOverview
- /v1/network/overview
- /v1/network/servers
- /v1/onlineOverview
- /v1/sessionOverview
- /v1/performanceOverview
- /v1/network/performanceOverview
Accessing the deprecated endpoints will print a warning on the console (Due to performance impact).
New Web permissions
This will be expanded upon in the future. This endpoint uses data.player, data.server, data.network (and further subdivisions) to control visiblity. These permissions are granted automatically based on existing permissions:
- access.network -> group is given data.network
- access.server -> group is given data.server
- access.player -> group is given data.player
/v1/datapoint will also check for access.player and access.player.self if looking for player specific data.
Fabric 26.2
- Updated to Fabric 26.2 which required no API changes.
- AnttiMK implemented Fabric 26.1 support. 1.21.9-1.21.11 are no longer supported by this version.
Config
- Display_options.Sessions.Show_on_page setting has been removed
- Changed default value for
Time.Thresholds.Remove_time_series_afterto 3650 on Bungee/Velocity (Default is not automatically replaced)
Locale
- CN locale updated by Minecraft0122
Extensions
- Fixed error related to Folia and CMI extension
Other
- Added database transaction queue information to /plan info command
- Fixed deadlock related to ban status update task
- Fixed /plan db uninstalled printing "success" before completing properly
- AnttiMK updated Java compile options so that test code can use features from newer JDKs
- Optimized Playerbase development graph generation query
- Optimized Players online peak query
- Possibly fixed TPSTableIdPatch failing on SQLite due to table lock
5.7 DEV build 3506
5.7 DEV build 3506
This dev release introduces new performance metrics, new sessions tab, MC version 26.1 on fabric, and lots of bugfixes and improvements.
Special thanks to AnttiMK & Minecraft0122 for contributions to this update
Change log
Website
New performance metrics
Performance tab was rewritten to include more interesting metrics that reflect how players and chunks impact server load. The impact of players on Entities and Chunks was also taken into account since some servers unload all chunks without players present.
New sessions tab
Sessions tab was rewritten on all pages (Network, Server, Player) and it now gets you up to 10k sessions, which can be searched further and exported as CSV. You can choose a date range using the session calendar or the new date picker component.
All of the data on session page will reflect the selected dates. All ongoing sessions within selected date range are shown, even if they didn't start within the date range, but before it.
On the Export website this feature is not available and defaults to most recent data (Similar to before)
Other
The new date picker component is in use anywhere you can input dates to a text field
Also
- Servers overview (Network) now loads a lot faster (It only gets the data for the server you're looking at)
- Server overview, Network overview, Online Acctivity overview, Sessions and Performance tabs all got their number tables changed to get individual values independently from each other. This speeds up loading of data since you no longer need to wait for the slowest query to see all data.
Bugfixes
- Fixed some IPv6 setups being unable to login
- Fixed Average MSPT not showing if MSPT was under 1ms
- Fixed Hour by Hour showing Daily new players and not hourly
- Fixed date saying 'Today' if it was in the future
- Fixed Alternative_IP.Address changes not being reflected in Javascript due to Cache policy
- Fixed boolean Extension values causing 'variable t not found' error.
- Fixed component Extension values erroring
- Fixed redirects on reverse-proxy setups with subdirectory addresses
- Fixed value not defined error on Playerstable when showing time or date from plugin data on player table
/v1/datapoint
To implement dynamic date based filtering seen above, new endpoint /v1/datapoint was implemented. It makes implementing new single-value metrics a lot easier, since it's possible to produce tables of metrics by just defining a column 'time slot' and each row as a metric - you can already see impacts with the new metrics that were already added. This endpoint will be further expanded upon in the future.
This endpoint takes in after/afterMillisAgo, before/beforeMillisAgo and server or player parameters. server parameter can take in multiple server uuids comma separated. The endpoint returns 200, 302 (cached by browser) or 400 (invalid type). Please use ETag for caching if calling this endpoint from program code.
Example /v1/datapoint?type=PLAYTIME&afterMillisAgo=86400000&server=uuid will get you playtime for last 24h on a server.
All the supported datapoint types can be found from https://github.com/plan-player-analytics/Plan/blob/master/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/json/datapoint/DatapointType.java
Deprecated endpoints
Following endpoints are deprecated in favor of the new /v1/datapoint endpoint:
- /v1/serverOverview
- /v1/network/overview
- /v1/network/servers
- /v1/onlineOverview
- /v1/sessionOverview
- /v1/performanceOverview
- /v1/network/performanceOverview
Accessing the deprecated endpoints will print a warning on the console (Due to performance impact).
New Web permissions
This will be expanded upon in the future. This endpoint uses data.player, data.server, data.network (and further subdivisions) to control visiblity. These permissions are granted automatically based on existing permissions:
- access.network -> group is given data.network
- access.server -> group is given data.server
- access.player -> group is given data.player
/v1/datapoint will also check for access.player and access.player.self if looking for player specific data.
Fabric 26.1
AnttiMK implemented Fabric 26.1 support. 1.21.9-1.21.11 are no longer supported by this version.
Config
- Display_options.Sessions.Show_on_page setting has been removed
- Changed default value for
Time.Thresholds.Remove_time_series_afterto 3650 on Bungee/Velocity (Default is not automatically replaced)
Locale
- CN locale updated by Minecraft0122
Extensions
- Fixed error related to Folia and CMI extension
Other
- Added database transaction queue information to /plan info command
- Fixed deadlock related to ban status update task
- Fixed /plan db uninstalled printing "success" before completing properly
- AnttiMK updated Java compile options so that test code can use features from newer JDKs
- Optimized Playerbase development graph generation query
- Optimized Players online peak query
5.7 DEV build 3341
5.7 DEV build 3341
This dev release includes support for mc version 26.1 on fabric, new sessions tab and bugfixes.
Special thanks to AnttiMK & Minecraft0122 for contributions to this update
Change log
Website
New sessions tab
Sessions tab was rewritten on all pages (Network, Server, Player) and it now gets you up to 10k sessions, which can be searched further and exported as CSV. You can choose a date range using the session calendar or the new date picker component.
All of the data on session page will reflect the selected dates. All ongoing sessions within selected date range are shown, even if they didn't start within the date range, but before it.
On the Export website this feature is not available and defaults to most recent data (Similar to before)
New Web permissions
To implement dynamic date based filtering seen above, new endpoint /v1/datapoint was implemented. This will be expanded upon in the future. This endpoint uses data.player, data.server, data.network (and further subdivisions) to control visiblity. These permissions are granted automatically based on existing permissions:
- access.network -> group is given data.network
- access.server -> group is given data.server
- access.player -> group is given data.player
/v1/datapoint will also check for access.player and access.player.self if looking for player specific data.
Other
The new date picker component is in use anywhere you can input dates to a text field
Bugfixes
- Fixed Average MSPT not showing if MSPT was under 1ms
- Fixed date saying 'Today' if it was in the future
- Fixed Alternative_IP.Address changes not being reflected in Javascript due to Cache policy
- Fixed boolean Extension values causing 'variable t not found' error.
Fabric 26.1
AnttiMK implemented Fabric 26.1 support. 1.21.9-1.21.11 are no longer supported by this version.
Config
- Display_options.Sessions.Show_on_page setting has been removed
- Changed default value for
Time.Thresholds.Remove_time_series_afterto 3650 on Bungee/Velocity (Default is not automatically replaced)
Locale
- CN locale updated by Minecraft0122
5.7 build 3306
5.7 build 3306
Hotfix for config update bug in build 3288.
Change log
- Fixed config resetting some values to default on reload
- Fixed table sorting with alphabetical things
- Minor dependency updates
- CI pipelines for releasing to Ore, Hangar and Modrinth
5.7 DEV build 3298
5.7 DEV build 3298
DEV build to test new publishing pipelines to Ore, Hangar and Modrinth.
No changes compared to DEV build 3294/3295 https://github.com/plan-player-analytics/Plan/releases/tag/5.7.3295
5.7 DEV build 3295
5.7 DEV build 3295
Hotfix for config update bug in build 3288.
DEV build to test new publishing pipelines to Ore, Hangar and Modrinth.
Change log
- Fixed config resetting some values to default on reload
- Fixed table sorting with alphabetical things
5.7 DEV build 3294
5.7 DEV build 3294
Hotfix for config update bug in build 3288.
DEV build to test new publishing pipelines to Ore, Hangar and Modrinth.
Change log
- Fixed config resetting some values to default on reload
- Fixed table sorting with alphabetical things
5.7 build 3288
5.7 build 3288
This release contains bugfixes to build 3265 and a new theme.
Special thanks to Kopo, Leolebleis & Guinness_Akihiko for contributions to this update
Change log
Website
- Improved readability of World Pie on servers that have over 7 worlds
- Improved readability of Server Pie on networks that have over 7 servers
- Moved Performance graph loading to Web Worker (async threading in browsers) - This should improve rendering times slightly
- Fixed issue where Join Address Groups would reset when using HTTPS
- Fixed a couple of instances where Trend was not properly showing
- Fixed 'showPlayersOnline is not defined' when viewing network page on networks with multiple Proxy servers
- Fixed a bug with Change history floating on top of the Save button in Theme Editor when using Night mode.
- Fixed CUSTOM locale defaulting to Chinese locale for time/date/country localization due to "Best match" in browser matching.
- Fixed Swagger documentation not showing
- Fixed 'New player retention' label in Server overview
- Fixed typo in a locale key
- Fixed Low TPS Insights showing entities instead of CPU
- Leolebleis fixed reverse-proxy https address not being recognized as correct address
Fabric
Kopo updated Fabric to use Mojang mappings (Tested with 1.12.9-1.12.11)
Themes
Added solarized theme based on https://github.com/altercation/solarized
Config
- Possibly fixed a race condition that caused server identity to be reset, creating duplicate servers when server was shut down during Database patching
- Fixed trailing comments removing part of config setting value.
- Fixed some config changes being applied every time
Locale
- Guinness_Akihiko updated KO locale
Other
- Builds now require JDK 25 for switch to Mojang mappings.
5.7 DEV build 3265
5.7 DEV build 3265
This dev release is a collection of bugfixes intended to release next weekend.
Special thanks to Guinness_Akihiko for contributions to this update
Change log
Website
- Improved readability of World Pie on servers that have over 7 worlds
- Improved readability of Server Pie on networks that have over 7 servers
- Moved Performance graph loading to Web Worker (async threading in browsers) - This should improve rendering times slightly
- Fixed a couple of instances where Trend was not properly showing
- Fixed a bug with Change history floating on top of the Save button in Theme Editor when using Night mode.
- Fixed CUSTOM locale defaulting to Chinese locale for time/date/country localization due to "Best match" in browser matching.
Themes
Added solarized theme based on https://github.com/altercation/solarized
Locale
- Guinness_Akihiko updated KO locale
Other
- Builds now require JDK 25 in preparation for switch to Mojang mappings.