mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-25 22:56:45 +01:00
Added an Update Checker, closes #559
This commit is contained in:
parent
d9aad67ca5
commit
cf0f075acb
@ -9,6 +9,7 @@ Key:
|
||||
|
||||
Version 1.4.00-dev
|
||||
+ Added new Child Skill - Smelting!
|
||||
+ Added a version check, admins will get notified when a new version is available!
|
||||
+ Added new cancellable McMMOPlayerDisarmEvent for Citizens compatibility - fires whenever a player is disarmed.
|
||||
+ Added config options for Hylian Luck skill
|
||||
+ Added display values to Unarmed command for Iron Grip
|
||||
|
@ -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); }
|
||||
|
@ -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"));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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"));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
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;
|
||||
}
|
||||
}
|
||||
}
|
@ -14,6 +14,9 @@ General:
|
||||
Save_Interval: 10
|
||||
#Allow mcMMO to report on basic anonymous usage
|
||||
Stats_Tracking: true
|
||||
#Allow mcMMO to check if a new version is available
|
||||
Update_Check: true
|
||||
Prefer_Beta: false
|
||||
#Allow mcMMO to inform other plugins of damage being dealt
|
||||
Event_Callback: true
|
||||
#Allow mcMMO to create zip backups for flatfile data on shutdown.
|
||||
|
@ -725,3 +725,7 @@ Commands.Description.skillreset=Reset mcMMO levels for a user
|
||||
Commands.Description.vampirism=Modify the mcMMO vampirism percentage or toggle vampirism mode on/off
|
||||
Commands.Description.xplock=Lock your mcMMO XP bar to a specific mcMMO skill
|
||||
Commands.Description.xprate=Modify the mcMMO XP rate or start an mcMMO XP event
|
||||
|
||||
#UPDATE CHECKER
|
||||
UpdateChecker.outdated=You are using an outdated version of mcMMO!
|
||||
UpdateChecker.newavailable=There is a new version available on BukkitDev.
|
@ -1369,6 +1369,7 @@ permissions:
|
||||
mcmmo.tools.mcrefresh: true
|
||||
mcmmo.tools.mcremove: true
|
||||
mcmmo.tools.mmoedit: true
|
||||
mcmmo.tools.updatecheck: true
|
||||
mcmmo.tools.mcgod:
|
||||
default: false
|
||||
description: Allows access to mcgod command
|
||||
@ -1396,3 +1397,6 @@ permissions:
|
||||
mcmmo.commands.mcpurge: true
|
||||
mcmmo.commands.mmoedit: true
|
||||
mcmmo.commands.mmoedit.others: true
|
||||
mcmmo.tools.updatecheck:
|
||||
default: false
|
||||
description: Notifies admins if there is a new version of mcMMO available
|
Loading…
Reference in New Issue
Block a user