Updated the update checker so it uses bukkit as well (ew)

This commit is contained in:
libraryaddict 2014-01-19 09:18:58 +13:00
parent 8535ccf2dd
commit 01dd3ef587
2 changed files with 50 additions and 14 deletions

View File

@ -51,8 +51,8 @@ public class ReflectionManager {
} }
private static String bukkitVersion = Bukkit.getServer().getClass().getName().split("\\.")[3]; private static String bukkitVersion = Bukkit.getServer().getClass().getName().split("\\.")[3];
private static Class itemClass;
private static Method damageAndIdleSoundMethod; private static Method damageAndIdleSoundMethod;
private static Class itemClass;
static { static {
for (Method method : getNmsClass("EntityLiving").getDeclaredMethods()) { for (Method method : getNmsClass("EntityLiving").getDeclaredMethods()) {

View File

@ -1,12 +1,16 @@
package me.libraryaddict.disguise.utilities; package me.libraryaddict.disguise.utilities;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
public class UpdateChecker { public class UpdateChecker {
private String latestVersion; private String latestVersion;
@ -16,34 +20,66 @@ public class UpdateChecker {
return current.compareTo(newVers) < 0; return current.compareTo(newVers) < 0;
} }
public void checkUpdate(String currentVersion) throws Exception { public void checkUpdate(String currentVersion) {
String version = getVersion("98BE0FE67F88AB82B4C197FAF1DC3B69206EFDCC4D3B80FC83A00037510B99B4", 81); String version = getSpigotVersion();
if (checkHigher(currentVersion, version)) if (version == null) {
version = getBukkitVersion();
}
if (checkHigher(currentVersion, version)) {
latestVersion = version; latestVersion = version;
} }
}
/**
* Asks bukkit for the version
*/
private String getBukkitVersion() {
try {
URLConnection conn = new URL("https://api.curseforge.com/servermods/files?projectIds=72490").openConnection();
conn.addRequestProperty("User-Agent", "Lib's Disguises Update Checker");
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
JSONArray array = (JSONArray) JSONValue.parse(reader.readLine());
if (!array.isEmpty()) {
JSONObject latest = (JSONObject) array.get(array.size() - 1);
String version = (String) latest.get("name");
version = version.substring(version.lastIndexOf(" ") + 1);
if (version.length() <= 7) {
return version;
}
}
} catch (Exception e) {
System.out.print("[LibsDisguises] Failed to check for a update on bukkit.");
e.printStackTrace();
}
return null;
}
public String getLatestVersion() { public String getLatestVersion() {
return latestVersion; return latestVersion;
} }
private String getVersion(String key, int resourceId) { /**
String version = null; * Asks spigot for the version
*/
private String getSpigotVersion() {
try { try {
HttpURLConnection con = (HttpURLConnection) new URL("http://www.spigotmc.org/api/general.php").openConnection(); HttpURLConnection con = (HttpURLConnection) new URL("http://www.spigotmc.org/api/general.php").openConnection();
con.setDoOutput(true); con.setDoOutput(true);
con.setRequestMethod("POST"); con.setRequestMethod("POST");
con.getOutputStream().write(("key=" + key + "&resource=" + resourceId).getBytes("UTF-8")); con.getOutputStream().write(
version = new BufferedReader(new InputStreamReader(con.getInputStream())).readLine(); ("key=98BE0FE67F88AB82B4C197FAF1DC3B69206EFDCC4D3B80FC83A00037510B99B4&resource=81").getBytes("UTF-8"));
if (version.length() > 7) { String version = new BufferedReader(new InputStreamReader(con.getInputStream())).readLine();
version = null; if (version.length() <= 7) {
}
} catch (IOException ex) {
ex.printStackTrace();
}
return version; return version;
} }
} catch (Exception ex) {
System.out.print("[LibsDisguises] Failed to check for a update on spigot. Now checking bukkit..");
ex.printStackTrace();
}
return null;
}
public String toReadable(String version) { private String toReadable(String version) {
String[] split = Pattern.compile(".", Pattern.LITERAL).split(version.replace("v", "")); String[] split = Pattern.compile(".", Pattern.LITERAL).split(version.replace("v", ""));
version = ""; version = "";
for (String s : split) for (String s : split)