embeddedt / embeddium

An open-source client performance mod for Minecraft (based on Sodium 0.5.8) prioritizing reliability & mod compatibility
https://legacy.curseforge.com/minecraft/mc-mods/embeddium
GNU Lesser General Public License v3.0
161 stars 52 forks source link

Conflict with Axiom (Forge w/ Sinytra/Connector) #306

Closed Tslat closed 1 month ago

Tslat commented 1 month ago

Bug Description

The game crashes when both Embeddium & Axiom are installed due to a mixin conflict when going into a world This is on forge w/ Connector

Caused by: org.spongepowered.asm.mixin.injection.throwables.InjectionError: Critical injection failure: Callback method addDrawCommands(Lme/jellysquid/mods/sodium/client/gl/device/MultiDrawBatch;JIIII)Z in axiom.mixins.json:compat.MixinSodiumRegionChunkRenderer from mod axiom failed injection check, (0/1) succeeded. Scanned 1 target(s). Using refmap axiom-refmap.json

Reproduction Steps

Install Axiom + Embeddium + Connector + Forgified Fabric API

Go into world

Log File

Can't share, sorry

embeddedt commented 1 month ago

This is a problem with Axiom's mixin; it uses local capture by ordinal rather than name, which fails if the corresponding method is changed. It was necessary for me to add an extra local to that method to implement faster translucency sorting. If they switch to capturing locals by name, the mixin should work on both Embeddium 0.3.19+ & Sodium, as I kept the names of the variables unchanged.

Closing as there isn't a straightforward way for me to fix this without potentially compromising performance. Ideally mods would request APIs rather than using mixins (although I understand that this isn't possible while supporting Sodium 0.5.8 with the same codebase). :upside_down_face:

Tslat commented 1 month ago

Thanks :)