Divert connection through FML, so we can deny connections to servers that don't want us
This commit is contained in:
parent
1a41990745
commit
725aba9d41
3 changed files with 55 additions and 1 deletions
|
@ -28,7 +28,7 @@
|
|||
this.field_71446_o = new TextureManager(this.field_110451_am);
|
||||
this.field_110451_am.func_110542_a(this.field_71446_o);
|
||||
this.field_147127_av = new SoundHandler(this.field_110451_am, this.field_71474_y);
|
||||
@@ -508,6 +513,7 @@
|
||||
@@ -508,12 +513,13 @@
|
||||
this.field_71446_o.func_130088_a(TextureMap.field_110576_c, new TextureMap(1, "textures/items"));
|
||||
GL11.glViewport(0, 0, this.field_71443_c, this.field_71440_d);
|
||||
this.field_71452_i = new EffectRenderer(this.field_71441_e, this.field_71446_o);
|
||||
|
@ -36,6 +36,13 @@
|
|||
this.func_71361_d("Post startup");
|
||||
this.field_71456_v = new GuiIngame(this);
|
||||
|
||||
if (this.field_71475_ae != null)
|
||||
{
|
||||
- this.func_147108_a(new GuiConnecting(new GuiMainMenu(), this, this.field_71475_ae, this.field_71477_af));
|
||||
+ FMLClientHandler.instance().connectToServerAtStartup(this.field_71475_ae, this.field_71477_af);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -527,6 +533,7 @@
|
||||
this.func_71352_k();
|
||||
}
|
||||
|
|
|
@ -16,3 +16,12 @@
|
|||
}
|
||||
|
||||
public void func_73866_w_()
|
||||
@@ -366,7 +368,7 @@
|
||||
|
||||
private void func_146791_a(ServerData p_146791_1_)
|
||||
{
|
||||
- this.field_146297_k.func_147108_a(new GuiConnecting(this, this.field_146297_k, p_146791_1_));
|
||||
+ FMLClientHandler.instance().connectToServer(this, p_146791_1_);
|
||||
}
|
||||
|
||||
public void func_146790_a(int p_146790_1_)
|
||||
|
|
|
@ -18,16 +18,21 @@ import java.util.Collections;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.logging.Logger;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.EntityClientPlayerMP;
|
||||
import net.minecraft.client.gui.Gui;
|
||||
import net.minecraft.client.gui.GuiIngameMenu;
|
||||
import net.minecraft.client.gui.GuiMainMenu;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.gui.GuiSelectWorld;
|
||||
import net.minecraft.client.gui.ServerListEntryNormal;
|
||||
import net.minecraft.client.multiplayer.GuiConnecting;
|
||||
import net.minecraft.client.multiplayer.ServerData;
|
||||
import net.minecraft.client.multiplayer.WorldClient;
|
||||
import net.minecraft.client.network.OldServerPinger;
|
||||
import net.minecraft.client.renderer.entity.Render;
|
||||
import net.minecraft.client.renderer.entity.RenderManager;
|
||||
import net.minecraft.client.resources.IReloadableResourceManager;
|
||||
|
@ -590,9 +595,11 @@ public class FMLClientHandler implements IFMLSidedHandler
|
|||
}
|
||||
serverDataTag.put(data, new ExtendedServerListData("VANILLA", false, -1, !moddedClientAllowed));
|
||||
}
|
||||
startupConnectionData.countDown();
|
||||
}
|
||||
|
||||
private static final ResourceLocation iconSheet = new ResourceLocation("fml:textures/gui/icons.png");
|
||||
private static final CountDownLatch startupConnectionData = new CountDownLatch(1);
|
||||
|
||||
public String enhanceServerListEntry(ServerListEntryNormal serverListEntry, ServerData serverEntry, int x, int width, int y, int relativeMouseX, int relativeMouseY)
|
||||
{
|
||||
|
@ -647,4 +654,35 @@ public class FMLClientHandler implements IFMLSidedHandler
|
|||
{
|
||||
return description.endsWith(":NOFML§r") ? description.substring(0, description.length() - 8)+"§r" : description;
|
||||
}
|
||||
|
||||
public void connectToServerAtStartup(String host, int port)
|
||||
{
|
||||
setupServerList();
|
||||
OldServerPinger osp = new OldServerPinger();
|
||||
ServerData serverData = new ServerData("Command Line", host+":"+port);
|
||||
try
|
||||
{
|
||||
osp.func_147224_a(serverData);
|
||||
startupConnectionData.await(30, TimeUnit.SECONDS);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
showGuiScreen(new GuiConnecting(new GuiMainMenu(), client, host, port));
|
||||
return;
|
||||
}
|
||||
connectToServer(new GuiMainMenu(), serverData);
|
||||
}
|
||||
|
||||
public void connectToServer(GuiScreen guiMultiplayer, ServerData serverEntry)
|
||||
{
|
||||
ExtendedServerListData extendedData = serverDataTag.get(serverEntry);
|
||||
if (extendedData.isBlocked)
|
||||
{
|
||||
showGuiScreen(new GuiAccessDenied(guiMultiplayer, serverEntry));
|
||||
}
|
||||
else
|
||||
{
|
||||
showGuiScreen(new GuiConnecting(guiMultiplayer, client, serverEntry));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue