FalsehoodMC / Fabrication

A huge collection of vanilla tweaks and small features for both Fabric and Forge.
https://www.curseforge.com/minecraft/mc-mods/fabrication
MIT License
113 stars 23 forks source link

Fabrication 1.17.1 3.4.18 contains a library that incorrectly states that it requires Java 17 #724

Closed TigerWalts closed 2 months ago

TigerWalts commented 3 months ago

Fabric and Mods

Description

Fabric fails to start due to the lib93-deferral library containing a lib39-deferral.mixins.json file that declares that it needs Java 17.

{
    "required": true,
    "minVersion": "0.8",
    "package": "com.unascribed.lib39.deferral.mixin",
    "compatibilityLevel": "JAVA_17",
    "refmap": "lib39-deferral-refmap.json",
    "client": [
        "AccessorRenderSystem",
        "MixinWindow"
    ],
    "injectors": {
        "defaultRequire": 1
    }
}

The library is packaged inside the Fabrication mod at META-INF/jars/lib39-deferral-1.3.2+j16.jar.

Editing the lib39-deferral.mixins.json file inside and setting compatibilityLevel to JAVA_16 will let Fabric start.

latest.log

java.lang.RuntimeException: Error creating Mixin config lib39-deferral.mixins.json for mod lib39-deferral
    ...
Caused by: org.spongepowered.asm.launch.MixinInitialisationError: Error initialising mixin config lib39-deferral.mixins.json
    ...
Caused by: java.lang.IllegalArgumentException: The requested compatibility level JAVA_17 could not be set. Level is not supported by the active JRE or ASM version (Java 16.0, ASM 9.6 (ASM10_EXPERIMENTAL))
unascribed commented 3 months ago

Java 16 is EOL, Java 17 is the LTS release that followed it. Please update to Java 17, there is no reason to be running this version of Minecraft with Java 16.

TigerWalts commented 3 months ago

Unfortunately this is not possible with all launchers.

The CurseForge App sets up the Fabric version in the Minecraft launcher by having the fabric-loader-0.15.11-1.17.1.json inherit settings from the 1.17.1.json and not overriding the Java version.

There's no way in the CurseForge UI to set an override. The file is overwritten each time CurseForge launches a modpack so any manual edits are lost. Setting the file to read-only after making the change will make CurseForge prevent the launch. So users have to make the change every time they launch.

unascribed commented 3 months ago

That kind of sucks. Still using Java 16 is a bad idea due to unfixed bugs and vulnerabilities.

I'll try to make a new release of Deferral with a looser mixin spec when I get a chance.