diff --git a/pom.xml b/pom.xml
index 542abb173..7377de277 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,7 +49,7 @@
PlotSquared-Bukkit
- **/com/plotsquared/sponge/*
+ **/com/plotsquared/sponge/**
@@ -62,7 +62,8 @@
PlotSquared-Sponge
- **/com/plotsquared/bukkit/*
+ **/com/plotsquared/bukkit/**
+ **/com/intellectualcrafters/plot/api/*
diff --git a/src/main/java/com/intellectualcrafters/plot/IPlotMain.java b/src/main/java/com/intellectualcrafters/plot/IPlotMain.java
index 44a55ff82..790157a31 100644
--- a/src/main/java/com/intellectualcrafters/plot/IPlotMain.java
+++ b/src/main/java/com/intellectualcrafters/plot/IPlotMain.java
@@ -12,65 +12,189 @@ import java.io.File;
import java.util.UUID;
public interface IPlotMain {
+
+ /**
+ * Log a message to console
+ * @param message
+ */
void log(String message);
+ /**
+ * Get the `PlotSquared` directory (e.g. /plugins/PlotSquared or /mods/PlotSquared)
+ * @return
+ */
File getDirectory();
+ /**
+ * Disable the implementation
+ * - If a full disable isn't feasibly, just disable what it can
+ */
void disable();
+ /**
+ * Get the version of the PlotSquared being used
+ * @return
+ */
int[] getPluginVersion();
+ /**
+ * Get the version of Minecraft that is running
+ * (used to check what protocols and such are supported)
+ * @return
+ */
int[] getServerVersion();
- void handleKick(UUID uuid, C c);
-
+ /**
+ * The task manager will run and manage minecraft tasks
+ * @return
+ */
TaskManager getTaskManager();
+ /**
+ * Run the task that will kill road mobs
+ */
void runEntityTask();
+ /**
+ * Register the implementation specific commands
+ */
void registerCommands();
+ /**
+ * Register the protection system (used to protect blocks and such)
+ */
void registerPlayerEvents();
+ /**
+ * Register inventory related events (used for inventory guis)
+ */
void registerInventoryEvents();
+ /**
+ * Register plot plus related events (whatever these are?)
+ */
void registerPlotPlusEvents();
+ /**
+ * Register force field events (why is this a thing?)
+ */
void registerForceFieldEvents();
+ /**
+ * Register the WorldEdit hook
+ */
void registerWorldEditEvents();
+ /**
+ * Register TNT related events (if TNT protection is enabled)
+ */
void registerTNTListener();
+ /**
+ * Get the economy provider
+ * @return
+ */
EconHandler getEconomyHandler();
+ /**
+ * Get the block manager
+ * @return
+ */
BlockManager initBlockManager();
+ /**
+ * Get the EventUtil class
+ * @return
+ */
EventUtil initEventUtil();
+ /**
+ * Get the chunk manager
+ * @return
+ */
ChunkManager initChunkManager();
+ /**
+ * Get the setuputils class (used for world creation)
+ * @return
+ */
SetupUtils initSetupUtils();
+ /**
+ * Get HybridUtils class (common functions useful for hybrid world generation)
+ * @return
+ */
HybridUtils initHybridUtils();
+
+ /**
+ * Start the metrics task
+ */
+ void startMetrics();
+
+ /**
+ * If a world is already loaded, set the generator (use NMS if required)
+ * @param world
+ */
+ void setGenerator(String world);
+ /**
+ * Get the UUIDHandlerImplementation which will cache and provide UUIDs
+ * @return
+ */
UUIDHandlerImplementation initUUIDHandler();
+ /**
+ * Get the InventoryUtil class (used for implementation specific inventory guis)
+ * @return
+ */
InventoryUtil initInventoryUtil();
+ /**
+ * Run the converter for the implementation (not necessarily PlotMe, just any plugin that we can convert from)
+ * @return
+ */
boolean initPlotMeConverter();
+ /**
+ * Unregister a PlotPlayer from cache e.g. if they have logged off
+ * @param player
+ */
void unregister(PlotPlayer player);
+ /**
+ * Get the generator wrapper for a world (world) and generator (name)
+ * @param world
+ * @param name
+ * @return
+ */
PlotGenerator> getGenerator(String world, String name);
+ /**
+ * Get the PlotListener class for this implementation
+ * (We should try to make this generic so we don't need this)
+ * @return
+ */
APlotListener initPlotListener();
+ /**
+ * Register the chunk processor which will clean out chunks that have too many blockstates or entities
+ */
void registerChunkProcessor();
+ /**
+ * Register the world initialization events (used to keep track of worlds being generated)
+ */
void registerWorldEvents();
+ /**
+ * This class is currently really empty, but player related stuff can go in here
+ * @return
+ */
PlayerManager initPlayerManager();
+ /**
+ * Get the name of the server
+ * @return
+ */
String getServerName();
}
diff --git a/src/main/java/com/intellectualcrafters/plot/PS.java b/src/main/java/com/intellectualcrafters/plot/PS.java
index 44b9f394d..47843e683 100644
--- a/src/main/java/com/intellectualcrafters/plot/PS.java
+++ b/src/main/java/com/intellectualcrafters/plot/PS.java
@@ -1,5 +1,6 @@
package com.intellectualcrafters.plot;
+import com.intellectualcrafters.configuration.ConfigurationSection;
import com.intellectualcrafters.configuration.file.YamlConfiguration;
import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.config.Configuration;
@@ -114,6 +115,12 @@ public class PS {
IMP.registerForceFieldEvents();
IMP.registerWorldEditEvents();
IMP.registerWorldEvents();
+ if (Settings.METRICS) {
+ IMP.startMetrics();
+ } else {
+ log("&dUsing metrics will allow us to improve the plugin, please consider it :)");
+ }
+ IMP.startMetrics();
if (Settings.TNT_LISTENER) {
IMP.registerTNTListener();
}
@@ -122,6 +129,7 @@ public class PS {
}
// create UUIDWrapper
UUIDHandler.implementation = IMP.initUUIDHandler();
+ UUIDHandler.implementation.startCaching(null); // TODO maybe a notification when this is done?
// create event util class
EventUtil.manager = IMP.initEventUtil();
// create Hybrid utility class
@@ -171,9 +179,21 @@ public class PS {
}
}, 200);
}
+
+ // Auto clearing
if (Settings.AUTO_CLEAR) {
ExpireManager.runTask();
}
+
+ // World generators:
+ ConfigurationSection section = config.getConfigurationSection("worlds");
+ if (section != null) {
+ for (String world : section.getKeys(false)) {
+ if (BlockManager.manager.isWorld(world)) {
+ break;
+ }
+ }
+ }
// Copy files
copyFile("town.template", "templates");
diff --git a/src/main/java/com/intellectualcrafters/plot/commands/DebugClaimTest.java b/src/main/java/com/intellectualcrafters/plot/commands/DebugClaimTest.java
index 8e7687787..86ed50d52 100644
--- a/src/main/java/com/intellectualcrafters/plot/commands/DebugClaimTest.java
+++ b/src/main/java/com/intellectualcrafters/plot/commands/DebugClaimTest.java
@@ -89,7 +89,7 @@ public class DebugClaimTest extends SubCommand {
}
final Location loc = manager.getSignLoc(plotworld, plot);
final ChunkLoc chunk = new ChunkLoc(loc.getX() >> 4, loc.getZ() >> 4);
- final boolean result = ChunkManager.manager.loadChunk(world, chunk);
+ final boolean result = ChunkManager.manager.loadChunk(world, chunk, false);
if (!result) {
continue;
}
diff --git a/src/main/java/com/intellectualcrafters/plot/commands/DebugExec.java b/src/main/java/com/intellectualcrafters/plot/commands/DebugExec.java
index 58b28a349..e3ac427c6 100644
--- a/src/main/java/com/intellectualcrafters/plot/commands/DebugExec.java
+++ b/src/main/java/com/intellectualcrafters/plot/commands/DebugExec.java
@@ -23,11 +23,12 @@ package com.intellectualcrafters.plot.commands;
import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.flag.FlagManager;
-import com.intellectualcrafters.plot.generator.BukkitHybridUtils;
import com.intellectualcrafters.plot.generator.HybridUtils;
import com.intellectualcrafters.plot.object.*;
import com.intellectualcrafters.plot.util.*;
+import com.plotsquared.bukkit.util.BukkitHybridUtils;
import com.plotsquared.general.commands.CommandDeclaration;
+
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
@@ -153,7 +154,7 @@ public class DebugExec extends SubCommand {
ChunkLoc chunk = BukkitHybridUtils.chunks.get(0);
BukkitHybridUtils.chunks.remove(0);
HybridUtils.manager.regenerateRoad(BukkitHybridUtils.world, chunk, 0);
- ChunkManager.manager.unloadChunk(BukkitHybridUtils.world, chunk);
+ ChunkManager.manager.unloadChunk(BukkitHybridUtils.world, chunk, true, true);
}
PS.log("&cCancelled!");
return true;
diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Info.java b/src/main/java/com/intellectualcrafters/plot/commands/Info.java
index f9dd7da78..203d9651e 100644
--- a/src/main/java/com/intellectualcrafters/plot/commands/Info.java
+++ b/src/main/java/com/intellectualcrafters/plot/commands/Info.java
@@ -28,11 +28,15 @@ import com.intellectualcrafters.plot.flag.FlagManager;
import com.intellectualcrafters.plot.object.Location;
import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotId;
+import com.intellectualcrafters.plot.object.PlotInventory;
+import com.intellectualcrafters.plot.object.PlotItemStack;
import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.*;
-import com.plotsquared.bukkit.object.InfoInventory;
import com.plotsquared.general.commands.CommandDeclaration;
+
import org.apache.commons.lang.StringUtils;
+import org.bukkit.Material;
+import org.bukkit.inventory.ItemStack;
import java.util.ArrayList;
import java.util.Collection;
@@ -129,7 +133,22 @@ public class Info extends SubCommand {
}
}
if ((args.length == 1) && args[0].equalsIgnoreCase("inv")) {
- new InfoInventory(plot, player).build().display();
+ PlotInventory inv = new PlotInventory(player) {
+ @Override
+ public boolean onClick(int index) {
+ // TODO InfoInventory not implemented yet!!!!!!!!
+ // See plot rating or musicsubcommand on examples
+ return false;
+ }
+ };
+ UUID uuid = player.getUUID();
+ String name = MainUtil.getName(plot.owner);
+ inv.setItem(1, new PlotItemStack(388, (short) 0, 1, "&cPlot Info", new String[] { "&cID: &6" + plot.getId().toString(), "&cOwner: &6" + name, "&cAlias: &6" + plot.getSettings().getAlias(), "&cBiome: &6" + plot.getSettings().getBiome().toString().replaceAll("_", "").toLowerCase(), "&cCan Build: &6" + plot.isAdded(uuid), "&cIs Denied: &6" + plot.isDenied(uuid)}));
+ inv.setItem(1, new PlotItemStack(388, (short) 0, 1, "&cTrusted", new String[] {"&cAmount: &6" + plot.getTrusted().size(), "&8Click to view a list of the trusted users"}));
+ inv.setItem(1, new PlotItemStack(388, (short) 0, 1, "&cMembers", new String[] {"&cAmount: &6" + plot.getMembers().size(), "&8Click to view a list of plot members"}));
+ inv.setItem(1, new PlotItemStack(388, (short) 0, 1, "&cDenied", new String[] {"&cDenied", "&cAmount: &6" + plot.getDenied().size(), "&8Click to view a list of denied players"}));
+ inv.setItem(1, new PlotItemStack(388, (short) 0, 1, "&cFlags", new String[] {"&cFlags", "&cAmount: &6" + plot.getSettings().flags.size(), "&8Click to view a list of plot flags"}));
+ inv.openInventory();
return true;
}
final boolean hasOwner = plot.hasOwner();
@@ -194,7 +213,7 @@ public class Info extends SubCommand {
final String alias = plot.getSettings().getAlias().length() > 0 ? plot.getSettings().getAlias() : C.NONE.s();
Location top = MainUtil.getPlotTopLoc(world, plot.id);
Location bot = MainUtil.getPlotBottomLoc(world, plot.id).add(1, 0, 1);
- final String biome = BlockManager.manager.getBiome(bot.add((top.getX() - bot.getX()) / 2, 0, (top.getX() - bot.getX()) / 2));
+ final String biome = BlockManager.manager.getBiome(plot.world, bot.getX() + ((top.getX() - bot.getX()) / 2), bot.getZ() + ((top.getZ() - bot.getZ()) / 2));
final String trusted = getPlayerList(plot.getTrusted());
final String members = getPlayerList(plot.getMembers());
final String denied = getPlayerList(plot.getDenied());
diff --git a/src/main/java/com/intellectualcrafters/plot/generator/HybridPlotManager.java b/src/main/java/com/intellectualcrafters/plot/generator/HybridPlotManager.java
index bbbc6e045..7b0703625 100644
--- a/src/main/java/com/intellectualcrafters/plot/generator/HybridPlotManager.java
+++ b/src/main/java/com/intellectualcrafters/plot/generator/HybridPlotManager.java
@@ -23,10 +23,10 @@ package com.intellectualcrafters.plot.generator;
import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.commands.Template;
import com.intellectualcrafters.plot.object.*;
+import com.intellectualcrafters.plot.util.BlockManager;
import com.intellectualcrafters.plot.util.ChunkManager;
import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.SetBlockQueue;
-import com.plotsquared.bukkit.util.bukkit.BukkitUtil;
import java.io.File;
import java.io.IOException;
@@ -181,14 +181,14 @@ public class HybridPlotManager extends ClassicPlotManager {
public void run() {
// If the chunk isn't near the edge and it isn't an augmented world we can just regen the whole chunk
if (canRegen && value[6] == 0) {
- BukkitUtil.regenerateChunk(world, value[0], value[1]);
+ ChunkManager.manager.regenerateChunk(world, new ChunkLoc(value[0], value[1]));
return;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Otherwise we need to set each component, as we don't want to regenerate the road or other plots that share the same chunk //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Set the biome
- BukkitUtil.setBiome(plot.world, value[2], value[3], value[4], value[5], dpw.PLOT_BIOME);
+ MainUtil.setBiome(world, value[2], value[3], value[4], value[5], dpw.PLOT_BIOME);
// These two locations are for each component (e.g. bedrock, main block, floor, air)
Location bot = new Location(world, value[2], 0, value[3]);
Location top = new Location(world, value[4] + 1, 1, value[5] + 1);
diff --git a/src/main/java/com/intellectualcrafters/plot/generator/HybridPop.java b/src/main/java/com/intellectualcrafters/plot/generator/HybridPop.java
index 6b808bcfd..035a79dd1 100644
--- a/src/main/java/com/intellectualcrafters/plot/generator/HybridPop.java
+++ b/src/main/java/com/intellectualcrafters/plot/generator/HybridPop.java
@@ -7,7 +7,7 @@ import com.intellectualcrafters.plot.object.PseudoRandom;
import com.intellectualcrafters.plot.object.RegionWrapper;
import com.intellectualcrafters.plot.object.schematic.PlotItem;
import com.intellectualcrafters.plot.util.BlockManager;
-import com.plotsquared.bukkit.object.PlotPopulator;
+import com.plotsquared.bukkit.object.BukkitPlotPopulator;
import org.bukkit.World;
import org.bukkit.block.Biome;
@@ -17,7 +17,7 @@ import java.util.HashSet;
/**
* @author Citymonstret
*/
-public class HybridPop extends PlotPopulator {
+public class HybridPop extends BukkitPlotPopulator {
/*
* Sorry, this isn't well documented at the moment.
* We advise you to take a look at a world generation tutorial for
diff --git a/src/main/java/com/intellectualcrafters/plot/generator/HybridUtils.java b/src/main/java/com/intellectualcrafters/plot/generator/HybridUtils.java
index 619a4dfaf..a6e31bd72 100644
--- a/src/main/java/com/intellectualcrafters/plot/generator/HybridUtils.java
+++ b/src/main/java/com/intellectualcrafters/plot/generator/HybridUtils.java
@@ -89,7 +89,7 @@ public abstract class HybridUtils {
final PlotId id1 = manager.getPlotId(plotworld, x, 0, z);
final PlotId id2 = manager.getPlotId(plotworld, ex, 0, ez);
if ((id1 == null) || (id2 == null) || (id1 != id2)) {
- final boolean result = ChunkManager.manager.loadChunk(world, chunk);
+ final boolean result = ChunkManager.manager.loadChunk(world, chunk, false);
if (result) {
if (id1 != null) {
final Plot p1 = MainUtil.getPlot(world, id1);
diff --git a/src/main/java/com/intellectualcrafters/plot/generator/SquarePlotManager.java b/src/main/java/com/intellectualcrafters/plot/generator/SquarePlotManager.java
index 8bf5cb277..6601f9fc1 100644
--- a/src/main/java/com/intellectualcrafters/plot/generator/SquarePlotManager.java
+++ b/src/main/java/com/intellectualcrafters/plot/generator/SquarePlotManager.java
@@ -186,25 +186,12 @@ public abstract class SquarePlotManager extends GridPlotManager {
* Set a plot biome
*/
@Override
- public boolean setBiome(final Plot plot, final int biome) {
+ public boolean setBiome(final Plot plot, final String biome) {
final int bottomX = MainUtil.getPlotBottomLoc(plot.world, plot.id).getX() - 1;
- final int topX = MainUtil.getPlotTopLoc(plot.world, plot.id).getX() + 1;
+ final int topX = MainUtil.getPlotTopLoc(plot.world, plot.id).getX();
final int bottomZ = MainUtil.getPlotBottomLoc(plot.world, plot.id).getZ() - 1;
- final int topZ = MainUtil.getPlotTopLoc(plot.world, plot.id).getZ() + 1;
- final int size = ((topX - bottomX) + 1) * ((topZ - bottomZ) + 1);
- final int[] xb = new int[size];
- final int[] zb = new int[size];
- final int[] biomes = new int[size];
- int index = 0;
- for (int x = bottomX; x <= topX; x++) {
- for (int z = bottomZ; z <= topZ; z++) {
- xb[index] = x;
- zb[index] = z;
- biomes[index] = biome;
- index++;
- }
- }
- BlockManager.setBiomes(plot.world, xb, zb, biomes);
+ final int topZ = MainUtil.getPlotTopLoc(plot.world, plot.id).getZ();
+ MainUtil.setBiome(plot.world, bottomX, bottomZ, topX, topZ, biome);
return true;
}
}
diff --git a/src/main/java/com/plotsquared/bukkit/object/BlockWrapper.java b/src/main/java/com/intellectualcrafters/plot/object/BlockWrapper.java
similarity index 76%
rename from src/main/java/com/plotsquared/bukkit/object/BlockWrapper.java
rename to src/main/java/com/intellectualcrafters/plot/object/BlockWrapper.java
index 8eeaf0ac1..518c562fa 100644
--- a/src/main/java/com/plotsquared/bukkit/object/BlockWrapper.java
+++ b/src/main/java/com/intellectualcrafters/plot/object/BlockWrapper.java
@@ -18,7 +18,7 @@
// /
// You can contact us via: support@intellectualsites.com /
////////////////////////////////////////////////////////////////////////////////////////////////////
-package com.plotsquared.bukkit.object;
+package com.intellectualcrafters.plot.object;
import org.bukkit.World;
import org.bukkit.block.Block;
@@ -69,32 +69,4 @@ public class BlockWrapper {
this.id = id;
this.data = data;
}
-
- /**
- * Alternative Constructor Uses block data, rather than typed data
- *
- * @param block Block from which we get the data
- */
- @SuppressWarnings({ "deprecation", "unused" })
- public BlockWrapper(final Block block) {
- this.x = block.getX();
- this.y = block.getY();
- this.z = block.getZ();
- this.id = block.getTypeId();
- this.data = block.getData();
- }
-
- /**
- * Get a block based on the block wrapper
- *
- * @param world World in which the block is/will be, located
- *
- * @return block created/fetched from settings
- */
- @SuppressWarnings({ "unused", "deprecation" })
- public Block toBlock(final World world) {
- final Block block = world.getBlockAt(this.x, this.y, this.z);
- block.setTypeIdAndData(this.id, this.data, true);
- return block;
- }
}
diff --git a/src/main/java/com/intellectualcrafters/plot/object/PlotAnalysis.java b/src/main/java/com/intellectualcrafters/plot/object/PlotAnalysis.java
index 68078be47..67c16a63a 100644
--- a/src/main/java/com/intellectualcrafters/plot/object/PlotAnalysis.java
+++ b/src/main/java/com/intellectualcrafters/plot/object/PlotAnalysis.java
@@ -4,10 +4,10 @@ import com.intellectualcrafters.configuration.file.YamlConfiguration;
import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.flag.Flag;
import com.intellectualcrafters.plot.flag.FlagManager;
-import com.intellectualcrafters.plot.generator.BukkitHybridUtils;
import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.MathMan;
import com.intellectualcrafters.plot.util.TaskManager;
+import com.plotsquared.bukkit.util.BukkitHybridUtils;
import java.io.IOException;
import java.lang.reflect.Array;
diff --git a/src/main/java/com/intellectualcrafters/plot/object/PlotItemStack.java b/src/main/java/com/intellectualcrafters/plot/object/PlotItemStack.java
index 1f7d6cbde..ea499ae7c 100644
--- a/src/main/java/com/intellectualcrafters/plot/object/PlotItemStack.java
+++ b/src/main/java/com/intellectualcrafters/plot/object/PlotItemStack.java
@@ -7,7 +7,7 @@ public class PlotItemStack {
public final String name;
public final String[] lore;
- public PlotItemStack(int id, short data, int amount, String name, String[] lore) {
+ public PlotItemStack(int id, short data, int amount, String name, String... lore) {
this.id = id;
this.data = data;
this.amount = amount;
diff --git a/src/main/java/com/intellectualcrafters/plot/object/PlotManager.java b/src/main/java/com/intellectualcrafters/plot/object/PlotManager.java
index 50b0c9007..9f868ca0a 100644
--- a/src/main/java/com/intellectualcrafters/plot/object/PlotManager.java
+++ b/src/main/java/com/intellectualcrafters/plot/object/PlotManager.java
@@ -61,7 +61,7 @@ public abstract class PlotManager {
public abstract boolean setComponent(final PlotWorld plotworld, final PlotId plotid, final String component, final PlotBlock[] blocks);
- public abstract boolean setBiome(final Plot plot, final int biome);
+ public abstract boolean setBiome(final Plot plot, final String biome);
/*
* PLOT MERGING (return false if your generator does not support plot
diff --git a/src/main/java/com/intellectualcrafters/plot/object/PlotSettings.java b/src/main/java/com/intellectualcrafters/plot/object/PlotSettings.java
index 22e5c2705..10c09b39e 100644
--- a/src/main/java/com/intellectualcrafters/plot/object/PlotSettings.java
+++ b/src/main/java/com/intellectualcrafters/plot/object/PlotSettings.java
@@ -116,7 +116,7 @@ public class PlotSettings {
*/
public String getBiome() {
final Location loc = MainUtil.getPlotBottomLoc(this.plot.world, this.plot.getId()).add(1, 0, 1);
- return BlockManager.manager.getBiome(loc);
+ return BlockManager.manager.getBiome(loc.getWorld(), loc.getX(), loc.getZ());
}
public BlockLoc getPosition() {
diff --git a/src/main/java/com/intellectualcrafters/plot/util/BlockManager.java b/src/main/java/com/intellectualcrafters/plot/util/BlockManager.java
index 369f1a5ef..db437a761 100644
--- a/src/main/java/com/intellectualcrafters/plot/util/BlockManager.java
+++ b/src/main/java/com/intellectualcrafters/plot/util/BlockManager.java
@@ -21,9 +21,11 @@ public abstract class BlockManager {
public abstract int getBlockIdFromString(String block);
- public abstract int getHeighestBlock(Location loc);
+ public abstract int getHeighestBlock(String world, int x, int z);
- public abstract String getBiome(Location loc);
+ public abstract String getBiome(String world, int x, int z);
+
+ public abstract PlotBlock getBlock(Location loc);
public abstract Location getSpawn(String world);
@@ -37,9 +39,9 @@ public abstract class BlockManager {
public abstract void functionSetBlock(String worldname, int x, int y, int z, int id, byte data);
- public abstract void functionSetBiomes(final String worldname, final int[] x, final int z[], final int[] biome);
+ public abstract void functionSetBiomes(final String worldname, final int[] x, final int z[], final String biome);
- public static void setBiomes(final String worldname, final int[] x, final int z[], final int[] biome) {
+ public static void setBiomes(final String worldname, final int[] x, final int z[], final String biome) {
manager.functionSetBiomes(worldname, x, z, biome);
}
diff --git a/src/main/java/com/intellectualcrafters/plot/util/ChunkManager.java b/src/main/java/com/intellectualcrafters/plot/util/ChunkManager.java
index 71fa3ad9a..c5a55b576 100644
--- a/src/main/java/com/intellectualcrafters/plot/util/ChunkManager.java
+++ b/src/main/java/com/intellectualcrafters/plot/util/ChunkManager.java
@@ -92,9 +92,9 @@ public abstract class ChunkManager {
public abstract int[] countEntities(Plot plot);
- public abstract boolean loadChunk(String world, ChunkLoc loc);
+ public abstract boolean loadChunk(String world, ChunkLoc loc, boolean force);
- public abstract boolean unloadChunk(String world, ChunkLoc loc);
+ public abstract boolean unloadChunk(String world, ChunkLoc loc, boolean save, boolean safe);
public abstract List getChunkChunks(String world);
diff --git a/src/main/java/com/intellectualcrafters/plot/util/ClusterManager.java b/src/main/java/com/intellectualcrafters/plot/util/ClusterManager.java
index 47ca6b4c0..c7a1570c8 100644
--- a/src/main/java/com/intellectualcrafters/plot/util/ClusterManager.java
+++ b/src/main/java/com/intellectualcrafters/plot/util/ClusterManager.java
@@ -51,7 +51,7 @@ public class ClusterManager {
} else {
toReturn = getClusterBottom(cluster).add(home.x, home.y, home.z);
}
- final int max = BukkitUtil.getHeighestBlock(cluster.world, toReturn.getX(), toReturn.getZ());
+ final int max = MainUtil.getHeighestBlock(cluster.world, toReturn.getX(), toReturn.getZ());
if (max > toReturn.getY()) {
toReturn.setY(max);
}
diff --git a/src/main/java/com/intellectualcrafters/plot/util/MainUtil.java b/src/main/java/com/intellectualcrafters/plot/util/MainUtil.java
index d1b572f1c..fb624e5f7 100644
--- a/src/main/java/com/intellectualcrafters/plot/util/MainUtil.java
+++ b/src/main/java/com/intellectualcrafters/plot/util/MainUtil.java
@@ -54,6 +54,17 @@ public class MainUtil {
return true;
}
+ public static String getName(UUID owner) {
+ if (owner == null) {
+ return "unowned";
+ }
+ String name = UUIDHandler.getName(owner);
+ if (name == null) {
+ return "unknown";
+ }
+ return name;
+ }
+
public static List getPlayersInPlot(Plot plot) {
ArrayList players = new ArrayList<>();
for (PlotPlayer pp : UUIDHandler.getPlayers().values()) {
@@ -1032,9 +1043,10 @@ public class MainUtil {
ChunkManager.chunkTask(pos1, pos2, new RunnableVal() {
@Override
public void run() {
- BukkitUtil.loadChunkAt(plot.world, value[0], value[1], false);
- BukkitUtil.setBiome(plot.world, value[2], value[3], value[4], value[4], biome);
- BukkitUtil.unloadChunkAt(plot.world, value[0], value[1], true, true);
+ ChunkLoc loc = new ChunkLoc(value[0], value[1]);
+ ChunkManager.manager.loadChunk(plot.world, loc, false);
+ setBiome(plot.world, value[2], value[3], value[4], value[4], biome);
+ ChunkManager.manager.unloadChunk(plot.world, loc, true, true);
}
}, new Runnable() {
@Override
@@ -1045,8 +1057,23 @@ public class MainUtil {
}, 5);
}
+ public static void setBiome(final String world, int p1x, int p1z, int p2x, int p2z, final String biome) {
+ final int length = (p2x - p1x + 1) * (p2z - p1z + 1);
+ final int[] xl = new int[length];
+ final int[] zl = new int[length];
+ int index = 0;
+ for (int x = p1x; x <= p2x; x++) {
+ for (int z = p1z; z <= p2z; z++) {
+ xl[index] = x;
+ zl[index] = z;
+ index++;
+ }
+ }
+ BlockManager.setBiomes(world, xl, zl, biome);
+ }
+
public static int getHeighestBlock(final String world, final int x, final int z) {
- final int result = BukkitUtil.getHeighestBlock(world, x, z);
+ final int result = BlockManager.manager.getHeighestBlock(world, x, z);
if (result == 0) {
return 64;
}
@@ -1070,7 +1097,7 @@ public class MainUtil {
return getDefaultHome(plot);
} else {
Location loc = new Location(bot.getWorld(), bot.getX() + home.x, bot.getY() + home.y, bot.getZ() + home.z);
- if (BukkitUtil.getBlock(loc).id != 0) {
+ if (BlockManager.manager.getBlock(loc).id != 0) {
// sendConsoleMessage("ID was " + BukkitUtil.getBlock(loc).id);
loc.setY(Math.max(getHeighestBlock(w, bot.getX(), bot.getZ()), bot.getY()));
}
diff --git a/src/main/java/com/intellectualcrafters/plot/util/SchematicHandler.java b/src/main/java/com/intellectualcrafters/plot/util/SchematicHandler.java
index 1d73ece80..80093a954 100644
--- a/src/main/java/com/intellectualcrafters/plot/util/SchematicHandler.java
+++ b/src/main/java/com/intellectualcrafters/plot/util/SchematicHandler.java
@@ -152,7 +152,7 @@ public abstract class SchematicHandler {
y_offset = 0;
}
else {
- y_offset = BukkitUtil.getHeighestBlock(plot.world, bottom.getX() + 1, bottom.getZ() + 1);
+ y_offset = MainUtil.getHeighestBlock(plot.world, bottom.getX() + 1, bottom.getZ() + 1);
}
Location pos1 = MainUtil.getPlotBottomLoc(plot.world, plot.id).add(1 + x_offset, y_offset - 1, 1 + z_offset);
Location pos2 = pos1.clone().add(WIDTH - 1, HEIGHT - 1, LENGTH - 1);
@@ -346,10 +346,10 @@ public abstract class SchematicHandler {
return false;
}
Location l1 = MainUtil.getPlotBottomLoc(plot.world, plot.getId());
- final int sy = BukkitUtil.getHeighestBlock(plot.world, l1.getX() + 1, l1.getZ() + 1);
+ final int sy = MainUtil.getHeighestBlock(plot.world, l1.getX() + 1, l1.getZ() + 1);
final Dimension demensions = schematic.getSchematicDimension();
final int HEIGHT = demensions.getY();
- if (!(HEIGHT == BukkitUtil.getMaxHeight(plot.world))) {
+ if ((HEIGHT < 255)) {
l1 = l1.add(1, sy - 1, 1);
} else {
l1 = l1.add(1, 0, 1);
diff --git a/src/main/java/com/plotsquared/bukkit/BukkitMain.java b/src/main/java/com/plotsquared/bukkit/BukkitMain.java
index 0cffa42ee..31c8fa170 100644
--- a/src/main/java/com/plotsquared/bukkit/BukkitMain.java
+++ b/src/main/java/com/plotsquared/bukkit/BukkitMain.java
@@ -1,5 +1,19 @@
package com.plotsquared.bukkit;
+import java.io.File;
+import java.util.Arrays;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.Location;
+import org.bukkit.World;
+import org.bukkit.command.PluginCommand;
+import org.bukkit.entity.Entity;
+import org.bukkit.event.Listener;
+import org.bukkit.generator.ChunkGenerator;
+import org.bukkit.plugin.Plugin;
+import org.bukkit.plugin.java.JavaPlugin;
+
import com.intellectualcrafters.plot.IPlotMain;
import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.commands.MainCommand;
@@ -7,14 +21,20 @@ import com.intellectualcrafters.plot.commands.WE_Anywhere;
import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.config.Settings;
import com.intellectualcrafters.plot.flag.FlagManager;
-import com.intellectualcrafters.plot.generator.BukkitHybridUtils;
import com.intellectualcrafters.plot.generator.HybridUtils;
import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.object.PlotWorld;
-import com.intellectualcrafters.plot.util.*;
-import com.plotsquared.bukkit.uuid.DefaultUUIDWrapper;
-import com.plotsquared.bukkit.uuid.LowerOfflineUUIDWrapper;
-import com.plotsquared.bukkit.uuid.OfflineUUIDWrapper;
+import com.intellectualcrafters.plot.util.BlockManager;
+import com.intellectualcrafters.plot.util.BlockUpdateUtil;
+import com.intellectualcrafters.plot.util.ChunkManager;
+import com.intellectualcrafters.plot.util.ConsoleColors;
+import com.intellectualcrafters.plot.util.EconHandler;
+import com.intellectualcrafters.plot.util.EventUtil;
+import com.intellectualcrafters.plot.util.InventoryUtil;
+import com.intellectualcrafters.plot.util.MainUtil;
+import com.intellectualcrafters.plot.util.PlayerManager;
+import com.intellectualcrafters.plot.util.TaskManager;
+import com.intellectualcrafters.plot.util.UUIDHandlerImplementation;
import com.intellectualcrafters.plot.uuid.UUIDWrapper;
import com.plotsquared.bukkit.commands.BukkitCommand;
import com.plotsquared.bukkit.database.plotme.ClassicPlotMeConnector;
@@ -22,33 +42,44 @@ import com.plotsquared.bukkit.database.plotme.LikePlotMeConverter;
import com.plotsquared.bukkit.database.plotme.PlotMeConnector_017;
import com.plotsquared.bukkit.generator.BukkitGeneratorWrapper;
import com.plotsquared.bukkit.generator.HybridGen;
-import com.plotsquared.bukkit.listeners.*;
+import com.plotsquared.bukkit.listeners.APlotListener;
+import com.plotsquared.bukkit.listeners.ChunkListener;
+import com.plotsquared.bukkit.listeners.ForceFieldListener;
+import com.plotsquared.bukkit.listeners.PlayerEvents;
+import com.plotsquared.bukkit.listeners.PlayerEvents_1_8;
+import com.plotsquared.bukkit.listeners.PlayerEvents_1_8_3;
+import com.plotsquared.bukkit.listeners.PlotListener;
+import com.plotsquared.bukkit.listeners.PlotPlusListener;
+import com.plotsquared.bukkit.listeners.TNTListener;
+import com.plotsquared.bukkit.listeners.WorldEvents;
import com.plotsquared.bukkit.listeners.worldedit.WEListener;
import com.plotsquared.bukkit.listeners.worldedit.WESubscriber;
import com.plotsquared.bukkit.titles.AbstractTitle;
import com.plotsquared.bukkit.titles.DefaultTitle;
+import com.plotsquared.bukkit.util.BukkitHybridUtils;
import com.plotsquared.bukkit.util.SetupUtils;
-import com.plotsquared.bukkit.util.bukkit.*;
+import com.plotsquared.bukkit.util.bukkit.BukkitChunkManager;
+import com.plotsquared.bukkit.util.bukkit.BukkitEconHandler;
+import com.plotsquared.bukkit.util.bukkit.BukkitEventUtil;
+import com.plotsquared.bukkit.util.bukkit.BukkitInventoryUtil;
+import com.plotsquared.bukkit.util.bukkit.BukkitPlayerManager;
+import com.plotsquared.bukkit.util.bukkit.BukkitSetBlockManager;
+import com.plotsquared.bukkit.util.bukkit.BukkitSetupUtils;
+import com.plotsquared.bukkit.util.bukkit.BukkitTaskManager;
+import com.plotsquared.bukkit.util.bukkit.BukkitUtil;
+import com.plotsquared.bukkit.util.bukkit.Metrics;
+import com.plotsquared.bukkit.util.bukkit.SendChunk;
+import com.plotsquared.bukkit.util.bukkit.SetBlockFast;
+import com.plotsquared.bukkit.util.bukkit.SetBlockFast_1_8;
+import com.plotsquared.bukkit.util.bukkit.SetBlockSlow;
+import com.plotsquared.bukkit.util.bukkit.SetGenCB;
import com.plotsquared.bukkit.util.bukkit.uuid.FileUUIDHandler;
import com.plotsquared.bukkit.util.bukkit.uuid.SQLUUIDHandler;
+import com.plotsquared.bukkit.uuid.DefaultUUIDWrapper;
+import com.plotsquared.bukkit.uuid.LowerOfflineUUIDWrapper;
+import com.plotsquared.bukkit.uuid.OfflineUUIDWrapper;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.Location;
-import org.bukkit.World;
-import org.bukkit.command.PluginCommand;
-import org.bukkit.entity.Entity;
-import org.bukkit.entity.Player;
-import org.bukkit.event.Listener;
-import org.bukkit.generator.ChunkGenerator;
-import org.bukkit.plugin.Plugin;
-import org.bukkit.plugin.java.JavaPlugin;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.List;
-import java.util.UUID;
public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
@@ -79,29 +110,6 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
public void onEnable() {
THIS = this;
PS.instance = new PS(this);
- if (Settings.METRICS) {
- try {
- final Metrics metrics = new Metrics(this);
- metrics.start();
- log(C.PREFIX.s() + "&6Metrics enabled.");
- } catch (final Exception e) {
- log(C.PREFIX.s() + "&cFailed to load up metrics.");
- }
- } else {
- log("&dUsing metrics will allow us to improve the plugin, please consider it :)");
- }
- List worlds = Bukkit.getWorlds();
- if (worlds.size() > 0) {
- UUIDHandler.startCaching(null);
- for (World world : worlds) {
- try {
- SetGenCB.setGenerator(world);
- } catch (Exception e) {
- log("Failed to reload world: " + world.getName());
- Bukkit.getServer().unloadWorld(world, false);
- }
- }
- }
}
@Override
@@ -142,15 +150,6 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
return new int[] { Integer.parseInt(split[0]), Integer.parseInt(split[1]), Integer.parseInt(split[2]) };
}
- @Override
- public void handleKick(UUID uuid, C c) {
- Player player = Bukkit.getPlayer(uuid);
- if (player != null && player.isOnline()) {
- MainUtil.sendMessage(BukkitUtil.getPlayer(player), c);
- player.teleport(player.getWorld().getSpawnLocation());
- }
- }
-
@Override
public void registerCommands() {
final BukkitCommand bcmd = new BukkitCommand();
@@ -323,7 +322,9 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
@Override
public void registerInventoryEvents() {
- getServer().getPluginManager().registerEvents(new InventoryListener(), this);
+
+ // Part of PlayerEvents - can be moved if necessary
+
}
@Override
@@ -522,4 +523,25 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
public String getServerName() {
return Bukkit.getServerName();
}
+
+ @Override
+ public void startMetrics() {
+ try {
+ final Metrics metrics = new Metrics(this);
+ metrics.start();
+ log(C.PREFIX.s() + "&6Metrics enabled.");
+ } catch (final Exception e) {
+ log(C.PREFIX.s() + "&cFailed to load up metrics.");
+ }
+ }
+
+ @Override
+ public void setGenerator(String world) {
+ try {
+ SetGenCB.setGenerator(BukkitUtil.getWorld(world));
+ } catch (Exception e) {
+ log("Failed to reload world: " + world);
+ Bukkit.getServer().unloadWorld(world, false);
+ }
+ }
}
diff --git a/src/main/java/com/plotsquared/bukkit/generator/AugmentedPopulator.java b/src/main/java/com/plotsquared/bukkit/generator/AugmentedPopulator.java
index 1b5d7f975..11d678848 100644
--- a/src/main/java/com/plotsquared/bukkit/generator/AugmentedPopulator.java
+++ b/src/main/java/com/plotsquared/bukkit/generator/AugmentedPopulator.java
@@ -4,9 +4,9 @@ import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.object.*;
import com.intellectualcrafters.plot.util.ChunkManager;
import com.intellectualcrafters.plot.util.TaskManager;
-import com.plotsquared.bukkit.object.BlockWrapper;
import com.plotsquared.bukkit.util.bukkit.BukkitChunkManager;
import com.plotsquared.bukkit.util.bukkit.BukkitSetBlockManager;
+
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.World;
diff --git a/src/main/java/com/plotsquared/bukkit/generator/BukkitPlotGenerator.java b/src/main/java/com/plotsquared/bukkit/generator/BukkitPlotGenerator.java
index 45552038e..0f346c90a 100644
--- a/src/main/java/com/plotsquared/bukkit/generator/BukkitPlotGenerator.java
+++ b/src/main/java/com/plotsquared/bukkit/generator/BukkitPlotGenerator.java
@@ -24,7 +24,7 @@ import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.object.*;
import com.intellectualcrafters.plot.util.ChunkManager;
import com.plotsquared.bukkit.listeners.WorldEvents;
-import com.plotsquared.bukkit.object.PlotPopulator;
+import com.plotsquared.bukkit.object.BukkitPlotPopulator;
import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.generator.BlockPopulator;
@@ -226,7 +226,7 @@ public abstract class BukkitPlotGenerator extends ChunkGenerator {
*/
public abstract void generateChunk(final World world, RegionWrapper requiredRegion, final PseudoRandom random, final int cx, final int cz, final BiomeGrid biomes);
- public abstract List getPopulators(String world);
+ public abstract List getPopulators(String world);
/**
* This is called when the generator is initialized.
diff --git a/src/main/java/com/plotsquared/bukkit/generator/HybridGen.java b/src/main/java/com/plotsquared/bukkit/generator/HybridGen.java
index 5165ed8d8..4e85160b4 100644
--- a/src/main/java/com/plotsquared/bukkit/generator/HybridGen.java
+++ b/src/main/java/com/plotsquared/bukkit/generator/HybridGen.java
@@ -24,7 +24,7 @@ import com.intellectualcrafters.plot.generator.HybridPlotManager;
import com.intellectualcrafters.plot.generator.HybridPlotWorld;
import com.intellectualcrafters.plot.generator.HybridPop;
import com.intellectualcrafters.plot.object.*;
-import com.plotsquared.bukkit.object.PlotPopulator;
+import com.plotsquared.bukkit.object.BukkitPlotPopulator;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.block.Biome;
@@ -169,10 +169,10 @@ public class HybridGen extends BukkitPlotGenerator {
/**
* Return the block populator
*/
- public List getPopulators(final String world) {
+ public List getPopulators(final String world) {
// You can have as many populators as you would like, e.g. tree
// populator, ore populator
- return Arrays.asList((PlotPopulator) new HybridPop(this.plotworld));
+ return Arrays.asList((BukkitPlotPopulator) new HybridPop(this.plotworld));
}
diff --git a/src/main/java/com/plotsquared/bukkit/listeners/InventoryListener.java b/src/main/java/com/plotsquared/bukkit/listeners/InventoryListener.java
deleted file mode 100644
index 038319925..000000000
--- a/src/main/java/com/plotsquared/bukkit/listeners/InventoryListener.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.plotsquared.bukkit.listeners;
-
-import com.intellectualcrafters.plot.util.MainUtil;
-import com.plotsquared.bukkit.object.InfoInventory;
-import com.plotsquared.bukkit.util.bukkit.BukkitUtil;
-import org.bukkit.entity.Player;
-import org.bukkit.event.Event;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.Listener;
-import org.bukkit.event.inventory.InventoryClickEvent;
-import org.bukkit.event.inventory.InventoryInteractEvent;
-import org.bukkit.inventory.Inventory;
-
-/**
- * Created 2014-11-18 for PlotSquared
- * @author Citymonstret
- */
-public class InventoryListener implements Listener {
- @EventHandler
- public void onInventoryAction(final InventoryInteractEvent event) {
- if (event.getInventory().getHolder() instanceof InfoInventory) {
- event.setResult(Event.Result.DENY);
- }
- }
-
- @EventHandler
- public void onInventoryClick(final InventoryClickEvent event) {
- final Inventory inventory = event.getInventory();
- final Player player = (Player) event.getWhoClicked();
- if (inventory.getHolder() instanceof InfoInventory) {
- switch (event.getSlot()) {
- case 3:
- case 4:
- case 5:
- case 6:
- MainUtil.sendMessage(BukkitUtil.getPlayer(player), "This is not implemented yet");
- break;
- default:
- break;
- }
- }
- }
-}
diff --git a/src/main/java/com/plotsquared/bukkit/listeners/PlayerEvents.java b/src/main/java/com/plotsquared/bukkit/listeners/PlayerEvents.java
index 2c875711f..bab54a3db 100644
--- a/src/main/java/com/plotsquared/bukkit/listeners/PlayerEvents.java
+++ b/src/main/java/com/plotsquared/bukkit/listeners/PlayerEvents.java
@@ -242,7 +242,7 @@ public class PlayerEvents extends com.plotsquared.bukkit.listeners.PlotListener
Player player = event.getPlayer();
PlotPlayer pp = BukkitUtil.getPlayer(player);
-
+ Location loc = pp.getLocation();
if (!PS.get().isPlotWorld(BukkitUtil.getWorld(player))) {
return;
}
diff --git a/src/main/java/com/plotsquared/bukkit/listeners/PlotListener.java b/src/main/java/com/plotsquared/bukkit/listeners/PlotListener.java
index 1723b0a57..10f644c3d 100644
--- a/src/main/java/com/plotsquared/bukkit/listeners/PlotListener.java
+++ b/src/main/java/com/plotsquared/bukkit/listeners/PlotListener.java
@@ -46,6 +46,10 @@ import java.util.UUID;
* @author Empire92
*/
public class PlotListener extends APlotListener {
+
+ // FIXME if we add a few more functions to PlotPlayer, we could make this generic and not implementation specific
+ // TODO Alternatively we could move functions into BukkitPlayerManager which seems to be heavily lacking
+
public void textures(final Player p) {
if ((Settings.PLOT_SPECIFIC_RESOURCE_PACK.length() > 1) && PS.get().isPlotWorld(p.getWorld().getName())) {
p.setResourcePack(Settings.PLOT_SPECIFIC_RESOURCE_PACK);
diff --git a/src/main/java/com/plotsquared/bukkit/listeners/TNTListener.java b/src/main/java/com/plotsquared/bukkit/listeners/TNTListener.java
index 477f64e8d..b179625ef 100644
--- a/src/main/java/com/plotsquared/bukkit/listeners/TNTListener.java
+++ b/src/main/java/com/plotsquared/bukkit/listeners/TNTListener.java
@@ -92,7 +92,7 @@ public class TNTListener implements Listener {
}
Location landing = loc.add(shortest.getBlockX() + 1, 0, shortest.getBlockZ() + 1);
- int ty = BukkitUtil.getHeighestBlock(worldname, landing.getX(), landing.getZ());
+ int ty = MainUtil.getHeighestBlock(worldname, landing.getX(), landing.getZ());
int diff = ty - loc.getY();
double calcDiff = getY(velocity, Math.sqrt(shortest.getBlockX() * shortest.getBlockX() + shortest.getBlockZ() * shortest.getBlockZ()));
if (calcDiff > diff) {
diff --git a/src/main/java/com/plotsquared/bukkit/listeners/WorldEvents.java b/src/main/java/com/plotsquared/bukkit/listeners/WorldEvents.java
index fdd2fbbc3..d3217f96e 100644
--- a/src/main/java/com/plotsquared/bukkit/listeners/WorldEvents.java
+++ b/src/main/java/com/plotsquared/bukkit/listeners/WorldEvents.java
@@ -40,9 +40,4 @@ public class WorldEvents implements Listener {
}
lastWorld = null;
}
-
- @EventHandler
- public void worldLoad(final WorldLoadEvent event) {
- UUIDHandler.startCaching(null);
- }
}
diff --git a/src/main/java/com/plotsquared/bukkit/object/PlotPopulator.java b/src/main/java/com/plotsquared/bukkit/object/BukkitPlotPopulator.java
similarity index 84%
rename from src/main/java/com/plotsquared/bukkit/object/PlotPopulator.java
rename to src/main/java/com/plotsquared/bukkit/object/BukkitPlotPopulator.java
index 3975a508d..fabf5afec 100644
--- a/src/main/java/com/plotsquared/bukkit/object/PlotPopulator.java
+++ b/src/main/java/com/plotsquared/bukkit/object/BukkitPlotPopulator.java
@@ -1,10 +1,16 @@
package com.plotsquared.bukkit.object;
+import com.intellectualcrafters.plot.object.PlotBlock;
import com.intellectualcrafters.plot.object.PlotLoc;
import com.intellectualcrafters.plot.object.PseudoRandom;
import com.intellectualcrafters.plot.object.RegionWrapper;
+import com.intellectualcrafters.plot.util.BlockManager;
import com.intellectualcrafters.plot.util.ChunkManager;
+import com.intellectualcrafters.plot.util.MainUtil;
+import com.intellectualcrafters.plot.util.SetBlockQueue;
import com.plotsquared.bukkit.util.bukkit.BukkitUtil;
+import com.plotsquared.bukkit.util.bukkit.SetBlockFast;
+
import org.bukkit.Chunk;
import org.bukkit.World;
import org.bukkit.generator.BlockPopulator;
@@ -13,17 +19,20 @@ import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Random;
-public abstract class PlotPopulator extends BlockPopulator {
+public abstract class BukkitPlotPopulator extends BlockPopulator {
private PseudoRandom random = new PseudoRandom();
public int X;
public int Z;
+ public String worldname;
private World world;
+
@Override
public void populate(World world, Random rand, Chunk chunk) {
this.world = world;
+ this.worldname = world.getName();
this.X = chunk.getX() << 4;
this.Z = chunk.getZ() << 4;
if (ChunkManager.FORCE_PASTE) {
@@ -67,7 +76,12 @@ public abstract class PlotPopulator extends BlockPopulator {
* @param data
*/
public void setBlock(int x, int y, int z, short id, byte data) {
- BukkitUtil.setBlock(world, X + x, y, Z + z, id, data);
+ if (data == 0) {
+ SetBlockQueue.setBlock(worldname, x, y, z, id);
+ }
+ else {
+ SetBlockQueue.setBlock(worldname, x, y, z, new PlotBlock(id, data));
+ }
}
/**
diff --git a/src/main/java/com/plotsquared/bukkit/object/InfoInventory.java b/src/main/java/com/plotsquared/bukkit/object/InfoInventory.java
deleted file mode 100644
index fe363524d..000000000
--- a/src/main/java/com/plotsquared/bukkit/object/InfoInventory.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package com.plotsquared.bukkit.object;
-
-import com.intellectualcrafters.plot.object.Plot;
-import com.intellectualcrafters.plot.object.PlotPlayer;
-import com.intellectualcrafters.plot.util.UUIDHandler;
-import com.plotsquared.bukkit.util.bukkit.BukkitUtil;
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.Material;
-import org.bukkit.entity.Player;
-import org.bukkit.inventory.Inventory;
-import org.bukkit.inventory.InventoryHolder;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.meta.ItemMeta;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
-/**
- * Created 2014-11-18 for PlotSquared
- *
- * @author Citymonstret
- */
-public class InfoInventory implements InventoryHolder {
- private final Plot plot;
- private final Inventory inventory;
- private final Player player;
-
- /**
- * Constructor
- *
- * @param plot from which we take information
- */
- public InfoInventory(final Plot plot, final PlotPlayer plr) {
- this.plot = plot;
- this.player = ((BukkitPlayer) plr).player;
- this.inventory = Bukkit.createInventory(this, 9, "Plot: " + plot.id.toString());
- }
-
- @Override
- public Inventory getInventory() {
- return this.inventory;
- }
-
- public String getName(final UUID uuid) {
- final String name = UUIDHandler.getName(this.plot.owner);
- if (name == null) {
- return "unknown";
- }
- return name;
- }
-
- public InfoInventory build() {
- final UUID uuid = UUIDHandler.getUUID(BukkitUtil.getPlayer(this.player));
- final ItemStack generalInfo = getItem(Material.EMERALD, "&cPlot Info", "&cID: &6" + this.plot.getId().toString(), "&cOwner: &6" + getName(this.plot.owner), "&cAlias: &6" + this.plot.getSettings().getAlias(), "&cBiome: &6" + this.plot.getSettings().getBiome().toString().replaceAll("_", "").toLowerCase(), "&cCan Build: &6" + this.plot.isAdded(uuid), "&cIs Denied: &6" + this.plot.isDenied(uuid));
- final ItemStack trusted = getItem(Material.EMERALD, "&cTrusted", "&cAmount: &6" + this.plot.getTrusted().size(), "&8Click to view a list of the trusted users");
- final ItemStack members = getItem(Material.EMERALD, "&cMembers", "&cAmount: &6" + this.plot.getMembers().size(), "&8Click to view a list of plot members");
- final ItemStack denied = getItem(Material.EMERALD, "&cDenied", "&cAmount: &6" + this.plot.getDenied().size(), "&8Click to view a list of denied players");
- final ItemStack flags = getItem(Material.EMERALD, "&cFlags", "&cAmount: &6" + this.plot.getSettings().flags.size(), "&8Click to view a list of plot flags");
- this.inventory.setItem(2, generalInfo);
- this.inventory.setItem(3, trusted);
- this.inventory.setItem(4, members);
- this.inventory.setItem(5, denied);
- this.inventory.setItem(6, flags);
- return this;
- }
-
- public InfoInventory display() {
- this.player.closeInventory();
- this.player.openInventory(this.inventory);
- return this;
- }
-
- private ItemStack getItem(final Material material, final String name, final String... lore) {
- final ItemStack stack = new ItemStack(material);
- final ItemMeta meta = stack.getItemMeta();
- meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', name));
- final List lList = new ArrayList<>();
- for (final String l : lore) {
- lList.add(ChatColor.translateAlternateColorCodes('&', l));
- }
- meta.setLore(lList);
- stack.setItemMeta(meta);
- return stack;
- }
-}
diff --git a/src/main/java/com/intellectualcrafters/plot/generator/BukkitHybridUtils.java b/src/main/java/com/plotsquared/bukkit/util/BukkitHybridUtils.java
similarity index 98%
rename from src/main/java/com/intellectualcrafters/plot/generator/BukkitHybridUtils.java
rename to src/main/java/com/plotsquared/bukkit/util/BukkitHybridUtils.java
index 6f40771ac..bc03af817 100644
--- a/src/main/java/com/intellectualcrafters/plot/generator/BukkitHybridUtils.java
+++ b/src/main/java/com/plotsquared/bukkit/util/BukkitHybridUtils.java
@@ -1,9 +1,11 @@
-package com.intellectualcrafters.plot.generator;
+package com.plotsquared.bukkit.util;
import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.flag.Flag;
import com.intellectualcrafters.plot.flag.FlagManager;
+import com.intellectualcrafters.plot.generator.ClassicPlotWorld;
+import com.intellectualcrafters.plot.generator.HybridUtils;
import com.intellectualcrafters.plot.object.*;
import com.intellectualcrafters.plot.util.ChunkManager;
import com.intellectualcrafters.plot.util.MainUtil;
@@ -12,6 +14,7 @@ import com.intellectualcrafters.plot.util.TaskManager;
import com.plotsquared.bukkit.BukkitMain;
import com.plotsquared.bukkit.generator.AugmentedPopulator;
import com.plotsquared.bukkit.util.bukkit.BukkitUtil;
+
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.Material;
@@ -437,7 +440,7 @@ public class BukkitHybridUtils extends HybridUtils {
ChunkLoc chunk = chunks.get(0);
chunks.remove(0);
regenerateRoad(world, chunk, extend);
- ChunkManager.manager.unloadChunk(world, chunk);
+ ChunkManager.manager.unloadChunk(world, chunk, true, true);
}
Bukkit.getScheduler().cancelTask(BukkitHybridUtils.this.task);
TaskManager.runTaskLater(new Runnable() {
@@ -453,7 +456,7 @@ public class BukkitHybridUtils extends HybridUtils {
ChunkLoc chunk = chunks.get(0);
chunks.remove(0);
regenerateRoad(world, chunk, extend);
- ChunkManager.manager.unloadChunk(world, chunk);
+ ChunkManager.manager.unloadChunk(world, chunk, true, true);
}
}
last = System.currentTimeMillis();
@@ -466,7 +469,7 @@ public class BukkitHybridUtils extends HybridUtils {
final int sz = loc.z << 5;
for (int x = sx; x < (sx + 32); x++) {
for (int z = sz; z < (sz + 32); z++) {
- ChunkManager.manager.unloadChunk(world, new ChunkLoc(x, z));
+ ChunkManager.manager.unloadChunk(world, new ChunkLoc(x, z), true, true);
}
}
PS.log("&d - Potentially skipping 1024 chunks");
diff --git a/src/main/java/com/plotsquared/bukkit/util/bukkit/BukkitChunkManager.java b/src/main/java/com/plotsquared/bukkit/util/bukkit/BukkitChunkManager.java
index c1c2f5383..a1ceaad2a 100644
--- a/src/main/java/com/plotsquared/bukkit/util/bukkit/BukkitChunkManager.java
+++ b/src/main/java/com/plotsquared/bukkit/util/bukkit/BukkitChunkManager.java
@@ -929,13 +929,13 @@ public class BukkitChunkManager extends ChunkManager {
}
@Override
- public boolean loadChunk(final String world, final ChunkLoc loc) {
- return BukkitUtil.getWorld(world).getChunkAt(loc.x, loc.z).load(false);
+ public boolean loadChunk(final String world, final ChunkLoc loc, boolean force) {
+ return BukkitUtil.getWorld(world).getChunkAt(loc.x, loc.z).load(force);
}
@Override
- public boolean unloadChunk(final String world, final ChunkLoc loc) {
- return BukkitUtil.getWorld(world).getChunkAt(loc.x, loc.z).unload(true, true);
+ public boolean unloadChunk(final String world, final ChunkLoc loc, boolean save, boolean safe) {
+ return BukkitUtil.getWorld(world).unloadChunk(loc.x, loc.z, save, safe);
}
public static void swapChunk(final World world, final Chunk pos1, final Chunk pos2, final RegionWrapper r1, final RegionWrapper r2) {
diff --git a/src/main/java/com/plotsquared/bukkit/util/bukkit/BukkitUtil.java b/src/main/java/com/plotsquared/bukkit/util/bukkit/BukkitUtil.java
index f0be51c23..a718541e9 100644
--- a/src/main/java/com/plotsquared/bukkit/util/bukkit/BukkitUtil.java
+++ b/src/main/java/com/plotsquared/bukkit/util/bukkit/BukkitUtil.java
@@ -1,13 +1,13 @@
package com.plotsquared.bukkit.util.bukkit;
-import com.intellectualcrafters.plot.object.ChunkLoc;
-import com.intellectualcrafters.plot.object.Location;
-import com.intellectualcrafters.plot.object.PlotBlock;
-import com.intellectualcrafters.plot.object.PlotPlayer;
-import com.intellectualcrafters.plot.object.schematic.PlotItem;
-import com.intellectualcrafters.plot.util.*;
-import com.plotsquared.bukkit.object.BukkitPlayer;
-import org.bukkit.*;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+
+import org.bukkit.Bukkit;
+import org.bukkit.Material;
+import org.bukkit.OfflinePlayer;
+import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
@@ -17,11 +17,22 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
-import org.bukkit.material.*;
+import org.bukkit.material.MaterialData;
+import org.bukkit.material.Sandstone;
+import org.bukkit.material.Step;
+import org.bukkit.material.Tree;
+import org.bukkit.material.WoodenStep;
+import org.bukkit.material.Wool;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
+import com.intellectualcrafters.plot.object.Location;
+import com.intellectualcrafters.plot.object.PlotBlock;
+import com.intellectualcrafters.plot.object.PlotPlayer;
+import com.intellectualcrafters.plot.object.schematic.PlotItem;
+import com.intellectualcrafters.plot.util.BlockManager;
+import com.intellectualcrafters.plot.util.MathMan;
+import com.intellectualcrafters.plot.util.StringComparison;
+import com.intellectualcrafters.plot.util.UUIDHandler;
+import com.plotsquared.bukkit.object.BukkitPlayer;
public class BukkitUtil extends BlockManager {
private static HashMap worlds = new HashMap<>();
@@ -36,12 +47,71 @@ public class BukkitUtil extends BlockManager {
lastPlotPlayer = null;
UUIDHandler.getPlayers().remove(plr);
}
+
+ // These weren't being used, but they might be useful later, so I'm just commenting them out
+// private static int getMaxHeight(final String world) {
+// return getWorld(world).getMaxHeight();
+// }
+//
+// private static void unloadChunkAt(String worldname, int X, int Z, boolean save, boolean safe) {
+// final World world = getWorld(worldname);
+// world.unloadChunk(X, Z, save, safe);
+// }
+//
+// private static void loadChunkAt(final String worldname, int X, int Z, boolean force) {
+// final World world = getWorld(worldname);
+// world.loadChunk(X, Z, force);
+// }
+//
+// private static Chunk getChunkAt(final String worldname, final int x, final int z) {
+// final World world = getWorld(worldname);
+// return world.getChunkAt(x, z);
+// }
+//
+// private static void teleportPlayer(final Player player, final Location loc) {
+// final org.bukkit.Location bukkitLoc = new org.bukkit.Location(getWorld(loc.getWorld()), loc.getX(), loc.getY(), loc.getZ());
+// player.teleport(bukkitLoc);
+// }
+//
+// private static void setBiome(final String worldname, final int pos1_x, final int pos1_z, final int pos2_x, final int pos2_z, final String biome) {
+// final Biome b = Biome.valueOf(biome.toUpperCase());
+// final World world = getWorld(worldname);
+// for (int x = pos1_x; x <= pos2_x; x++) {
+// for (int z = pos1_z; z <= pos2_z; z++) {
+// if (world.getBiome(x, z) == b) {
+// continue;
+// }
+// world.setBiome(x, z, b);
+// }
+// }
+// }
+//
+// private static void refreshChunk(final String name, final int x, final int z) {
+// World world = getWorld(name);
+// world.refreshChunk(x, z);
+// world.loadChunk(x, z);
+// }
+//
+// private static void regenerateChunk(final String world, final int x, final int z) {
+// World worldObj = getWorld(world);
+// Chunk chunk = worldObj.getChunkAt(x, z);
+// if (chunk.isLoaded() || chunk.load(false)) {
+// ChunkManager.manager.regenerateChunk(world, new ChunkLoc(x, z));
+// }
+// }
+//
+// private static Location getLocationFull(final org.bukkit.Location loc) {
+// final String world = loc.getWorld().getName();
+// return new Location(world, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), loc.getYaw(), loc.getPitch());
+// }
+//
+// private static int getViewDistance() {
+// return Bukkit.getViewDistance();
+// }
- @Override
- public boolean isWorld(final String world) {
- return getWorld(world) != null;
- }
-
+ ////////////////////////////////////////////////////////////////////////
+ /////////////////// USED BY EVENT SYSTEM AND SUCH //////////////////////
+ ////////////////////////////////////////////////////////////////////////
public static PlotPlayer getPlayer(final OfflinePlayer op) {
if (op.isOnline()) {
return getPlayer(op.getPlayer());
@@ -66,11 +136,6 @@ public class BukkitUtil extends BlockManager {
return lastPlotPlayer;
}
- @Override
- public String getBiome(final Location loc) {
- return getWorld(loc.getWorld()).getBiome(loc.getX(), loc.getZ()).name();
- }
-
public static Location getLocation(final org.bukkit.Location loc) {
return new Location(loc.getWorld().getName(), (int) loc.getX(), (int) loc.getY(), (int) loc.getZ());
}
@@ -91,99 +156,14 @@ public class BukkitUtil extends BlockManager {
return world;
}
- public static int getMaxHeight(final String world) {
- return getWorld(world).getMaxHeight();
- }
-
- public static int getHeighestBlock(final String world, final int x, final int z) {
- return getWorld(world).getHighestBlockYAt(x, z);
- }
-
- public static void unloadChunkAt(String worldname, int X, int Z, boolean save, boolean safe) {
- final World world = getWorld(worldname);
- world.unloadChunk(X, Z, save, safe);
- }
-
- public static void loadChunkAt(final String worldname, int X, int Z, boolean force) {
- final World world = getWorld(worldname);
- world.loadChunk(X, Z, force);
- }
-
- public static Chunk getChunkAt(final String worldname, final int x, final int z) {
- final World world = getWorld(worldname);
- return world.getChunkAt(x, z);
- }
-
-// public static void update(final String world, final int x, final int z) {
-// final ArrayList chunks = new ArrayList<>();
-// final int distance = Bukkit.getViewDistance();
-// for (int cx = -distance; cx < distance; cx++) {
-// for (int cz = -distance; cz < distance; cz++) {
-// final Chunk chunk = getChunkAt(world, (x >> 4) + cx, (z >> 4) + cz);
-// chunks.add(chunk);
-// }
-// }
-// BukkitSetBlockManager.setBlockManager.update(chunks);
-// }
-
public static String getWorld(final Entity entity) {
return entity.getWorld().getName();
}
- public static void teleportPlayer(final Player player, final Location loc) {
- final org.bukkit.Location bukkitLoc = new org.bukkit.Location(getWorld(loc.getWorld()), loc.getX(), loc.getY(), loc.getZ());
- player.teleport(bukkitLoc);
- }
-
public static List getEntities(final String worldname) {
return getWorld(worldname).getEntities();
}
-
- public static void setBlock(final World world, final int x, final int y, final int z, final int id, final byte data) {
- try {
- BukkitSetBlockManager.setBlockManager.set(world, x, y, z, id, data);
- } catch (final Throwable e) {
- BukkitSetBlockManager.setBlockManager = new SetBlockSlow();
- BukkitSetBlockManager.setBlockManager.set(world, x, y, z, id, data);
- }
- }
-
- public static void setBiome(final String worldname, final int pos1_x, final int pos1_z, final int pos2_x, final int pos2_z, final String biome) {
- final Biome b = Biome.valueOf(biome.toUpperCase());
- final World world = getWorld(worldname);
- for (int x = pos1_x; x <= pos2_x; x++) {
- for (int z = pos1_z; z <= pos2_z; z++) {
- if (world.getBiome(x, z) == b) {
- continue;
- }
- world.setBiome(x, z, b);
- }
- }
- }
-
- public static void refreshChunk(final String name, final int x, final int z) {
- World world = getWorld(name);
- world.refreshChunk(x, z);
- world.loadChunk(x, z);
- }
-
- public static void regenerateChunk(final String world, final int x, final int z) {
- World worldObj = getWorld(world);
- Chunk chunk = worldObj.getChunkAt(x, z);
- if (chunk.isLoaded() || chunk.load(false)) {
- ChunkManager.manager.regenerateChunk(world, new ChunkLoc(x, z));
- }
- }
-
- public static PlotBlock getBlock(final Location loc) {
- final World world = getWorld(loc.getWorld());
- final Block block = world.getBlockAt(loc.getX(), loc.getY(), loc.getZ());
- if (block == null) {
- return new PlotBlock((short) 0, (byte) 0);
- }
- return new PlotBlock((short) block.getTypeId(), block.getData());
- }
-
+
public static Location getLocation(final Entity entity) {
final org.bukkit.Location loc = entity.getLocation();
final String world = loc.getWorld().getName();
@@ -193,10 +173,31 @@ public class BukkitUtil extends BlockManager {
public static Location getLocationFull(final Entity entity) {
return getLocation(entity.getLocation());
}
+ ////////////////////////////////////////////////////////////////////////
+
- public static Location getLocationFull(final org.bukkit.Location loc) {
- final String world = loc.getWorld().getName();
- return new Location(world, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), loc.getYaw(), loc.getPitch());
+ ////////////////////////////////////////////////////////////////////////
+ ////////////////////// CLASS ONLY METHODS //////////////////////////////
+ ////////////////////////////////////////////////////////////////////////
+ private static void setBlock(final World world, final int x, final int y, final int z, final int id, final byte data) {
+ try {
+ BukkitSetBlockManager.setBlockManager.set(world, x, y, z, id, data);
+ } catch (final Throwable e) {
+ BukkitSetBlockManager.setBlockManager = new SetBlockSlow();
+ BukkitSetBlockManager.setBlockManager.set(world, x, y, z, id, data);
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////////
+
+ @Override
+ public boolean isWorld(final String world) {
+ return getWorld(world) != null;
+ }
+
+ @Override
+ public String getBiome(String world, int x, int z) {
+ return getWorld(world).getBiome(x, z).name();
}
@Override
@@ -222,16 +223,12 @@ public class BukkitUtil extends BlockManager {
}
}
- public static int getViewDistance() {
- return Bukkit.getViewDistance();
- }
-
@Override
- public void functionSetBiomes(final String worldname, final int[] x, final int[] z, final int[] biome) {
+ public void functionSetBiomes(final String worldname, final int[] x, final int[] z, final String biomeStr) {
final World world = getWorld(worldname);
- final Biome[] biomes = Biome.values();
+ final Biome biome = Biome.valueOf(biomeStr.toUpperCase());
for (int i = 0; i < x.length; i++) {
- world.setBiome(x[i], z[i], biomes[biome[i]]);
+ world.setBiome(x[i], z[i], biome);
}
}
@@ -259,8 +256,8 @@ public class BukkitUtil extends BlockManager {
}
@Override
- public int getHeighestBlock(final Location loc) {
- return getWorld(loc.getWorld()).getHighestBlockAt(loc.getX(), loc.getZ()).getY();
+ public int getHeighestBlock(String world, int x, int z) {
+ return getWorld(world).getHighestBlockAt(x, z).getY();
}
@Override
@@ -383,4 +380,14 @@ public class BukkitUtil extends BlockManager {
catch (Exception e) {}
return null;
}
+
+ @Override
+ public PlotBlock getBlock(Location loc) {
+ final World world = getWorld(loc.getWorld());
+ final Block block = world.getBlockAt(loc.getX(), loc.getY(), loc.getZ());
+ if (block == null) {
+ return new PlotBlock((short) 0, (byte) 0);
+ }
+ return new PlotBlock((short) block.getTypeId(), block.getData());
+ }
}
diff --git a/src/main/java/com/plotsquared/general/commands/CommandManager.java b/src/main/java/com/plotsquared/general/commands/CommandManager.java
index 33c2381ea..5ebcfc544 100644
--- a/src/main/java/com/plotsquared/general/commands/CommandManager.java
+++ b/src/main/java/com/plotsquared/general/commands/CommandManager.java
@@ -27,6 +27,9 @@ public class CommandManager {
}
final public void addCommand(final Command command) {
+ if (command.getCommand() == null) {
+ command.create();
+ }
this.commands.put(command.getCommand().toLowerCase(), command);
for (String alias : command.getAliases()) {
this.commands.put(alias.toLowerCase(), command);
diff --git a/src/main/java/com/plotsquared/sponge/SpongeMain.java b/src/main/java/com/plotsquared/sponge/SpongeMain.java
index cb02abba3..a56dcb6af 100644
--- a/src/main/java/com/plotsquared/sponge/SpongeMain.java
+++ b/src/main/java/com/plotsquared/sponge/SpongeMain.java
@@ -11,6 +11,7 @@ import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.*;
import com.plotsquared.bukkit.listeners.APlotListener;
import com.plotsquared.bukkit.util.SetupUtils;
+
import org.slf4j.Logger;
import org.spongepowered.api.Game;
import org.spongepowered.api.Server;
@@ -172,12 +173,6 @@ public class SpongeMain implements IPlotMain, PluginContainer {
return null;
}
- @Override
- public void handleKick(UUID uuid, C c) {
- // TODO Auto-generated method stub
-
- }
-
@Override
public TaskManager getTaskManager() {
// TODO Auto-generated method stub
@@ -327,4 +322,16 @@ public class SpongeMain implements IPlotMain, PluginContainer {
// TODO Auto-generated method stub
return null;
}
+
+ @Override
+ public void startMetrics() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void setGenerator(String world) {
+ // TODO Auto-generated method stub
+
+ }
}
\ No newline at end of file