Snippet: minecraft poll server

Written in Java and posted on Nov 27, 2011 at 20:54 by notch/jeb_
   1      private void pollServer(ServerNBTStorage servernbtstorage)
   2          throws IOException
   3      {
   4          String s = servernbtstorage.host;
   5          String as[] = s.split(":");
   6          if(s.startsWith("["))
   7          {
   8              int i = s.indexOf("]");
   9              if(i > 0)
  10              {
  11                  String s2 = s.substring(1, i);
  12                  String s3 = s.substring(i + 1).trim();
  13                  if(s3.startsWith(":") && s3.length() > 0)
  14                  {
  15                      s3 = s3.substring(1);
  16                      as = new String[2];
  17                      as[0] = s2;
  18                      as[1] = s3;
  19                  } else
  20                  {
  21                      as = new String[1];
  22                      as[0] = s2;
  23                  }
  24              }
  25          }
  26          if(as.length > 2)
  27          {
  28              as = new String[1];
  29              as[0] = s;
  30          }
  31          String s1 = as[0];
  32          int j = as.length <= 1 ? 25565 : parseIntWithDefault(as[1], 25565);
  33          Socket socket = null;
  34          DataInputStream datainputstream = null;
  35          DataOutputStream dataoutputstream = null;
  36          try
  37          {
  38              socket = new Socket();
  39              socket.setSoTimeout(3000);
  40              socket.setTcpNoDelay(true);
  41              socket.setTrafficClass(18);
  42              socket.connect(new InetSocketAddress(s1, j), 3000);
  43              datainputstream = new DataInputStream(socket.getInputStream());
  44              dataoutputstream = new DataOutputStream(socket.getOutputStream());
  45              dataoutputstream.write(254);
  46              if(datainputstream.read() != 255)
  47              {
  48                  throw new IOException("Bad message");
  49              }
  50              String s4 = Packet.readString(datainputstream, 64);
  51              char ac[] = s4.toCharArray();
  52              for(int k = 0; k < ac.length; k++)
  53              {
  54                  if(ac[k] != '\247' && ChatAllowedCharacters.allowedCharacters.indexOf(ac[k]) < 0)
  55                  {
  56                      ac[k] = '?';
  57                  }
  58              }
  59  
  60              s4 = new String(ac);
  61              String as1[] = s4.split("\247");
  62              s4 = as1[0];
  63              int l = -1;
  64              int i1 = -1;
  65              try
  66              {
  67                  l = Integer.parseInt(as1[1]);
  68                  i1 = Integer.parseInt(as1[2]);
  69              }
  70              catch(Exception exception) { }
  71              servernbtstorage.motd = (new StringBuilder()).append("\2477").append(s4).toString();
  72              if(l >= 0 && i1 > 0)
  73              {
  74                  servernbtstorage.playerCount = (new StringBuilder()).append("\2477").append(l).append("\2478/\2477").append(i1).toString();
  75              } else
  76              {
  77                  servernbtstorage.playerCount = "\2478???";
  78              }
  79          }
  80          finally
  81          {
  82              try
  83              {
  84                  if(datainputstream != null)
  85                  {
  86                      datainputstream.close();
  87                  }
  88              }
  89              catch(Throwable throwable) { }
  90              try
  91              {
  92                  if(dataoutputstream != null)
  93                  {
  94                      dataoutputstream.close();
  95                  }
  96              }
  97              catch(Throwable throwable1) { }
  98              try
  99              {
 100                  if(socket != null)
 101                  {
 102                      socket.close();
 103                  }
 104              }
 105              catch(Throwable throwable2) { }
 106          }
 107      }