package net.minecraft.client.gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.LanServer; import net.minecraft.client.multiplayer.ServerData; import net.minecraft.client.renderer.Tessellator; import net.minecraft.util.StatCollector; import org.lwjgl.opengl.GL11; @SideOnly(Side.CLIENT) class GuiSlotServer extends GuiSlot { /** Instance to the GUI this list is on. */ final GuiMultiplayer parentGui; public GuiSlotServer(GuiMultiplayer par1GuiMultiplayer) { super(par1GuiMultiplayer.mc, par1GuiMultiplayer.width, par1GuiMultiplayer.height, 32, par1GuiMultiplayer.height - 64, 36); this.parentGui = par1GuiMultiplayer; } /** * Gets the size of the current slot list. */ protected int getSize() { return GuiMultiplayer.getInternetServerList(this.parentGui).countServers() + GuiMultiplayer.getListOfLanServers(this.parentGui).size() + 1; } /** * the element in the slot that was clicked, boolean for wether it was double clicked or not */ protected void elementClicked(int par1, boolean par2) { if (par1 < GuiMultiplayer.getInternetServerList(this.parentGui).countServers() + GuiMultiplayer.getListOfLanServers(this.parentGui).size()) { int var3 = GuiMultiplayer.getSelectedServer(this.parentGui); GuiMultiplayer.getAndSetSelectedServer(this.parentGui, par1); ServerData var4 = GuiMultiplayer.getInternetServerList(this.parentGui).countServers() > par1 ? GuiMultiplayer.getInternetServerList(this.parentGui).getServerData(par1) : null; boolean var5 = GuiMultiplayer.getSelectedServer(this.parentGui) >= 0 && GuiMultiplayer.getSelectedServer(this.parentGui) < this.getSize() && (var4 == null || var4.field_82821_f == 51); boolean var6 = GuiMultiplayer.getSelectedServer(this.parentGui) < GuiMultiplayer.getInternetServerList(this.parentGui).countServers(); GuiMultiplayer.getButtonSelect(this.parentGui).enabled = var5; GuiMultiplayer.getButtonEdit(this.parentGui).enabled = var6; GuiMultiplayer.getButtonDelete(this.parentGui).enabled = var6; if (par2 && var5) { GuiMultiplayer.func_74008_b(this.parentGui, par1); } else if (var6 && GuiScreen.isShiftKeyDown() && var3 >= 0 && var3 < GuiMultiplayer.getInternetServerList(this.parentGui).countServers()) { GuiMultiplayer.getInternetServerList(this.parentGui).swapServers(var3, GuiMultiplayer.getSelectedServer(this.parentGui)); } } } /** * returns true if the element passed in is currently selected */ protected boolean isSelected(int par1) { return par1 == GuiMultiplayer.getSelectedServer(this.parentGui); } /** * return the height of the content being scrolled */ protected int getContentHeight() { return this.getSize() * 36; } protected void drawBackground() { this.parentGui.drawDefaultBackground(); } protected void drawSlot(int par1, int par2, int par3, int par4, Tessellator par5Tessellator) { if (par1 < GuiMultiplayer.getInternetServerList(this.parentGui).countServers()) { this.func_77247_d(par1, par2, par3, par4, par5Tessellator); } else if (par1 < GuiMultiplayer.getInternetServerList(this.parentGui).countServers() + GuiMultiplayer.getListOfLanServers(this.parentGui).size()) { this.func_77248_b(par1, par2, par3, par4, par5Tessellator); } else { this.func_77249_c(par1, par2, par3, par4, par5Tessellator); } } private void func_77248_b(int par1, int par2, int par3, int par4, Tessellator par5Tessellator) { LanServer var6 = (LanServer)GuiMultiplayer.getListOfLanServers(this.parentGui).get(par1 - GuiMultiplayer.getInternetServerList(this.parentGui).countServers()); this.parentGui.drawString(this.parentGui.fontRenderer, StatCollector.translateToLocal("lanServer.title"), par2 + 2, par3 + 1, 16777215); this.parentGui.drawString(this.parentGui.fontRenderer, var6.getServerMotd(), par2 + 2, par3 + 12, 8421504); if (this.parentGui.mc.gameSettings.hideServerAddress) { this.parentGui.drawString(this.parentGui.fontRenderer, StatCollector.translateToLocal("selectServer.hiddenAddress"), par2 + 2, par3 + 12 + 11, 3158064); } else { this.parentGui.drawString(this.parentGui.fontRenderer, var6.getServerIpPort(), par2 + 2, par3 + 12 + 11, 3158064); } } private void func_77249_c(int par1, int par2, int par3, int par4, Tessellator par5Tessellator) { this.parentGui.drawCenteredString(this.parentGui.fontRenderer, StatCollector.translateToLocal("lanServer.scanning"), this.parentGui.width / 2, par3 + 1, 16777215); String var6; switch (GuiMultiplayer.func_74010_g(this.parentGui) / 3 % 4) { case 0: default: var6 = "O o o"; break; case 1: case 3: var6 = "o O o"; break; case 2: var6 = "o o O"; } this.parentGui.drawCenteredString(this.parentGui.fontRenderer, var6, this.parentGui.width / 2, par3 + 12, 8421504); } private void func_77247_d(int par1, int par2, int par3, int par4, Tessellator par5Tessellator) { ServerData var6 = GuiMultiplayer.getInternetServerList(this.parentGui).getServerData(par1); synchronized (GuiMultiplayer.func_74011_h()) { if (GuiMultiplayer.func_74012_i() < 5 && !var6.field_78841_f) { var6.field_78841_f = true; var6.pingToServer = -2L; var6.serverMOTD = ""; var6.populationInfo = ""; GuiMultiplayer.func_74021_j(); (new ThreadPollServers(this, var6)).start(); } } boolean var7 = var6.field_82821_f > 51; boolean var8 = var6.field_82821_f < 51; boolean var9 = var7 || var8; this.parentGui.drawString(this.parentGui.fontRenderer, var6.serverName, par2 + 2, par3 + 1, 16777215); this.parentGui.drawString(this.parentGui.fontRenderer, var6.serverMOTD, par2 + 2, par3 + 12, 8421504); this.parentGui.drawString(this.parentGui.fontRenderer, var6.populationInfo, par2 + 215 - this.parentGui.fontRenderer.getStringWidth(var6.populationInfo), par3 + 12, 8421504); if (var9) { String var10 = "\u00a74" + var6.gameVersion; this.parentGui.drawString(this.parentGui.fontRenderer, var10, par2 + 200 - this.parentGui.fontRenderer.getStringWidth(var10), par3 + 1, 8421504); } if (!this.parentGui.mc.gameSettings.hideServerAddress && !var6.isHidingAddress()) { this.parentGui.drawString(this.parentGui.fontRenderer, var6.serverIP, par2 + 2, par3 + 12 + 11, 3158064); } else { this.parentGui.drawString(this.parentGui.fontRenderer, StatCollector.translateToLocal("selectServer.hiddenAddress"), par2 + 2, par3 + 12 + 11, 3158064); } GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.parentGui.mc.renderEngine.bindTexture(this.parentGui.mc.renderEngine.getTexture("/gui/icons.png")); byte var16 = 0; boolean var11 = false; String var12 = ""; int var15; if (var9) { var12 = var7 ? "Client out of date!" : "Server out of date!"; var15 = 5; } else if (var6.field_78841_f && var6.pingToServer != -2L) { if (var6.pingToServer < 0L) { var15 = 5; } else if (var6.pingToServer < 150L) { var15 = 0; } else if (var6.pingToServer < 300L) { var15 = 1; } else if (var6.pingToServer < 600L) { var15 = 2; } else if (var6.pingToServer < 1000L) { var15 = 3; } else { var15 = 4; } if (var6.pingToServer < 0L) { var12 = "(no connection)"; } else { var12 = var6.pingToServer + "ms"; } } else { var16 = 1; var15 = (int)(Minecraft.getSystemTime() / 100L + (long)(par1 * 2) & 7L); if (var15 > 4) { var15 = 8 - var15; } var12 = "Polling.."; } this.parentGui.drawTexturedModalRect(par2 + 205, par3, 0 + var16 * 10, 176 + var15 * 8, 10, 8); byte var13 = 4; if (this.mouseX >= par2 + 205 - var13 && this.mouseY >= par3 - var13 && this.mouseX <= par2 + 205 + 10 + var13 && this.mouseY <= par3 + 8 + var13) { GuiMultiplayer.func_74009_a(this.parentGui, var12); } } }