diff --git a/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java b/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java index 8a1d49372..e71e78f55 100644 --- a/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java +++ b/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java @@ -6,7 +6,6 @@ import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.SocketChannel; - import org.bukkit.Bukkit; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; @@ -16,7 +15,6 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.java.JavaPlugin; - import us.myles.ViaVersion.api.ViaVersion; import us.myles.ViaVersion.api.ViaVersionAPI; import us.myles.ViaVersion.armor.ArmorListener; @@ -60,20 +58,20 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaVersionAPI { getLogger().severe("Unable to inject handlers, are you on 1.8? "); e.printStackTrace(); } - + this.config = getFileConfiguration(); - if(!config.contains("checkforupdates")) { - config.set("checkforupdates", true); - try { - config.save(configFile); - } catch (IOException e1) { - this.getLogger().info("Unabled to write config.yml!"); - e1.printStackTrace(); - } + if (!config.contains("checkforupdates")) { + config.set("checkforupdates", true); + try { + config.save(configFile); + } catch (IOException e1) { + this.getLogger().info("Unabled to write config.yml!"); + e1.printStackTrace(); + } } - if(config.getBoolean("checkforupdates")) { - Bukkit.getPluginManager().registerEvents(new UpdateListener(this), this); - UpdateUtil.sendUpdateMessage(this); + if (config.getBoolean("checkforupdates")) { + Bukkit.getPluginManager().registerEvents(new UpdateListener(this), this); + UpdateUtil.sendUpdateMessage(this); } Bukkit.getPluginManager().registerEvents(new Listener() { @@ -151,19 +149,19 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaVersionAPI { public void removePortedClient(UUID clientID) { portedPlayers.remove(clientID); } - + private FileConfiguration getFileConfiguration() { - if(!this.getDataFolder().exists()) - this.getDataFolder().mkdirs(); - this.configFile = new File(this.getDataFolder(), "config.yml"); - if(!this.configFile.exists()) - try { - this.configFile.createNewFile(); - } catch (IOException e) { - this.getLogger().info("Unable to create config.yml!"); - e.printStackTrace(); - } - return YamlConfiguration.loadConfiguration(this.configFile); + if (!this.getDataFolder().exists()) + this.getDataFolder().mkdirs(); + this.configFile = new File(this.getDataFolder(), "config.yml"); + if (!this.configFile.exists()) + try { + this.configFile.createNewFile(); + } catch (IOException e) { + this.getLogger().info("Unable to create config.yml!"); + e.printStackTrace(); + } + return YamlConfiguration.loadConfiguration(this.configFile); } public static ItemStack getHandItem(final ConnectionInfo info) { diff --git a/src/main/java/us/myles/ViaVersion/commands/ViaVersionCommand.java b/src/main/java/us/myles/ViaVersion/commands/ViaVersionCommand.java index 54afc61d1..34fdbbfb3 100644 --- a/src/main/java/us/myles/ViaVersion/commands/ViaVersionCommand.java +++ b/src/main/java/us/myles/ViaVersion/commands/ViaVersionCommand.java @@ -28,6 +28,7 @@ public class ViaVersionCommand implements CommandExecutor { sender.sendMessage(color("&aViaVersion &c" + ViaVersion.getInstance().getVersion())); sender.sendMessage(color("&6Commands:")); sender.sendMessage(color("&2/viaversion list &7- &6Shows lists of all 1.9 clients and 1.8 clients.")); + sender.sendMessage(color("&2/viaversion dontbugme &7- &6Toggle checking for updates.")); } else if (args.length == 1) { if (args[0].equalsIgnoreCase("list")) { List portedPlayers = new ArrayList(); @@ -47,6 +48,12 @@ public class ViaVersionCommand implements CommandExecutor { plugin.setDebug(!plugin.isDebug()); sender.sendMessage(color("&6Debug mode is now " + (plugin.isDebug() ? "&aenabled" : "&cdisabled"))); } + if (args[0].equalsIgnoreCase("dontbugme")) { + boolean newValue = !plugin.getConfig().getBoolean("checkforupdates", true); + plugin.getConfig().set("checkforupdates", newValue); + plugin.saveConfig(); + sender.sendMessage(color("&6We will " + (newValue ? "&anotify you about updates." : "&cnot tell you about updates."))); + } } } diff --git a/src/main/java/us/myles/ViaVersion/update/UpdateListener.java b/src/main/java/us/myles/ViaVersion/update/UpdateListener.java index e17e021ad..62f488e48 100644 --- a/src/main/java/us/myles/ViaVersion/update/UpdateListener.java +++ b/src/main/java/us/myles/ViaVersion/update/UpdateListener.java @@ -15,8 +15,10 @@ public class UpdateListener implements Listener { @EventHandler public void onJoin(PlayerJoinEvent e) { - if(e.getPlayer().hasPermission("viaversion.update")) + if(e.getPlayer().hasPermission("viaversion.update") + && plugin.getConfig().getBoolean("checkforupdates", true)) { UpdateUtil.sendUpdateMessage(e.getPlayer().getUniqueId(), plugin); + } } } diff --git a/src/main/java/us/myles/ViaVersion/update/UpdateUtil.java b/src/main/java/us/myles/ViaVersion/update/UpdateUtil.java index 48e4dcbb8..f9d072623 100644 --- a/src/main/java/us/myles/ViaVersion/update/UpdateUtil.java +++ b/src/main/java/us/myles/ViaVersion/update/UpdateUtil.java @@ -1,13 +1,13 @@ package us.myles.ViaVersion.update; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; import org.bukkit.scheduler.BukkitRunnable; - -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; +import us.myles.ViaVersion.api.ViaVersion; import java.io.BufferedReader; import java.io.IOException; @@ -17,79 +17,81 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.UUID; -import us.myles.ViaVersion.api.ViaVersion; - public class UpdateUtil { - - private final static String URL = "https://api.spiget.org/v1/resources/"; - private final static int PLUGIN = 19254; - - public final static String PREFIX = ChatColor.GREEN + "" + ChatColor.BOLD + "[ViaVersion] " + ChatColor.GREEN; - - public static void sendUpdateMessage(final UUID uuid, final Plugin plugin) { - new BukkitRunnable() { - @Override - public void run() { - final String message = getUpdateMessage(false); - if(message != null) { - new BukkitRunnable() { + private final static String URL = "https://api.spiget.org/v1/resources/"; + private final static int PLUGIN = 19254; - @Override - public void run() { - Player p = Bukkit.getPlayer(uuid); - if(p != null) - p.sendMessage(PREFIX + message); - } - }.runTask(plugin); - } - } - }.runTaskAsynchronously(plugin); - } - - public static void sendUpdateMessage(final Plugin plugin) { - new BukkitRunnable() { + public final static String PREFIX = ChatColor.GREEN + "" + ChatColor.BOLD + "[ViaVersion] " + ChatColor.GREEN; - @Override - public void run() { - final String message = getUpdateMessage(true); - if(message != null) { - new BukkitRunnable() { + public static void sendUpdateMessage(final UUID uuid, final Plugin plugin) { + new BukkitRunnable() { - @Override - public void run() { - Bukkit.getLogger().info(PREFIX + message); - } - }.runTask(plugin); - } - } - }.runTaskAsynchronously(plugin); - } - - private static String getUpdateMessage(boolean console) { - Version current = new Version(ViaVersion.getInstance().getVersion()); - Version newest = new Version(getNewestVersion()); - if(current.compareTo(newest) < 0) - return "There is a newer version available: " + newest.toString(); - else if(console) { - if(current.compareTo(newest) == 0) - return "You are running the newest version: " + current; - else - return "You are running a newer version than is released!"; - } - return null; - } - - private static String getNewestVersion() - { - String result = ""; - try { - URL url = new URL(URL + PLUGIN); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.setUseCaches(true); - connection.addRequestProperty("User-Agent", "Mozilla/4.76"); - connection.setDoOutput(true); - BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream())); + @Override + public void run() { + final String message = getUpdateMessage(false); + if (message != null) { + new BukkitRunnable() { + + @Override + public void run() { + Player p = Bukkit.getPlayer(uuid); + if (p != null) { + p.sendMessage(PREFIX + message); + } + } + }.runTask(plugin); + } + } + }.runTaskAsynchronously(plugin); + } + + public static void sendUpdateMessage(final Plugin plugin) { + new BukkitRunnable() { + + @Override + public void run() { + final String message = getUpdateMessage(true); + if (message != null) { + new BukkitRunnable() { + + @Override + public void run() { + Bukkit.getLogger().info(PREFIX + message); + } + }.runTask(plugin); + } + } + }.runTaskAsynchronously(plugin); + } + + private static String getUpdateMessage(boolean console) { + if (ViaVersion.getInstance().getVersion().equals("${project.version}")) { + return "You are using a debug/custom version, consider updating."; + } + + Version current = new Version(ViaVersion.getInstance().getVersion()); + Version newest = new Version(getNewestVersion()); + if (current.compareTo(newest) < 0) + return "There is a newer version available: " + newest.toString(); + else if (console) { + if (current.compareTo(newest) == 0) + return "You are running the newest version: " + current; + else + return "You are running a newer version than is released!"; + } + return null; + } + + private static String getNewestVersion() { + String result = ""; + try { + URL url = new URL(URL + PLUGIN); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setUseCaches(true); + connection.addRequestProperty("User-Agent", "Mozilla/4.76"); + connection.setDoOutput(true); + BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream())); String input; String content = ""; while ((input = br.readLine()) != null) { @@ -97,13 +99,13 @@ public class UpdateUtil { } br.close(); JsonParser parser = new JsonParser(); - JsonObject statistics = (JsonObject)parser.parse(content); + JsonObject statistics = (JsonObject) parser.parse(content); result = statistics.get("version").getAsString(); - } catch(MalformedURLException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - return result; - } + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return result; + } } diff --git a/src/main/java/us/myles/ViaVersion/update/Version.java b/src/main/java/us/myles/ViaVersion/update/Version.java index 2931d931c..6a36fcceb 100644 --- a/src/main/java/us/myles/ViaVersion/update/Version.java +++ b/src/main/java/us/myles/ViaVersion/update/Version.java @@ -1,15 +1,15 @@ package us.myles.ViaVersion.update; -public class Version implements Comparable -{ +import org.apache.commons.lang.StringUtils; + +public class Version implements Comparable { private int[] parts; - public Version(String value) - { - if(value == null) + public Version(String value) { + if (value == null) throw new IllegalArgumentException("Version can not be null"); - if(value.matches("^[0-9]+(\\.[0-9]+)*$") == false) + if (value.matches("^[0-9]+(\\.[0-9]+)*$") == false) throw new IllegalArgumentException("Invalid version format"); String[] split = value.split("\\."); @@ -20,26 +20,23 @@ public class Version implements Comparable } @Override - public String toString() - { + public String toString() { String[] split = new String[parts.length]; for (int i = 0; i < parts.length; i += 1) split[i] = String.valueOf(parts[i]); - return String.join(".", split); + return StringUtils.join(split, "."); } - public static int compare(Version verA, Version verB) - { + public static int compare(Version verA, Version verB) { if (verA == verB) return 0; if (verA == null) return -1; if (verB == null) return 1; int max = Math.max(verA.parts.length, verB.parts.length); - for (int i = 0; i < max; i += 1) - { + for (int i = 0; i < max; i += 1) { int partA = i < verA.parts.length ? verA.parts[i] : 0; int partB = i < verB.parts.length ? verB.parts[i] : 0; if (partA < partB) return -1; @@ -50,13 +47,11 @@ public class Version implements Comparable } @Override - public int compareTo(Version that) - { + public int compareTo(Version that) { return compare(this, that); } - public static boolean equals(Version verA, Version verB) - { + public static boolean equals(Version verA, Version verB) { if (verA == verB) return true; if (verA == null) return false; if (verB == null) return false; @@ -64,8 +59,7 @@ public class Version implements Comparable } @Override - public boolean equals(Object that) - { - return that instanceof Version && equals(this, (Version)that); + public boolean equals(Object that) { + return that instanceof Version && equals(this, (Version) that); } } \ No newline at end of file