diff --git a/PlotSquared/src/main/java/com/intellectualcrafters/plot/PlotMain.java b/PlotSquared/src/main/java/com/intellectualcrafters/plot/PlotMain.java index 8327632a5..9cc77370b 100644 --- a/PlotSquared/src/main/java/com/intellectualcrafters/plot/PlotMain.java +++ b/PlotSquared/src/main/java/com/intellectualcrafters/plot/PlotMain.java @@ -21,6 +21,7 @@ package com.intellectualcrafters.plot; +import com.google.common.io.Files; import com.intellectualcrafters.plot.api.PlotAPI; import com.intellectualcrafters.plot.commands.Auto; import com.intellectualcrafters.plot.commands.MainCommand; @@ -48,6 +49,7 @@ import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import me.confuser.barapi.BarAPI; import net.milkbowl.vault.economy.Economy; +import org.apache.commons.lang.StringUtils; import org.bukkit.*; import org.bukkit.command.PluginCommand; import org.bukkit.configuration.file.YamlConfiguration; @@ -55,10 +57,15 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import org.bukkit.event.server.PluginEnableEvent; import org.bukkit.event.world.WorldLoadEvent; import org.bukkit.generator.ChunkGenerator; +import org.bukkit.plugin.InvalidDescriptionException; +import org.bukkit.plugin.InvalidPluginException; import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.RegisteredServiceProvider; +import org.bukkit.plugin.UnknownDependencyException; import org.bukkit.plugin.java.JavaPlugin; import java.io.File; @@ -170,13 +177,16 @@ import java.util.concurrent.TimeUnit; */ private static LinkedHashMap> plots; + /** + * If plotme converter is enabled + */ + private static boolean CONVERT_PLOTME = enablePlotMe(); /** * Return an instance of MySQL */ public static MySQL getMySQL() { return mySQL; } - /** * Check a range of permissions e.g. 'plots.plot.<0-100>'
Returns highest integer in range. * @@ -520,7 +530,7 @@ import java.util.concurrent.TimeUnit; * @param string message */ public static void sendConsoleSenderMessage(final String string) { - if (getMain().getServer().getConsoleSender() == null) { + if (PlotMain.main == null || getMain().getServer().getConsoleSender() == null) { System.out.println(ChatColor.stripColor(ConsoleColors.fromString(string))); } else { getMain().getServer().getConsoleSender().sendMessage(ChatColor.translateAlternateColorCodes('&', string)); @@ -835,7 +845,7 @@ import java.util.concurrent.TimeUnit; public static void worldLoad(WorldLoadEvent event) { if (!UUIDHandler.CACHED) { UUIDHandler.cacheAll(); - if (Bukkit.getServer().getPluginManager().getPlugin("PlotMe") != null) { + if (CONVERT_PLOTME) { try { new PlotMeConverter(PlotMain.getMain()).runAsync(); } catch (final Exception e) { @@ -1236,35 +1246,42 @@ import java.util.concurrent.TimeUnit; Logger.add(LogLevel.GENERAL, "Logger enabled"); } + public static boolean enablePlotMe() { + File file = new File(new File("").getAbsolutePath() + File.separator + "plugins" + File.separator + "PlotMe-Core.jar"); + if (file.exists()) { + sendConsoleSenderMessage("&b==== Copying 'PlotMe-Core.jar' to 'PlotMe_JAR_relocated' for conversion purposes ==="); + sendConsoleSenderMessage("&3 - Please ignore the below stacktrace..."); + try { + File to = new File(new File(".").getAbsolutePath() + File.separator + "plugins" + File.separator + "PlotMe_JAR_relocated" + File.separator + "PlotMe-Core.jar"); + File parent = to.getParentFile(); + if(!parent.exists()){ + parent.mkdirs(); + } + to.createNewFile(); + Files.copy(file, to); + file.delete(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return true; + } + file = new File(new File(".").getAbsolutePath() + File.separator + "plugins" + File.separator + "PlotMe.jar"); + if (file.exists()) { + return true; + } + return false; + } + /** * On Load. */ @Override @SuppressWarnings("deprecation") final public void onEnable() { - - /* - * Oh, is this what it looks like? - * Are we stealing coding from PlotMe again? - */ - - //Plugin competition = Bukkit.getPluginManager().getPlugin("PlotSquared"); - Plugin competition = Bukkit.getPluginManager().getPlugin("PlotMe"); - if (competition != null) { - getPluginLoader().disablePlugin(competition); + if (Bukkit.getPluginManager().getPlugin("PlotMe") != null) { + CONVERT_PLOTME = true; } - /* - * Oh no! How unethical of us to steal this above code from PlotMe and only change 1 line of code! - * If only we were good enough to code something like this ourselves! - * - * You guys are hilarious how you intentionally try to make it difficult for your users to to switch plot plugins. - * If we didn't know any better, we'd say you're abusing your position as the most used plot plugin. - * - * Side note from Empire92: Your continued bullying doesn't give me much incentive to support PlotMe with any of my other plugins: - * - VoxelSniperRegions - * - BiomeGenerator - */ - PlotMain.main = this; // Setup the logger mechanics setupLogger(); diff --git a/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/Info.java b/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/Info.java index abdc2b2e8..e42cd871b 100644 --- a/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/Info.java +++ b/PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/Info.java @@ -24,6 +24,7 @@ package com.intellectualcrafters.plot.commands; import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.database.DBFunc; +import com.intellectualcrafters.plot.flag.FlagManager; import com.intellectualcrafters.plot.object.InfoInventory; import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.PlotId; @@ -174,7 +175,7 @@ import java.util.UUID; final String trusted = getPlayerList(plot.trusted); final String denied = getPlayerList(plot.denied); final String rating = String.format("%.1f", DBFunc.getRatings(plot)); - final String flags = "&6" + (StringUtils.join(plot.settings.flags, "").length() > 0 ? StringUtils.join(plot.settings.flags, "&7, &6") : "none"); + final String flags = "&6" + (StringUtils.join(FlagManager.getPlotFlags(plot), "").length() > 0 ? StringUtils.join(FlagManager.getPlotFlags(plot), "&7, &6") : "none"); final boolean build = (player == null) || plot.hasRights(player); String owner = "none"; diff --git a/PlotSquared/src/main/java/com/intellectualcrafters/plot/database/PlotMeConverter.java b/PlotSquared/src/main/java/com/intellectualcrafters/plot/database/PlotMeConverter.java index 20e27057f..477729de0 100644 --- a/PlotSquared/src/main/java/com/intellectualcrafters/plot/database/PlotMeConverter.java +++ b/PlotSquared/src/main/java/com/intellectualcrafters/plot/database/PlotMeConverter.java @@ -26,6 +26,7 @@ import com.intellectualcrafters.plot.generator.HybridGen; import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.PlotId; import com.intellectualcrafters.plot.util.UUIDHandler; +import com.sk89q.worldedit.util.YAMLConfiguration; import org.bukkit.Bukkit; import org.bukkit.World; @@ -53,7 +54,6 @@ public class PlotMeConverter { * PlotMain Object */ private final PlotMain plugin; - /** * Constructor * @@ -70,15 +70,15 @@ public class PlotMeConverter { public void runAsync() throws Exception { // We have to make it wait a couple of seconds Bukkit.getScheduler().runTaskLater(this.plugin, new Runnable() { - @Override public void run() { try { sendMessage("Conversion has started"); sendMessage("Connecting to PlotMe DB"); final ArrayList createdPlots = new ArrayList<>(); - final Plugin plotMePlugin = Bukkit.getPluginManager().getPlugin("PlotMe"); - final FileConfiguration plotConfig = plotMePlugin.getConfig(); + String dataFolder = new File(".").getAbsolutePath() + File.separator + "plugins" + File.separator + "PlotMe" + File.separator; + File plotMeFile = new File(dataFolder + "config.yml"); + final FileConfiguration plotConfig = YamlConfiguration.loadConfiguration(plotMeFile); int count = 0; Connection connection; @@ -93,7 +93,7 @@ public class PlotMeConverter { connection = mySQL.openConnection(); } else { - connection = new SQLite(PlotMain.getMain(), plotMePlugin.getDataFolder() + File.separator +"plots.db").openConnection(); + connection = new SQLite(PlotMain.getMain(), dataFolder + File.separator +"plots.db").openConnection(); } sendMessage("Collecting plot data"); ResultSet r; @@ -105,9 +105,9 @@ public class PlotMeConverter { stmt = connection.createStatement(); r = stmt.executeQuery("SELECT * FROM `plotmePlots`"); while (r.next()) { + count++; PlotId id = new PlotId(r.getInt("idX"), r.getInt("idZ")); String name = r.getString("owner"); - System.out.print("NAME: "+name); String world = r.getString("world"); if (!plotSize.containsKey(world)) { int size = r.getInt("topZ") - r.getInt("bottomZ"); @@ -131,7 +131,6 @@ public class PlotMeConverter { r = stmt.executeQuery("SELECT * FROM `plotmeAllowed`"); while (r.next()) { - count++; PlotId id = new PlotId(r.getInt("idX"), r.getInt("idZ")); String name = r.getString("player"); String world = r.getString("world"); @@ -170,7 +169,7 @@ public class PlotMeConverter { } } - sendMessage("Collected " + count + "plots from PlotMe"); + sendMessage("Collected " + count + " plots from PlotMe"); for (String world : plots.keySet()) { sendMessage("Copying config for: "+world); @@ -200,7 +199,7 @@ public class PlotMeConverter { } } - File PLOTME_DG_FILE = new File(plotMePlugin + File.separator + "PlotMe-DefaultGenerator" + File.separator + "config.yml"); + File PLOTME_DG_FILE = new File(dataFolder + File.separator + "PlotMe-DefaultGenerator" + File.separator + "config.yml"); if (PLOTME_DG_FILE.exists()) { YamlConfiguration PLOTME_DG_YML = YamlConfiguration.loadConfiguration(PLOTME_DG_FILE); try { @@ -301,8 +300,6 @@ public class PlotMeConverter { } PlotMain.setAllPlotsRaw(DBFunc.getPlots()); - sendMessage("Disabling PlotMe..."); - Bukkit.getPluginManager().disablePlugin(plotMePlugin); sendMessage("Conversion has finished"); PlotMain.sendConsoleSenderMessage("&cAlthough the server may be functional in it's current state, it is recommended that you restart the server and remove PlotMe to finalize the installation. Please make careful note of any warning messages that may have showed up during conversion."); diff --git a/PlotSquared/src/main/java/com/intellectualcrafters/plot/flag/FlagManager.java b/PlotSquared/src/main/java/com/intellectualcrafters/plot/flag/FlagManager.java index c0e863458..7d921fc7a 100644 --- a/PlotSquared/src/main/java/com/intellectualcrafters/plot/flag/FlagManager.java +++ b/PlotSquared/src/main/java/com/intellectualcrafters/plot/flag/FlagManager.java @@ -29,6 +29,7 @@ import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.PlotWorld; import com.sun.istack.internal.NotNull; +import org.apache.commons.lang.StringUtils; import org.bukkit.Bukkit; import org.bukkit.entity.Player; diff --git a/PlotSquared/src/main/java/com/intellectualcrafters/plot/object/PlotWorld.java b/PlotSquared/src/main/java/com/intellectualcrafters/plot/object/PlotWorld.java index 038dfbe7a..1eace0604 100644 --- a/PlotSquared/src/main/java/com/intellectualcrafters/plot/object/PlotWorld.java +++ b/PlotSquared/src/main/java/com/intellectualcrafters/plot/object/PlotWorld.java @@ -21,11 +21,13 @@ package com.intellectualcrafters.plot.object; +import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.config.Configuration; import com.intellectualcrafters.plot.config.ConfigurationNode; import com.intellectualcrafters.plot.flag.Flag; import com.intellectualcrafters.plot.flag.FlagManager; +import org.apache.commons.lang.StringUtils; import org.bukkit.Material; import org.bukkit.block.Biome; import org.bukkit.configuration.ConfigurationSection; @@ -312,7 +314,13 @@ public abstract class PlotWorld { this.DEFAULT_FLAGS = new Flag[] {}; } else { - this.DEFAULT_FLAGS = FlagManager.parseFlags(flags); + try { + this.DEFAULT_FLAGS = FlagManager.parseFlags(flags); + } + catch (Exception e) { + PlotMain.sendConsoleSenderMessage("&cInvalid default flags for "+this.worldname+": "+StringUtils.join(flags,",")); + this.DEFAULT_FLAGS = new Flag[] {}; + } } this.PVP = config.getBoolean("event.pvp"); this.PVE = config.getBoolean("event.pve"); diff --git a/PlotSquared/src/main/java/com/intellectualcrafters/plot/util/ExpireManager.java b/PlotSquared/src/main/java/com/intellectualcrafters/plot/util/ExpireManager.java index 2be340e20..a9c1e6b4b 100644 --- a/PlotSquared/src/main/java/com/intellectualcrafters/plot/util/ExpireManager.java +++ b/PlotSquared/src/main/java/com/intellectualcrafters/plot/util/ExpireManager.java @@ -87,7 +87,6 @@ public class ExpireManager { final World worldobj = Bukkit.getWorld(world); final PlotManager manager = PlotMain.getPlotManager(world); manager.clearPlot(worldobj, plot, false); - PlotHelper.clear(worldobj, plot, true); PlotHelper.removeSign(worldobj, plot); DBFunc.delete(world, plot); PlotMain.removePlot(world, plot.id, true); @@ -100,7 +99,7 @@ public class ExpireManager { } } - }, 1, 20); + }, 1200, 1200); } public static boolean isExpired(UUID uuid) {