From 112c887bfba474a20208a3089fb62287c6c53680 Mon Sep 17 00:00:00 2001 From: Marcel Konrad Date: Wed, 11 Apr 2018 14:25:11 +0200 Subject: [PATCH] Make client disconnect from old server before connecting to a new one --- .../gui/content/impl/ContentChangeWorld.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentChangeWorld.java b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentChangeWorld.java index 9b85969..2dae353 100644 --- a/src/main/java/exopandora/worldhandler/gui/content/impl/ContentChangeWorld.java +++ b/src/main/java/exopandora/worldhandler/gui/content/impl/ContentChangeWorld.java @@ -5,9 +5,14 @@ import exopandora.worldhandler.gui.container.Container; import exopandora.worldhandler.gui.content.impl.abstr.ContentChild; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.GuiMainMenu; import net.minecraft.client.gui.GuiMultiplayer; +import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiWorldSelection; +import net.minecraft.client.multiplayer.ServerData; +import net.minecraft.client.multiplayer.WorldClient; import net.minecraft.client.resources.I18n; +import net.minecraftforge.fml.client.FMLClientHandler; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -33,7 +38,21 @@ public class ContentChangeWorld extends ContentChild Minecraft.getMinecraft().displayGuiScreen(new GuiWorldSelection(container)); break; case 3: - Minecraft.getMinecraft().displayGuiScreen(new GuiMultiplayer(container)); + ServerData server = Minecraft.getMinecraft().getCurrentServerData(); + + Minecraft.getMinecraft().world.sendQuittingDisconnectingPacket(); + Minecraft.getMinecraft().loadWorld((WorldClient)null); + + Minecraft.getMinecraft().displayGuiScreen(new GuiMultiplayer(new GuiScreen() + { + @Override + public void initGui() + { + FMLClientHandler.instance().connectToServer(new GuiMultiplayer(new GuiMainMenu()), server); + Minecraft.getMinecraft().displayGuiScreen((GuiScreen) null); + Minecraft.getMinecraft().setIngameFocus(); + } + })); break; default: break;