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 }