/// <summary> /// Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e). /// </summary> protected override void ActionPerformed(GuiButton par1GuiButton) { if (!par1GuiButton.Enabled) { return; } if (par1GuiButton.Id == 2) { string s = ServerList[SelectedServer].Name; if (s != null) { DeleteClicked = true; StringTranslate stringtranslate = StringTranslate.GetInstance(); string s1 = stringtranslate.TranslateKey("selectServer.deleteQuestion"); string s2 = new StringBuilder().Append("'").Append(s).Append("' ").Append(stringtranslate.TranslateKey("selectServer.deleteWarning")).ToString(); string s3 = stringtranslate.TranslateKey("selectServer.deleteButton"); string s4 = stringtranslate.TranslateKey("gui.cancel"); GuiYesNo guiyesno = new GuiYesNo(this, s1, s2, s3, s4, SelectedServer); Mc.DisplayGuiScreen(guiyesno); } } else if (par1GuiButton.Id == 1) { JoinServer(SelectedServer); } else if (par1GuiButton.Id == 4) { DirectClicked = true; Mc.DisplayGuiScreen(new GuiScreenServerList(this, TempServer = new ServerNBTStorage(StatCollector.TranslateToLocal("selectServer.defaultName"), ""))); } else if (par1GuiButton.Id == 3) { AddClicked = true; Mc.DisplayGuiScreen(new GuiScreenAddServer(this, TempServer = new ServerNBTStorage(StatCollector.TranslateToLocal("selectServer.defaultName"), ""))); } else if (par1GuiButton.Id == 7) { EditClicked = true; ServerNBTStorage servernbtstorage = (ServerNBTStorage)ServerList[SelectedServer]; Mc.DisplayGuiScreen(new GuiScreenAddServer(this, TempServer = new ServerNBTStorage(servernbtstorage.Name, servernbtstorage.Host))); } else if (par1GuiButton.Id == 0) { Mc.DisplayGuiScreen(ParentScreen); } else if (par1GuiButton.Id == 8) { Mc.DisplayGuiScreen(new GuiMultiplayer(ParentScreen)); } else { ServerSlotContainer.ActionPerformed(par1GuiButton); } }
/// <summary> /// Poll server for MOTD, lag, and player count/max /// </summary> public static void PollServer(GuiMultiplayer par0GuiMultiplayer, ServerNBTStorage par1ServerNBTStorage) { try { par0GuiMultiplayer.PollServer(par1ServerNBTStorage); } catch (IOException e) { Utilities.LogException(e); } }
public override void ConfirmClicked(bool par1, int par2) { if (DeleteClicked) { DeleteClicked = false; if (par1) { ServerList.RemoveAt(par2); SaveServerList(); } Mc.DisplayGuiScreen(this); } else if (DirectClicked) { DirectClicked = false; if (par1) { JoinServer(TempServer); } else { Mc.DisplayGuiScreen(this); } } else if (AddClicked) { AddClicked = false; if (par1) { ServerList.Add(TempServer); SaveServerList(); } Mc.DisplayGuiScreen(this); } else if (EditClicked) { EditClicked = false; if (par1) { ServerNBTStorage servernbtstorage = ServerList[SelectedServer]; servernbtstorage.Name = TempServer.Name; servernbtstorage.Host = TempServer.Host; SaveServerList(); } Mc.DisplayGuiScreen(this); } }
public GuiMultiplayer(GuiScreen par1GuiScreen) { ServerList = new List <ServerNBTStorage>(); SelectedServer = -1; DeleteClicked = false; AddClicked = false; EditClicked = false; DirectClicked = false; LagTooltip = null; TempServer = null; ParentScreen = par1GuiScreen; }
/// <summary> /// Load the server list from servers.dat /// </summary> private void LoadServerList() { try { NBTTagCompound nbttagcompound = CompressedStreamTools.Read(System.IO.Path.Combine(Mc.McDataDir, "servers.dat")); NBTTagList nbttaglist = nbttagcompound.GetTagList("servers"); ServerList.Clear(); for (int i = 0; i < nbttaglist.TagCount(); i++) { ServerList.Add(ServerNBTStorage.CreateServerNBTStorage((NBTTagCompound)nbttaglist.TagAt(i))); } } catch (Exception exception) { Utilities.LogException(exception); } }
/// <summary> /// Join server by ServerNBTStorage /// </summary> private void JoinServer(ServerNBTStorage par1ServerNBTStorage) { string s = par1ServerNBTStorage.Host; string[] @as = StringHelperClass.StringSplit(s, ":", true); if (s.StartsWith("[")) { int i = s.IndexOf("]"); if (i > 0) { string s1 = s.Substring(1, i - 1); string s2 = s.Substring(i + 1).Trim(); if (s2.StartsWith(":") && s2.Length > 0) { s2 = s2.Substring(1); @as = new string[2]; @as[0] = s1; @as[1] = s2; } else { @as = new string[1]; @as[0] = s1; } } } if (@as.Length > 2) { @as = new string[1]; @as[0] = s; } Mc.DisplayGuiScreen(new GuiConnecting(Mc, @as[0], @as.Length <= 1 ? 25565 : ParseIntWithDefault(@as[1], 25565))); }
public GuiScreenAddServer(GuiScreen par1GuiScreen, ServerNBTStorage par2ServerNBTStorage) { ParentGui = par1GuiScreen; ServerNBTStorage = par2ServerNBTStorage; }
protected override void DrawSlot(int par1, int par2, int par3, int par4, Tessellator par5Tessellator) { ServerNBTStorage servernbtstorage = GuiMultiplayer.GetServerList(ParentGui)[par1]; lock (GuiMultiplayer.GetLock()) { if (GuiMultiplayer.GetThreadsPending() < 5 && !servernbtstorage.Polled) { servernbtstorage.Polled = true; servernbtstorage.Lag = -2L; servernbtstorage.Motd = ""; servernbtstorage.PlayerCount = ""; GuiMultiplayer.IncrementThreadsPending(); Action pollServers = () => { try { servernbtstorage.Motd = "Polling.."; long l = JavaHelper.NanoTime(); GuiMultiplayer.PollServer(ParentGui, servernbtstorage); long l1 = JavaHelper.NanoTime(); servernbtstorage.Lag = (l1 - l) / 0xf4240L; } catch (SocketException sockettimeoutexception) { Utilities.LogException(sockettimeoutexception); servernbtstorage.Lag = -1L; servernbtstorage.Motd = "Can't reach server"; } catch (IOException ioexception) { Utilities.LogException(ioexception); servernbtstorage.Lag = -1L; servernbtstorage.Motd = "Communication error"; } catch (Exception exception) { Utilities.LogException(exception); servernbtstorage.Lag = -1L; servernbtstorage.Motd = (new StringBuilder()).Append("ERROR: ").Append(exception.GetType()).ToString(); } finally { lock (GuiMultiplayer.GetLock()) { GuiMultiplayer.DecrementThreadsPending(); } } }; new Thread(new ThreadStart(pollServers)).Start(); } } ParentGui.DrawString(ParentGui.FontRenderer, servernbtstorage.Name, par2 + 2, par3 + 1, 0xffffff); ParentGui.DrawString(ParentGui.FontRenderer, servernbtstorage.Motd, par2 + 2, par3 + 12, 0x808080); ParentGui.DrawString(ParentGui.FontRenderer, servernbtstorage.PlayerCount, (par2 + 215) - (int)ParentGui.FontRenderer.GetStringWidth(servernbtstorage.PlayerCount), par3 + 12, 0x808080); ParentGui.DrawString(ParentGui.FontRenderer, servernbtstorage.Host, par2 + 2, par3 + 12 + 11, 0x303030); //GL.Color4(1.0F, 1.0F, 1.0F, 1.0F); ParentGui.Mc.RenderEngine.BindTexture("gui.icons.png"); string s = ""; int i; int j; if (servernbtstorage.Polled && servernbtstorage.Lag != -2L) { i = 0; j = 0; if (servernbtstorage.Lag < 0L) { j = 5; } else if (servernbtstorage.Lag < 150L) { j = 0; } else if (servernbtstorage.Lag < 300L) { j = 1; } else if (servernbtstorage.Lag < 600L) { j = 2; } else if (servernbtstorage.Lag < 1000L) { j = 3; } else { j = 4; } if (servernbtstorage.Lag < 0L) { s = "(no connection)"; } else { s = (new StringBuilder()).Append(servernbtstorage.Lag).Append("ms").ToString(); } } else { i = 1; j = (int)(JavaHelper.CurrentTimeMillis() / 100L + (long)(par1 * 2) & 7L); if (j > 4) { j = 8 - j; } s = "Polling.."; } ParentGui.DrawTexturedModalRect(par2 + 205, par3, 0 + i * 10, 176 + j * 8, 10, 8); sbyte byte0 = 4; if (MouseX >= (par2 + 205) - byte0 && MouseY >= par3 - byte0 && MouseX <= par2 + 205 + 10 + byte0 && MouseY <= par3 + 8 + byte0) { GuiMultiplayer.SetTooltipText(ParentGui, s); } }
/// <summary> /// Poll server for MOTD, lag, and player count/max /// </summary> //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET: //ORIGINAL LINE: private void pollServer(ServerNBTStorage par1ServerNBTStorage) throws IOException public void PollServer(ServerNBTStorage par1ServerNBTStorage) { string s = par1ServerNBTStorage.Host; string[] @as = StringHelperClass.StringSplit(s, ":", true); if (s.StartsWith("[")) { int i = s.IndexOf("]"); if (i > 0) { string s2 = s.Substring(1, i - 1); string s3 = s.Substring(i + 1).Trim(); if (s3.StartsWith(":") && s3.Length > 0) { s3 = s3.Substring(1); @as = new string[2]; @as[0] = s2; @as[1] = s3; } else { @as = new string[1]; @as[0] = s2; } } } if (@as.Length > 2) { @as = new string[1]; @as[0] = s; } string s1 = @as[0]; int j = @as.Length <= 1 ? 25565 : ParseIntWithDefault(@as[1], 25565); Socket socket = null; NetworkStream dataStream = null; try { socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.SendTimeout = 3000; //socket.SetTcpNoDelay(true); //socket.SetTrafficClass(18); socket.Connect(s1, j); dataStream = new NetworkStream(socket); dataStream.WriteByte(254); if (dataStream.ReadByte() != 255) { throw new IOException("Bad message"); } string s4 = Packet.ReadString(new BinaryReader(dataStream), 256); char[] ac = s4.ToCharArray(); for (int k = 0; k < ac.Length; k++) { if (ac[k] != '\u0247' && ChatAllowedCharacters.AllowedCharacters.IndexOf(ac[k]) < 0) { ac[k] = '?'; } } s4 = new string(ac); string[] as1 = StringHelperClass.StringSplit(s4, "\u0247", true); s4 = as1[0]; int l = -1; int i1 = -1; try { l = Convert.ToInt32(as1[1]); i1 = Convert.ToInt32(as1[2]); } catch (Exception exception) { Utilities.LogException(exception); } par1ServerNBTStorage.Motd = (new StringBuilder()).Append("\u02477").Append(s4).ToString(); if (l >= 0 && i1 > 0) { par1ServerNBTStorage.PlayerCount = (new StringBuilder()).Append("\u02477").Append(l).Append("\u02478/\u02477").Append(i1).ToString(); } else { par1ServerNBTStorage.PlayerCount = "\u02478???"; } } finally { try { if (dataStream != null) { dataStream.Close(); } } catch (Exception throwable) { Utilities.LogException(throwable); } try { if (socket != null) { socket.Close(); } } catch (Exception throwable2) { Utilities.LogException(throwable2); } } }
public GuiScreenServerList(GuiScreen par1GuiScreen, ServerNBTStorage par2ServerNBTStorage) { GuiScreen = par1GuiScreen; ServerListStorage = par2ServerNBTStorage; }