package mattparks.mods.space.core.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import mattparks.mods.space.core.Constants; import net.minecraft.util.ChatComponentText; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; public class ThreadVersionCheck extends Thread { public static ThreadVersionCheck INSTANCE = new ThreadVersionCheck(); private int count = 0; public static int remoteMajVer; public static int remoteMinVer; public static int remoteBuildVer; public ThreadVersionCheck() { super("4Space Version Check Thread"); } public static void startCheck() { final Thread thread = new Thread(ThreadVersionCheck.INSTANCE); thread.start(); } @Override public void run() { final Side sideToCheck = FMLCommonHandler.instance().getSide(); if (sideToCheck == null) { return; } while (this.count <= 3 && remoteBuildVer == 0) { BufferedReader in = null; try { final URL url = new URL("http://4space.mods.center/version.html"); final HttpURLConnection http = (HttpURLConnection) url.openConnection(); http.addRequestProperty("User-Agent", "Mozilla/4.76"); InputStreamReader streamReader = new InputStreamReader(http.getInputStream()); in = new BufferedReader(streamReader); String str; String str2[] = null; while ((str = in.readLine()) != null) { if (str.contains("Version")) { str = str.replace("Version=", ""); str2 = str.split("#"); if (str2.length == 3) { remoteMajVer = Integer.parseInt(str2[0]); remoteMinVer = Integer.parseInt(str2[1]); remoteBuildVer = Integer.parseInt(str2[2]); } if (remoteMajVer == Constants.LOCALMAJVERSION && (remoteMinVer > Constants.LOCALMINVERSION || (remoteMinVer == Constants.LOCALMINVERSION && remoteBuildVer > Constants.LOCALBUILDVERSION))) { Thread.sleep(5000); if (sideToCheck.equals(Side.CLIENT)) { FMLClientHandler.instance().getClient().thePlayer.addChatMessage(new ChatComponentText(EnumColor.GREY + "New " + EnumColor.DARK_AQUA + "4Space" + EnumColor.GREY + " version available! v" + String.valueOf(remoteMajVer) + "." + String.valueOf(remoteMinVer) + "." + String.valueOf(remoteBuildVer) + EnumColor.DARK_BLUE + " http://4space.mods.center")); } else if (sideToCheck.equals(Side.SERVER)) { SpaceLog.severe("New 4Space version available! v" + String.valueOf(remoteMajVer) + "." + String.valueOf(remoteMinVer) + "." + String.valueOf(remoteBuildVer) + " http://4space.mods.center"); } } } } in.close(); streamReader.close(); } catch (final Exception e) { if (in != null) { try { in.close(); } catch (IOException e1) { e1.printStackTrace(); } } } if (remoteBuildVer == 0) { try { SpaceLog.severe(SpaceUtil.translate("4update.failed.name")); Thread.sleep(15000); } catch (final InterruptedException e) { } } else { SpaceLog.info(SpaceUtil.translate("4update.success.name") + " " + remoteMajVer + "." + remoteMinVer + "." + remoteBuildVer); } this.count++; } } }