Skip to content

Releases: plan-player-analytics/Plan

5.5 DEV build 1833

17 Aug 11:06
Compare
Choose a tag to compare
5.5 DEV build 1833 Pre-release
Pre-release

5.5 DEV build 1833

This update contains update to Java 11, Sponge API 8, Fabric 1.19.1, as well as Webserver rewrite to use Jetty. In addition new features such as Access logging & Swagger are available.

This version updates config so backup your config in case you need to revert back to 5.4!

Special thanks to Vankka, Kopo and Drex for contributions to this update

Untested features:

  • Fabric join address gathering, unknown if new addresses are correct format.

Bugfixes from DEV build 1791

  • Fabric
    • Fabric 1.19.1 is now supported. Fabric 1.19 is no longer supported. Thanks Drex!
    • Fabric now starts Plan webserver properly if HTTPS is enabled
    • Fabric now gets HTTP/2 enabled since ALPN protocol provider is loaded properly
    • Fabric should now gather join addresses correctly. Previously player IPs were gathered by mistake. To clear the invalid data use /plan db removejoinaddresses {servername} once you install the plugin.
  • Velocity
    • Velocity now starts properly with slf4j logger and all
  • Bugfixes
    • Jetty no longer holds the server hostage and shuts down properly on server shutdown
    • Reduced maximum join address length to 191 characters due to limitation of old MySQL versions
    • Added primary keys to all database tables (Fix not applied retroactively, since this is to allow installing on servers where MySQL mandates primary keys for all tables)
  • Other
    • Increased default inactive player removal theshold 180 days -> 3650 days (10 years). This change is not applied automatically, only new configs.
    • Added log message about HTTPS certificate expiry date, and warning if it is less than 7 days from now
    • Reworked player join and leave event handling to reduce duplicate code

Change Log

Java 11

  • Plan now requires Java 11 or newer to run. This version is required for Sponge API 8, Jetty and other dependency updates.
  • Java 8 is no longer supported. If you are unable to update, you can continue using 5.4 build 1722 even if connected to same database.
  • Plan API jar is still compiled with Java 8 to provide backwards compatibility for other plugins, so the use of Plan API doesn't force you to update your plugin to need Java 11.

Sponge API 8

  • Vankka implemented Sponge API 8 changes. Sponge API 7 is no longer supported. If you are unable to update, you can continue using 5.4 build 1722 even if connected to same database.

Fabric

  • Drex implemented support for Fabric 1.19.1
  • Fabric should now gather join addresses correctly. Previously player IPs were gathered by mistake. To clear the invalid data use /plan db removejoinaddresses {servername} once you install the plugin.

