Skip to content

Releases: plan-player-analytics/Plan

5.7 DEV build 3189

09 Feb 16:47

Choose a tag to compare

5.7 DEV build 3189 Pre-release
Pre-release

5.7 DEV build 3189

This dev release is a release candidate for 5.7 release.

Special thanks to Kopo, SaolGhra, TWJohnJohn20116, Shadowhackercz, Vankka, DrexHD & Jsinco for contributions to this update

Changes since DEV build 3123

  • Czech locale updated by Shadowhackercz
  • Fixed an issue related to boolean values in Extensions
  • Added Server Uptime to Performance as Numbers tables
  • Vankka updated DependencyDownload to clean up old downloaded libraries
  • Added MSPT (Milliseconds per Tick) metrics to Performance
  • DrexHD updated fabric to 1.21.9
  • Jsinco updated join address filter setting to support regex
  • Rewrite of the database move/backup/restore system
  • Updated to use velocity 3.5.0-SNAPSHOT

Change log

Website

Theme Editor

You can now create your own themes for Plan without needing Html Customization. This is the main new feature of this version and is documented here.

image
  • theme.yml has now been deprecated and will be deleted if it only contains default values

MSPT (Milliseconds per Tick)

image

Milliseconds per Tick (average/90th percentile) have been added to performance metrics on all applicable platforms.

Other

  • Kills table can now be searched/sorted/exported and gets up to 25000 entries from the database
image
  • Added Uptime data to Performance as Numbers tables
  • Multi-select components have been replaced with a more intuitive alternative, especially on mobile
  • Performance graph tabs now sync the graph range-finder so that you can view different data for same time easier
  • Network performance graph colors now vary between servers to be easier to read
  • Fixed extra Series label appearing in HTTP mode on Performance graph (This is the plugin version history series in HTTPS mode)
  • Fixed some night mode text invisibility issues
  • SaolGhra fixed error r.includes is not a function related to Litebans

Config

  • Jsinco updated 'Data_gathering.Join_addresses_.Filter_out_from_data' to support regex. Note that any existing setting values with . (dot character) will now match any character.
  • Display_options.Theme (default "default") now refers to theme name in the theme editor rather than "What theme.yml to copy values from"
  • Display_options.Night_mode (default false) added

Data

  • MSPT average and 90th percentile added to plan_tps table
  • Register date 0 (1970-01-01) is now regarded as invalid.
  • Ban status is now updated by an automatic task that cycles through all known players small amount at a time

Sponge

  • Sponge API 14 is now used, API 8 is no longer supported.

Fabric

  • Fabric was updated to 1.12.9 by DrexHD (Supports 1.12.11 as well)

Velocity

  • Velocity was updated to 3.5.0-SNAPSHOT

Database

Database move system rewrite

Rewrote the system responsible for copying data from one database to another since previous system would crash under large datasets. The goal of this was to allow copying large SQLite databases to MySQL even on larger servers. The system was tested against a 3 GB database on a server with 1 GB of allocated memory.

  • /plan db move, /plan db backup, /plan db restore use the new system
  • Added /plan db merge command (permission: plan.data.merge) which allows merging SQLite data to existing MySQL. This is useful for those merging multiple servers into a network when all servers had Plan installed on separate SQLite databases.

Other

  • id column added to old plan_tps tables that did not have it yet via Patch.
  • If MySQL runs into error code 1020 'Stale read' error, the transaction will retry instead of erroring
  • Fixed dyplicate key violation related to AllowListBounce

