Player Analytics, Sponge/Bukkit/Bungee/Velocity support

5.2-build-1115

Release

AuroraLS3 released this version on Mar 16, 2021

9.6 MB
Download

Change log 5.2 build 1115

Fancy new join-address pie, bugfixes, jar size optimization and large refactoring work, that’s what this is update contains.

Special thanks to vacoup for implementing player join-address gathering.

Previous update jar was too large for Ore, please see further below for change logs of updates that have not been posted on Ore.

Change log

Player join-address gathering

Some servers like to use different addresses for different advertising campaigns or server listings. Now the join-address player’s use when they join the server (eg “play.server.com”) for the first time is gathered. This information is shown on the playerbase overview tab on both network and server pages. Database schema updates.

Special thanks to vacoup for implementing this feature.

Shutdown session save now less disruptive

Sessions are saved on shutdown. Previously this might stop the server from shutting down if the MySQL was too busy or slow to respond. Now the attempt times out after 4 seconds and the unsaved sessions are stored on the next server start instead.

Website

  • Fixed Regular -> Inactive metric being reversed (instead showing Inactive -> Regular, essentially the amount of current regular players)
  • Removed /debug page

Extensions

  • Reduced calls to mcMMO extension due to concerns for performance impact of fetching offline player data.
    • Removed leaderboard table from mcMMO extension
  • BanManager extension updated (Now supports sponge too)
  • BentoBox extension now supports AOneBlock gamemode
  • Removed support for GriefPreventionPlus (I could not find the jar to build it when re-releasing the extensions)

Dependency downloading (jar size optimization)

Now Plan will download the database drivers from maven central first time it enables. This reduces the jar size to 9.9 MB. This had to be done to get under the 20MB limit of Ore and Cloudburst for plugin size. Those release platforms have change log for previous versions in the same update. If you limit outbound connections with a firewall, you need to allow connections to https://repo1.maven.org/maven2/

Refactoring

3 large scale refactorings were done

  • Session was split into ActiveSession and FinishedSession since the old data type was both and thus trying to fulfill too many roles at once.
  • ServerUUID data-type added when previously UUID was used. This makes code a lot easier to read in cases where both player and server UUIDs are processed at the same time.
  • Replaced Abstract Plugin Framework with Platform Abstraction Layer (rewritten abstraction). This was for dependency downloading at runtime.
    • Removed debug logging
    • Removed benchmarking (Enable timing was removed, it might return in the future.)

Project building

Due to bintray shutting down, all Extensions had to be moved to another repository. They’re now located in a self-hosted reposilite instance.


Change log 5.2 build 1062

This is a large large update with a bunch of new features and even more bugfixes. As you may notice, I have changed my username to AuroraLS3 (so the developer hasn’t changed, don’t worry).

Special thanks to Guinness_Akihiko, galexrt, QuakyCZ & MrFriggo for their contributions to this update.

Change log

A quick peek

  • Important H2 database has been deprecated, migrate away from it as soon as possible.
  • Fixed 3 security vulnerabilities
  • Query-page for insights into groups of players.
  • Fixed “Request timed out” issues by adding a disk-based cache, and optimizing some queries
  • 6 other features or improvements
  • 19 other bugfixes

Main features

Query-page

Have you ever wanted to know who played the most in a specific month or week? How about knowing how active your donators are? Or who was online during a lag-spike? Now it’s all possible, with the /query page!

Showcase of the feature: Video

  • Select any dates as a data-range
  • Dynamically choose who you want the data to be about with multiple filters to choose from: play dates, register dates, operators, banned status, current activity group, plugin groups (such as permissions)
  • Share query results with other admins via URL

Disk-based caching (Remedy to timeout issue)

Sometimes database queries are slow and waiting for results takes a while. Now the pages display previously calculated results until the queries complete instead of timing out.

Because of this it is now also possible to update parts of the page by clicking the little refresh icon instead of reloading the whole page.

Main improvements

Extension data to /players page

Players page now contains the same extension data as the /servers pages, so that those on networks can also view the Extension data from bungeecord in a neat table.

Player list: Playtime replaced with Active playtime

In order to make it more useful for servers where players AFK a lot, the players table now uses active playtime instead of playtime.

Performance graph optimizations

Test payload .json was reduced from 24MB to 3.35MB

  • Reduced the amount of queried performance graph points
    • Data for 30 days: 1 point / minute (like before)
    • Data older than 30 days: 1 point / 5 minutes
    • Data older than 60 days: 1 point / 20 minutes
  • Reduced duplicate data (The point dates) in the .json by changing transmit data format

Locale

  • Guinness_Akihiko has contributed a Korean locale, use it with Locale: KO
  • galexrt fixed a typo in German locale
  • QuakyCZ & MrFriggo updated Czech locale
  • Locale files updated to add missing language

Security

Fixed 3 security vulnerabilities

  • Fixed redirection to another page after login
  • Fixed XSS vulnerability in 500 Error page
  • Wrong pass and user not existing now treated the same (To avoid exposing registered usernames)

IP Whitelist for reverse-proxy users

A new setting under Webserver.Security now allows use of X-Forwarded-For header to determine the connecting IP.

This setting is disabled by default, it is important when you use this setting that the reverse-proxy can not be bypassed as otherwise spoofing IPs is possible.

Main bugfixes

MySQL connection reliability improved (Fixed “HikariCP Datasource is closed”)

A MySQL connection hiccup should no longer causes Plan to close the connection pool. A bug in the code caused the pool to be closed and opening it again always failed.

Fixed Timezone oddities on the page

  • Graphs on the website now respond properly to minutes in timezones (For example GMT+3:30)
  • Server calendar should no longer move data -1 day in negative timezones.

Other features

  • Added MySQL max connections setting to limit Plan connection pool size if needed
  • Clean tasks no longer run at the same time across the entire network, reducing spikes in MySQL CPU usage.
  • Added %plan_player_activity_index% and %plan_player_activity_group% placeholders
  • Placeholders now safely replaced off server thread with a cache (Note that the placeholder needs to be replaced at least twice for it to show up if using server thread for replacement). This is to avoid server crashes.

Other improvements

  • Proxy servers now properly detected even if server config was copied to a proxy server before installation
  • Login now properly redirects to tabs if sharing links to specific tab (like performance)
  • MySQL launch options are now more lenient to allow custom certificate definition
  • Table styling for player tables has been updated
  • bStats now available for Velocity

Other bugfixes

  • Fixed Day to day and Hour to hour graphs disappearing with Display_gaps setting
  • Fixed Server Preference Pie on /network page
  • Fixed object Object showing on Kill history when Player name was not in the database
  • Updated bStats to fix a Crash on SpongeForge
  • Fixed dark mode on exported files
  • Fixed + being decoded as a space in player names
  • Fixed HPE_UNEXPECTED_CONTENT_LENGTH with reverse-proxies
  • Fixed CPU null constraint violation when CPU Usage was reported as NaN (Mac OS)

DataExtensions

  • mcMMO extension: Fixed Optional[] around player names(The old data might still have that for a while)
  • Vault extension: Fixed UnsupportedOperationException not being caught
  • AAC extension: Disabled AAC Extension on AAC versions 5+ due to no data being available in the new API
  • ProtocolSupport extension: Fixed IllegalStateException: Access to implementation before detect
  • Fixed ViaVersion error on Velocity