Skip to content

Releases: plan-player-analytics/Plan

5.6 DEV build 2906

01 Dec 09:53
Compare
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
Compare
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
Compare
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
Compare
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)

5.6 build 2816

10 Mar 08:46
Compare
Choose a tag to compare

5.6 build 2816

This version brings a lot of bugfixes, such as Geolocation database download changes, and some new features, such as CSV export, whitelist bounce gathering and more placeholders.

Special thanks to jhqwqmc, Vankka, Beniro, liuzhen932 and SlimeDog for contributions to this update!

Change log

Data Gathering

  • Plan now downloads geolite database from playeranalytics.net - This is related to MaxMind reducing their daily download counts to 30/day by March 21st which breaks the geolocation database downloading. This means the geolocation database needs to be distributed via a server rather than from MaxMind directly. Currently Plan implicitly trusts that the webserver responding from geodb.playeranalytics.net is correct one. In future there will be a signature check added to ensure Plan is talking to correct server.
  • Fixed server crash when using SQLite and Plan tried to gather installed plugin list on the server thread.

Allowlist bounces

allowlist-bounces

Spigot, Sponge & Nukkit servers now gather whitelist bounces. There is a new tab on the server page under Online Activity which allows you to quickly see whose login has been blocked by whitelist, and who you have already allowed on the whitelist based on session data, so that you don't do unnecessary work allowing them again.

Visibility is controlled with web permission page.server.allowlist.bounce

Website

CSV Export in tables

export-demo

You can now export CSV from most tables. This is especially useful when combined with Query features, such as the click-and-drag in calendar for selecting data from specific timeframe.

Other

  • The react bundle is now built using Vite. It utilizes modules available in modern browsers. This sped up build times by 7 minutes and should also improve page loading speed.
  • Fixed some issues where reverse proxied Plan website loaded a blank page
  • Fixed issue where server players online graph was fetched for network page due to bad cache lookup
  • Server & Network Overview now uses frontend formatting for playtime and dates
  • Fixed issue where server ping table never loaded
  • Fixed server calendar being editable (You could drag blocks around rather than select)
  • Fixed ping graph not rendering on player page if there was a lot of points

Webserver

  • Added simple DDoS protection that limits requests if same IP requests same path multiple times. This type of DDoS has become more prevalent against cloudflare IPs, where a Go-http-client based bot requests / repeatedly and doesn't follow redirects. Because browsers follow redirects this doesn't affect regular users.

Database

  • Optimized how database handles transactions on disable. More unnecessary transactions are dropped

Fabric 1.20.4

  • Binero implemented Fabric 1.20.4 support, 1.20.3 is not supported this build onwards.
  • Fabric command registration was moved earlier to avoid confusion when /plan reload doesn't exist after failed enable.

Placeholders

  • Added network_ equivalent to all missing server_ placeholders
  • Added %plan_regular_players% and %plan_network_regular_players% placeholders
  • Added %plan_join_address% placeholder
  • Fixed off-by-one error in %plan_top_...% placeholders where 0 would be top 1 and 9 top 10. Now it matches documentation where 1 -> 1, and 10 -> 10. If you were compensating for this bug you may need to change %plan_top_..._0% to %plan_top_..._1% etc

Commands

  • /plan ingame now shows Last join address of the player.

Export

  • Fixed react files getting exported even when all export is disabled.

Extensions

  • Vankka updated DiscordSRV Extension to fix an incompatibility with new DiscordSRV version
  • @Conditional values are now removed when the value of the boolean changes in a way that unsatisfies the condition.
  • Fixed FastLogin Extension recording "Unknown" when behind a proxy server
  • Fixed Quests Extension support for Quests version 5, version 4 is no longer supported.

Locale

  • jhqwqmc updated Chinese locale (CN)
  • liuzhen932 updated Chinese locale (CN)

5.6 DEV build 2796

03 Mar 08:39
a9ab233
Compare
Choose a tag to compare
5.6 DEV build 2796 Pre-release
Pre-release

5.6 DEV build 2796

This dev release contains further fixes. It is a release candidate.

Special thanks to jhqwqmc, Vankka, Beniro, and liuzhen932 for contributions to this update!

Changes from DEV build 2731

  • Plan now downloads geolite database from playeranalytics.net
  • Fixes to website
  • New placeholders
  • liuzhen932 updated CN locale
  • SQLite now logs what it is waiting for if it needs to wait on disable
  • Optimizations to plugin disable transaction handling

Change log

