Plan - Player Analytics, Sponge/Bukkit/Bungee/Velocity support

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


Change log 4.6.2

Bugfixes

  • Fixed a bug where MySQL did not like a GROUP BY statement
  • Fixed /network page appearing buggy when no Bukkit/Sponge servers were connected
  • Fixed Litebans table prefix issues
  • Page now scrolls to the top when switching tab (“Information”, “Server Health”, etc)

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


4.7.0 - Database Code Restructuring

This update brings some database stability changes as well as various fixes

Fixed Security Vulnerability

  • Fixed a brute force vulnerability of the Plan web panel by adding a 90s delay after 5 failed login attempts from a certain address.

Improvements

  • Database code restructured
    • Everything that updates rows in the database is now using Transactions. This allows automatic rollbacks of failed transactions (such as a failed patch)
    • Transactions are now performed on their own thread to remove single-server deadlock possibility.
    • Queries & Transactions wait before patches are applied (This is to prevent tons of exceptions)
    • Sponge now uses same HikariCP as other server implementations. (Should prevent some issues with connection leaks)
  • Some Query memory optimizations
    • Sessions of other servers are no longer fetched to memory when doing analysis on network server
    • Sessions, WorldTimes and PlayerKills related to the sessions fetched with single query instead of 3.
    • All users no longer fetched when analysing a network server
  • Sessions are now saved on server shutdown if possible. (ínstead of JVM shutdown) Special thanks to @Fuzzlemann for his research on this.

Bugfixes

  • Commands and web panel now notify user if the database is not open.
  • Servers no longer generate same ServerUUID when Plan is installed
  • Fixed login message displaying ‘/’
  • Fixed /server page “back” button on networks
  • Fixed concurrent modification related to FileWatcher (Network config update system)
  • Attempt to fix databases that fail on KillsOptimizationPatch
  • Attempt to fix timeout error on network servers when viewing /server pages

