Skip to content
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

Incompatibility with RenderLib (+Nothirium, Entity Culling) #75

Closed
kreml-rumatschov opened this issue Feb 25, 2024 · 8 comments
Closed
Labels
invalid This doesn't seem right wontfix This will not be worked on workaround Waiting for an official fix

Comments

@kreml-rumatschov
Copy link

Hi there, not sure how necessary Meldexun's RenderLib (and Entity Culling + Nothirium) is at this point, but I'd like to add that it won't boot with Cleanroom sadly. Nothirium makes the game use the newer OpenGL standards greatly improving performance there, hence I'd have been really happy to see it working.

See here:
RenderLib (https://www.curseforge.com/minecraft/mc-mods/renderlib)
Nothirium (https://www.curseforge.com/minecraft/mc-mods/nothirium)
Entity Culling (https://www.curseforge.com/minecraft/mc-mods/entity-culling)

Hope you can do a bit more with the stacktrace than I can, tried it with latest revision of CleanroomMC and the respective mods, but no dice: mclo.gs/pVFhPDI

Best I can tell RenderLib has a mixin that isn't appreciated, presumably by the newer LWJGL revision:
Caused by: org.spongepowered.asm.mixin.injection.throwables.InjectionError: Critical injection failure: Redirector createDisplay(Lorg/lwjgl/opengl/PixelFormat;)V in mixins.renderlib.json:debug.MixinMinecraft from mod unknown-owner failed injection check, (0/1) succeeded. Scanned 1 target(s). Using refmap mixins.renderlib.refmap.json

Crashes against Hotspot, too, not just on Azul by the way.

@Rongmario
Copy link
Member

Hi there! Thank you for the issue. It'd be hard to patch other's mixin targets + seeing Meldexun's mods are ARR, it means we cannot fork it either.

I'd recommend using Vintagium now, and EntityCulling being something we'll have to look into at a later date.

@Rongmario Rongmario added invalid This doesn't seem right wontfix This will not be worked on workaround Waiting for an official fix labels Feb 26, 2024
@KasumiNova
Copy link
Contributor

RenderLib and Nothirium is a highly hacky program that breaks a lot of mod compatibility.

@lingmo0909
Copy link

Some research & workaround for users:

  • As is described by @kreml-rumatschov, the game crashes on startup for a mixin failure. The reason is that a mixin of RenderLib uses methods (example) that existed in LWJGL2 but not in LWJGL3. We can fix this by "merging" this, which adds such methods. I'm not sure how we can do this, or if we have to do this manually, so I didn't make a pr.

    User workaround: Open RenderLib jar file, edit "mixins.renderlib.json" and remove "debug.MixinMinecraft",. This mixin is for debug purposes only so removing it won't affect gameplay. (AFAIK RenderLib is ARR, do not redistribute)

  • The game crashes after you join a world(java.util.concurrent.CompletionException: java.lang.NullPointerException: Cannot invoke "java.lang.reflect.Field.get(java.lang.Object)" because "this.field" is null). This is because it.unimi.dsi.fastutil.objects.Object2ObjectAVLTreeMap$Entry.key and it.unimi.dsi.fastutil.objects.Object2ObjectRBTreeMap$Entry.key existed in fastutil 7.1.0, which seems to be the one used by forge, but not in fastutil 8.5.13, which Cleanroom uses. Nothirium uses these fields(src, src, and src of ReflectionField).

    User workaround (for MMC): open "patches\net.minecraftforge.json", search for "fastutil" and you should find these:

    {
        "name": "it.unimi.dsi:fastutil:8.5.13",
        "downloads": {
            "artifact": {
                "path": "it/unimi/dsi/fastutil/8.5.13/fastutil-8.5.13.jar",
                "url": "https://maven.minecraftforge.net/it/unimi/dsi/fastutil/8.5.13/fastutil-8.5.13.jar",
                "sha1": "7d1178e207e85b8990347d30f9d1d620cad858f4",
                "size": 23599579
            }
        }
    },
    

    replace them with these:

    {
        "name": "it.unimi.dsi:fastutil:7.1.0",
        "downloads": {
            "artifact": {
                "path": "it/unimi/dsi/fastutil/7.1.0/fastutil-7.1.0.jar",
                "url": "https://maven.minecraftforge.net/it/unimi/dsi/fastutil/7.1.0/fastutil-7.1.0.jar",
                "sha1": "9835253257524c1be7ab50c057aa2d418fb72082",
                "size": 17655579
            }
        }
    },
    

EntityCulling seems just compatible.

Showcase(RenderLib, Nothirium, and EntityCulling running on Cleanroom, by using the workarounds above)

showcase

I'm kinda sad that this issue is marked as wontfix, for these mods do offer a great performance improvement. Would you maybe reconsider this? Thanks in advance. @Rongmario

@kappa-maintainer
Copy link
Collaborator

I originally thought Nothirium hacks into inner lwjgl which is impossible to fix (plus it is ARR)
Now it seems it could be handled by an acceptable amount of effort

@kappa-maintainer
Copy link
Collaborator

Fixed in Fugue, I doubt about the "great performance" though

@kappa-maintainer
Copy link
Collaborator

Could you test if the latest Fugue + Cleanroom fixed this? If so, I will close this issue

@lingmo0909
Copy link

I tried with latest Fugue + Cleanroom:

RenderLib + EntityCulling + Nothirium: work.
RenderLib + EntityCulling + Nothirium + OptiFine G5: crash (https://mclo.gs/qpmTaTl)

@kappa-maintainer
Copy link
Collaborator

Should be fixed in No. 517 + 0.14.4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
invalid This doesn't seem right wontfix This will not be worked on workaround Waiting for an official fix
Projects
None yet
Development

No branches or pull requests

5 participants