Support MC versions from 1.19 to 1.19.4 (in between snapshots should technically work too).
It builds a jar including the compatibility layer modules by default, resulting in a single jar for all supported versions.
Calls breaking between those versions are redirected to a proxy which handles registering each proxy module for the runtime mc version. Some mixins are handled the same way.
I tried my best to keep most logic code in the common/default sourceset whenever it was possible to avoid having to change the same code at multiple places when it shouldn't be needed.
Most compatibility code I took from ModMenu commit history to help determine which changes were needed between versions and which mc versions were breaking.
There is a lot of room to improve this setup.
Maven publishing is not handled yet.
Modules are interdependent because of the proxy logic.
Support MC versions from 1.19 to 1.19.4 (in between snapshots should technically work too). It builds a jar including the compatibility layer modules by default, resulting in a single jar for all supported versions.
Calls breaking between those versions are redirected to a proxy which handles registering each proxy module for the runtime mc version. Some mixins are handled the same way.
I tried my best to keep most logic code in the common/default sourceset whenever it was possible to avoid having to change the same code at multiple places when it shouldn't be needed.
Most compatibility code I took from ModMenu commit history to help determine which changes were needed between versions and which mc versions were breaking.
There is a lot of room to improve this setup. Maven publishing is not handled yet. Modules are interdependent because of the proxy logic.