Data Gathering

  • Plan now downloads geolite database from playeranalytics.net - This is related to MaxMind reducing their daily download counts to 30/day by March 21st. This means the geolocation database needs to be distributed via a server rather than from MaxMind directly. Currently Plan implicitly trusts that the webserver responding from geodb.playeranalytics.net is correct one. In future there will be a signature check added to ensure Plan is talking to correct server.

Website

CSV Export in tables

export-demo

You can now export CSV from most tables. This is especially useful when combined with Query features, such as the click-and-drag in calendar for selecting data from specific timeframe.

Other

  • The react bundle is now built using Vite. It utilizes modules available in modern browsers. This sped up build times by 7 minutes and should also improve page loading speed.
  • Fixed some issues where reverse proxied Plan website loaded a blank page
  • Fixed issue where server players online graph was fetched for network page due to bad cache lookup
  • Server & Network Overview now uses frontend formatting for playtime and dates
  • Fixed issue where server ping table never loaded
  • Fixed server calendar being editable (You could drag blocks around rather than select)

Webserver

  • Added simple DDoS protection that limits requests if same IP requests same path multiple times. This type of DDoS has become more prevalent against cloudflare IPs, where a Go-http-client based bot requests / repeatedly and doesn't follow redirects. Because browsers follow redirects this doesn't affect regular users.

Database

  • Optimized how database handles transactions on disable. More unnecessary transactions are dropped

Fabric 1.20.4

  • Binero implemented Fabric 1.20.4 support, 1.20.3 is not supported this build onwards.
  • Fabric command registration was moved earlier to avoid confusion when /plan reload doesn't exist after failed enable.

Placeholders

  • Added network_ equivalent to all missing server_ placeholders (You can see them here until list is updated to wiki on full release 01ce503)
  • Added %plan_regular_players% and %plan_network_regular_players% placeholders
  • Fixed off-by-one error in %plan_top_...% placeholders where 0 would be top 1 and 9 top 10. Now it matches documentation where 1 -> 1, and 10 -> 10. If you were compensating for this bug you may need to change %plan_top_...0% to %plan_top..._1% etc

Export

  • Fixed react files getting exported even when all export is disabled.

Extensions

  • Vankka updated DiscordSRV Extension to fix an incompatibility with new DiscordSRV version
  • @Conditional values are now removed when the value of the boolean changes in a way that unsatisfies the condition.

Locale

  • jhqwqmc updated Chinese locale (CN)
  • liuzhen932 updated Chinese locale (CN)

5.6 DEV build 2731

27 Jan 08:07
512defb
Compare
Choose a tag to compare
5.6 DEV build 2731 Pre-release
Pre-release

5.6 DEV build 2731

This dev release contains further maintenance and few new features

Special thanks to jhqwqmc, Vankka and Beniro for contributions to this update!

Changes from DEV build 2703

  • CSV export added
  • Bugfixes in export, placeholders, fabric commands and website cache

Change log

Website

CSV Export in tables

export-demo

You can now export CSV from most tables. This is especially useful when combined with Query features, such as the click-and-drag in calendar for selecting data from specific timeframe.

Other

  • The react bundle is now built using Vite. It utilizes modules available in modern browsers. This sped up build times by 7 minutes and should also improve page loading speed.
  • Fixed some issues where reverse proxied Plan website loaded a blank page
  • Fixed issue where server players online graph was fetched for network page due to bad cache lookup
  • Server & Network Overview now uses frontend formatting for playtime and dates

Fabric 1.20.4

  • Binero implemented Fabric 1.20.4 support, 1.20.3 is not supported this build onwards.
  • Fabric command registration was moved earlier to avoid confusion when /plan reload doesn't exist after failed enable.

Placeholders

  • Fixed off-by-one error in %plan_top_...% placeholders where 0 would be top 1 and 9 top 10. Now it matches documentation where 1 -> 1, and 10 -> 10. If you were compensating for this bug you may need to change %plan_top_...0% to %plan_top..._1% etc

Export

  • Fixed react files getting exported even when all export is disabled.

Extensions

  • Vankka updated DiscordSRV Extension to fix an incompatibility with new DiscordSRV version

Locale

  • jhqwqmc updated Chinese locale (CN)

5.6 DEV build 2703

07 Jan 10:10
29ed71f
Compare
Choose a tag to compare
5.6 DEV build 2703 Pre-release
Pre-release

5.6 DEV build 2703

This is dev release contains changes from last 3 months, it is mainly a maintenance update.

Special thanks to jhqwqmc, Vankka and Beniro for contributions to this update!

Change log

