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 Cloudburst, please see further below for change logs of updates that have not been posted on Cloudburst.
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
Extensions
- Fixed Regular -> Inactive metric being reversed (instead showing Inactive -> Regular, essentially the amount of current regular players)
- Removed /debug page
Dependency downloading (jar size optimization)
- 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)
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
Project building
- 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.)
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
Main featuresA 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
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
Disk-based caching (Remedy to timeout issue)
- 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
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
Locale
- 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
Security
- 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
Fixed 3 security vulnerabilities
IP Whitelist for reverse-proxy users
- 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)
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
Other features
- 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 improvements
- 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 bugfixes
- 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
DataExtensions
- 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)
- 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
5.1 build 813 - hotfix
This build contains a few bugfixes.
- hotfix Fixed Plan not enabling on Bungeecord after second enable
- hotfix Fixed Plan not storing Server ID in the ServerInfoFile.yml leading to infinite redirect to "/server/Server null" when server name was not set.
Special thanks to Shadowhackercz for updating Czech locale.
Change log
Commands
Plugin Enable
- Fixed /help causing NPE on Sponge
- Fixed /plan command not working on 1.8 servers (they use old version of the chatcomponent library)
- Fixed in game links working on 1.8 servers
More information is stored in ServerInfoFile.yml to speed up plugin enable when database is busy
Locale
- Proxy servers now also store the information in the file (Note: manually changing the file might lead to issues)
- Fixes a few NPEs that occurred when website was accessed before Plan had fully enabled
Extensions
- Czech locale was updated by Shadowhackercz
- Fixed SQL syntax error in FloodGate Extension
- Fixed mcMMO Extension giving warnings from mcMMO modern
- Fixed mcMMO Extension not showing data on server pages
- Fixed mcMMO Extension throwing an error when player left
5.1 build 810 - hotfix for build 808
This build contains a few bugfixes.
- hotfix Fixed Plan not enabling on Bungeecord after second enable
Special thanks to Shadowhackercz for updating Czech locale.
Change log
Commands
Plugin Enable
- Fixed /help causing NPE on Sponge
- Fixed /plan command not working on 1.8 servers (they use old version of the chatcomponent library)
- Fixed in game links working on 1.8 servers
More information is stored in ServerInfoFile.yml to speed up plugin enable when database is busy
Locale
- Proxy servers now also store the information in the file (Note: manually changing the file might lead to issues)
- Fixes a few NPEs that occurred when website was accessed before Plan had fully enabled
Extensions
- Czech locale was updated by Shadowhackercz
- Fixed SQL syntax error in FloodGate Extension
- Fixed mcMMO Extension giving warnings from mcMMO modern
- Fixed mcMMO Extension not showing data on server pages
- Fixed mcMMO Extension throwing an error when player left
5.1 build 808
This build contains a few bugfixes.
Special thanks to Shadowhackercz for updating Czech locale.
Change log
Commands
Plugin Enable
- Fixed /help causing NPE on Sponge
- Fixed /plan command not working on 1.8 servers (they use old version of the chatcomponent library)
- Fixed in game links working on 1.8 servers
More information is stored in ServerInfoFile.yml to speed up plugin enable when database is busy
Locale
- Proxy servers now also store the information in the file (Note: manually changing the file might lead to issues)
- Fixes a few NPEs that occurred when website was accessed before Plan had fully enabled
Extensions
- Czech locale was updated by Shadowhackercz
- Fixed SQL syntax error in FloodGate Extension
- Fixed mcMMO Extension giving warnings from mcMMO modern
- Fixed mcMMO Extension not showing data on server pages
- Fixed mcMMO Extension throwing an error when player left
5.1 build 791 - Change log
This update brings lots of improvements made by contributors, as well as bugfixes.
Special thanks to Vankka, FluxCapacitor2 & antonok-edm for their contributions!
Thank you for the numerous answers to the feedback survey. I have looked at the 54 answers and did some analysis of them on discord.
You can also find answers to some of the questions posted on the survey here #1624.
Change log
Website
Commands
- Added things that stop search engine spiders like Google from crawling the Plan website. This should stop your Plan appearing on google search in the future. (thanks FluxCapacitor2) Please note that exported files don't contain robots.txt.
- FullCalendar updated to v5 and the style to go with it (thanks FluxCapacitor2)
- Browser back button goes to the previous page instead of the previous tab. Reduces the amount of back button clicks by a ton (thanks FluxCapacitor2)
- Night mode can now be set as default in theme.yml by setting DefaultColor to night (thanks FluxCapacitor2)
- Fixed DefaultColor setting in theme.yml. (thanks FluxCapacitor2) Note: If you missed 4.x.x to 5.0 migration the panel might appear light green after the update instead of Plan green
- Removed special error case for Brave browser adblock as /v1/performance endpoint should no longer be blocked by adblockers. (easylist was updated) (thanks antonok-edm)
- Removed scroll to top button (it was broken)
Webserver
- Fixed db move subcommand clearing the source database and failing to move data
- Register command now says "Registration failed, try again (code expires in 15 minutes)" instead of "User not found" when the register code is not found.
Export
- Webserver no longer displays warnings on console related to 204 HTTP response (thanks FluxCapacitor2)
- Future proofed cookies by adding SameSite=Lax; Secure; to them as Firefox was warning that they might break soon.
Extensions
- Fixed player links on exported server pages on networks going to /server/player instead of /player
- Added Floodgate / geysermc extension (thanks Vankka)
- Added mcMMO extension (supports the new mcMMO and mcMMO classic) (thanks Vankka)
- Fixed FactionsUUID extension throwing an error with SaberFactions
5.1 build 770 - Command Rework +hotfix for b768
Hotfix for build 768
- Fixed NoClassDefFoundError: TextStringBuilder
This update contains reworked command system and permissions.
Special thanks to Shadowhackercz and Vankka for their contributions to this update.
- You need to update Plan permissions to use this version: Link to permission changes
If you would like to affect Plan development priorities, fulfill this survey. It might take around 5-10 minutes.
https://forms.gle/w9ZniR8vfe1U1aHm6
Major changes
Command system rewrite
See https://github.com/plan-player-analytics/Plan/wiki/Commands-&-Permissions for updated permission & command information
- All platforms now use same permissions for same commands
- All platforms now have all of the commands that have been available
- When using commands as a player the help menu now has more information on hover
- Actions that remove data now ask for confirmation instead of -a argument
- Some commands that previously did not have a specific permission now have a permission (such as /plan register)
- /planbungee and /planvelocity now called /planproxy (They still work as aliases though). Another alias /planp
Website
DataExtensions
- Login page now logs in when Enter is pressed
- Login page now uses a <button> instead of <a> (might help password managers)
Locale
- Vankka contributed a FactionsUUID Extension that should support FactionsUUID and forks eg. SaberFactions (and the now dead SavageFactions)
- EssentialsX Extension no longer stores economy information due to large amount of "Economy lag" messages.
If you run into any issues, please open a ticket at http://bugs.playeranalytics.net
- Shadowhackercz contributed a Czech locale, use it by setting locale to CS
- Lots of the command related messages had to be updated so some messages might be in English because they have not been translated yet.
5.1 build 768 - Command Rework
This update contains reworked command system and permissions.
Special thanks to Shadowhackercz and Vankka for their contributions to this update.
- You need to update Plan permissions to use this version: Link to permission changes
If you would like to affect Plan development priorities, fulfill this survey. It might take around 5-10 minutes.
https://forms.gle/w9ZniR8vfe1U1aHm6
Major changes
Command system rewrite
See https://github.com/plan-player-analytics/Plan/wiki/Commands-&-Permissions for updated permission & command information
- All platforms now use same permissions for same commands
- All platforms now have all of the commands that have been available
- When using commands as a player the help menu now has more information on hover
- Actions that remove data now ask for confirmation instead of -a argument
- Some commands that previously did not have a specific permission now have a permission (such as /plan register)
- /planbungee and /planvelocity now called /planproxy (They still work as aliases though). Another alias /planp
Website
DataExtensions
- Login page now logs in when Enter is pressed
- Login page now uses a <button> instead of <a> (might help password managers)
Locale
- Vankka contributed a FactionsUUID Extension that should support FactionsUUID and forks eg. SaberFactions (and the now dead SavageFactions)
- EssentialsX Extension no longer stores economy information due to large amount of "Economy lag" messages.
If you run into any issues, please open a ticket at http://bugs.playeranalytics.net
- Shadowhackercz contributed a Czech locale, use it by setting locale to CS
- Lots of the command related messages had to be updated so some messages might be in English because they have not been translated yet.
5.1 build 657
This update has taken a while to get together, as I've been busy at work.
None the less, this update contains lots of bugfixes, quite many related to database related exceptions.
Special thanks to Saph1s for their contribution to this update.
Change log
Database
Bugfixes
- New tables are now created with utf8mb4 as the default charset to avoid character encoding errors.
- Increased deadlock retry attempts to 5, and added the attempt count to the error context.
- If the database fails to do tasks related to opening (Such as creating tables or patching schema) the plugin now disables.
- If the database is under heavy load (Visible as "Lock wait timeout exceeded" errors) Plan now attempts to reduce the load for 10 minutes each time. If the reduction is not enough, a pause between transactions is increased.
Webserver
- Fixed JSON serialization of /v1/players endpoint when a datapoint had \ character in it that broke the players table.
- Fixed IllegalArgumentException fromKey > toKey when adding ping to sessions on /player page (56bb3b3a6a)
- Fixed incompatibility with AAC due to use of Reflection during class loading (Moved reflection use to enable)
- Possibly fixed logo appearing stretched on the login page when using Safari
Locale
- Webserver is now enabled by default when installing on Sponge servers
Error instructions ('What to do')
- Russian Locale was updated by Saph1s
- If character encoding is wrong in the database the user is instructed how to convert the charset of their MySQL.
- If MySQL user is missing privileges, the user is instructed to give privileges to the user (Usually REFERENCES privilege is missing).
- If SQLite has corrupted, the user is given instructions to restore the database, and a link to repair article.
5.1 build 624 - Hotfix
Bugfixes
Fixed an infinite loop in the error handling code when an Exception had a cause (most exceptions)
There was an infinite loop in the error handling code that has been causing high CPU usage and OutOfMemory crashes.
The loop prevented the actual exception from being logged, and was a very dumb mistake in the code, that is easy to miss.
I should have originally written some unit tests, but at least they are here now, and the error handling code is confirmed to work properly.
5.1 build 615
This build contains one new feature (IP whitelist) and bugfixes.
Special thanks to Elguerrero & MastoryMd5 for their contributions to this update
Change log
Commands
Error Handling
- Fixed permission check issue with /plan unregister that allowed anyone to unregister any user by if they knew their username.
- Fixed these commands from executing database queries on server thread:
- /plan players
- /plan network
- /plan register
- /plan manage raw
- Fixed /plan inspect throwing an NPE when a player tried to view someone elses profile without 'plan.inspect.other' permisison
Webserver
- Crash due to OutOfMemoryException should now be resolved (The error handling should no longer consume so much memory)
Added IP Whitelist
Config now contains Webserver.Security.IP_Whitelist and Webserver.Security.IP_Whitelist.Whitelist settings for whitelisting IP addresses that can access the webserver.
Database
- The whitelist is disabled by default
- Default whitelist has IP addresses for local machine
- When enabled all requests from non-whitelisted IPs will be forbidden (403)
- Denied attempts are logged.
Locale
- MySQL Launch Options setting now has &serverTimezone=UTC by default (not added to existing settings automatically)
Placeholders
- Spanish locale updated by Elguerrero
- Italian locale updated by MastoryMd5
- Fixed an NPE when a plugin gave PlaceholderAPI a null Player that was passed to Plan.