package net.minecraft.client.multiplayer;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.logging.Level;
import java.util.logging.Logger;
@SideOnly(Side.CLIENT)
public class ThreadLanServerPing extends Thread
{
private static Logger logger = Logger.getLogger("Minecraft");
private final String motd;
/** The socket we're using to send packets on. */
private final DatagramSocket socket;
private boolean isStopping = true;
private final String address;
public ThreadLanServerPing(String par1Str, String par2Str) throws IOException
{
super("LanServerPinger");
this.motd = par1Str;
this.address = par2Str;
this.setDaemon(true);
this.socket = new DatagramSocket();
}
public void run()
{
String var1 = getPingResponse(this.motd, this.address);
byte[] var2 = var1.getBytes();
while (!this.isInterrupted() && this.isStopping)
{
try
{
InetAddress var3 = InetAddress.getByName("224.0.2.60");
DatagramPacket var4 = new DatagramPacket(var2, var2.length, var3, 4445);
this.socket.send(var4);
}
catch (IOException var6)
{
logger.log(Level.WARNING, "LanServerPinger: " + var6.getMessage());
break;
}
try
{
sleep(1500L);
}
catch (InterruptedException var5)
{
;
}
}
}
public void interrupt()
{
super.interrupt();
this.isStopping = false;
}
public static String getPingResponse(String par0Str, String par1Str)
{
return "[MOTD]" + par0Str + "[/MOTD][AD]" + par1Str + "[/AD]";
}
public static String getMotdFromPingResponse(String par0Str)
{
int var1 = par0Str.indexOf("[MOTD]");
if (var1 < 0)
{
return "missing no";
}
else
{
int var2 = par0Str.indexOf("[/MOTD]", var1 + "[MOTD]".length());
return var2 < var1 ? "missing no" : par0Str.substring(var1 + "[MOTD]".length(), var2);
}
}
public static String getAdFromPingResponse(String par0Str)
{
int var1 = par0Str.indexOf("[/MOTD]");
if (var1 < 0)
{
return null;
}
else
{
int var2 = par0Str.indexOf("[/MOTD]", var1 + "[/MOTD]".length());
if (var2 >= 0)
{
return null;
}
else
{
int var3 = par0Str.indexOf("[AD]", var1 + "[/MOTD]".length());
if (var3 < 0)
{
return null;
}
else
{
int var4 = par0Str.indexOf("[/AD]", var3 + "[AD]".length());
return var4 < var3 ? null : par0Str.substring(var3 + "[AD]".length(), var4);
}
}
}
}
}