Website

  • The react bundle is now built using Vite. It utilizes modules available in modern browsers. This sped up build times by 7 minutes and should also improve page loading speed.
  • Fixed some issues where reverse proxied Plan website loaded a blank page

Fabric 1.20.4

  • Binero implemented Fabric 1.20.4 support, 1.20.3 is not supported this build onwards.

Extensions

  • Vankka updated DiscordSRV Extension to fix an incompatibility with new DiscordSRV version

Locale

  • jhqwqmc updated Chinese locale (CN)

5.6 build 2614

21 Oct 09:14
Compare
Choose a tag to compare

5.6 build 2614

Hello! This version contains a hefty set of new features, bugfixes and usability improvements. Highlighted features include Web User Access-Control, Plugin Version History and 'Click to see Who'-features. There are a lot more new things so check out the change log.

Updating to this version modifies database schema
There is a guide for updating to this version here: https://github.com/plan-player-analytics/Plan/wiki/Migration-guide-from-Version-5.5-to-5.6

Special thanks to yu_solt, ToxiWoxi, Kopo, xlanyleeet, Jumala9163, ringoXD, Dreeam-qwq & jhqwqmc for their contributions to this update!

If you would like to support the project financially, please consider sponsoring the main developer.

Change Log

Web user access control (HTTPS required)

image

A more granular user access control has been requested for quite a long time. Now you can limit users to only see smaller parts of the website. This feature is documented in https://github.com/plan-player-analytics/Plan/wiki/Web-permissions though you will find some help embedded on the /manage page.

Migrating from old version with permission_level adds groups 'legacy_level_0' etc with permissions that match previous behavior, users are linked to them automatically.

In order to edit web permissions on the website you need to set at least one webuser as admin with /plan setgroup {username} admin.

In order to keep /plan register working, give your players 'plan.webgroup.{group_name}'-permission in your permission plugin (such as LuckPerms) for the group you want them to have. If player has none of these permissions they can't register at all.

Plugin Version History (HTTPS required)

image

Plan now gathers plugin versions on server start. Any modifications are timestamped. This can be useful when tracking performance impact of plugin updates. This data was possible to gather from all server platforms.

Seeing this data on the website requires HTTPS to be set up because some server admins may consider this data sensitive. Without HTTPS the data endpoint is disabled and the data is only visible in the database. After HTTPS is set up admins can control who sees this data through web permissions.

On network page it is possible to check plugin versions of any server on the network. This can help you keep up to date with your plugins.

Click to see Who

click-to-see-demo

You can now click & drag on Server Calendar (and the new Network Calendar) to see who was playing on specific days the calendar data is about. On Geolocations Map you can click on a Country to see who has joined from that country.

These features utilize the existing Query features so it was relatively simple to implement. If you have more ideas where you would like to see who data is about, you can make a suggestions on Github

Website

New features

  • Player tables now show Average, Best and Worst Ping for all players
  • You can now choose visible columns on any table (such as Players tables and plugin tables.)
  • Network Calendar was added to Network Overview, similar to Server Calendar
  • Navigation button can now go to Plan Error Logs and Swagger Docs
  • The bigger features mentioned above

