neoforged / NeoForge

Neo Modding API for Minecraft, based on Forge
https://projects.neoforged.net/neoforged/neoforge
Other
1.2k stars 177 forks source link

Server refuses connection due to Appache Compress being referenced on server (NoClassDefFoundError) #454

Closed SilverDavidMC closed 9 months ago

SilverDavidMC commented 9 months ago

Minecraft Version: 1.20.4

NeoForge Version: 20.4.70-beta

Logs:

Steps to Reproduce:

  1. Set up and run a NeoForge 20.4.70-beta client and dedicated server without any mods installed on either.
  2. Attempt to connect to the server.
  3. Client is refused connection due to java.lang.NoClassDefFoundError: org/apache/commons/compress/utils/Lists.

image

Description of issue:

When connecting to a server, NeoForge references org/apache/commons/compress/utils/Lists in several networking classes, causing a NoClassDefFoundError because the Apache Compress library isn't available on dedicated servers. This bug only occurs in a live environment, not in userdev.

The following classes are affected: https://github.com/neoforged/NeoForge/blob/bd3a22241b7186104f94632b9f2ca922255a498e/src/main/java/net/neoforged/neoforge/network/negotiation/NetworkComponentNegotiator.java#L93 https://github.com/neoforged/NeoForge/blob/bd3a22241b7186104f94632b9f2ca922255a498e/src/main/java/net/neoforged/neoforge/common/extensions/IServerGamePacketListenerExtension.java#L44 https://github.com/neoforged/NeoForge/blob/bd3a22241b7186104f94632b9f2ca922255a498e/src/main/java/net/neoforged/neoforge/network/registration/NetworkRegistry.java#L814

It's possible other classes are referencing the library, but this is all I could find for now. 20.4.69, before the networking rewrite, works as expected.

Shadows-of-Fire commented 9 months ago

Yeah we should avoid using those factory methods at all. They're just remnants from when the diamond operator sucked.