diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/database/plotme/APlotMeConnector.java b/Bukkit/src/main/java/com/plotsquared/bukkit/database/plotme/APlotMeConnector.java index e92d32fb0..cd6eb66d1 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/database/plotme/APlotMeConnector.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/database/plotme/APlotMeConnector.java @@ -13,7 +13,7 @@ import java.sql.SQLException; import java.util.Collections; import java.util.HashMap; -public abstract class APlotMeConnector { +abstract class APlotMeConnector { public abstract Connection getPlotMeConnection(String plugin, FileConfiguration plotConfig, String dataFolder); diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/object/BukkitPlayer.java b/Bukkit/src/main/java/com/plotsquared/bukkit/object/BukkitPlayer.java index f8929f4e0..7f227bad3 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/object/BukkitPlayer.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/object/BukkitPlayer.java @@ -1,6 +1,5 @@ package com.plotsquared.bukkit.object; -import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.object.Location; import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.util.EconHandler; @@ -8,14 +7,11 @@ import com.intellectualcrafters.plot.util.PlotGameMode; import com.intellectualcrafters.plot.util.PlotWeather; import com.intellectualcrafters.plot.util.UUIDHandler; import com.plotsquared.bukkit.util.BukkitUtil; -import org.bukkit.Bukkit; import org.bukkit.Effect; import org.bukkit.GameMode; import org.bukkit.WeatherType; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; -import org.bukkit.permissions.Permission; -import org.bukkit.plugin.PluginManager; import java.util.UUID; @@ -28,8 +24,8 @@ public class BukkitPlayer extends PlotPlayer { private long last = 0; /** - *

Please do not use this method. Instead use BukkitUtil.getPlayer(Player), - * as it caches player objects.

+ *

Please do not use this method. Instead use + * BukkitUtil.getPlayer(Player), as it caches player objects.

* @param player */ public BukkitPlayer(Player player) { @@ -73,29 +69,6 @@ public class BukkitPlayer extends PlotPlayer { return this.player.hasPermission(permission); } - public Permission getPermission(String node) { - PluginManager manager = Bukkit.getPluginManager(); - Permission perm = manager.getPermission(node); - if (perm == null) { - String[] nodes = node.split("\\."); - perm = new Permission(node); - StringBuilder n = new StringBuilder(); - for (int i = 0; i < nodes.length - 1; i++) { - n.append(nodes[i]).append("."); - if (!node.equals(n + C.PERMISSION_STAR.s())) { - Permission parent = getPermission(n + C.PERMISSION_STAR.s()); - if (parent != null) { - perm.addParent(parent, true); - } - } - } - manager.addPermission(perm); - } - manager.recalculatePermissionDefaults(perm); - perm.recalculatePermissibles(); - return perm; - } - @Override public void sendMessage(String message) { this.player.sendMessage(message); @@ -166,7 +139,7 @@ public class BukkitPlayer extends PlotPlayer { case SURVIVAL: return PlotGameMode.SURVIVAL; default: - return PlotGameMode.SURVIVAL; + return PlotGameMode.NOT_SET; } } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/titles/DefaultTitleManager.java b/Bukkit/src/main/java/com/plotsquared/bukkit/titles/DefaultTitleManager.java index 514b5f22a..907ab7d80 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/titles/DefaultTitleManager.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/titles/DefaultTitleManager.java @@ -121,7 +121,7 @@ public class DefaultTitleManager { * Load spigot and NMS classes * @throws ClassNotFoundException */ - private void loadClasses() throws ClassNotFoundException { + private void loadClasses() { this.packetTitle = Reflection.getNMSClass("PacketPlayOutTitle"); this.packetActions = Reflection.getNMSClass("EnumTitleAction"); this.chatBaseComponent = Reflection.getNMSClass("IChatBaseComponent"); diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/titles/DefaultTitleManager_183.java b/Bukkit/src/main/java/com/plotsquared/bukkit/titles/DefaultTitleManager_183.java index 53be85284..b21df89fd 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/titles/DefaultTitleManager_183.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/titles/DefaultTitleManager_183.java @@ -127,7 +127,7 @@ public class DefaultTitleManager_183 { * Load spigot and NMS classes * @throws ClassNotFoundException */ - private void loadClasses() throws ClassNotFoundException { + private void loadClasses() { this.packetTitle = Reflection.getNMSClass("PacketPlayOutTitle"); this.chatBaseComponent = Reflection.getNMSClass("IChatBaseComponent"); this.packetActions = Reflection.getNMSClass("PacketPlayOutTitle$EnumTitleAction"); diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/titles/HackTitleManager.java b/Bukkit/src/main/java/com/plotsquared/bukkit/titles/HackTitleManager.java index b05f8fc35..8a3f67bf7 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/titles/HackTitleManager.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/titles/HackTitleManager.java @@ -116,7 +116,7 @@ public class HackTitleManager { * Load spigot and NMS classes. * @throws ClassNotFoundException Spigot Error. */ - private void loadClasses() throws ClassNotFoundException { + private void loadClasses() { this.packetTitle = getClass("org.spigotmc.ProtocolInjector$PacketTitle"); this.packetActions = getClass("org.spigotmc.ProtocolInjector$PacketTitle$Action"); this.nmsChatSerializer = Reflection.getNMSClass("ChatSerializer"); diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitCommand.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitCommand.java index 00eee940c..fdf932783 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitCommand.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitCommand.java @@ -4,16 +4,17 @@ import com.intellectualcrafters.plot.commands.MainCommand; import com.intellectualcrafters.plot.object.ConsolePlayer; import com.intellectualcrafters.plot.object.PlotPlayer; import com.plotsquared.bukkit.commands.DebugUUID; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; import org.bukkit.Bukkit; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + public class BukkitCommand implements CommandExecutor, TabCompleter { public BukkitCommand() { @@ -25,7 +26,7 @@ public class BukkitCommand implements CommandExecutor, TabCompleter { if (commandSender instanceof Player) { return MainCommand.onCommand(BukkitUtil.getPlayer((Player) commandSender), args); } - if (commandSender == null || commandSender.getClass() == Bukkit.getConsoleSender().getClass()) { + if (commandSender.getClass() == Bukkit.getConsoleSender().getClass()) { return MainCommand.onCommand(ConsolePlayer.getConsole(), args); } @SuppressWarnings("deprecation") diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEconHandler.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEconHandler.java index d578e2297..5cdffb7a3 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEconHandler.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEconHandler.java @@ -34,8 +34,7 @@ public class BukkitEconHandler extends EconHandler { } private boolean setupPermissions() { - RegisteredServiceProvider permissionProvider = - Bukkit.getServer().getServicesManager().getRegistration(net.milkbowl.vault.permission.Permission.class); + RegisteredServiceProvider permissionProvider = Bukkit.getServer().getServicesManager().getRegistration(Permission.class); if (permissionProvider != null) { this.perms = permissionProvider.getProvider(); } @@ -43,8 +42,10 @@ public class BukkitEconHandler extends EconHandler { } private boolean setupEconomy() { - RegisteredServiceProvider economyProvider = - Bukkit.getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class); + if (Bukkit.getServer().getPluginManager().getPlugin("Vault") == null) { + return false; + } + RegisteredServiceProvider economyProvider = Bukkit.getServer().getServicesManager().getRegistration(Economy.class); if (economyProvider != null) { this.econ = economyProvider.getProvider(); } @@ -79,7 +80,7 @@ public class BukkitEconHandler extends EconHandler { public boolean hasPermission(String world, String player, String perm) { return this.perms.playerHas(world, Bukkit.getOfflinePlayer(player), perm); } - + @Override public double getBalance(PlotPlayer player) { return this.econ.getBalance(player.getName()); diff --git a/Core/src/main/java/com/intellectualcrafters/plot/PS.java b/Core/src/main/java/com/intellectualcrafters/plot/PS.java index 4543d2756..54996ff13 100644 --- a/Core/src/main/java/com/intellectualcrafters/plot/PS.java +++ b/Core/src/main/java/com/intellectualcrafters/plot/PS.java @@ -53,6 +53,7 @@ import com.intellectualcrafters.plot.util.WorldUtil; import com.intellectualcrafters.plot.util.area.QuadMap; import com.plotsquared.listener.WESubscriber; import com.sk89q.worldedit.WorldEdit; + import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -1902,7 +1903,7 @@ public class PS { case "3": return PlotGameMode.SPECTATOR; default: - return null; + return PlotGameMode.NOT_SET; } } @@ -2246,23 +2247,23 @@ public class PS { log("Failed to save storage.yml"); } try { - commandsFile = new File(IMP.getDirectory() + File.separator + "config" + File.separator + "commands.yml"); - if (!commandsFile.exists()) { - if (!commandsFile.createNewFile()) { + this.commandsFile = new File(this.IMP.getDirectory() + File.separator + "config" + File.separator + "commands.yml"); + if (!this.commandsFile.exists()) { + if (!this.commandsFile.createNewFile()) { log("Could not the storage settings file, please create \"commands.yml\" manually."); } } - commands = YamlConfiguration.loadConfiguration(commandsFile); + this.commands = YamlConfiguration.loadConfiguration(this.commandsFile); setupStorage(); } catch (IOException err_trans) { log("Failed to save commands.yml"); } try { - style.save(styleFile); - config.save(configFile); - storage.save(storageFile); - commands.save(commandsFile); - } catch (final IOException e) { + this.style.save(this.styleFile); + this.config.save(this.configFile); + this.storage.save(this.storageFile); + this.commands.save(this.commandsFile); + } catch (IOException e) { log("Configuration file saving failed"); e.printStackTrace(); } diff --git a/Core/src/main/java/com/intellectualcrafters/plot/commands/CommandCategory.java b/Core/src/main/java/com/intellectualcrafters/plot/commands/CommandCategory.java index 6c958c42e..f85efc302 100644 --- a/Core/src/main/java/com/intellectualcrafters/plot/commands/CommandCategory.java +++ b/Core/src/main/java/com/intellectualcrafters/plot/commands/CommandCategory.java @@ -1,64 +1,55 @@ package com.intellectualcrafters.plot.commands; /** - * CommandCategory - * - - + * CommandCategory. */ public enum CommandCategory { /** - * Claiming CommandConfig - * + * Claiming CommandConfig. * Such as: /plot claim */ CLAIMING("Claiming"), /** - * Teleportation CommandConfig - * + * Teleportation CommandConfig. * Such as: /plot visit */ TELEPORT("Teleport"), /** - * Protection + * Protection. */ SETTINGS("Protection"), /** - * Chat + * Chat. */ CHAT("Chat"), /** - * Web + * Web. */ SCHEMATIC("Web"), /** - * Cosmetic + * Cosmetic. */ APPEARANCE("Cosmetic"), /** - * Information CommandConfig - * + * Information CommandConfig. * Such as: /plot info */ INFO("Info"), /** - * Debug CommandConfig - * + * Debug CommandConfig. * Such as: /plot debug */ DEBUG("Debug"), /** - * Administration commands + * Administration commands. */ ADMINISTRATION("Admin"); - /** - * The category name (Readable) + * The category name (Readable). */ private final String name; - /** - * Constructor + * Constructor. * * @param name readable name */ diff --git a/Core/src/main/java/com/intellectualcrafters/plot/commands/Toggle.java b/Core/src/main/java/com/intellectualcrafters/plot/commands/Toggle.java index 7d0108926..d066716a9 100644 --- a/Core/src/main/java/com/intellectualcrafters/plot/commands/Toggle.java +++ b/Core/src/main/java/com/intellectualcrafters/plot/commands/Toggle.java @@ -45,7 +45,8 @@ public class Toggle extends Command { aliases = {"spy"}, permission = "plots.admin.command.chat", description = "Toggle admin chat spying") - public void chatspy(Command command, final PlotPlayer player, String[] args, RunnableVal3 confirm, RunnableVal2 whenDone) { + public void chatspy(Command command, PlotPlayer player, String[] args, RunnableVal3 confirm, + RunnableVal2 whenDone) { if (toggle(player, "chatspy")) { MainUtil.sendMessage(player, C.TOGGLE_DISABLED, command.toString()); } else { @@ -58,7 +59,8 @@ public class Toggle extends Command { aliases = {"we", "wea"}, permission = "plots.worldedit.bypass", description = "Toggle worldedit area restrictions") - public void worldedit(Command command, final PlotPlayer player, String[] args, RunnableVal3 confirm, RunnableVal2 whenDone) { + public void worldedit(Command command, PlotPlayer player, String[] args, RunnableVal3 confirm, + RunnableVal2 whenDone) { if (toggle(player, "worldedit")) { MainUtil.sendMessage(player, C.TOGGLE_DISABLED, command.toString()); } else { @@ -70,7 +72,8 @@ public class Toggle extends Command { command = "chat", permission = "plots.toggle.chat", description = "Toggle plot chat") - public void chat(Command command, final PlotPlayer player, String[] args, RunnableVal3 confirm, RunnableVal2 whenDone) { + public void chat(Command command, PlotPlayer player, String[] args, RunnableVal3 confirm, + RunnableVal2 whenDone) { if (toggle(player, "chat")) { MainUtil.sendMessage(player, C.TOGGLE_DISABLED, command.toString()); } else { @@ -82,7 +85,8 @@ public class Toggle extends Command { command = "titles", permission = "plots.toggle.titles", description = "Toggle plot title messages") - public void titles(Command command, final PlotPlayer player, String[] args, RunnableVal3 confirm, RunnableVal2 whenDone) { + public void titles(Command command, PlotPlayer player, String[] args, RunnableVal3 confirm, + RunnableVal2 whenDone) { if (toggle(player, "titles")) { MainUtil.sendMessage(player, C.TOGGLE_DISABLED, command.toString()); } else { diff --git a/Core/src/main/java/com/intellectualcrafters/plot/generator/HybridPlotManager.java b/Core/src/main/java/com/intellectualcrafters/plot/generator/HybridPlotManager.java index 3365c8e2d..1855b86a6 100644 --- a/Core/src/main/java/com/intellectualcrafters/plot/generator/HybridPlotManager.java +++ b/Core/src/main/java/com/intellectualcrafters/plot/generator/HybridPlotManager.java @@ -85,11 +85,11 @@ public class HybridPlotManager extends ClassicPlotManager { if (!hpw.ROAD_SCHEMATIC_ENABLED) { return true; } - createSchemAbs(hpw, pos1, pos2, 0, true); + createSchemAbs(hpw, pos1, pos2, true); return true; } - private void createSchemAbs(HybridPlotWorld hpw, Location pos1, Location pos2, int height, boolean clear) { + private void createSchemAbs(HybridPlotWorld hpw, Location pos1, Location pos2, boolean clear) { int size = hpw.SIZE; for (int x = pos1.getX(); x <= pos2.getX(); x++) { short absX = (short) ((x - hpw.ROAD_OFFSET_X) % size); @@ -103,13 +103,13 @@ public class HybridPlotManager extends ClassicPlotManager { } HashMap blocks = hpw.G_SCH.get(MathMan.pair(absX, absZ)); if (clear) { - for (short y = (short) height; y <= (height + hpw.SCHEMATIC_HEIGHT); y++) { + for (short y = (short) 0; y <= hpw.SCHEMATIC_HEIGHT; y++) { SetQueue.IMP.setBlock(hpw.worldname, x, y, z, 0); } } if (blocks != null) { for (Entry entry : blocks.entrySet()) { - SetQueue.IMP.setBlock(hpw.worldname, x, height + entry.getKey(), z, entry.getValue()); + SetQueue.IMP.setBlock(hpw.worldname, x, entry.getKey(), z, entry.getValue()); } } } @@ -130,7 +130,7 @@ public class HybridPlotManager extends ClassicPlotManager { if (!hpw.ROAD_SCHEMATIC_ENABLED) { return true; } - createSchemAbs(hpw, pos1, pos2, 0, true); + createSchemAbs(hpw, pos1, pos2, true); return true; } @@ -144,11 +144,11 @@ public class HybridPlotManager extends ClassicPlotManager { Location pos2 = getPlotBottomLocAbs(hpw, id2); pos1.setY(0); pos2.setY(256); - createSchemAbs(hpw, pos1, pos2, 0, true); + createSchemAbs(hpw, pos1, pos2, true); if (!hpw.ROAD_SCHEMATIC_ENABLED) { return true; } - createSchemAbs(hpw, pos1, pos2, 0, true); + createSchemAbs(hpw, pos1, pos2, true); return true; } @@ -221,6 +221,6 @@ public class HybridPlotManager extends ClassicPlotManager { if (!plotworld.PLOT_SCHEMATIC) { return; } - createSchemAbs(plotworld, l1, l2, 0, false); + createSchemAbs(plotworld, l1, l2, false); } } diff --git a/Core/src/main/java/com/intellectualcrafters/plot/object/Plot.java b/Core/src/main/java/com/intellectualcrafters/plot/object/Plot.java index a52003ac0..ed94e7087 100644 --- a/Core/src/main/java/com/intellectualcrafters/plot/object/Plot.java +++ b/Core/src/main/java/com/intellectualcrafters/plot/object/Plot.java @@ -20,25 +20,6 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// package com.intellectualcrafters.plot.object; -import java.awt.Rectangle; -import java.awt.geom.Area; -import java.awt.geom.PathIterator; -import java.io.File; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map.Entry; -import java.util.Set; -import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.atomic.AtomicInteger; - import com.google.common.collect.BiMap; import com.intellectualcrafters.jnbt.CompoundTag; import com.intellectualcrafters.plot.PS; @@ -60,6 +41,25 @@ import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.WorldUtil; import com.plotsquared.listener.PlotListener; +import java.awt.Rectangle; +import java.awt.geom.Area; +import java.awt.geom.PathIterator; +import java.io.File; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map.Entry; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicInteger; + /** * The plot class
* [IMPORTANT] @@ -1128,15 +1128,14 @@ public class Plot { /** * Set the home location - * @param loc + * @param location */ - public void setHome(BlockLoc loc) { + public void setHome(BlockLoc location) { Plot plot = this.getBasePlot(false); - BlockLoc pos = plot.getSettings().getPosition(); - if (new BlockLoc(0, 0, 0).equals(loc)) { + if (new BlockLoc(0, 0, 0).equals(location)) { return; } - plot.getSettings().setPosition(loc); + plot.getSettings().setPosition(location); DBFunc.setPosition(plot, plot.getSettings().getPosition().toString()); } @@ -1273,7 +1272,7 @@ public class Plot { } /** - * Set the plot sign if plot signs are enabled + * Set the plot sign if plot signs are enabled. */ public void setSign() { if (this.owner == null) { @@ -1338,6 +1337,8 @@ public class Plot { * - The plot will not be created if the owner is null
* - Any setting from before plot creation will not be saved until the server is stopped properly. i.e. Set any values/options after plot * creation. + * @param uuid + * @param notify * @return true if plot was created successfully */ public boolean create(final UUID uuid, final boolean notify) { @@ -1377,7 +1378,7 @@ public class Plot { } /** - * Set components such as border, wall, floor + * Set components such as border, wall, floor. * (components are generator specific) */ public boolean setComponent(String component, String blocks) { @@ -1386,7 +1387,7 @@ public class Plot { } /** - * Get the biome (String) + * Get the biome. */ public String getBiome() { Location loc = this.getBottomAbs(); @@ -1394,7 +1395,7 @@ public class Plot { } /** - * Return the top location for the plot + * Return the top location for the plot. * @return */ public Location getTopAbs() { @@ -1402,7 +1403,7 @@ public class Plot { } /** - * Return the bottom location for the plot + * Return the bottom location for the plot. * @return */ public Location getBottomAbs() { @@ -1410,43 +1411,43 @@ public class Plot { } /** - * Swap the settings for two plots - * @param p2 + * Swap the settings for two plots. + * @param plot * @param whenDone * @return */ - public boolean swapData(Plot p2, Runnable whenDone) { + public boolean swapData(Plot plot, Runnable whenDone) { if (this.owner == null) { - if (p2 != null && p2.hasOwner()) { - p2.moveData(this, whenDone); + if (plot != null && plot.hasOwner()) { + plot.moveData(this, whenDone); return true; } return false; } - if (p2 == null || p2.owner == null) { - this.moveData(p2, whenDone); + if (plot == null || plot.owner == null) { + this.moveData(plot, whenDone); return true; } // Swap cached PlotId temp = new PlotId(this.getId().x, this.getId().y); - this.getId().x = p2.getId().x; - this.getId().y = p2.getId().y; - p2.getId().x = temp.x; - p2.getId().y = temp.y; + this.getId().x = plot.getId().x; + this.getId().y = plot.getId().y; + plot.getId().x = temp.x; + plot.getId().y = temp.y; this.area.removePlot(this.getId()); - p2.area.removePlot(p2.getId()); + plot.area.removePlot(plot.getId()); this.getId().recalculateHash(); - p2.getId().recalculateHash(); + plot.getId().recalculateHash(); this.area.addPlotAbs(this); - p2.area.addPlotAbs(p2); + plot.area.addPlotAbs(plot); // Swap database - DBFunc.dbManager.swapPlots(p2, this); + DBFunc.dbManager.swapPlots(plot, this); TaskManager.runTaskLater(whenDone, 1); return true; } /** - * Move the settings for a plot + * Move the settings for a plot. * @param pos2 * @param whenDone * @return @@ -1621,7 +1622,7 @@ public class Plot { } /** - * Get plot display name + * Get plot display name. * * @return alias if set, else id */ @@ -1718,7 +1719,7 @@ public class Plot { } /** - * Export the plot as a schematic to the configured output directory + * Export the plot as a schematic to the configured output directory. * @return */ public void export(final RunnableVal whenDone) { @@ -1764,7 +1765,7 @@ public class Plot { } /** - * Upload the plot as a schematic to the configured web interface
+ * Upload the plot as a schematic to the configured web interface. * @param whenDone value will be null if uploading fails */ public void upload(final RunnableVal whenDone) { @@ -1838,7 +1839,7 @@ public class Plot { } /** - * Set a flag for this plot + * Set a flag for this plot. * @param flags */ public void setFlags(Set flags) { @@ -1846,9 +1847,9 @@ public class Plot { } /** - * Get the plot Alias
+ * Get the plot alias. * - Returns an empty string if no alias is set - * @return + * @return The plot alias */ public String getAlias() { if (this.settings == null) { @@ -1858,8 +1859,8 @@ public class Plot { } /** - * Set the plot alias - * @param alias + * Set the plot alias. + * @param alias The alias */ public void setAlias(String alias) { for (Plot current : this.getConnectedPlots()) { @@ -1912,7 +1913,7 @@ public class Plot { } /** - * Get the merged array + * Get the merged array. * @return boolean [ north, east, south, west ] */ public boolean[] getMerged() { @@ -2512,8 +2513,8 @@ public class Plot { } /** - * Get all the corners of the plot (supports non-rectangular shapes)
- * @return + * Get all the corners of the plot (supports non-rectangular shapes). + * @return A list of the plot corners */ public List getAllCorners() { Area area = new Area(); @@ -2536,7 +2537,7 @@ public class Plot { /** * Teleport a player to a plot and send them the teleport message. - * @param player + * @param player The player * @return If the teleportation is allowed. */ public boolean teleportPlayer(final PlotPlayer player) { @@ -2605,7 +2606,7 @@ public class Plot { } /** - * Expand the world border to include the provided plot (if applicable) + * Expand the world border to include the provided plot (if applicable). */ public void updateWorldBorder() { if (this.owner == null) { @@ -2672,7 +2673,7 @@ public class Plot { greaterPlot.setMerged(3, true); lesserPlot.mergeData(greaterPlot); if (removeRoads) { - final Plot other = lesserPlot.getRelative(0); + Plot other = lesserPlot.getRelative(0); if (other.getMerged(2) && other.getMerged(1)) { greaterPlot.mergePlot(other, removeRoads); other.removeRoadSouthEast(); diff --git a/Core/src/main/java/com/intellectualcrafters/plot/object/PlotArea.java b/Core/src/main/java/com/intellectualcrafters/plot/object/PlotArea.java index d13098f2c..e8ad7fd33 100644 --- a/Core/src/main/java/com/intellectualcrafters/plot/object/PlotArea.java +++ b/Core/src/main/java/com/intellectualcrafters/plot/object/PlotArea.java @@ -274,7 +274,7 @@ public abstract class PlotArea { this.GAMEMODE = PlotGameMode.SPECTATOR; break; default: - PS.debug("&cInvalid gamemode set for: " + this.worldname); + this.GAMEMODE = PlotGameMode.NOT_SET; break; } diff --git a/Core/src/main/java/com/intellectualcrafters/plot/util/PlotGameMode.java b/Core/src/main/java/com/intellectualcrafters/plot/util/PlotGameMode.java index cd9d8cf7e..2a75480ac 100644 --- a/Core/src/main/java/com/intellectualcrafters/plot/util/PlotGameMode.java +++ b/Core/src/main/java/com/intellectualcrafters/plot/util/PlotGameMode.java @@ -1,5 +1,33 @@ package com.intellectualcrafters.plot.util; public enum PlotGameMode { - ADVENTURE, SURVIVAL, CREATIVE, SPECTATOR + NOT_SET(-1, ""), + SURVIVAL(0, "survival"), + CREATIVE(1, "creative"), + ADVENTURE(2, "adventure"), + SPECTATOR(3, "spectator"); + + private final int id; + private final String name; + + PlotGameMode(int id, String name) { + this.id = id; + this.name = name; + } + + /** + * The magic-value id of the GameMode. + * @return the GameMode id + */ + public int getId() { + return this.id; + } + + /** + * Get the name of this GameMode + * @return the GameMode name + */ + public String getName() { + return this.name; + } } diff --git a/Core/src/main/java/com/intellectualcrafters/plot/util/UUIDHandler.java b/Core/src/main/java/com/intellectualcrafters/plot/util/UUIDHandler.java index f0b83ea3b..d2ccd505c 100644 --- a/Core/src/main/java/com/intellectualcrafters/plot/util/UUIDHandler.java +++ b/Core/src/main/java/com/intellectualcrafters/plot/util/UUIDHandler.java @@ -22,7 +22,7 @@ public class UUIDHandler { } /** - * Get the map containing all names/uuids + * Get the map containing all names/uuids. * * @return map with names + uuids * diff --git a/Core/src/main/java/com/intellectualcrafters/plot/util/UUIDHandlerImplementation.java b/Core/src/main/java/com/intellectualcrafters/plot/util/UUIDHandlerImplementation.java index b4be18b6f..49ea2d728 100644 --- a/Core/src/main/java/com/intellectualcrafters/plot/util/UUIDHandlerImplementation.java +++ b/Core/src/main/java/com/intellectualcrafters/plot/util/UUIDHandlerImplementation.java @@ -189,12 +189,6 @@ public abstract class UUIDHandlerImplementation { if (uuid == null) { return null; } - // // check online - // final PlotPlayer player = getPlayer(uuid); - // if (player != null) { - // return player.getName(); - // } - // check cache StringWrapper name = this.uuidMap.inverse().get(uuid); if (name != null) { return name.value; @@ -203,7 +197,7 @@ public abstract class UUIDHandlerImplementation { } public UUID getUUID(String name, RunnableVal ifFetch) { - if (name == null || name.isEmpty()) { + if (name.isEmpty()) { return null; } // check online diff --git a/Core/src/main/java/com/plotsquared/general/commands/Command.java b/Core/src/main/java/com/plotsquared/general/commands/Command.java index 37253c085..e5f7d6a5b 100644 --- a/Core/src/main/java/com/plotsquared/general/commands/Command.java +++ b/Core/src/main/java/com/plotsquared/general/commands/Command.java @@ -14,6 +14,7 @@ import com.intellectualcrafters.plot.util.MathMan; import com.intellectualcrafters.plot.util.Permissions; import com.intellectualcrafters.plot.util.StringComparison; import com.intellectualcrafters.plot.util.StringMan; + import java.io.IOException; import java.lang.annotation.Annotation; import java.lang.reflect.InvocationTargetException; @@ -32,36 +33,77 @@ import java.util.Set; public abstract class Command { // May be none - private ArrayList allCommands = new ArrayList<>(); - private ArrayList dynamicCommands = new ArrayList<>(); - private HashMap staticCommands = new HashMap<>(); + private final ArrayList allCommands = new ArrayList<>(); + private final ArrayList dynamicCommands = new ArrayList<>(); + private final HashMap staticCommands = new HashMap<>(); // Parent command (may be null) - private Command parent; - + private final Command parent; + private final boolean isStatic; // The command ID private String id; private List aliases; private RequiredType required; private String usage; private String description; - private boolean isStatic; private String perm; private boolean confirmation; private CommandCategory category; private Argument[] arguments; + public Command(Command parent, boolean isStatic, String id, String perm, RequiredType required, CommandCategory cat) { + this.parent = parent; + this.isStatic = isStatic; + this.id = id; + this.perm = perm; + this.required = required; + this.category = cat; + this.aliases = Arrays.asList(id); + } + + public Command(Command parent, boolean isStatic) { + this.parent = parent; + this.isStatic = isStatic; + Annotation cdAnnotation = getClass().getAnnotation(CommandDeclaration.class); + if (cdAnnotation != null) { + CommandDeclaration declaration = (CommandDeclaration) cdAnnotation; + init(declaration); + } + for (final Method method : getClass().getDeclaredMethods()) { + if (method.isAnnotationPresent(CommandDeclaration.class)) { + Class[] types = method.getParameterTypes(); + // final PlotPlayer player, String[] args, RunnableVal3 confirm, RunnableVal2 + // whenDone + if (types.length == 5 && types[0] == Command.class && types[1] == PlotPlayer.class && types[2] == String[].class + && types[3] == RunnableVal3.class && types[4] == RunnableVal2.class) { + Command tmp = new Command(this, true) { + @Override + public void execute(PlotPlayer player, String[] args, RunnableVal3 confirm, + RunnableVal2 whenDone) { + try { + method.invoke(Command.this, this, player, args, confirm, whenDone); + } catch (IllegalAccessException | InvocationTargetException e) { + e.printStackTrace(); + } + } + }; + tmp.init(method.getAnnotation(CommandDeclaration.class)); + } + } + } + } + public Command getParent() { - return parent; + return this.parent; } public String getId() { - return id; + return this.id; } public List getCommands(PlotPlayer player) { List commands = new ArrayList<>(); - for (Command cmd : allCommands) { + for (Command cmd : this.allCommands) { if (cmd.canExecute(player, false)) { commands.add(cmd); } @@ -83,74 +125,33 @@ public abstract class Command { } public List getCommands() { - return allCommands; + return this.allCommands; } public boolean hasConfirmation(PlotPlayer player) { - return confirmation && !player.hasPermission(getPermission() + ".confirm.bypass"); + return this.confirmation && !player.hasPermission(getPermission() + ".confirm.bypass"); } public List getAliases() { - return aliases; + return this.aliases; } public String getDescription() { - return description; + return this.description; } public RequiredType getRequiredType() { - return required; + return this.required; } public Argument[] getRequiredArguments() { - return arguments; + return this.arguments; } public void setRequiredArguments(Argument[] arguments) { this.arguments = arguments; } - public Command(Command parent, boolean isStatic, String id, String perm, RequiredType required, CommandCategory cat) { - this.parent = parent; - this.isStatic = isStatic; - this.id = id; - this.perm = perm; - this.required = required; - this.category = cat; - this.aliases = Arrays.asList(id); - } - - public Command(Command parent, boolean isStatic) { - this.parent = parent; - this.isStatic = isStatic; - final Annotation cdAnnotation = getClass().getAnnotation(CommandDeclaration.class); - if (cdAnnotation != null) { - final CommandDeclaration declaration = (CommandDeclaration) cdAnnotation; - init(declaration); - } - for (final Method method : getClass().getDeclaredMethods()) { - if (method.isAnnotationPresent(CommandDeclaration.class)) { - Class[] types = method.getParameterTypes(); - // final PlotPlayer player, String[] args, RunnableVal3 confirm, RunnableVal2 whenDone - if (types.length == 5 && types[0] == Command.class && types[1] == PlotPlayer.class && types[2] == String[].class && types[3] == RunnableVal3.class && types[4] == RunnableVal2.class) { - Command tmp = new Command(this, true) { - @Override - public void execute(PlotPlayer player, String[] args, RunnableVal3 confirm, RunnableVal2 whenDone) { - try { - method.invoke(Command.this, this, player, args, confirm, whenDone); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } - } - }; - tmp.init(method.getAnnotation(CommandDeclaration.class)); - } - } - } - } - public void init(CommandDeclaration declaration) { this.id = declaration.command(); this.perm = declaration.permission(); @@ -158,7 +159,7 @@ public abstract class Command { this.category = declaration.category(); HashMap options = new HashMap<>(); List aliasOptions = new ArrayList<>(); - aliasOptions.add(id); + aliasOptions.add(this.id); aliasOptions.addAll(Arrays.asList(declaration.aliases())); options.put("aliases", aliasOptions); options.put("description", declaration.description()); @@ -166,7 +167,7 @@ public abstract class Command { options.put("confirmation", declaration.confirmation()); boolean set = false; for (Map.Entry entry : options.entrySet()) { - String key = id + "." + entry.getKey(); + String key = this.id + "." + entry.getKey(); if (!PS.get().commands.contains(key)) { PS.get().commands.set(key, entry.getValue()); set = true; @@ -180,50 +181,46 @@ public abstract class Command { } } - aliases = PS.get().commands.getStringList(id + ".aliases"); - description = PS.get().commands.getString(id + ".description"); - usage = PS.get().commands.getString(id + ".usage"); - confirmation = PS.get().commands.getBoolean(id + ".confirmation"); - if (parent != null) { - parent.register(this); + this.aliases = PS.get().commands.getStringList(this.id + ".aliases"); + this.description = PS.get().commands.getString(this.id + ".description"); + this.usage = PS.get().commands.getString(this.id + ".usage"); + this.confirmation = PS.get().commands.getBoolean(this.id + ".confirmation"); + if (this.parent != null) { + this.parent.register(this); } } public void register(Command command) { if (command.isStatic) { for (String alias : command.aliases) { - staticCommands.put(alias.toLowerCase(), command); + this.staticCommands.put(alias.toLowerCase(), command); } } else { - dynamicCommands.add(command); + this.dynamicCommands.add(command); } - allCommands.add(command); - } - - public enum CommandResult { - FAILURE, - SUCCESS + this.allCommands.add(command); } public String getPermission() { - if (perm != null && perm.length() != 0) { - return perm; + if (this.perm != null && !this.perm.isEmpty()) { + return this.perm; } - if (parent == null) { + if (this.parent == null) { return "plots.use"; } - if (parent.parent == null) { - return "plots." + id; + if (this.parent.parent == null) { + return "plots." + this.id; } - return parent.getPermission() + "." + id; + return this.parent.getPermission() + "." + this.id; } - public void paginate(PlotPlayer player, List c, int size, int page, RunnableVal3 add, String baseCommand, String header) { + public void paginate(PlotPlayer player, List c, int size, int page, RunnableVal3 add, String baseCommand, + String header) { // Calculate pages & index if (page < 0) { page = 0; } - final int totalPages = (int) Math.ceil(c.size() / size); + int totalPages = (int) Math.ceil(c.size() / size); if (page > totalPages) { page = totalPages; } @@ -232,12 +229,13 @@ public abstract class Command { max = c.size(); } // Send the header - header = header.replaceAll("%cur", page + 1 + "").replaceAll("%max", totalPages + 1 + "").replaceAll("%amount%", c.size() + "").replaceAll("%word%", "all"); + header = header.replaceAll("%cur", page + 1 + "").replaceAll("%max", totalPages + 1 + "").replaceAll("%amount%", c.size() + "") + .replaceAll("%word%", "all"); MainUtil.sendMessage(player, header); // Send the page content - final List subList = c.subList(page * size, max); + List subList = c.subList(page * size, max); int i = page * size; - for (final T obj : subList) { + for (T obj : subList) { i++; PlotMessage msg = new PlotMessage(); add.run(i, obj, msg); @@ -251,7 +249,8 @@ public abstract class Command { return; } if (page == 0 && totalPages != 0) { // Next - new PlotMessage().text("<-").color("$3").text(" | ").color("$3").text("->").color("$1").command(baseCommand + " " + (page + 2)).text(C.CLICKABLE.s()).color("$2").send(player); + new PlotMessage().text("<-").color("$3").text(" | ").color("$3").text("->").color("$1").command(baseCommand + " " + (page + 2)) + .text(C.CLICKABLE.s()).color("$2").send(player); return; } if (page == totalPages && totalPages != 0) { // Back @@ -267,22 +266,23 @@ public abstract class Command { * @param confirm Instance, Success, Failure * @return */ - public void execute(final PlotPlayer player, String[] args, RunnableVal3 confirm, RunnableVal2 whenDone) { + public void execute(PlotPlayer player, String[] args, RunnableVal3 confirm, + RunnableVal2 whenDone) { if (args.length == 0 || args[0] == null) { - if (parent == null) { + if (this.parent == null) { MainCommand.getInstance().help.displayHelp(player, null, 0); } else { C.COMMAND_SYNTAX.send(player, getUsage()); } return; } - if (allCommands == null || allCommands.size() == 0) { + if (this.allCommands == null || this.allCommands.isEmpty()) { player.sendMessage("Not Implemented: https://github.com/IntellectualSites/PlotSquared/issues/new"); return; } Command cmd = getCommand(args[0]); if (cmd == null) { - if (parent != null) { + if (this.parent != null) { C.COMMAND_SYNTAX.send(player, getUsage()); return; } @@ -294,7 +294,8 @@ public abstract class Command { MainCommand.getInstance().help.execute(player, args, null, null); return; } - } catch (IllegalArgumentException e) {} + } catch (IllegalArgumentException e) { + } // Command recommendation MainUtil.sendMessage(player, C.NOT_VALID_SUBCOMMAND); { @@ -316,7 +317,7 @@ public abstract class Command { } } if (cmd == null) { - cmd = new StringComparison<>(args[0], allCommands).getMatchObject(); + cmd = new StringComparison<>(args[0], this.allCommands).getMatchObject(); } MainUtil.sendMessage(player, C.DID_YOU_MEAN, cmd.getUsage()); } @@ -383,9 +384,9 @@ public abstract class Command { } public Command getCommand(String arg) { - Command cmd = staticCommands.get(arg.toLowerCase()); + Command cmd = this.staticCommands.get(arg.toLowerCase()); if (cmd == null) { - for (Command command : dynamicCommands) { + for (Command command : this.dynamicCommands) { if (command.matches(arg)) { return command; } @@ -395,7 +396,7 @@ public abstract class Command { } public Command getCommand(Class clazz) { - for (Command cmd : allCommands) { + for (Command cmd : this.allCommands) { if (cmd.getClass() == clazz) { return cmd; } @@ -404,11 +405,11 @@ public abstract class Command { } public Command getCommandById(String id) { - Command exact = staticCommands.get(id); + Command exact = this.staticCommands.get(id); if (exact != null) { return exact; } - for (Command cmd : allCommands) { + for (Command cmd : this.allCommands) { if (cmd.getId().equals(id)) { return cmd; } @@ -417,9 +418,9 @@ public abstract class Command { } public boolean canExecute(PlotPlayer player, boolean message) { - if (!required.allows(player)) { + if (!this.required.allows(player)) { if (message) { - MainUtil.sendMessage(player, required == RequiredType.PLAYER ? C.IS_CONSOLE : C.NOT_CONSOLE); + MainUtil.sendMessage(player, this.required == RequiredType.PLAYER ? C.IS_CONSOLE : C.NOT_CONSOLE); } } else if (!Permissions.hasPermission(player, getPermission())) { if (message) { @@ -433,31 +434,31 @@ public abstract class Command { public boolean matches(String arg) { arg = arg.toLowerCase(); - return StringMan.isEqual(arg, id) || aliases.contains(arg); + return StringMan.isEqual(arg, this.id) || this.aliases.contains(arg); } public String getCommandString() { String base; - if (parent == null) { + if (this.parent == null) { return "/" + toString(); } else { - return parent.getCommandString() + " " + toString(); + return this.parent.getCommandString() + " " + toString(); } } public String getUsage() { - if (usage != null && usage.length() != 0) { - if (usage.startsWith("/")) { - return usage; + if (this.usage != null && this.usage.length() != 0) { + if (this.usage.startsWith("/")) { + return this.usage; } - return getCommandString() + " " + usage; + return getCommandString() + " " + this.usage; } - if (allCommands.size() == 0) { + if (this.allCommands.size() == 0) { return getCommandString(); } StringBuilder args = new StringBuilder("["); String prefix = ""; - for (Command cmd : allCommands) { + for (Command cmd : this.allCommands) { args.append(prefix).append(cmd.isStatic ? cmd.toString() : "<" + cmd + ">"); prefix = "|"; } @@ -467,15 +468,15 @@ public abstract class Command { public Collection tab(PlotPlayer player, String[] args, boolean space) { switch (args.length) { case 0: - return allCommands; + return this.allCommands; case 1: String arg = args[0].toLowerCase(); if (space) { Command cmd = getCommand(arg); - return (cmd != null && cmd.canExecute(player, false)) ? (cmd.tab(player, Arrays.copyOfRange(args, 1, args.length), space)) : null; + return (cmd != null && cmd.canExecute(player, false)) ? cmd.tab(player, Arrays.copyOfRange(args, 1, args.length), space) : null; } else { Set commands = new HashSet(); - for (Map.Entry entry : staticCommands.entrySet()) { + for (Map.Entry entry : this.staticCommands.entrySet()) { if (entry.getKey().startsWith(arg) && entry.getValue().canExecute(player, false)) { commands.add(entry.getValue()); } @@ -490,7 +491,7 @@ public abstract class Command { @Override public String toString() { - return aliases.size() > 0 ? aliases.get(0) : id; + return this.aliases.size() > 0 ? this.aliases.get(0) : this.id; } @Override @@ -501,7 +502,7 @@ public abstract class Command { if (getClass() != obj.getClass()) { return false; } - final Command other = (Command) obj; + Command other = (Command) obj; if (this.hashCode() != other.hashCode()) { return false; } @@ -510,6 +511,11 @@ public abstract class Command { @Override public int hashCode() { - return id.hashCode(); + return this.id.hashCode(); + } + + public enum CommandResult { + FAILURE, + SUCCESS } } diff --git a/Core/src/test/java/com/intellectualcrafters/plot/UpdaterTest.java b/Core/src/test/java/com/intellectualcrafters/plot/UpdaterTest.java index 2de6e46d9..71e53bb22 100644 --- a/Core/src/test/java/com/intellectualcrafters/plot/UpdaterTest.java +++ b/Core/src/test/java/com/intellectualcrafters/plot/UpdaterTest.java @@ -1,64 +1,96 @@ -//package com.intellectualcrafters.plot; -// -//import static com.intellectualcrafters.plot.PS.log; -// -//import com.google.gson.Gson; -//import com.google.gson.annotations.SerializedName; -// -//import java.io.BufferedReader; -//import java.io.IOException; -//import java.io.InputStreamReader; -//import java.net.URL; -//import java.util.List; -// -//public class UpdaterTest { -// -// @org.junit.Test -// public void getUpdate() throws Exception { -// String str = null; -// BufferedReader reader = null; -// try { -// URL url = new URL("https://api.github.com/repos/IntellectualSites/PlotSquared/releases/latest"); -// reader = new BufferedReader(new InputStreamReader(url.openStream())); -// StringBuilder buffer = new StringBuilder(); -// int read; -// char[] chars = new char[1024]; -// while ((read = reader.read(chars)) != -1) { -// buffer.append(chars, 0, read); -// } -// -// str = buffer.toString(); -// } catch (IOException e) { -// log("&dCould not check for updates (0)"); -// e.printStackTrace(); -// } finally { -// try { -// if (reader != null) { -// reader.close(); -// } -// } catch (IOException e) { -// e.printStackTrace(); -// } -// } -// if (str == null) { -// return; -// } -// Gson gson = new Gson(); -// Release release = gson.fromJson(str, Release.class); -// System.out.println(release.name); -// for (Release.Assets asset : release.assets) { -// System.out.println(asset.name); -// System.out.println(asset.downloadUrl); -// } -// } -// private static class Release { -// String name; -// List assets; -// private static class Assets { -// String name; -// @SerializedName("browser_download_url") String downloadUrl; -// } -// -// } -// -//} \ No newline at end of file +package com.intellectualcrafters.plot; + +import static com.intellectualcrafters.plot.PS.log; + +import com.intellectualcrafters.json.JSONArray; +import com.intellectualcrafters.json.JSONObject; +import com.intellectualcrafters.plot.util.StringMan; +import org.junit.Test; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Arrays; + +public class UpdaterTest { + + private static String readUrl(String urlString) { + BufferedReader reader = null; + try { + URL url = new URL(urlString); + reader = new BufferedReader(new InputStreamReader(url.openStream())); + StringBuilder buffer = new StringBuilder(); + int read; + char[] chars = new char[1024]; + while ((read = reader.read(chars)) != -1) { + buffer.append(chars, 0, read); + } + + return buffer.toString(); + } catch (IOException e) { + log("&dCould not check for updates (0)"); + e.printStackTrace(); + } finally { + try { + if (reader != null) { + reader.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + return null; + } + + @Test + public void getUpdate() throws Exception { + String str = readUrl("https://api.github.com/repos/IntellectualSites/PlotSquared/releases/latest"); + JSONObject release = new JSONObject(str); + JSONArray assets = (JSONArray) release.get("assets"); + System.out.println(assets.toString()); + String downloadURL = String.format("PlotSquared-%s.jar", "Bukkit"); + for (int i = 0; i < assets.length(); i++) { + System.out.println(i); + JSONObject asset = assets.getJSONObject(i); + String name = asset.getString("name"); + System.out.println(name); + System.out.println(downloadURL); + if (downloadURL.equals(name)) { + try { + String[] split = release.getString("name").split("\\."); + int[] version; + if (split.length == 3) { + version = new int[]{Integer.parseInt(split[0]), Integer.parseInt(split[1]), Integer.parseInt(split[2])}; + } else { + version = new int[]{Integer.parseInt(split[0]), Integer.parseInt(split[1]), 0}; + } + System.out.println(Arrays.toString(version)); + URL url = new URL(asset.getString("browser_download_url")); + // If current version >= update + if (checkVersion(new int[]{3, 3, 1}, version)) { + System.out.println("&7PlotSquared is already up to date!"); + return; + } + System.out.println("&6PlotSquared " + StringMan.join(split, ".") + " is available:"); + System.out.println("&8 - &3Use: &7/plot update"); + System.out.println("&8 - &3Or: &7" + downloadURL); + return; + } catch (MalformedURLException e) { + e.printStackTrace(); + System.out.println("&dCould not check for updates (1)"); + System.out.println("&7 - Manually check for updates: https://github.com/IntellectualSites/PlotSquared/releases"); + } + } + } + System.out.println("You are running the latest version of PlotSquared"); + return; + } + + public boolean checkVersion(int[] version, int... version2) { + return version[0] > version2[0] || version[0] == version2[0] && version[1] > version2[1] || version[0] == version2[0] + && version[1] == version2[1] && version[2] >= version2[2]; + } + +} \ No newline at end of file diff --git a/Sponge/src/main/java/com/plotsquared/sponge/object/SpongePlayer.java b/Sponge/src/main/java/com/plotsquared/sponge/object/SpongePlayer.java index 973fbcd84..c9f856686 100644 --- a/Sponge/src/main/java/com/plotsquared/sponge/object/SpongePlayer.java +++ b/Sponge/src/main/java/com/plotsquared/sponge/object/SpongePlayer.java @@ -8,8 +8,6 @@ import com.intellectualcrafters.plot.util.PlotGameMode; import com.intellectualcrafters.plot.util.PlotWeather; import com.intellectualcrafters.plot.util.UUIDHandler; import com.plotsquared.sponge.util.SpongeUtil; -import java.time.Instant; -import java.util.UUID; import org.spongepowered.api.Sponge; import org.spongepowered.api.data.key.Keys; import org.spongepowered.api.data.manipulator.mutable.TargetedLocationData; @@ -22,6 +20,9 @@ import org.spongepowered.api.service.ban.BanService; import org.spongepowered.api.text.chat.ChatTypes; import org.spongepowered.api.text.serializer.TextSerializers; +import java.time.Instant; +import java.util.UUID; + public class SpongePlayer extends PlotPlayer { public final Player player; @@ -139,7 +140,9 @@ public class SpongePlayer extends PlotPlayer { if (gamemode == GameModes.SURVIVAL) { return PlotGameMode.SURVIVAL; } - throw new UnsupportedOperationException("INVALID GAMEMODE"); + if (gamemode == GameModes.NOT_SET) { + return PlotGameMode.NOT_SET; + } } @Override @@ -157,6 +160,11 @@ public class SpongePlayer extends PlotPlayer { case SURVIVAL: this.player.offer(Keys.GAME_MODE, GameModes.SURVIVAL); return; + case NOT_SET: + this.player.offer(Keys.GAME_MODE, GameModes.NOT_SET); + return; + default: + this.player.offer(Keys.GAME_MODE, GameModes.NOT_SET); } }