mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-06-28 11:44:42 +02:00
Added an Update Checker, closes #559
This commit is contained in:
62
src/main/java/com/gmail/nossr50/util/UpdateCheck.java
Normal file
62
src/main/java/com/gmail/nossr50/util/UpdateCheck.java
Normal file
@ -0,0 +1,62 @@
|
||||
package com.gmail.nossr50.util;
|
||||
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.URL;
|
||||
import java.net.UnknownHostException;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
import org.json.simple.parser.ParseException;
|
||||
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
|
||||
public class UpdateCheck {
|
||||
private UpdateCheck() {}
|
||||
|
||||
public static boolean updateAvailable() throws Exception {
|
||||
String checkType = "release";
|
||||
if (Config.getInstance().getPreferBeta()) {
|
||||
checkType = "latest";
|
||||
}
|
||||
String version = mcMMO.p.getDescription().getVersion();
|
||||
URL url = new URL("http://api.bukget.org/api2/bukkit/plugin/mcmmo/"+checkType);
|
||||
InputStreamReader isr;
|
||||
try {
|
||||
isr = new InputStreamReader(url.openStream());
|
||||
} catch (UnknownHostException e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
String newVersion;
|
||||
try {
|
||||
JSONParser jp = new JSONParser();
|
||||
Object o = jp.parse(isr);
|
||||
|
||||
if (!(o instanceof JSONObject)) {
|
||||
isr.close();
|
||||
return false;
|
||||
}
|
||||
|
||||
JSONObject jo = (JSONObject) o;
|
||||
jo = (JSONObject) jo.get("versions");
|
||||
newVersion = (String) jo.get("version");
|
||||
|
||||
String[] oldTokens = version.replaceAll("(?i)(-)(.+?)(-)", "").split("[.]|[b]");
|
||||
String[] newTokens = newVersion.replaceAll("(?i)(-)(.+?)(-)", "").split("[.]|[b]");
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
Integer newVer = Integer.parseInt(newTokens[i]);
|
||||
Integer oldVer = Integer.parseInt(oldTokens[i]);
|
||||
if (oldVer < newVer) {
|
||||
isr.close();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
} catch (ParseException e) {
|
||||
isr.close();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user