VoxelMap(and others?) compatibility issues
Yamza opened this issue · 7 comments
Describe the bug
Adding VoxelMap to a modpack causes LagGoggles to prevent loading.
Having only LagGoggles and VoxelMap together does work.
forge-14.23.5.2838
LagGoggles-FAT-1.12.2-4.6.jar
forgemod_VoxelMap-1.9.10_for_1.12.2.jar
To Reproduce
Install this test pack, remove JourneyMap, add VoxelMap.
https://www.dropbox.com/s/wdx11h9w04g8m3r/ATM3-Remix1.4.0A3.zip?dl=1
If you are using SpongeForge, which version are you using?
No
Logs
This log is from a normal pack load where there are no issues (using JourneyMap): https://gist.github.com/Yamza/24e7b1077876665981f8e402eb9d3e39
This log is after replacing JourneyMap with VoxelMap: https://gist.github.com/Yamza/b3cdef49bfb29d0358bc5e474acc19c8
Update 1:
I have isolated the minimum mods required to reproduce this problem...
forgemod_VoxelMap-1.9.10_for_1.12.2.jar
p455w0rdslib-1.12.2-2.2.151.jar
LagGoggles-FAT-1.12.2-4.6.jar
Disabling any of these will fix the problem.
Digging deeper...
Probably. If you look at p455w0rd/p455w0rds-Library#27 this reinforces that statement. However, I don't have concrete proof yet.
Problem isn't just p455w0rdslib though, that's just a part of it. As you can see in the first report we have LG and PWL in there and it's fine. But then adding voxelmap suddenly makes it not fine.
Edit: This comment is entirely false, see #71 (comment)
After very close inspection and comparison of your logs (Thanks for providing both a working and non-working version!) I think I found the problem.
This might be related to #70, not sure. (@ProsperCraft)
A common error is where another transformer gets hold of the class, and finishes transforming it before LagGoggles had a chance.
A clear difference is seen: Voxelmap ships mixin, and gets its mixins applied as soon as possible, rather than on-demand... This made me think: how does Voxelmap load it's mixins compared to LagGoggles?
His mixins.json file contains (as per documentation!)
"required": true
And LagGoggles doesn't! I am investigating this.
In the meantime, you could try renaming LagGoggles-FAT-1.12.2-4.6.jar
to A_LagGoggles-FAT-1.12.2-4.6.jar
. It might be enough to get LagGoggles to load first, and ensure registration.
Edit: Does not work. oof
I'm putting on my detective hat now, I'll keep you posted here when I know more.
Update 2: A long one.
I used IntelliJ to find how net.minecraft.entity.Entity
was loaded. I'll take you through it step by step and explain why. Long story short: It's p455w0rds library, Voxelmap simply touches something (net.minecraft.client.renderer.RenderGlobal
), and p455words library then loads net.minecraft.entity.Entity
, breaking all future mixins (Coremods are not allowed to load any game related classes directly as per official MinecraftForge documentation)
Mixin loads mixins.voxelmap.json
mixins.voxelmap.json
targets net.minecraft.client.renderer.RenderGlobal
Now, p455words library performs it's own transformer on net.minecraft.client.renderer.RenderGlobal
Then creates a SafeClassWriter
Which calls getCommonSuperClass()
At this point. net.minecraft.entity.Entity
is loaded out of Mixin's control.
A coremod cannot depend on any minecraft classes. Source
I'm sorry I don't have the answer that you wanted. But this is not a LagGoggles or Voxelmap bug.