001    package net.minecraft.src;
002    
003    import cpw.mods.fml.common.Side;
004    import cpw.mods.fml.common.asm.SideOnly;
005    import java.io.IOException;
006    import java.net.DatagramPacket;
007    import java.net.DatagramSocket;
008    import java.net.InetAddress;
009    import java.util.logging.Level;
010    import java.util.logging.Logger;
011    
012    @SideOnly(Side.CLIENT)
013    public class ThreadLanServerPing extends Thread
014    {
015        private static Logger field_77530_a = Logger.getLogger("Minecraft");
016        private final String motd;
017        private final DatagramSocket field_77529_c;
018        private boolean isStopping = true;
019        private final String address;
020    
021        public ThreadLanServerPing(String par1Str, String par2Str) throws IOException
022        {
023            super("LanServerPinger");
024            this.motd = par1Str;
025            this.address = par2Str;
026            this.setDaemon(true);
027            this.field_77529_c = new DatagramSocket();
028        }
029    
030        public void run()
031        {
032            String var1 = getPingResponse(this.motd, this.address);
033            byte[] var2 = var1.getBytes();
034    
035            while (!this.isInterrupted() && this.isStopping)
036            {
037                try
038                {
039                    InetAddress var3 = InetAddress.getByName("224.0.2.60");
040                    DatagramPacket var4 = new DatagramPacket(var2, var2.length, var3, 4445);
041                    this.field_77529_c.send(var4);
042                }
043                catch (IOException var6)
044                {
045                    field_77530_a.log(Level.WARNING, "LanServerPinger: " + var6.getMessage());
046                    break;
047                }
048    
049                try
050                {
051                    sleep(1500L);
052                }
053                catch (InterruptedException var5)
054                {
055                    ;
056                }
057            }
058        }
059    
060        public void interrupt()
061        {
062            super.interrupt();
063            this.isStopping = false;
064        }
065    
066        public static String getPingResponse(String par0Str, String par1Str)
067        {
068            return "[MOTD]" + par0Str + "[/MOTD][AD]" + par1Str + "[/AD]";
069        }
070    
071        public static String func_77524_a(String par0Str)
072        {
073            int var1 = par0Str.indexOf("[MOTD]");
074    
075            if (var1 < 0)
076            {
077                return "missing no";
078            }
079            else
080            {
081                int var2 = par0Str.indexOf("[/MOTD]", var1 + "[MOTD]".length());
082                return var2 < var1 ? "missing no" : par0Str.substring(var1 + "[MOTD]".length(), var2);
083            }
084        }
085    
086        public static String func_77523_b(String par0Str)
087        {
088            int var1 = par0Str.indexOf("[/MOTD]");
089    
090            if (var1 < 0)
091            {
092                return null;
093            }
094            else
095            {
096                int var2 = par0Str.indexOf("[/MOTD]", var1 + "[/MOTD]".length());
097    
098                if (var2 >= 0)
099                {
100                    return null;
101                }
102                else
103                {
104                    int var3 = par0Str.indexOf("[AD]", var1 + "[/MOTD]".length());
105    
106                    if (var3 < 0)
107                    {
108                        return null;
109                    }
110                    else
111                    {
112                        int var4 = par0Str.indexOf("[/AD]", var3 + "[AD]".length());
113                        return var4 < var3 ? null : par0Str.substring(var3 + "[AD]".length(), var4);
114                    }
115                }
116            }
117        }
118    }