Added an Update Checker, closes #559

This commit is contained in:
TfT_02
2013-02-18 22:54:47 +01:00
parent d9aad67ca5
commit cf0f075acb
8 changed files with 96 additions and 0 deletions

View File

@ -35,6 +35,8 @@ public class Config extends ConfigLoader {
public boolean getDonateMessageEnabled() { return config.getBoolean("Commands.mcmmo.Donate_Message", true); }
public int getSaveInterval() { return config.getInt("General.Save_Interval", 10); }
public boolean getStatsTrackingEnabled() { return config.getBoolean("General.Stats_Tracking", true); }
public boolean getUpdateCheckEnabled() { return config.getBoolean("General.Update_Check", true); }
public boolean getPreferBeta() { return config.getBoolean("General.Prefer_Beta", false); }
public boolean getEventCallbackEnabled() { return config.getBoolean("General.Event_Callback", true); }
public boolean getBackupsEnabled() { return config.getBoolean("General.Generate_Backups", true); }
public boolean getPartyDisplayNames() { return config.getBoolean("Commands.p.Use_Display_Names", true); }

View File

@ -236,6 +236,11 @@ public class PlayerListener implements Listener {
if (plugin.isXPEventEnabled()) {
player.sendMessage(LocaleLoader.getString("XPRate.Event", Config.getInstance().getExperienceGainsGlobalMultiplier()));
}
if (player.hasPermission("mcmmo.tools.updatecheck") && mcMMO.p.updateAvailable) {
player.sendMessage(LocaleLoader.getString("UpdateChecker.outdated"));
player.sendMessage(LocaleLoader.getString("UpdateChecker.newavailable"));
}
}
/**

View File

@ -32,6 +32,7 @@ import com.gmail.nossr50.listeners.EntityListener;
import com.gmail.nossr50.listeners.InventoryListener;
import com.gmail.nossr50.listeners.PlayerListener;
import com.gmail.nossr50.listeners.WorldListener;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.mods.config.CustomArmorConfig;
import com.gmail.nossr50.mods.config.CustomBlocksConfig;
import com.gmail.nossr50.mods.config.CustomEntityConfig;
@ -49,6 +50,7 @@ import com.gmail.nossr50.skills.runnables.BleedTimer;
import com.gmail.nossr50.skills.runnables.SkillMonitor;
import com.gmail.nossr50.spout.SpoutConfig;
import com.gmail.nossr50.spout.SpoutTools;
import com.gmail.nossr50.util.UpdateCheck;
import com.gmail.nossr50.util.Users;
public class mcMMO extends JavaPlugin {
@ -75,6 +77,9 @@ public class mcMMO extends JavaPlugin {
private static String usersFile;
private static String modDirectory;
// Update Check
public boolean updateAvailable;
// Spout Check
public static boolean spoutEnabled = false;
@ -121,6 +126,16 @@ public class mcMMO extends JavaPlugin {
placeStore = ChunkManagerFactory.getChunkManager(); // Get our ChunkletManager
new MobStoreCleaner(); // Automatically starts and stores itself
try {
updateAvailable = Config.getInstance().getUpdateCheckEnabled() && UpdateCheck.updateAvailable();
} catch (Exception e) {
updateAvailable = false;
}
if (updateAvailable) {
getLogger().info(LocaleLoader.getString("UpdateChecker.outdated"));
getLogger().info(LocaleLoader.getString("UpdateChecker.newavailable"));
}
}
/**

View 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;
}
}
}