LagGoggles

LagGoggles

9M Downloads

VoxelMap(and others?) compatibility issues

Yamza opened this issue · 7 comments

commented

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

commented

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...

commented

We don't use voxelmap in any of my packs so it must be p455w0rdslib

commented

Probably. If you look at p455w0rd/p455w0rds-Library#27 this reinforces that statement. However, I don't have concrete proof yet.

commented

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.

commented

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.

commented

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
image

mixins.voxelmap.json targets net.minecraft.client.renderer.RenderGlobal
image

Now, p455words library performs it's own transformer on net.minecraft.client.renderer.RenderGlobal
image

Then creates a SafeClassWriter
image

Which calls getCommonSuperClass()
image

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.

commented

Thanks for the help!