As always if you are having issues with the update, please report issues on Github (https://github.com/Rsl1122/Plan-PlayerAnalytics/issues) or join Discord for support (https://discord.gg/yXKmjzT). Thanks

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


4.7.1 Change log

Bugfixes

  • Fixed ParseException related to WorldMap (Caused both /network and /server page to fail)
  • Fixed Server JSON export
  • Fixed SQL errors related to World Times

As always if you are having issues with the update, please report issues on Github (https://github.com/Rsl1122/Plan-PlayerAnalytics/issues) or join Discord for support (https://discord.gg/yXKmjzT). Thanks

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


4.7.2 - Change log

New

  • /plan manage export command for exporting all player pages/json.
  • Added Export.Export_player_on_login_and_logout setting for exporting Player pages/json on login & logout based on the other settings.

Bugfixes

  • Fixed a Duplicate key error on Analysis
  • Fixed Server UUID NPE on enable
  • Prevented/Fixed some unsupported key errors
  • Solved a server hang on updating Server UUID in the database
  • Solved player pages/json not being exported
  • Fixed json export failing when player name contained a ‘/’

As always if you are having issues with the update, please report issues on Github (https://github.com/Rsl1122/Plan-PlayerAnalytics/issues) or join Discord for support (https://discord.gg/yXKmjzT). Thanks

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


DataExtension API - Change log 4.8.0

This update brings a new API that is eventually going to replace PluginData API. This replacement is necessary, as the old API is one of the limitations that still need Bungee-Bukkit connections. If you’re interested, a roadmap has been added on Github: Roadmap · GitHub

In addition some bugs have been squashed. Special thanks to Vankka and Skmedix for helping me out with some gradle stuff.

Support development: https://www.paypal.me/Rsl1122
Rating the plugin and giving the project a star on Github also helps :slight_smile:

New

  • New Plugin support: CoreProtect, Minigameslib
  • DataExtension API
    • Annotation based API that allows storing plugin data in Plan database.
    • API Documentation: APIv5 · plan-player-analytics/Plan Wiki · GitHub
    • PluginData (Old API) will appear with (Legacy) label on the web panel since it is not possible to do all the functionality with the new API yet. This will be removed once all functionality can be ported over. In the meanwhile both will function side by side.

Bugfixes

  • #922 Fixed config.yml having wrong defaults on Sponge in some cases
  • #982 Fixed Login Prompt not appearing on iOS devices
  • #966 Fixed MySQL transaction timeout error on Clean task
  • #967, #956 Cleaned up duplicate data in ‘plan_user_info’
  • #979 Fixed Exported /player-page js & css links
  • #971 Use_server_timezone should now properly affect Recent days formatting (‘Yesterday’) and Calendars

As always if you are having issues with the update, please report issues on Github (https://github.com/Rsl1122/Plan-PlayerAnalytics/issues) or join Discord for support (https://discord.gg/yXKmjzT). Thanks

1 Like

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


4.8.1 Change log

Bugfixes

  • #991 Fixed customized file loading from plugin folder (Html Customization)
  • #992 Added a color to tps and disk graph labels
  • CoreProtect API v5 (1.8 - 1.12) now supported.
  • #994 Fixed player calendar showing UUIDs instead of player names of killed players.

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


Locales, DataExtension Tables - Change log 4.8.2

New

Locale updates

  • Added Japanese (JA) by yukieji
  • Improved Simplified Chinese (CN) by qsefthuopq
  • Added French (FR) by Aurelien

DataExtension Tables

  • DataExtensions can now display table data with TableProvider annotations
  • /server page players tab now displays DataExtension data as well.
    • Viewing exported html now requires a web service. (The players table is now delivered using JSON. The json being loaded via XMLHTTPRequest, and that does not work properly with file:// protocol)
  • Added a CapabilityService for future additions to the API.
  • Updated documentation here: APIv5 · plan-player-analytics/Plan Wiki · GitHub

New settings

  • Time settings for clean up of time series and ping data.
  • Setting to disable Ping gathering
  • Default database changed to H2 for new installs due to SQLite not working properly on 1.8.8 anymore

Ported PluginData to DataExtensions

  • ASkyBlock, GriefPrevention (Bukkit+Sponge), GriefPreventionPlus, mcMMO, Nucleus, RedProtect (Bukkit+Sponge), Vault Eco
  • Removed some old PluginData implementations that have been implemented as Extensions

Removed IP Hashes from the database

  • Removed IP Hashes from the database due to concerns over rainbow table related hash resolution of stored IPs from the hashes.

Spigot 1.14 support

  • #1012 Fixed Plan not enabling on Spigot 1.14
    • #1029 Fixed bStats task breaking reload

Bugfixes

  • [Analysis] #1017 Fixed a query related to DataExtensions
  • [Plugin Startup] Reduced reliance on platform class exists checks that were causing compatibility issues with plugins that incorrectly shade in platform (eg bukkit, bungee) classes
  • [Export] #1019 Fixed Network page exporting
  • [UX] Fixed incorrect error displayed when player was not found
  • [PluginData] #1027 Fixed Error related to AAC database table
  • [DataExtensions] Fixed DataExtension @Tab annotation not working
  • [DataExtensions] Fixed Exception handling of DataExtensions
  • [Performance] #1034 Tasks with too large delays are now cancelled instead.

If you run into issues feel free to open a ticket https://github.com/plan-player-analytics/Plan/issues/new/choose or join discord for support https://discord.gg/yXKmjzT - Please use tickets for exceptions.

Thanks!

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


Change log 4.8.3

Bugfixes

  • Fixed DataExtension columns appearing multiple times in the /server Players table.
  • #1039 Fixed SQL error when using h2
  • @Vankka fixed issue with DiscordSRV integration, thanks!
  • Fixed issue with Vault integration when another plugin incorrectly shaded in Vault classes

Minor additions

  • DataExtension API users can now throw NotReadyException if their API is not ready for a Provider method call.
  • DataExtension API Provider annotations now have ‘showInPlayerTable’ parameter

If you run into issues feel free to open a ticket https://github.com/plan-player-analytics/Plan/issues/new/choose or join discord for support https://discord.gg/yXKmjzT - Please use tickets for exceptions.

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


4.8.4 Change log

Bugfixes

Fixed a IllegalArgumentException: class com.djrapitops.extension.DiscordSRVExtension method guildUsers could not be called: null

This was a stupid mistake on my part, since it was an exception that was not supposed to be logged. I did put a catch for the exception (NotReadyException), BUT since the method that throws the error is called via Reflection (method.invoke) the error was wrapped to InvocationTargetException, causing it to be logged. Well now it’s fixed.


In other news:

Hello people, just you guys know I’ll be very busy until 30.06. due to a course that focuses on teaching teamwork. It includes 6h/day workdays mon-fri. On top of that I have to finish my bachelor’s thesis by 30.05. - so I might not have time for as much support as usual. If you are having bad issues that aren’t getting answers please open a ticket on github.

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


Change log 4.8.5

Bugfixes

  • #1041 Fixed “CapabilityService has not been initialized yet” Exception

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


4.8.6 Change log

New

  • Turkish Locale by TDJisvan, Plugin.Locale: TR
  • Portugese (Brazil) Locale by jvmuller, Plugin.Locale: PT_BR
  • /plan register command now displays link to the panel after successful register. (The link will redirect based on the user’s permission level)

Bugfixes

  • Version names for ViaVersion & ProtocolSupport now use the plugins’ naming utility, no more out of date version numbers! :slight_smile: Special thanks to @Vankka for doing the research on this.
  • #1062 Fixed Chunk graph displaying data for the CPU graph
  • #1066 Fixed NoSuchFileException on Export of players table json when the folder for the server doesn’t exist

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


4.8.7 Change log

New

  • #739 Added MySQL Driver to Plan (Full Velocity support)

Bugfixes

  • #1089 Fixed error on Analysis when a World_aliases world name had a dot in the name
  • #1090 Fixed command registration when plugin failed to enable (To allow reload)
  • #1095 Fixed some database altering commands sending “Success” message too early (web delete, manage remove, manage clear)

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


Sorry it’s been a while since I released an update here - I didn’t have my gpg key with me when I was on vacation.
Here are changes that have been released on Github since 4.8.7, you can see version specific changes on Github.

Change log 4.8.7 - 4.9.3

Bugs that were introduced and fixed between these versions are not in this change log.

Changes

PKCS12 Certificate support (#1102)

Now you can use .p12 SSL Certificate files directly with Plan! No more keytool! Just make sure the file ends with .p12.

Here is the command for creating .p12 from Let’s Encrypt cert in case you need it :slight_smile:
> openssl pkcs12 -export -in /etc/letsencrypt/live/<domain>/fullchain.pem -inkey /etc/letsencrypt/live/<domain>/privkey.pem -out /etc/letsencrypt/live/<domain>/pkcs.p12 -name <alias>
After entering the command you’ll be prompted for key password and store password. This should make https more accessible to people, since it drops required steps for obtaining a keystore.

Query API

Added a new Query API for accessing Plan Database. This allows moving plugins that don’t store data away from PluginData API. Documentation

Other

  • Deprecated PluginData API, users of this API are encouraged to move to DataExtension API as soon as possible. API documentation
  • Deprecated /server/raw webserver endpoint
  • Added nuVotifier support (Votes & Votes/Service)
  • Moved SuperbVote, AAC, ProtocolSupport & ViaVersion from PluginData API to DataExtension API
  • Changed default database type back to ‘SQLite’ due to severity of rare issues with h2.
  • Prevented /plan m move between h2 and MySQL due to a bug (#1111)
  • Removed Kingdoms plugin support (Free API no longer available as it has moved to Songonda)
  • #1135 AdvancedBan Extension now listens for punishment events (Updates status for offline players)

Bugfixes

  • #1101 Fixed an NPE when a geolocation did not have a country name
  • #1103 Fixed (Untested) SavageFactions incompatibility
  • Fixed IPAnonPatch on MySQL with sql_mode=only_full_group_by
  • #1118 Fixed massive error spam if a DataExtension method call failed - Now it removes the method from being attempted appropriately.
  • #1119 Fixed NPE on Proxy platforms when displaying longest played world on session accordion
  • Fixed color parsing (§ → <span>) eating first character of some Strings.
  • Database clear command now reloads the plugin after successful clear.
  • #1125 Fixed tasks not unregistering on Velocity when reloading Plan
  • #1134 Reduced chance that a built in extension failing to load prevents Plan from enabling.

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


4.9.4 Change log

Bugfixes

  • Optimized Sponge AFK Listener permission check
  • Fixed FileWatcher ConcurrentModificationException (Related to config updating on networks)
    • Also prevented similar issue with Session Cache
  • Disabled SQLite Transaction rollbacks on Spigot 1.8.8 or older (Not supported, were causing exceptions)

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


Player Analytics 5

This is the largest update to the plugin to date, accomplishing a long time goal that makes life of network admins a lot easier (more on that down below). Here is a release trailer to get you hyped up:

Existing configurations should work after updating to this version, here is Migration guide to Version 5

Extra special thanks to Beta testers who have ensured that the release goes smoothly. I would also like to thank Vankka, aidn5, Aurelien, yukieji & qsefthuopq for their contributions that are released in this update & mibby for allowing me to use Plan of his server for promotional materials.

What’s new

Redesigned Panel

The panel has had a complete overhaul.

Benefits from the redesign:

  • Separate analysis process is no longer required, the data is analyzed and delivered on the spot.
  • Data is accessible from a single Webserver (Even on networks) so other webservers can be disabled.
  • Data and pages can be cached separately & the data updated when events fire
  • Memory usage has significantly improved
  • JSON is used to transfer data instead of the html file, improving load times

Changed Activity Index formula

Activity index formula was rewritten to be easier to explain and understand.
It is based on playtime per week for last 3 weeks, where the threshold value in the config affects the activity index.

Here is an image of the curve where y is the activity index and x is playtime per week divided by threshold.

image

  • If someone plays as much as threshold every week, they are given activity index ~3
  • Very active is ~2x the threshold
  • The index approaches 5 indefinitely.

Panel features

Here are some new features that are introduced with the panel redesign.

Night Mode

Night mode can be toggled from the theme selector.

Trends & Insights

image
image

Server Health has been split into Trends (little red & green arrows on the panel), and Insights that attempt to uncover more knowledge from the data.

Insights and Trends have been placed closer to the related section to give a better overview.

Server Quick View (Networks)

You can now view the last 7 days for a server without going to Server Analysis. Mant more features from Server pages are also now available for the whole network, such as the Day by Day graph (Unique & New players / Day)

Long term goal: Removal of proxy<->server connections

Set-up on Bungee has been a large hurdle for many due to the Webserver being required on all servers - No more! The proxy<->server connection system has been removed, marking a long term goal complete.

Now you can easily set-up more servers on Bungee & Velocity networks just by connecting them to the same MySQL. Their webserver will disable automatically after a reload when the proxy is detected in the database, saving resources.

Export improvements

Pages of the whole network can now be exported on the Bungeecord or Velocity servers on networks. The system was refactored to be easier to maintain in the future.

Package restructuring

Since the major version is increased I took the opportunity to restructure the package structure, separating objects that represent gathered data and objects that represent data in the database. This might break other plugins using internal classes such as SessionsMutator.

API version 4 (PlanAPI class & related classes) have been deprecated, but have not moved.

  • PlanAPI#fetchFromDatabase has been removed.
  • Schema: plan_ips table renamed to plan_geolocations, ip & ip_hash columns removed.
  • Schema: plan_commandusages table removed

Plugin Support changes

  • Added PlaceholderAPI support, thanks to aidn5 for his work on this.
  • Added Extensions for DKBans & DKCoins, implemented by Vankka
  • PluginData API has been decommissioned and its users will get a no-op warning on the console.
    • BuyCraft, Factions, Jobs, Litebans & Towny were moved to DataExtension API. Some of their old features were not possible to be moved over, but graphs and accordions will return in the future.

Fixes

  • #603 Activity index will no longer cap out at 3.04 for new players
  • #840 [Vulnerability] XSS attack using Bungee-Bukkit connection system is no longer possible (Connection system was removed)
  • #938 “Refreshing analysis” page no longer displayed when viewing server page
  • #964 Server JSON end point removed
  • DataExtension API Tables’ values can now be up to 250 characters
  • #1167 RedProtect extension fixed for Sponge
  • #1161 CoreProtect extension should no longer cause a crash
  • #1131 Disabled extension’s data is cleaned after configurable time (default: 2 days)
  • Many more that were not reported on Github.

Versioning scheme change

The previous semantic versioning has been very non-semantic - so the main benefit of knowing when things break has not really been there.

With the incrementation of major (4 -> 5) it is clear that the version contains breaking changes (For other plugins).

I want to convey useful information to both developers and users alike, so this version is 5.0 ALPHA build 1

The new scheme is major.minor build build

major will change when Plan API (currently version 5) has breaking changes & needs new documentation.
minor will change when new features are introduced.
build will increase with every commit, such as bugfixes and other improvements.

The new scheme removes confusion from dev release versioning as well.


Would you like to support the project more? Consider donating on Paypal

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


Change log 5.0 build 249

New

  • EssentialsX Extension now supports Essentials Economy (Thanks to Vankka)
  • Added GriefDefender Extension by Vankka

Improvements

  • Removed comment from config over ‘Webserver.Disable_Webserver’ (Outdated)
  • Disabled Webserver no longer prevents Enable on Bungee/Velocity
  • Webserver prints proper error message for BindException
  • JSON request timeout increased: 20s -> 45s (#1185)

Bugfixes

  • #1161 Prevented Memory related crash caused by use of CoreProtect API (Disabled CoreProtect Extension for now)
  • #1183 Fixed SQL errors when using H2 (Related to some non-standard SQL)
  • #1181 Fixed SQL error with MySQL related to AVG() function
  • #1191 Fixed page failing to load when Server name had a single quote in it (eg. Ralph’s server)
  • #1195 Possibly fixed exported network page having bad server links
  • #1194 Possibly fixed exported Flaticon_circle.png being set to 0 Bytes on second write
  • Fixed Exception when exporting unregistered player on join
  • #1176 Fixed Exception when updating DKBans data without player UUID
  • #1192 Fixed StringIndexOutOfBounds related to AdvancedBanExtension
  • #1196 Possibly fixed NoSuchMethodError related to NucleusExtension

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


5.0 build 260 - Change log

Thanks for using Plan - bStats is reporting that there are over 1100 servers using Plan, that’s huge. :heart:

Did you know that work on Player Analytics 5 started back in April this year (6 months ago)? Now that it has been out for a few weeks, I have realized how much work actually went into it! I hope that it was worth it.

Build 260 brings more fixes to reported issues.

Bugfixes

  • Fixed time formatting in player placeholders
  • #1196 Fixed NucleusExtension error on join (Caused by class relocation in Plan)
  • Fixed NPE when player has no sessions (And favorite server can not be found)
  • #1200 Fixed Export not exporting players due to BadRequestException
  • Fixed Extension data not being inserted due to ‘Subquery returned more than one row’ on MySQL
  • Fixed /network#tab-servers displaying Unique & New Players for last month instead of last 7 days. - Also reduced the Quick view Online player graphs to last 7 days to reduce loading time.

If you have any issues with this build, be sure to open a ticket at http://bugs.playeranalytics.net or join the discord: http://support.playeranalytics.net - Thanks :slight_smile:

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


5.0 build 279 - Change Log

This update contains some new features and bugfixes.
Special thanks to Malachiel and Combustible for their contributions.

In other news, I got into Github Sponsors program and Github will match all funds given through the platform. (= x2)

If you would like to support the project and get some perks while doing so check out https://github.com/sponsors/Rsl1122 - Thanks :slight_smile:

New

  • #1211 Added ‘Median First Session Length’ to Online Activity > Insights
    • This statistic can give more feedback on new player experience in addition to the existing ‘Mean First Session Length’ statistic
  • #864 Added ‘Average Ping’ to Sessions on /player page where possible
    • This statistic helps verifying latency issues. It would unfortunately take too much memory to produce this statistic for /server page so it is limited to /player page.
  • Register date is now made smallest possible value on networks (To avoid pre-Plan players appearing as ‘New players’ after installing Plan)
  • Italian Locale (IT) by Malachiel
  • 0.0.0.0 as address now produces a warning on enable (It is not a valid address).

Bugfixes

  • #1212 Fixed a Deadlock issues with plan_user_info table
    • Future deadlock issues will retry instead of failing instantly
  • #1209 Player server specific playtime placeholders should now update if the player is online
  • #1215 Fixed Plan attempting to use Authentication of Nginx when HTTPS was disabled on Plan
  • #1210 Changed redirects to /server/ to point to /server/ServerName instead
  • #1216 Fixed /network Playerbase Development graph containing duplicate players
  • Combustible fixed issue when Plan config directory was a symlink

If you have any issues be sure to open a ticket at http://bugs.playeranalytics.net or join the Discord http://support.playeranalytics.net

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


5.0 build 286 - Change log

Bugfixes

  • @Vankka has updated DiscordSRV Extension so the integration should be fixed (And IllegalStateExceptions cease)
  • Exported player pages should now display their values properly
  • Player pages should show value loading issue errors properly

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


5.0 build 288

Hotfix for some bugs (one new, one old)

Bugfixes

  • @Vankka helped fix DiscordSRV Extension not registering
  • All Platforms should now use newer MySQL driver that is inside Plan. This should fix incompatibilities with MySQL 8 (for example fix “Unknown system variable tx_isolation”)

I did not test the MySQL 8 compatibility because having 2 different mysql installations is cumbersome, let me know if it works (Tested with Mariadb 5.6).