Improvements

  • Network Performance now disables TPS, Entities and Chunks buttons if there's only Proxy servers in the selected dataset.
  • Player page Plugins navigation now only shows servers that the player has data from.
  • Fixed some table text color issues, especially in Night Mode
  • Fixed issues with reverse-proxy https falling back to relative addresses in frontend when proxy-mode https was not in use. (Plan would assume address is http:// but browser would have https://, leading to different start for the address, which was interpret as incorrect address.)

Removal of old frontend files

With the React rewrite being complete an in use by most users, this version deletes the old frontend files from the jar. This reduces jar size.

If you still haven't migrated your html customizations this version does not load them anymore. Migration guide: https://github.com/plan-player-analytics/Plan/wiki/Html-Customization--migration-guide-to-React

  • Removed Plugin.Use_Legacy_Frontend setting.
  • Removed any code related to this setting, old behavior and the old web files.
  • Moved most html rendering from backend to the frontend.
  • DataTables did not support rendering React inside table headers so the library was removed and all functionality used by Plan rewritten in React. The visual differences should be minimal.

PageExtension API changes

  • You can now use web permissions with WebUser
  • Registering custom web permissions is possible either by overriding Resolver#usedWebPermissions, or through ResolverService#registerPermissions. There are two methods in ResolverService, one which grants existing groups the new permissions based on existing permission.

Webserver

  • Address of any webserver that is enabled can now be used by commands (Useful for users with 2 game servers without proxy)
  • Disabled X-Forwarded-For reverse-proxy warning temporarily since it was giving false positive warnings often.
  • Fixed out of date information appearing on the /player page due to HTTP caching

Endpoint changes

  • Added /v1/preferences and /v1/storePreferences endpoints that has some default formatting values coming from config.yml and user specific preferences if they have them set. Preferences UI is not yet implemented so for now this only returns the defaults.
  • Deprecated /v1/players endpoint, replaced with /v1/playersTable which gives data in raw format instead of formatted.
  • Added Group Management related endpoints /v1/webGroups, /v1/groupPermissions, /v1/permissions, /v1/saveGroupPermissions, /v1/deleteGroup (Only enabled with https)
  • Added Plugin history endpoint /v1/pluginHistory (Only enabled with https)

Database

  • Fixed join address truncation error on backup
  • Added tables plan_web_group, plan_web_group_to_permission, plan_web_permission, plan_web_user_preferences & plan_plugin_versions
  • plan_security column permission_level was removed and a foreign key column group_id added
  • Inactive player cleaning is now disabled on Game servers if Proxy server is in the database to avoid confusing situations where limit configured on Proxy server doesn't apply.

Spigot

  • Possibly fixed Ping not being gathered on Spigot 1.20+ servers
  • Dreeam-qwq fixed an error that occurred when Join Address didn't contain a port number.

Fabric

  • Fabric 1.20.2 support was implemented by Kopo. Older versions of fabric are no longer supported.
  • Plan now uses semantic version for fabric metadata

Sponge

  • ToxiWoxi fixed SpongeForge failing to load Plan due to unspecified LuckPerms dependency version in Plan

Locale

Some functionality was added to make life of translators easier.

  • Added setting which lists untranslated keys Plugin.Logging.Log_untranslated_locale_keys (default false). This lists anything that has default value so it may give some false positives.
  • Custom locale.yml file is now reloaded when it is modified.
  • Ukranian Locale (UK) added by xlanyleeet
  • Japanese Locale (JA) updated by yu_solt and Jumala9163
  • Simplified Chinese Locale (CN) updated by jhqwqmc
  • Translation of some data was moved to frontend so that it changes when you change the language.

Placeholders

  • Fixed off by one mistake in %plan_top_...% placeholders where 1 would give the 2nd highest and 10 nothing.
  • Added %plan_player_geolocation% placeholder

Extensions

  • Fixed BuyCraft not sorting dates correctly
  • Fixed an issue where rapid fire Vulcan AntiCheat violations would cause database exceptions.
  • Updated Lands API to newer version
  • Possibly fixed an issue where Litebans data was not being updated
  • Fixed issue where ViaVersion would show no data on network page

5.6 DEV build 2574

07 Oct 06:11
5a2bdaf
Compare
Choose a tag to compare
5.6 DEV build 2574 Pre-release
Pre-release

5.6 DEV build 2574

This is a release candidate.

This version contains goodies such as Web User Access-Control, Plugin Version History, removes files related to old non-React frontend, Fabric 1.20.2 support, as well as fixes bugs & does small improvements

Updating to this version modifies database schema, so if you want to return to 5.5 later backup your database files. The database schema is backwards compatible, so 5.4 and 5.5 will continue to insert data (except webuser registrations)

Special thanks to yu_solt, ToxiWoxi, Kopo, xlanyleeet, Jumala9163, ringoXD, Dreeam-qwq & jhqwqmc for their contributions to this update!

Changes from DEV build 2556

  • Plugin Version History
  • Inactive player cleaning is now disabled on Game servers if Proxy server is in the database to avoid confusing situations where limit configured on Proxy server doesn't apply.
  • Network Performance now disables TPS, Entities and Chunks buttons if there's only Proxy servers in the selected dataset.
  • Dreeam-qwq fixed an error that occurred when Join Address didn't contain a port number.
  • Simplified Chinese Locale (CN) updated by jhqwqmc

Change Log

Web user access control (HTTPS required)

image

A more granular user access control has been requested for quite a long time. Now you can limit users to only see smaller parts of the website. This feature is documented in https://github.com/plan-player-analytics/Plan/wiki/Web-permissions though you will find some help embedded on the /manage page.

Migrating from old version with permission_level adds groups 'legacy_level_0' etc with permissions that match previous behavior, users are linked to them automatically. It is recommended that you migrate them to the new default groups: https://github.com/plan-player-analytics/Plan/wiki/Web-permissions#legacy-permission-level-groups

In order to edit web permissions on the website you need to set at least one webuser as admin with /plan setgroup {username} admin.

In order to keep /plan register working, give your players 'plan.webgroup.{group_name}'-permission in your permission plugin (such as LuckPerms) for the group you want them to have. If user has none of these permissions they can't register at all.

Plugin Version History

image

Plan now gathers plugin versions on server start. Any modifications are timestamped. This can be useful when tracking performance impact of plugin updates. This data was possible to gather from all server platforms.

Seeing this data on the website requires HTTPS to be set up because some server admins may consider this data sensitive. Without HTTPS the data endpoint is disabled and the data is only visible in the database. After HTTPS is set up admins can control who sees this data through web permissions.

On network page it is possible to check plugin versions of any server on the network. This can help you keep up to date with your plugins.

image

Removal of old frontend files

With the React rewrite being complete an in use by most users, this version deletes the old frontend files from the jar. This reduces jar size by 1.5 MB.

If you still haven't migrated your html customizations this version does not load them anymore. Migration guide: https://github.com/plan-player-analytics/Plan/wiki/Html-Customization--migration-guide-to-React

  • Removed Plugin.Use_Legacy_Frontend setting.
  • Removed any code related to this setting, old behavior and the old web files.
  • Moved most html rendering from backend to the frontend.
  • DataTables did not support rendering React inside table headers so the library was removed and all functionality used by Plan rewritten in React. The visual differences should be minimal.

Website

image

  • You can now choose visible columns on any table that uses the rewritten DataTable (such as Players tables and large plugin tables.
  • Navigation button can now go to Plan Error Logs and Swagger Docs
  • Added Network Calendar to Network Overview which works similar to how Server Calendar works.
  • Network Performance now disables TPS, Entities and Chunks buttons if there's only Proxy servers in the selected dataset.
  • Fixed some table text color issues, especially in Night Mode
  • Fixed issues with reverse-proxy https falling back to relative addresses in frontend when proxy-mode https was not in use. (Plan would assume address is http:// but browser would have https://, leading to different start for the address, which was interpret as incorrect address.)

Webserver

  • Disabled X-Forwarded-For reverse-proxy warning temporarily since it was giving false positive warnings often.
  • Fixed out of date information appearing on the /player page due to HTTP caching
  • Added /v1/preferences and /v1/storePreferences endpoints that has some default formatting values coming from config.yml and user specific preferences if they have them set. Preferences UI is not yet implemented so for now this only returns the defaults.
  • Deprecated /v1/players endpoint, replaced with /v1/playersTable which gives data in raw format instead of formatted.
  • Added Group Management related endpoints /v1/webGroups, /v1/groupPermissions, /v1/permissions, /v1/saveGroupPermissions, /v1/deleteGroup (Only enabled with https)
  • Added Plugin history endpoint /v1/pluginHistory (Only enabled with https)

Database

  • Fixed join address truncation error on backup
  • Added tables plan_web_group, plan_web_group_to_permission, plan_web_permission and plan_web_user_preferences
  • plan_security column permission_level was replaced with a foreign key column group_id
  • Inactive player cleaning is now disabled on Game servers if Proxy server is in the database to avoid confusing situations where limit configured on Proxy server doesn't apply.

Spigot

  • Possibly fixed Ping not being gathered on Spigot 1.20+ servers
  • Dreeam-qwq fixed an error that occurred when Join Address didn't contain a port number.

Fabric

  • Fabric 1.20.2 support was implemented by Kopo. Older versions of fabric are no longer supported.

Sponge

  • ToxiWoxi fixed SpongeForge failing to load Plan due to unspecified LuckPerms dependency version in Plan

Locale

Some functionality was added to make life of translators easier.

  • Added setting which lists untranslated keys Plugin.Logging.Log_untranslated_locale_keys (default false). This lists anything that has default value so it may give some false positives.
  • Custom locale.yml file is now reloaded when it is modified.
  • Ukranian Locale (UK) added by xlanyleeet
  • Japanese Locale (JA) updated by yu_solt and Jumala9163
  • Simplified Chinese Locale (CN) updated by jhqwqmc
  • More things that were translated in the backend (such as Unknown in datapoints) was moved to the frontend

Placeholders

  • Fixed off by one mistake in %plan_top_...% placeholders where 1 would give the 2nd highest and 10 nothing.

Extensions

  • Fixed an issue where rapid fire Vulcan AntiCheat violations would cause database exceptions.
  • Updated Lands API to newer version
  • Possibly fixed an issue where Litebans data was not being updated
  • Fixed issue where ViaVersion would show no data on network page