minecraft-crowdcontrol icon indicating copy to clipboard operation
minecraft-crowdcontrol copied to clipboard

Forge Port

Open qixils opened this issue 1 year ago • 4 comments

TL;DR

  • The mod currently recommends the Fabric mod loader. It supports Fabric on 1.19.2 and above. The Fabric ecosystem is rich with new mods and developer tools being created for and ported to it everyday.
  • The mod also supports Forge via SpongeForge. SpongeForge supports 1.12.2 and 1.16.5 with plans in the near-ish future to support 1.19.4 and 1.20.5. EDIT: SpongeForge 1.19.4 is officially in beta!
  • To create a native Forge port independent of Sponge would require several libraries to release Forge ports, but the chances of this are unlikely due to various complicated factors and the time/effort to do this work alone would be considerable.
  • A native Forge port will not be created for old versions of the game.

The Full Situation

The mod supports the Sponge API, and Sponge can run as a Forge mod, so the mod supports Forge, right? Well, yes, but only on the Minecraft versions supported by SpongeForge, which currently is just 1.12.2 and 1.16.5 (edit: and 1.19.4!). This is great for speedrunners of old versions (which honestly was my main goal) but also for some old modpacks. So, what about Forge for the latest version of the game? Well.

The Native Forge Port

Over a year ago when I began development of the Fabric mod, I planned to release a Forge version alongside it, but this quickly proved to be nonviable. I'd have to singlehandedly create Forge ports of several software libraries (listed below) that may or [likely] may not even want a Forge port created of them, meaning I'd likely have to maintain several of them in perpetuity. It's a lot to ask for just to support a modding platform that is increasingly disfavored by modders and players for its toxic management, slow updates, lack of support for snapshots and April 1st updates, disinterest in supporting game code patches (which this mod makes good use of), et cetera. I don't honestly anticipate a native Forge port coming to fruition for these reasons, but regardless, the theoretical path to native Forge support is laid out below.

EDIT: The newly released NeoForge appears to be tackling several of these issues and attracting new mod ports, but the majority of the libraries we use seem to remain uninterested in supporting it.

Libraries

First, the following libraries used by the Fabric mod would need to be ported to Forge.

To support older versions of the game, these theoretical Forge ports would also need to be backported to old versions of the game which is even less likely to happen.

Porting the Fabric Mod to Forge

Second, since the Forge and Fabric mods would mostly share the same code, the code base for the Fabric mod would have to be modularized to allow the development of the Forge mod. Finally, the Forge mod initializer would have to be created.

  • [ ] Split module back out to a common mojmap module, a fabric initializer module, and a forge initializer module
    • Architectury may be of help for this, namely for its easy mixin support
  • [ ] Expose GUI config on Forge
  • [ ] ???
  • [ ] Test Fabric and Forge extensively

The Sponge Forge Port

There's a high chance that the native Forge port never comes to fruition. In this case, the next best hope would be for Sponge to finally bring Forge support to the latest version of the game, and fortunately they seem to be looking into doing just that in the near-ish future. If SpongeForge ever releases a build for the latest version of the game and this mod runs on it, I'll likely consider this issue resolved.

The Future

I'm always looking around the Minecraft development space for new platforms to support and that includes Forge. I'll be posting comments with updates as I have them so do feel free to subscribe to this issue if you'd like to hear about future developments.

qixils avatar Jun 22 '23 02:06 qixils