Skip to content

[Announcement] ExtraSounds v3 will discontinue support for MC 1.x #32

@lonefelidae16

Description

@lonefelidae16

What I’d feared has now become reality.

Mojang has announced it’ll remove obfuscation from Minecraft Java Edition: https://www.minecraft.net/en-us/article/removing-obfuscation-in-java-edition

I believe this is excellent news for many Mod developers and those who are creating or intend to create ModLoader, as it reduces the workload of maintaining mappings and eliminates the need to reference intermediaries.
However, things have taken a turn for the worse for ExtraSounds. It has become extremely difficult to support 26.1-snapshot-1 while maintaining the traditional functionality of simultaneously supporting versions from 1.18.x to 1.21.11.

Here’s what happens: click to expand the technical issue.

1. Java bytecode confliction

fabric-loom accesses the class “dxo” indirectly under the name net/minecraft/class_310 in MC1.18. This instance is accessible as net/minecraft/client/MinecraftClient in modders code using Yarn Mappings. However, obfuscation has been removed, and simultaneously, fabric-loom no longer supports this level of intermediary access. As a result, class_310 no longer exists there; instead, net/minecraft/client/Minecraft (official named class by Mojang) is present. ExtraSounds must precisely control and simultaneously provide class_310 for Minecraft up to version 1.21.11, and Minecraft for Minecraft version 26.1 and later. No, that phrasing isn’t quite right. If ExtraSounds cannot provide these functions accurately, Minecraft will crash with a NoClassDefFoundError or a ClassCastException. This issue stems from Java language limitations, making implementation extremely difficult.

2. Jar processor confliction in AccessWidener

When attempting to import a deobfuscated Minecraft 26.1 into the Root Project, the AccessWidener processor in fabric-loom assumes/enforces that the namespace is “official”. This prevents maintaining compatibility with other mods. Even if ExtraSounds didn’t use AW at all, if AW is used anywhere - even just once - by another mod during integration attempts, Gradle configuration phase will report failure.

3. Mod-id confliction; fabric vs. fabric-api

I don’t understand why the Fabric team made that decision, but the mod-id in the Fabric API differs between versions 1.x and 26.x. ExtraSounds requires the Fabric API, but there is no provision in fabric.mod.json to specify this as an OR condition.


ExtraSounds 3.0.0+1.21.11 will be the final release for legacy Minecraft - version 1.x, and a new build versioning will begin as ExtraSounds 3.0.0+26.1.
Please note that there is no compatibility between two versions until this issue is still alive; ExtraSounds 3.0.0+26.1 will not support version 1.x.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions