SpongePowered / SpongeForge

A Forge mod that implements SpongeAPI
http://www.spongepowered.org/
MIT License
1.14k stars 306 forks source link

[Regression?] Server-Side 7.1.1+ SpongeForge breaks Dimension Providers for Client-side (Affecting Galacticraft, RFToolsDim, probably more) #2501

Closed fira closed 5 years ago

fira commented 6 years ago

I am currently running

SMP install running MC 1.12.2

Server:

Client:

Plugins/Mods:

Issue Description We're running a Custom Modpack and I recently migrated server and added in SpongeForge and plugins among other things. It took days and days to troubleshoot before finding out by isolating the mods and setup on another server and digging in various mods source, but by all accounts it seems that Enabling SpongeForge on Server side breaks the way the Client is made aware of Dim Providers

I'm not sure why exactly, but I've noticed this causes the following behaviour:

Relevant ClientLog :

[12:31:10] [main/ERROR]: Problem identifying planet or dimension in an add on for Galacticraft!
[12:31:10] [main/ERROR]: (The problem is likely caused by a dimension ID conflict.  Check configs for dimension clashes.  You can also try disabling Mars space station in configs.)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]: java.lang.IllegalArgumentException: Could not get provider type for dimension -13, does not exist
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at net.minecraftforge.common.DimensionManager.getProviderType(DimensionManager.java:164)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at net.minecraftforge.common.DimensionManager.createProviderFor(DimensionManager.java:325)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at micdoodle8.mods.galacticraft.core.util.WorldUtil.getProviderForDimensionClient(WorldUtil.java:352)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at com.mjr.extraplanets.client.gui.screen.CustomCelestialSelection.drawCustomButtons(CustomCelestialSelection.java:230)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at com.mjr.extraplanets.client.gui.screen.CustomCelestialSelection.drawButtons(CustomCelestialSelection.java:420)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection.func_73863_a(GuiCelestialSelection.java:1225)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at com.mjr.extraplanets.client.gui.screen.CustomCelestialSelection.func_73863_a(CustomCelestialSelection.java:966)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:381)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at java.lang.reflect.Method.invoke(Method.java:497)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at net.optifine.reflect.Reflector.callVoid(Reflector.java:654)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at net.minecraft.client.renderer.EntityRenderer.func_181560_a(EntityRenderer.java:1456)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1118)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:397)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at net.minecraft.client.main.Main.main(SourceFile:123)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at java.lang.reflect.Method.invoke(Method.java:497)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
[12:31:10] [main/INFO]: [micdoodle8.mods.galacticraft.core.client.gui.screen.GuiCelestialSelection:func_73863_a:1233]:  at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

Nothing seems to go wrong on Server Side. But Clients just don't apparently get the required information to run net.minecraftforge.common.DimensionManager.getProviderType I have no clue why this is the case, but it's quite a show-stopper for some mods :-/

fira commented 6 years ago

I got intrigued and Galacticraft Wiki said it worked with earlier versions, so I got digging by testing with different versions... And indeed, it works with Forge 2705 and Sponge 7.1.0-BETA-3361 Looks like a regression in either Forge or SpongeForge, i'm going to try to find the affecting change...

fira commented 6 years ago

Works with 2705 / 7.1.0-BETA-3475 I'm guessing there was an incompatibility when moving from Forge 2705 to Forge 2768 ? Could be related to the change in Forge 2717 rewriting Dimension Manager, the associated Pull Request (4902) in Forge : https://github.com/MinecraftForge/MinecraftForge/pull/4902/files

sfxworks commented 6 years ago

We did go about resetting a lot of configs when this occurred for #2499, so I could see how DIM IDs are related if theyre saved locally or something to make them out of sync.

gabizou commented 5 years ago

Re-tested with latest SF 3540 and GC 4.0.2.190 (latest) and it seems to connect fine going between planets. If there's still an issue, please provide a description how it's being reproduced and with which builds.