Open ahdg6 opened 2 years ago
If a platform uses the Adventure API, it isn't much work to add support for it. LibertyBans already uses the Adventure library, so if Fabric uses Adventure too, the Fabric implementation will be easy to create.
Sponge 8 uses Adventure as well. As I understand it, Fabric and Sponge are worthy competitors, having comparable quality of API. So, it would be just to support both of them in LibertyBans (If it were the case that Fabric had an API as under-specified as BungeeCord's, then I would be less willing to support Fabric, but I doubt this).
To become more acquainted with Fabric I started to investigate the matter. However, because LibertyBans uses Maven as its build system, and Fabric effectively requires mods to use Gradle, it is not likely I will be able to add Fabric support.
It is an astronomical task to switch LibertyBans from Maven to Gradle. Despite Maven's status as the most common build tool in the Java ecosystem, the Fabric toolchain does not support Maven. So, Fabric support will not arrive but after a very long time or after a very significant effort.
It is possible we could embed a miniature Gradle build inside a larger Maven build. However, this does not work very well: I have done the opposite (Maven inside of Gradle) before. It is very messy and redundant. Gradle and Maven are not simply not intended to run inside of each other.
Why Fabric Requires Gradle
Rather than defining its own API which encapsulates the Minecraft server, Fabric exposes classes from the Minecraft server directly.
The Minecraft classes are proprietary, so Fabric cannot distribute them. To work around this, Fabric mods must generate the Minecraft classes during the build. (To use an analogy: It's as if each Fabric mod must run its own copy of SpigotMC's BuildTools)
Fabric has created a Gradle plugin to do this. Because the Fabric toolchain depends on Gradle, the documentation is exclusively focused on Gradle and describes examples for Gradle. They do not even mention Maven. It is simply assumed that modders use Gradle.
This presents 3 alternatives for LibertyBans:
oh. What a pity. Anyway, Thank you for your efforts in investigating.
Ill work to make this a gradle project, never leave fabric behind A2, its an important software
Fabric support is still possible, although it may require a downstream consumer of the LibertyBans project to depend on the core modules and bundle a plugin via Gradle. This isn't hard to accomplish although perhaps it could be placed in a new repository. Someone else could maintain the Fabric platform of LibertyBans if they wanted to.
I have confirmed that ...
Description
As Forge is being replaced by Fabric in modern Minecraft version, Supporting Sponge may not worth the efforts(Only for 1.16.5 and later, 1.12.2 is good but it can't run with Java11). In that case, a Fabric support may suit for LibertyBans future development. I haven't seen any punishment plugin for Fabric and It would be awesome to see LibertyBans to be the first one.
Some Lib that may help you: Adventure Cloud - Cross Platform Command framework