-
Notifications
You must be signed in to change notification settings - Fork 14
Added a compatibility layer to make AAE work with ae2cl #38
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Now when I think about it, I can add those required overloads using normal mixin without ASM. Thats not the case for the enum entry and the constructor unfortunately. Ill try to rewrite them like that and update the PR. |
|
Okay sorry, you can not add a public method using a mixin. |
NegaNote
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Most of this looks fine, but I'm going to need some explanation as to how all this works with ensuring these various mixin class things exist, like the special constructors etc. Otherwise the additions seem logical. I assume this has been thoroughly tested?
|
These shims are here so that the mixin plugin runs when it encounters them, to avoid a situation where we rely on running patches for classes x, y, and z based on a mixin that is not related to them at all. When it encounters the shim, it applies it "does nothing" and all the patching happens in the post apply part where its actually patching the target class using ASM. The changes have been tested as much as I was able to test them myself. I tested all things that I made patches for and if the crafting works, if quantum cpu works, etc. |
|
How do the patches work? |
|
Ill take ensurePpiNoAuthorOverloadExists as an example
Long story short we just made the rest is as follows:
At the end we add that method to the class using the result is that we added a new function that's looking like public R encode(A a, B b) {
return this.encode(a, b, "");
} |
Fix Advanced AE compatibility on AE2CL
Added ASM shims (via mixin plugin) to add missing method overloads and a GuiText enum constant required by AAE.
Disabled AAE's CraftingService mixin via MixinSquared due to an AE2CL signature mismatch, and re-implement the behavior in our own mixin targeting the new signature.
Added a JVM flag (-Dmonilabs.mixin.verbose=true) to toggle verbose logging for the mixin plugin.