Added update checking for LibsDisguises
This commit is contained in:
parent
fa97bf43a5
commit
20a75f947a
4
config.yml
Normal file
4
config.yml
Normal file
@ -0,0 +1,4 @@
|
||||
# Shall I notify people of a LibsDisguises update?
|
||||
NotifyUpdate: true
|
||||
# Whats the permission to get the notification?
|
||||
Permission: 'libsdisguises.update'
|
@ -12,11 +12,15 @@ import me.libraryaddict.disguise.DisguiseTypes.PlayerDisguise;
|
||||
import net.minecraft.server.v1_5_R3.WatchableObject;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.ExperienceOrb;
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import com.comphenix.protocol.Packets;
|
||||
@ -28,7 +32,10 @@ import com.comphenix.protocol.events.PacketAdapter;
|
||||
import com.comphenix.protocol.events.PacketEvent;
|
||||
import com.comphenix.protocol.reflect.StructureModifier;
|
||||
|
||||
public class LibsDisguises extends JavaPlugin {
|
||||
public class LibsDisguises extends JavaPlugin implements Listener {
|
||||
private String latestVersion;
|
||||
private String currentVersion;
|
||||
private String permission;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
@ -124,5 +131,39 @@ public class LibsDisguises extends JavaPlugin {
|
||||
getCommand("undisguise").setExecutor(new UndisguiseCommand());
|
||||
getCommand("disguiseplayer").setExecutor(new DisguisePlayerCommand());
|
||||
getCommand("undisguiseplayer").setExecutor(new UndisguisePlayerCommand());
|
||||
saveDefaultConfig();
|
||||
permission = getConfig().getString("Permission");
|
||||
if (getConfig().getBoolean("NotifyUpdate"))
|
||||
Bukkit.getScheduler().scheduleAsyncDelayedTask(this, new Runnable() {
|
||||
public void run() {
|
||||
try {
|
||||
UpdateChecker updateChecker = new UpdateChecker();
|
||||
updateChecker.checkUpdate("v"
|
||||
+ Bukkit.getPluginManager().getPlugin("LibsDisguises").getDescription().getVersion());
|
||||
latestVersion = updateChecker.getLatestVersion();
|
||||
if (latestVersion != null) {
|
||||
latestVersion = "v" + latestVersion;
|
||||
for (Player p : Bukkit.getOnlinePlayers())
|
||||
if (p.hasPermission(permission))
|
||||
p.sendMessage(String.format(ChatColor.GOLD + "[LibsDisguises] " + ChatColor.DARK_GREEN
|
||||
+ "There is a update ready to be downloaded! You are using " + ChatColor.GREEN + "%s"
|
||||
+ ChatColor.DARK_GREEN + ", the new version is " + ChatColor.GREEN + "%s"
|
||||
+ ChatColor.DARK_GREEN + "!", currentVersion, latestVersion));
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
System.out.print(String.format("[LibsDisguises] Failed to check for update: %s", ex.getMessage()));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onJoin(PlayerJoinEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
if (latestVersion != null && p.hasPermission(permission))
|
||||
p.sendMessage(String.format(ChatColor.GOLD + "[LibsDisguises] " + ChatColor.DARK_GREEN
|
||||
+ "There is a update ready to be downloaded! You are using " + ChatColor.GREEN + "%s" + ChatColor.DARK_GREEN
|
||||
+ ", the new version is " + ChatColor.GREEN + "%s" + ChatColor.DARK_GREEN + "!", currentVersion,
|
||||
latestVersion));
|
||||
}
|
||||
}
|
50
src/me/libraryaddict/disguise/UpdateChecker.java
Normal file
50
src/me/libraryaddict/disguise/UpdateChecker.java
Normal file
@ -0,0 +1,50 @@
|
||||
package me.libraryaddict.disguise;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class UpdateChecker {
|
||||
private String latestVersion;
|
||||
|
||||
private boolean checkHigher(String currentVersion, String newVersion) {
|
||||
String current = toReadable(currentVersion);
|
||||
String newVers = toReadable(newVersion);
|
||||
return current.compareTo(newVers) < 0;
|
||||
}
|
||||
|
||||
public void checkUpdate(String currentVersion) throws Exception {
|
||||
String version = getVersion("98BE0FE67F88AB82B4C197FAF1DC3B69206EFDCC4D3B80FC83A00037510B99B4", 55);
|
||||
if (checkHigher(currentVersion, version))
|
||||
latestVersion = version;
|
||||
}
|
||||
|
||||
public String getLatestVersion() {
|
||||
return latestVersion;
|
||||
}
|
||||
|
||||
private String getVersion(String key, int resourceId) {
|
||||
String version = null;
|
||||
try {
|
||||
HttpURLConnection con = (HttpURLConnection) new URL("http://www.spigotmc.org/api/general.php").openConnection();
|
||||
con.setDoOutput(true);
|
||||
con.setRequestMethod("POST");
|
||||
con.getOutputStream().write(("key=" + key + "&resource=" + resourceId).getBytes("UTF-8"));
|
||||
version = new BufferedReader(new InputStreamReader(con.getInputStream())).readLine();
|
||||
} catch (IOException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
return version;
|
||||
}
|
||||
|
||||
public String toReadable(String version) {
|
||||
String[] split = Pattern.compile(".", Pattern.LITERAL).split(version.replace("v", ""));
|
||||
version = "";
|
||||
for (String s : split)
|
||||
version += String.format("%4s", s);
|
||||
return version;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user