AxolotlClient-mod icon indicating copy to clipboard operation
AxolotlClient-mod copied to clipboard

Multi Version Bridge API

Open Floweynt opened this issue 8 months ago • 2 comments

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.

Floweynt avatar Mar 13 '25 21:03 Floweynt

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.

Floweynt avatar Mar 16 '25 04:03 Floweynt

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.

Floweynt avatar May 13 '25 16:05 Floweynt