Jetty Webserver

  • Replaced Sun Webserver with Jetty (https://www.eclipse.org/jetty/), an open source embedded webserver library.
  • Plan now supports HTTP/2
  • Plan now supports TLSv1.3 for HTTPS, and browsers have a larger selection of cipher suites they can use.
    • Users of PlanCert.jks (Included in the jar) are encouraged to create their own self signed cert. I had to implement some extra code to support expired certificate (Since PlanCert.jks inside the jar has expired), and that may not be as secure as creating a new self-signed .p12 - Instructions will be added to the wiki, but the plugin also logs the instructions if you use that cert.

Access log

Access logs are now stored in Plan database in plan_access_log table.

  • You can also log access to console with Webserver.Security.Access_log.Print_to_console (default false) in the config. This is useful for debugging reverse-proxy issues.
  • The IP of each request is stored in the database - as it is necessary for security (a valid legal basis for use with GDPR).
  • The request logs in database are removed after Webserver.Security.Access_log.Remove_logs_after_days (default 30)

Swagger

Plan json endpoints are now documented with Swagger available on the webserver itself. You can access the Swagger documentation from /docs on your Plan webserver after updating.

Removal of some deprecated internal code

  • Removed ServerKeys, some PlayerKeys fields as well as PlayerDeath class. This code has been deprecated since 5.0.

Commands and permissions

  • Added plan.command permission (default: true) on Spigot servers to allow hiding /plan command from tab completion by negating this permission

Config

  • Config structure was modified to be valid yaml so that other programs can validate it. The structure is updated automatically with same values for old versions of the config.
  • Increased default inactive player removal theshold 180 days -> 3650 days (10 years). This change is not applied automatically, only new configs.

Extensions

  • Plugin method calls should no longer be made during Plan disable.
  • Redprotect and Nucleus disabled temporarily as the extension code still needs to be updated to Sponge API 8

Build & Automation

  • Restructured Github Actions builds to have less workflow files
  • Automated Ore uploads
  • Dev builds for every commit is now available DEV build pipeline (Click on title and scroll down to Artifacts)
  • Automated version.txt update on release (The file which Plan reads for update information)
  • Restructured gradle configurations to better utilize shadowJar and reduce amount of code IntelliJ IDEA needs to index after each build.

Other

  • Fixed lag caused by large tab completion results if server had a lot of players and someone tab completed /plan player .
  • Fixed empty cookies preventing Plan login due to error
  • Updated geoip2, caffeine & HikariCP to versions that needed Java 11
  • Reduced maximum join address length to 191 characters due to limitation of old MySQL versions
  • Added primary keys to all database tables (Fix not applied retroactively, since this is to allow installing on servers where MySQL mandates primary keys for all tables)
  • Added log message about HTTPS certificate expiry date, and warning if it is less than 7 days from now
  • Reworked player join and leave event handling to reduce duplicate code

5.5 DEV build 1791

15 Jul 06:25
Compare
Choose a tag to compare
5.5 DEV build 1791 Pre-release
Pre-release

5.5 DEV build 1791

This update contains update to Java 11, Sponge API 8, as well as Webserver rewrite to use Jetty. In addition new features such as Access logging & Swagger are available.

This version updates config so backup your config in case you need to revert back to 5.4!

Sponge, Velocity and Fabric versions have not been fully tested for this release, please report any issues

Special thanks to Vankka and Kopo for contributions to this update

Bugfixes from DEV build 1740

  • Fixed 'proxy' mode for Jetty
  • Fixed slf4j warnings appearing during plugin enable

Change Log

Java 11

  • Plan now requires Java 11 or newer to run. This version is required for Sponge API 8, Jetty and other dependency updates.
  • Java 8 is no longer supported. If you are unable to update, you can continue using 5.4 build 1722 even if connected to same database.
  • Plan API jar is still compiled with Java 8 to provide backwards compatibility for other plugins, so the use of Plan API doesn't force you to update your plugin to need Java 11.

Sponge API 8

  • Vankka implemented Sponge API 8 changes. Sponge API 7 is no longer supported. If you are unable to update, you can continue using 5.4 build 1722 even if connected to same database.

Jetty Webserver

  • Replaced Sun Webserver with Jetty (https://www.eclipse.org/jetty/), an open source embedded webserver library.
  • Plan now supports HTTP/2
  • Plan now supports TLSv1.3 for HTTPS, and browsers have a larger selection of cipher suites they can use.
    • Users of PlanCert.jks (Included in the jar) are encouraged to create their own self signed cert. I had to implement some extra code to support expired certificate (Since PlanCert.jks inside the jar has expired), and that may not be as secure as creating a new self-signed .p12 - Instructions will be added to the wiki, but the plugin also logs the instructions if you use that cert.

Access log

Access logs are now stored in Plan database in plan_access_log table.

  • You can also log access to console with Webserver.Security.Access_log.Print_to_console (default false) in the config. This is useful for debugging reverse-proxy issues.
  • The IP of each request is stored in the database - as it is necessary for security (a valid legal basis for use with GDPR).
  • The request logs in database are removed after Webserver.Security.Access_log.Remove_logs_after_days (default 30)

Swagger

Plan json endpoints are now documented with Swagger available on the webserver itself. You can access the Swagger documentation from /docs on your Plan webserver after updating.

Removal of some deprecated internal code

  • Removed ServerKeys, some PlayerKeys fields as well as PlayerDeath class. This code has been deprecated since 5.0.

Commands and permissions

  • Added plan.command permission (default: true) on Spigot servers to allow hiding /plan command from tab completion by negating this permission

Config

  • Config structure was modified to be valid yaml so that other programs can validate it. The structure is updated automatically with same values for old versions of the config.

Extensions

  • Plugin method calls should no longer be made during Plan disable.
  • Redprotect and Nucleus disabled temporarily as the extension code still needs to be updated to Sponge API 8

Build & Automation

  • Restructured Github Actions builds to have less workflow files
  • Automated Ore uploads
  • Dev builds for every commit is now available DEV build pipeline (Click on title and scroll down to Artifacts)
  • Automated version.txt update on release (The file which Plan reads for update information)
  • Restructured gradle configurations to better utilize shadowJar and reduce amount of code IntelliJ IDEA needs to index after each build.

Other

  • Fixed lag caused by large tab completion results if server had a lot of players and someone tab completed /plan player .
  • Fixed empty cookies preventing Plan login due to error
  • Updated geoip2, caffeine & HikariCP to versions that needed Java 11

5.5 DEV build 1740

19 Jun 15:59
Compare
Choose a tag to compare
5.5 DEV build 1740 Pre-release
Pre-release

5.5 DEV build 1740

This update contains update to Java 11, Sponge API 8, as well as Webserver rewrite to use Jetty.

This update is backwards compatible with 5.4 so you may revert to previous version if the dev release does not work as intended.

Special thanks to Vankka and Kopo for contributions to this update

Change Log

Java 11

  • Plan now requires Java 11 or newer to run.
  • Java 8 is no longer supported. If you are unable to update, you can continue using 5.4 build 1722 even if connected to same database.
  • Plan API jar is still compiled with Java 8 to provide backwards compatibility for other plugins, so the use of Plan API doesn't force you to update your plugin to need Java 11.

Sponge API 8

  • Vankka implemented Sponge API 8 changes. Sponge API 7 is no longer supported. If you are unable to update, you can continue using 5.4 build 1722 even if connected to same database.

Jetty Webserver

  • Replaced sun Webserver with Jetty (https://www.eclipse.org/jetty/), an open source embedded webserver library.
  • Plan now supports HTTP/2
  • Plan now supports TLSv1.3 for HTTPS, and browsers have a larger selection of cipher suites they can use.
    • Users of PlanCert.jks (Included in the jar) are encouraged to create their own self signed cert. I had to implement some extra code to support expired certificate (Since PlanCert.jks inside the jar has expired), and that may not be as secure as creating a new self-signed .p12 - Instructions will be added to the wiki, but the plugin also logs the instructions if you use that cert.

Removal of some deprecated internal code

  • Removed ServerKeys, some PlayerKeys fields as well as PlayerDeath class. This code has been deprecated since 5.0.

Other

  • Fixed lag caused by large tab completion results if server had a lot of players and someone tab completed /plan player .
  • Updated geoip2, caffeine & HikariCP to versions that needed Java 11

5.4 build 1722

11 Jun 16:15
Compare
Choose a tag to compare

5.4 build 1722

This update fixes fabric 1.19 support and join address gathering.

Special thanks to Kopo for contributions to this update.

Change log

Fix join address gathering (No longer 'Unknown')

An oversight in the way the player leave listener code was structured caused the player join address to be removed from memory before its linking to the session that was ending.

It is now fixed.

Fabric 1.19 support

Kopo fixed fabric pipeline for 1.19 - Unfortunately the changes are incompatible with older versions of fabric. If you need older version of fabric use older version of Plan.

Frontend BETA

  • /players page rewritten in React now available when opted in to frontend beta
    • Note that no fixes to functionality were added to it yet, just implementation in React.
  • Server page rewrite is making good progress and is about 75% complete.

Server identification

  • Possibly fixed ServerInfoFile.yml clearing and server duplicating if MySQL is busy during enable

5.4 DEV build 1718

10 Jun 13:47
Compare
Choose a tag to compare
5.4 DEV build 1718 Pre-release
Pre-release

5.4 DEV build 1718

This update fixes fabric 1.19 support.

Special thanks to Kopo for contributions to this update.

Change log

Fabric 1.19 support

Kopo fixed fabric pipeline for 1.19 - Unfortunately the changes are incompatible with older versions of fabric. If you need older version of fabric use older version of Plan.

Frontend BETA

  • /players page rewritten in React now available when opted in to frontend beta
    • Note that no fixes to functionality were added to it yet, just implementation in React.
  • Server page rewrite is making good progress and is about 75% complete.

Server identification

  • Possibly fixed ServerInfoFile.yml clearing and server duplicating if MySQL is busy during enable

5.4 build 1690

28 May 07:28
Compare
Choose a tag to compare

5.4 build 1690

This update fixes some annoying bugs and prepares the plugin for the move to 5.5 and Java 11 while keeping this version compatible for those unable to update their servers to Java 11.

If no further critical bugs surface next update will be 5.5.

Change log

Plugin stability

  • Fixed issue where Plan would prevent server enable from continuing if database was not responsive during enable.
  • Fixed 2 crashes when database write latency is high
    • Fixed thread starvation crash during high latency when using ViaVersion or ProtocolSupport
    • Reduced chance of out of memory crash when during high latency by starting to drop plugin data transactions for a while if queue grows over 500 transactions. (The transactions continue if queue returns to <50)

Database

Join address schema change

  • Join addresses are now stored in plan_join_address table and id referencing that is added to plan_sessions table for time based analysis implementation later.
    • Backwards compatible schema change - old versions will insert 'unknown' as each sessions address.
    • plan_user_info.join_address column was not removed, but its use is discouraged for 3rd parties as its use may be removed in the future.

Fixes to patches

  • Fixed UserInfoOptimizationPatch resetting join_address data when applied
  • Fixed typo in RemoveDanglingServerDataPatch that caused it to fail
  • Possibly improved speed of RemoveDanglingUserDataPatch

Other fixes to database

  • Prevented transactions from executing if database ran into fatal error. This reduces amount of errors logged on a failed patch
  • Fixed error related to user_id constraint violation for Ping and Session store transactions. If they execute faster than the user register transaction the player will not have up-to-date information until the proper transaction executes, but the storage of other data will no longer fail.
  • Prevented ActiveCookieStore related DbOpException if plugin failed to enable

Website

  • Server page > Performance now lists Average players under Performance as Numbers.

Frontend BETA

  • Implemented player ping graph on the player page when opted into frontend beta
  • Fixed nickname list not showing colors properly
  • Fixed terminal icon not loading when user registered with console
  • Fallback to using relative address if Alternative_IP is misconfigured to reduce confusion. Previously nothing would load if address was different, now there's a chance something loads.

Placeholders

  • Wrote tests for placeholders
    • Fixed player_recent_kill_{1-10} and player_recent_death_{1-10} off-by-one mistake and related error for n=10.
    • Fixed player_unique_players_today erroring if there had been no sessions during today.
  • New placeholders
    • %plan_player_current_session_length%: The length of active session (Online time)
    • %plan_player_current_session_length_raw%: unformatted ms
    • %plan_player_latest_session_length%: The length of active session or previous session if not online
    • %plan_player_latest_session_length_raw%: unformatted ms
    • %plan_player_previous_session_length%: The length of previous non-active session even if online
    • %plan_player_previous_session_length_raw%: unformatted ms
  • player_ placeholders now support adding :playername or :uuid at the end of placeholder to show data for another player
    • Note that if the player by given identifier is not found the placeholder is not replaced.

Other bugfixes

  • Console will now log colors properly on Bukkit and Bungee based servers
  • Fixed some _raw placeholders from being formatted
  • Fixed Error related to GriefDefender Extension

5.4 DEV build 1678 RC2

26 May 07:18
Compare
Choose a tag to compare
Pre-release

5.4 DEV build 1678 RC2

More bugfixes to build 1661. This is a release candidate.

Changes from dev build 1661

  • Fixed user_id reference error on MariaDB (Error codes for not null constraint were different and thus not detected correctly)
  • Fixed user_id reference error related to ServerShutdownPreservation
  • Fixed parsing error related to server shutdown preservation csv file
  • Fixed typo in RemoveDanglingServerDataPatch that caused it to fail
  • Fixed 2 crashes when database write latency is high
    • Fixed thread starvation crash during high latency when using ViaVersion or ProtocolSupport
    • Reduced chance of out of memory crash when database during high latency by starting to drop plugin data transactions for a while if queue grows over 500 transactions. (The transactions continue if queue returns to <50)
  • Fixed issue where Plan would prevent server enable from continuing if database was not responsive during enable.
  • Fixed Cookies not getting removed from database in some cases when expired.

Change log

Frontend BETA

  • Implemented player ping graph on the player page when opted into frontend beta
  • Fixed nickname list not showing colors properly
  • Fixed terminal icon not loading when user registered with console
  • Fallback to using relative address if Alternative_IP is misconfigured to reduce confusion. Previously nothing would load if address was different, now there's a chance something loads.

Database

Join address schema change

  • Join addresses are now stored in plan_join_address table and id referencing that is added to plan_sessions table for time based analysis implementation later.
    • Backwards compatible schema change - old versions will insert 'unknown' as each sessions address.
    • plan_user_info.join_address column was not removed, but its use is discouraged for 3rd parties as its use may be removed in the future.

Fixed 2 crashes when database write latency is high

  • Fixed thread starvation crash during high latency when using ViaVersion or ProtocolSupport
  • Reduced chance of out of memory crash when database during high latency by starting to drop plugin data transactions for a while if queue grows over 500 transactions. (The transactions continue if queue returns to <50)

Fixes to patches

  • Fixed UserInfoOptimizationPatch resetting join_address data when applied
  • Fixed typo in RemoveDanglingServerDataPatch that caused it to fail
  • Possibly improved speed of RemoveDanglingUserDataPatch

Other fixes to database

  • Fixed issue where Plan would prevent server enable from continuing if database was not responsive during enable.
  • Prevented transactions from executing if database ran into fatal error. This reduces amount of errors logged on a failed patch
  • Fixed error related to user_id constraint violation for Ping and Session store transactions. If they execute faster than the user register transaction the player will not have up-to-date information until the proper transaction executes, but the storage of other data will no longer fail.
  • Prevented ActiveCookieStore related DbOpException if plugin failed to enable

Other bugfixes

  • Console will now log colors properly on Bukkit and Bungee based servers
  • Fixed some _raw placeholders from being formatted
  • Fixed Error related to GriefDefender Extension

5.4 DEV build 1661

21 May 07:12
Compare
Choose a tag to compare
5.4 DEV build 1661 Pre-release
Pre-release

5.4 DEV build 1661

There are backwards compatible database schema changes and frontend beta fixes in this update.

This is a release candidate.

Changes from dev build 1651

  • Join addresses are now stored in plan_join_address table and id referencing that is added to plan_sessions table for time based analysis implementation later.
    • Backwards compatible schema change - old versions will insert 'unknown' as each sessions address.
    • plan_user_info.join_address column was not removed, but its use is discouraged for 3rd parties as its use may be removed in the future.
  • Prevented transactions from executing if database ran into fatal error. This reduces amount of errors logged on a failed patch
  • Frontend BETA
    • Implemented player ping graph on the player page when opted into frontend beta
    • Fixed nickname list not showing colors properly
    • Fixed terminal icon not loading when user registered with console
    • Fallback to using relative address if Alternative_IP is misconfigured to reduce confusion. Previously nothing would load if address was different, now there's a chance something loads.

Change log

Frontend BETA

  • Implemented player ping graph on the player page when opted into frontend beta
  • Fixed nickname list not showing colors properly
  • Fixed terminal icon not loading when user registered with console
  • Fallback to using relative address if Alternative_IP is misconfigured to reduce confusion. Previously nothing would load if address was different, now there's a chance something loads.

Database

  • Fixed UserInfoOptimizationPatch resetting join_address data when applied
  • Join addresses are now stored in plan_join_address table and id referencing that is added to plan_sessions table for time based analysis implementation later.
    • Backwards compatible schema change - old versions will insert 'unknown' as each sessions address.
    • plan_user_info.join_address column was not removed, but its use is discouraged for 3rd parties as its use may be removed in the future.
  • Possibly improved speed of RemoveDanglingUserDataPatch
  • Prevented ActiveCookieStore related DbOpException if plugin failed to enable
  • Prevented transactions from executing if database ran into fatal error. This reduces amount of errors logged on a failed patch
  • Fixed error related to user_id constraint violation for Ping and Session store transactions. If they execute faster than the user register transaction the player will not have up-to-date information until the proper transaction executes, but the storage of other data will no longer fail.

Other bugfixes

  • Console will now log colors properly on Bukkit and Bungee based servers
  • Fixed some _raw placeholders from being formatted
  • Fixed Error related to GriefDefender Extension

5.4 DEV build 1651

14 May 08:04
Compare
Choose a tag to compare
5.4 DEV build 1651 Pre-release
Pre-release

5.4 DEV build 1651

This dev build contains bugfixes.

Changes from dev build 1648

  • Fixed error related to user_id constraint violation also on MySQL (Previous fix only applied on SQLite due to wrong SQL error code detection)

Change log

  • Fixed UserInfoOptimizationPatch resetting join_address data when applied
    • Note: How this data is stored needs to be changed again in near future. This mistake bumped up priority of that change.
  • Possibly improved speed of RemoveDanglingUserDataPatch
  • Prevented ActiveCookieStore related DbOpException if plugin failed to enable
  • Console will now log colors properly on Bukkit and Bungee based servers
  • Fixed some _raw placeholders from being formatted
  • Fixed Error related to GriefDefender Extension
  • Fixed error related to user_id constraint violation for Ping and Session store transactions. If they execute faster than the user register transaction the player will not have up-to-date information until the proper transaction executes, but the storage of other data will no longer fail.

5.4 DEV build 1648

07 May 07:47
Compare
Choose a tag to compare
5.4 DEV build 1648 Pre-release
Pre-release

5.4 DEV build 1648

This dev build contains bugfixes.

Change log

  • Fixed UserInfoOptimizationPatch resetting join_address data when applied
    • Note: How this data is stored needs to be changed again in near future. This mistake bumped up priority of that change.
  • Possibly improved speed of RemoveDanglingUserDataPatch
  • Prevented ActiveCookieStore related DbOpException if plugin failed to enable
  • Console will now log colors properly on Bukkit and Bungee based servers
  • Fixed some _raw placeholders from being formatted
  • Fixed Error related to GriefDefender Extension
  • Fixed error related to user_id constraint violation for Ping and Session store transactions. If they execute faster than the user register transaction the player will not have up-to-date information until the proper transaction executes, but the storage of other data will no longer fail.