Locale

  • Dates, time amounts & country names are now translated based on the selected locale. (If specific ones aren't please report it as a bug)
  • HighCharts & Calendar are now translated based on the selected locale
  • TWJohnJohn20116 updated zh_TW locale
  • Shadowhackercz updated CS locale

Extensions

  • Fixed ArithmeticException related to LibertyBans when bans were infinite
  • Fixed an issue related to rendering boolean values
  • Updated Jobs extension to support newer version

Placeholders

  • Fixed network_players_online always saying 0

Other

  • Vankka updated DependencyDownload to clean up libraries folder of old versions
  • Kopo updated the build system to speed up builds & IDE indexing performance

5.7 DEV build 3123

19 Aug 10:01

Choose a tag to compare

5.7 DEV build 3123 Pre-release
Pre-release

5.7 DEV build 3123

This dev release contains quite a lot of changes, so please report any bugs that you may find.

Special thanks to Kopo, SaolGhra & TWJohnJohn20116 for contributions to this update

Change log

Website

Theme Editor

You can now create your own themes for Plan without needing Html Customization. This is the main new feature of this version and is documented here.

image
  • theme.yml has now been deprecated and will be deleted if it only contains default values

Localization

One goal in this version is to reduce the amount of mixed language (e.g. selected language + English) appearing on the website. This work is still underway. If you're using a locale that still has English lines in it, please help translate it

  • Dates, time amounts & country names are now translated based on the selected locale. (If specific ones aren't please report it as a bug)
  • HighCharts & Calendar are now translated based on the selected locale

Other

  • Kills table can now be searched/sorted/exported and gets up to 25000 entries from the database
image
  • Multi-select components have been replaced with a more intuitive alternative, especially on mobile
  • Performance graph tabs now sync the graph range-finder so that you can view different data for same time easier
  • Network performance graph colors now vary between servers to be easier to read
  • Fixed extra Series label appearing in HTTP mode on Performance graph (This is the plugin version history series in HTTPS mode)
  • Fixed some night mode text invisibility issues
  • SaolGhra fixed error r.includes is not a function related to Litebans

Config

  • Display_options.Theme (default "default") now refers to theme name in the theme editor rather than "What theme.yml to copy values from"
  • Display_options.Night_mode (default false) added

Data

  • Register date 0 (1970-01-01) is now regarded as invalid.
  • Ban status is now updated by an automatic task that cycles through all known players small amount at a time

Sponge

  • Sponge API 14 is now used, API 8 is no longer supported.

Database

  • If MySQL runs into error code 1020 'Stale read' error, the transaction will retry instead of erroring
  • Fixed dyplicate key violation related to AllowListBounce

Locale

  • TWJohnJohn20116 updated zh_TW locale

Extensions

  • Fixed ArithmeticException related to LibertyBans when bans were infinite
  • Updated Jobs extension to support newer version

Placeholders

  • Fixed network_players_online always saying 0

Other

  • Kopo updated the build system to speed up builds & IDE indexing performance

5.6 build 2965

01 Feb 08:31
dfc2404

Choose a tag to compare

5.6 build 2965

This build has a second hotfix for SQLite performance regression since it was reverted to wrong version that still had the regression.
Please see https://github.com/plan-player-analytics/Plan/releases/tag/5.6.2959 for change log of the previous version.

Change log

  • Reverted SQLite driver to version 3.42.0.1 due to performance regression (Thanks to Vankka for pointing out my mistake)

5.6 build 2961

26 Jan 09:56

Choose a tag to compare

5.6 build 2961

This build has a hotfix for SQLite performance regression.
Please see https://github.com/plan-player-analytics/Plan/releases/tag/5.6.2959 for change log of the previous version.

Change log

  • Reverted SQLite driver to version 3.45.1.0 due to performance regression

5.6 build 2959

18 Jan 08:35

Choose a tag to compare

5.6 build 2959

This is a maintenance update with bugfixes and updates to dependencies.

Special thanks to Kopo, YannicHock & Zaemong for contributions to this update.

Change log

Commands [action required]

  • /plan and /planproxy now require plan.command permission to be used. This is to allow hiding /plan from tab completion, since it showed up even if a player had no access to any of the subcommands.

SQL Driver download address change

Platform specific

  • Fabric now uses 1.21.3 api, 1.21.4 also still supported. fabric-permissions-api 0.3.3 now required. Thanks Kopo
  • Fixed Nukkit incompatibility with EntityTameable being moved to a different package
  • Fixed Folia ConcurrentModificationException related to ping task
  • Fixed Folia region tick thread crash if another plugin was using Plan placeholders on server thread

Website

  • Fixed Calendar being one day behind when server timezone was set to negative GMT, eg. GMT-8.
  • Calendar now responds to selected language on the UI
  • Fixed Calendar popup going under Sidebar
  • Fixed some countries not appearing on the map due to missing country name -> ISO-3166 alpha-3 translation
  • Added web permissions for different Server Performance graph data types. This allows configuring permissions for viewing TPS graph and nothing else.
  • Fixed Logo image not loading when using reverse-proxy with a subdirectory

Database

  • Fixed CorrectWrongCharacterEncodingPatch applying to non-Plan tables in the same database.
  • Fixed ping insert duplicate key error

Config

  • Increased default time series data retention to 10 years (3650 days) - previously 90 days. Does not change existing configs.
  • Removed &useSSL=false from default MySQL Launch_options. Does not change existing configs.

Extensions

  • StringProvider can now store values up to 250 characters long before truncation.
  • CMI Extension added by YannicHock

Locale

  • Fixed French (FR) locale causing website loading issues
  • Japanese (JA) locale updated by Zaemong

Placeholders

  • Catch any exceptions that occur during placeholder request to not cause problems in other plugins using Plan placeholders
  • Added %plan_top_{category}_{n}_value_raw% placeholders for unformatted values (Useful for custom time formats)
  • Added %plan_server_players_online% and %plan_network_players_online% placeholders that show the latest data in the database (~1 minute accuracy)

5.6 DEV build 2948

06 Jan 11:29

Choose a tag to compare

5.6 DEV build 2948 Pre-release
Pre-release

5.6 DEV build 2948

This dev build contains bugfixes, contributions and dependency updates that have been done since May.

Special thanks to Kopo, YannicHock & Zaemong for contributions to this update.

Changes from DEV build 2906

  • Dependency updates
  • Calendar now responds to selected language
  • Fixed bug with calendar in negative timezones (GMT-8 etc)
  • Fabric updates done by Kopo
  • Extension string values now up to 250 chars
  • Minor bugfixes

Change log

Commands [action required]

  • /plan and /planproxy now require plan.command permission to be used. This is to allow hiding /plan from tab completion, since it showed up even if a player had no access to any of the subcommands.

Platform specific

  • Fabric now uses 1.21.3 api, 1.21.4 also still supported. fabric-permissions-api 0.3.3 now required. Thanks Kopo
  • Fixed Nukkit incompatibility with EntityTameable being moved to a different package
  • Fixed Folia ConcurrentModificationException related to ping task
  • Fixed Folia region tick thread crash if another plugin was using Plan placeholders on server thread

Website

  • Fixed Calendar being one day behind when server timezone was set to negative GMT, eg. GMT-8.
  • Calendar now responds to selected language on the UI
  • Fixed some countries not appearing on the map due to missing country name -> ISO-3166 alpha-3 translation
  • Added web permissions for different Server Perfomance graph data types. This allows configuring permissions for viewing TPS graph and nothing else.
  • Fixed reverse-proxy subdirectory address correction not applying to Logo image

Database

  • Fixed CorrectWrongCharacterEncodingPatch applying to non-Plan tables in the same database.
  • Fixed ping insert duplicate key error

Config

  • Increased default time series data retention to 10 years (3650 days) - previously 90 days. Does not change existing configs.
  • Removed &useSSL=false from default MySQL Launch_options. Does not change existing configs.

Extensions

  • StringProvider can now store values up to 250 characters long before truncation.
  • CMI Extension added by YannicHock

Locale

  • Fixed French (FR) locale causing website loading issues
  • Japanese (JA) locale updated by Zaemong

Placeholders

  • Catch any exceptions that occur during placeholder request to not cause problems in other plugins using Plan placeholders
  • Added %plan_top_{category}_{n}_value_raw% placeholders for unformatted values (Useful for custom time formats)
  • Added %plan_server_players_online% and %plan_network_players_online% placeholders that show the latest data in the database (~1 minute accuracy)

5.6 DEV build 2906

01 Dec 09:53

Choose a tag to compare

5.6 DEV build 2906 Pre-release
Pre-release

5.6 DEV build 2906

This dev build contains bugfixes, contributions and dependency updates that have been done since May. I would release it as a full release, but since my start of December is hectic, I want to avoid releasing a buggy version by accident.

Special thanks to YannicHock & Zaemong for contributions to this update.

There's a small development/life update at the bottom of the change log.

Change log

Commands [action required]

  • /plan and /planproxy now require plan.command permission to be used. This is to allow hiding /plan from tab completion, since it showed up even if a player had no access to any of the subcommands.

Platform specific

  • Fixed Nukkit incompatibility with EntityTameable being moved to a different package
  • Fixed Folia ConcurrentModificationException related to ping task
  • Fixed Folia region tick thread crash if another plugin was using Plan placeholders on server thread

Website

  • Fixed some countries not appearing on the map due to missing country name -> ISO-3166 alpha-3 translation
  • Added web permissions for different Server Perfomance graph data types. This allows configuring permissions for viewing TPS graph and nothing else.

Database

  • Fixed CorrectWrongCharacterEncodingPatch applying to non-Plan tables in the same database.

Config

  • Increased default time series data retention to 10 years (3650 days) - previously 90 days. Does not change existing configs.

Extensions

  • CMI Extension added by YannicHock

Locale

  • Fixed French (FR) locale causing website loading issues
  • Japanese (JA) locale updated by Zaemong

Placeholders

  • Catch any exceptions that occur during placeholder request to not cause problems in other plugins using Plan placeholders
  • Added %plan_top_{category}_{n}_value_raw% placeholders for unformatted values (Useful for custom time formats)
  • Added %plan_server_players_online% and %plan_network_players_online% placeholders that show the latest data in the database (~1 minute accuracy)

Development/Life update

Plan is now 8 years old (tomorrow on 2nd of December)! Wow, that's almost third of my life.

I don't know how to begin this, but since the regular updates stopped coming in June, I feel like I need to write something to let you know why.

In June, as my summer holiday started I decided to leave my laptop at home, rather than take it with me and work on Plan all summer. This was the first time in 7 years that that happened. I didn't open the IDE again for a long time, and I kind of liked it. Unfortunately any 2 month long break from a project usually leads to the build environment breaking, so I've had to deal with some of that before I could get back to regular development.

Over last 4 months I've slowly worked on DataExtension Graph API on some weekends. It's surprising how much boilerplate something like that needs to function, so it's somewhere around 33%-50% done after 4 months in development. With long pauses in between due to needing to work on other bugs and broken builds, it has not progressed as fast as I would have liked.

People always seem to wonder why I'm doing this project, and I've wondered that too over the years. I sort of rationalized the reason to be that I love doing it - and that was true for years, as I love learning new things, and Plan allowed me to do those experiments to learn. Lately I've started to think that doing this project has also been a kind of escapism. Everyone wants to feel like they're good at something, and when I found programming in 2016, that was something I felt like I could be really good at. So I started this project, and found so much enjoyment from that. It's funny how life creeps up on you if you let it, Over these last two years I've started to find my people and hobbies. Those things give me so much joy in life.

I still enjoy working on this project, but I've found that doing Java projects at work, and doing Java project on the weekends is not a very sustainable hobby. I found that out the hard way when I had a burnout in 2022. In an ideal world I would love to work on this project full-time, but that's just not realistic financially.

I'm not sure what the way forward is, but what I'm currently trying is to schedule Plan development time in my calendar. I feel like something I need to solve is that other activities refresh my energy, while Plan development drains it. I need to find a way to make it refresh my energy. If you've solved something like that I'd love to hear your thoughts on discord.

All that said, I don't think this project is going away anytime soon. I'll just have to figure out a sustainable way to fit it together with the rest of my life. And that just might be the learning journey that sparks my eyes again.

I hope you have wonderful Christmas or other holidays ahead of you.
All the best!

~Aurora

5.6 build 2883

26 May 15:08

Choose a tag to compare

5.6 build 2883

This release brings redesigned join address visualization, Folia support, updates to Fabric 1.20.5, quality of life features and fixes some bugs.

Special thanks to jhqwqmc, Sniper_TVmc, mcmdev, DrexHD and ZhangYuheng for contributions to this update

Change log

Fabric

  • Fabric support was updated to 1.20.5 by DrexHD, older fabric versions are no longer supported as Fabric 1.20.5 requires Java 21

Folia

  • Folia support was implemented by ZhangYuheng. Please note that sessions from Folia servers will have incorrect world times on Folia since the platform doesn't support PlayerWorldChangeEvent yet.

Config

  • You can now configure Plan using environment variables. This can be useful for those running servers in docker environments. Examples:
    • Plugin.ServerName -> PLAN_PLUGIN_SERVERNAME
    • Database.MySQL.Password -> PLAN_DATABASE_MYSQL_PASSWORD
    • ServerInfoFile.yml is also supported, eg. PLAN_SERVER_ID, PLAN_SERVER_UUID to have specific servers keep their identity if your server destroys all files on shutdown.
    • With string lists variable needs to be format "- One\n- Two" where \n is newline

Website

Redesigned Join Address visualization

image

Join address visualization was difficult for servers with 100s of join addresses. With the redesign you can select multiple addresses as a group to be visualized, and rename it to your liking. This can help you track different advertising campaigns and server list entries across time.

image

The same selectors are used on the Player Retention graph when you are grouping registered players by Join Address.

The address groups you make are linked to your user if you have login enabled, or stored to browser localstorage to keep them even if you close the page.

In addition:

  • It is now possible to disable join address gathering in the config
  • It is now possible to filter out specific addresses from the data in the config. This can help if you have a geyser server that isn't configured to forward hostnames, since the geyser server IP would appear in the data instead.
  • Join addresses that don't look like IPs or domains are now automatically filtered out. You can disable this behavior with Preserve_invalid setting.

Editing Queries

  • You can now press 'Edit Query' on the Query Results page to change the filters and view. This can be useful if you want to quickly select a timeframe from calendar and then filter the results further with other filters.
    image

Commands

  • Fixed permissions not being checked for tab completion of commands which allowed players to get list of player names via tab completion.

Database

  • Fixed duplicate key exception during enable in some rare cases related to UpdateWebPermissionsPatch
  • Fixed CorrectWrongCharacterEncodingPatch failing on mysql.user table being a view
  • Fixed error storing access log when IP was spoofed (Longer than IPv6)

Export

  • Fixed allowlist bounces data not being visible on exported pages.

Placeholders

  • Added %plan_server_uptime% placeholder

Extensions

  • Composite punishment support was added to LibertyBans Extension by mcmdev
  • You can now configure PlaceholderAPI values that you want to ignore from other plugins. This is useful if some plugin doesn't report placeholder value after player leaves the server.
    • Placeholders that aren't replaced are now no longer stored as a changed value.

Locale

  • French (FR) locale was updated by Sniper_TVmc
  • Simplified Chinese (CN) locale was updated by jhqwqmc

5.6 DEV build 2850

20 Apr 07:26

Choose a tag to compare

5.6 DEV build 2850 Pre-release
Pre-release

5.6 DEV build 2850

This dev release brings redesigned join address visualization, updates to Fabric 1.20.5, and fixes some bugs.

Special thanks to jhqwqmc, Sniper_TVmc, mcmdev and DrexHD for contributions to this update

Change log

Fabric

  • Fabric support was updated to 1.20.5 by DrexHD, older fabric versions are no longer supported as Fabric 1.20.5 requires Java 21

Website

Redesigned Join Address visualization

320191723-aff709ec-f87d-47cf-bd56-c5f0cf866d6a

Join address visualization was difficult for servers with 100s of join addresses. With the redesign you can select multiple addresses as a group to be visualized, and rename it to your liking. This can help you track different advertising campaigns and server list entries across time.

320191710-4b70bc39-e3da-47aa-884d-fb19924cfd71

The same selectors are used on the Player Retention graph when you are grouping registered players by Join Address.

The address groups you make are linked to your user if you have login enabled, or stored to browser localstorage to keep them even if you close the page.

Editing Queries

  • You can now press 'Edit Query' on the Query Results page to change the filters and view. This can be useful if you want to quickly select a timeframe from calendar and then filter the results further with other filters.

Database

  • Fixed duplicate key exception during enable in some rare cases related to UpdateWebPermissionsPatch

Export

  • Fixed allowlist bounces data not being visible on exported pages.

Extensions

  • Composite punishment support was added to LibertyBans Extension by mcmdev
  • You can now configure PlaceholderAPI values that you want to ignore from other plugins. This is useful if some plugin doesn't report placeholder value after player leaves the server for example.

Locale

  • French (FR) locale was updated by Sniper_TVmc
  • Simplified Chinese (CN) locale was updated by jhqwqmc

5.6 build 2820

14 Mar 15:16

Choose a tag to compare

5.6 build 2820

This build contains some bugfixes to things that were missed in last release. If you missed that, here's the change log for that

Special thanks to jhqwqmc for contribution to this update

Change log

  • Fixed a error in extension boolean storage when using SQLite. A minor bug, but spammed the console a bit.
  • Fixed Join Address not appearing on the /plan ingame command due to formatting error
  • jhqwqmc updated Simplified Chinese Locale (CN)