AxolotlClient-mod
AxolotlClient-mod copied to clipboard
Multi Version Bridge API
Provide an internal API over Minecraft to remove duplicated code across minecraft versions.
This is implemented via a set of interfaces, which are injected via loom interface injection (at compile time) and Mixins (at runtime). A stub class will be exposed to common as API, which provides static methods. These methods are overwritten via Mixin at runtime.
Goals:
- Abstract most version independent logic to
common - Reduce maintenance burden for new & old features
Non-goals:
- Provide a stable external interface to third-party modules
- Implement "multi-version" jars
- Have "perfect" abstraction - some leaky abstraction is allowed, but these must be for specific edgecases only, e.g. an OpenGL call that's only needed in 1.8.9
Checklist:
- [x] Implement Bridge API for
1.8.9(reference implementation for ports) - [x] Implement Bridge API for
1.16 - [x] Implement Bridge API for
1.20 - [x] Implement Bridge API for
1.21 - [x] Implement Bridge API for
1.21.4 - [x] Port most HUD modules
- [ ] ~Port other modules~
During the porting process, 0 or some other suffix may be appended to avoid name collisions. These will be removed once colliding packages & classes have been abstracted away.
Resolved some of the comments. The code currently is ugly and has extraneous diffs, but I will clean them up later with some automated tooling. I just want to get everything in a working state before I deal with that.
Limiting the scope of this now. Only porting Hypixel and HUD modules, and not even all HUD modules. I want this to be in an usable state in a few months, and begin testing soon.
Future work can include porting other modules / cleanup.