Skip to content

2.0.0 Pre-Release 1

Pre-release
Pre-release

Choose a tag to compare

@wallenjos01 wallenjos01 released this 04 Nov 23:44
· 308 commits to master since this release

The project has been rewritten to allow me to build on a more solid foundation.
This release is largely stable on the latest version, but not all versions have been tested.

The most significant changes to the codebase following the rewrite are as follows:

  • The project has been properly split into three layers:
    1. A common layer which is accessible by all modules. This contains functionality accessible in all contexts where this mod can run, including configuration and messaging.
    2. An environment layer, including client, server, and proxy modules. These contain things specific to each environment
    3. A target layer, including fabric, spigot, and velocity modules. These contain platform specific implementations of the interfaces in the common and environment layers.
  • Many interfaces and objects have been moved from the common module (previously api) to the modules in the environment layer.
    • For example, the Player interface (previously MPlayer) is now in the server module, because all the functionality was specific to server-side players anyway.
    • This will make it easier to organize environment-specific APIs.
  • Most modules of the project is now compiled for multiple Java versions.
    • This is because newer versions of Minecraft expect to be run on Java 17, while older versions expect to run on Java 8
    • This means that the Spigot releases will come in a Java 8 variant and a Java 17 variant, so they can be run on the native Java version for each version of the game.
  • The Fabric version now makes heavy use of interface injection. This has a positive performance impact due to less indirection and caching.
  • The vanish, global join, and last joined modules have been removed.
    • These may return in the future, or may be moved to another project.
  • Packages and file names have been refactored.
    • The overall package name has been changed from org.wallentines.midnightcore to org.wallentines.mcore
    • There are no longer target-specific packages.
    • Interfaces and classes are no longer prefixed with 'M' to differentiate them from their platform-specific counterparts.
  • The maven coordinates of the project now follow the format org.wallentines:midnightcore-[module]:version
    • For example, the common module for this version is located at org.wallentines:midnightcore-common:2.0.0-SNAPSHOT