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.concurrent.atomic.AtomicInteger;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@SideOnly(Side.CLIENT)
public class ThreadLanServerPing extends Thread
{
private static final AtomicInteger field_148658_a = new AtomicInteger(0);
private static final Logger logger = LogManager.getLogger();
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;
private static final String __OBFID = "CL_00001137";
public ThreadLanServerPing(String p_i1321_1_, String p_i1321_2_) throws IOException
{
super("LanServerPinger #" + field_148658_a.incrementAndGet());
this.motd = p_i1321_1_;
this.address = p_i1321_2_;
this.setDaemon(true);
this.socket = new DatagramSocket();
}
public void run()
{
String s = getPingResponse(this.motd, this.address);
byte[] abyte = s.getBytes();
while (!this.isInterrupted() && this.isStopping)
{
try
{
InetAddress inetaddress = InetAddress.getByName("224.0.2.60");
DatagramPacket datagrampacket = new DatagramPacket(abyte, abyte.length, inetaddress, 4445);
this.socket.send(datagrampacket);
}
catch (IOException ioexception)
{
logger.warn("LanServerPinger: " + ioexception.getMessage());
break;
}
try
{
sleep(1500L);
}
catch (InterruptedException interruptedexception)
{
;
}
}
}
public void interrupt()
{
super.interrupt();
this.isStopping = false;
}
public static String getPingResponse(String p_77525_0_, String p_77525_1_)
{
return "[MOTD]" + p_77525_0_ + "[/MOTD][AD]" + p_77525_1_ + "[/AD]";
}
public static String getMotdFromPingResponse(String p_77524_0_)
{
int i = p_77524_0_.indexOf("[MOTD]");
if (i < 0)
{
return "missing no";
}
else
{
int j = p_77524_0_.indexOf("[/MOTD]", i + "[MOTD]".length());
return j < i ? "missing no" : p_77524_0_.substring(i + "[MOTD]".length(), j);
}
}
public static String getAdFromPingResponse(String p_77523_0_)
{
int i = p_77523_0_.indexOf("[/MOTD]");
if (i < 0)
{
return null;
}
else
{
int j = p_77523_0_.indexOf("[/MOTD]", i + "[/MOTD]".length());
if (j >= 0)
{
return null;
}
else
{
int k = p_77523_0_.indexOf("[AD]", i + "[/MOTD]".length());
if (k < 0)
{
return null;
}
else
{
int l = p_77523_0_.indexOf("[/AD]", k + "[AD]".length());
return l < k ? null : p_77523_0_.substring(k + "[AD]".length(), l);
}
}
}
}
}