Skip to content

5.5 DEV build 1923 - Release Candidate

Pre-release
Pre-release
Compare
Choose a tag to compare
@AuroraLS3 AuroraLS3 released this 04 Sep 09:24
· 1027 commits to master since this release

5.5 DEV build 1923 - Release Candidate

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, Drex & stashenko for contributions to this update

Changes from DEV build 1833

  • Frontend BETA
    • Login page is now rewritten in React
    • Server page is now rewritten in React
    • Various improvements to night theming
    • Animations when changing tabs
    • Added missing locale keys to locale yml files
    • Fixed player -> server page link
    • Fixed logout button in the user menu
  • Added 'Data_gathering.Preserve_join_address_case' setting (default false)
  • Extensions
    • Updated PlotSquared extension
    • Updated Floodgate extension
    • Updated Nucleus extension for Sponge 8
    • Removed RedProtect support from Sponge (No longer supported in Sponge 8)
  • RU locale was updated by stashenko
  • Possibly fixed an issue where Quit event is processed before Join, leading to long incorrect sessions being stored on next join/shutdown
  • Fixed gzip compression (Faster request loading times)
  • Improvements to startup error messages
    • Invalid certificates now error and don't start https instead of failing silently
    • Failing to bind port/address has help
    • MySQL connection error has help
    • Reduced "database is closed" errors
  • Added /plan db migrate_to_online_uuids command to help migrating from an offline server to online one
    • Moves data of offline uuids to online uuids (Looks up online uuid from Mojang)
    • Combines data of offline uuids and online uuids if both exist

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.
  • Fixed gzip compression for responses (speeds up transmission)

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)

Frontend BETA

  • Rewrote /login page in React
  • Rewrote /server page in React
  • Fixed various issues and cleaned up overall appearance

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.
  • Updated PlotSquared extension
  • Updated Floodgate extension
  • Updated Nucleus extension for Sponge 8
  • Removed RedProtect support from Sponge (No longer supported in Sponge 8)

Locale

  • stashenko updated RU locale

Build & Automation

  • Restructured Github Actions builds to have less workflow files
  • 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