This commit is contained in:
boy0001 2015-02-20 16:40:51 +11:00
parent d11679aa1e
commit 2b7053895c
8 changed files with 206 additions and 190 deletions

View File

@ -256,7 +256,7 @@ public class BukkitMain extends JavaPlugin implements Listener,IPlotMain {
final Entity[] entities = chunk.getEntities();
Entity entity;
for (int i = entities.length - 1; i >= 0; i--) {
if (!((entity = entities[i]) instanceof Player) && !PlotListener.isInPlot(entity.getLocation())) {
if (!((entity = entities[i]) instanceof Player) && !.isInPlot(entity.getLocation())) {
entity.remove();
}
}

View File

@ -118,6 +118,10 @@ public class PlotSquared {
plotworlds.remove(world);
}
public static HashMap<String, HashMap<PlotId, Plot>> getAllPlotsRaw() {
return plots;
}
public static void setAllPlotsRaw(final LinkedHashMap<String, HashMap<PlotId, Plot>> plots) {
PlotSquared.plots = plots;
}

View File

@ -21,6 +21,7 @@
package com.intellectualcrafters.plot.listeners;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@ -82,6 +83,7 @@ import org.bukkit.event.vehicle.VehicleDestroyEvent;
import org.bukkit.event.world.ChunkLoadEvent;
import org.bukkit.event.world.StructureGrowEvent;
import org.bukkit.event.world.WorldInitEvent;
import org.bukkit.generator.ChunkGenerator;
import com.intellectualcrafters.plot.BukkitMain;
import com.intellectualcrafters.plot.PlotSquared;
@ -93,6 +95,7 @@ import com.intellectualcrafters.plot.flag.Flag;
import com.intellectualcrafters.plot.flag.FlagManager;
import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotBlock;
import com.intellectualcrafters.plot.object.PlotGenerator;
import com.intellectualcrafters.plot.object.PlotId;
import com.intellectualcrafters.plot.object.PlotManager;
import com.intellectualcrafters.plot.object.PlotWorld;
@ -101,6 +104,7 @@ import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.PlotHelper;
import com.intellectualcrafters.plot.util.UUIDHandler;
import com.intellectualcrafters.plot.util.bukkit.BukkitTaskManager;
import com.intellectualcrafters.plot.util.bukkit.BukkitUtil;
/**
* Player Events involving plots
@ -112,7 +116,14 @@ public class PlayerEvents extends com.intellectualcrafters.plot.listeners.PlotLi
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public static void onWorldInit(final WorldInitEvent event) {
PlotSquared.loadWorld(event.getWorld());
World world = event.getWorld();
ChunkGenerator gen = world.getGenerator();
if (gen instanceof PlotGenerator) {
PlotSquared.loadWorld(world.getName(), (PlotGenerator) gen);
}
else {
PlotSquared.loadWorld(world.getName(), null);
}
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
@ -145,7 +156,7 @@ public class PlayerEvents extends com.intellectualcrafters.plot.listeners.PlotLi
// textures(event.getPlayer());
if (isInPlot(event.getPlayer().getLocation())) {
if (Settings.TELEPORT_ON_LOGIN) {
event.getPlayer().teleport(PlotHelper.getPlotHomeDefault(getPlot(event.getPlayer())));
BukkitUtil.teleportPlayer(player, PlotHelper.getPlotHomeDefault(getPlot(event.getPlayer())));
PlayerFunctions.sendMessage(event.getPlayer(), C.TELEPORTED_TO_ROAD);
} else {
plotEntry(event.getPlayer(), getCurrentPlot(event.getPlayer().getLocation()));
@ -225,7 +236,7 @@ public class PlayerEvents extends com.intellectualcrafters.plot.listeners.PlotLi
if (!isPlotWorld(world)) {
return;
}
final PlotWorld plotworld = PlotSquared.getWorldSettings(world);
final PlotWorld plotworld = PlotSquared.getWorldSettings(world.getName());
if (!plotworld.PLOT_CHAT) {
return;
}
@ -700,19 +711,16 @@ public class PlayerEvents extends com.intellectualcrafters.plot.listeners.PlotLi
@EventHandler
public static void onLeave(final PlayerQuitEvent event) {
if (PlotSelection.currentSelection.containsKey(event.getPlayer().getName())) {
PlotSelection.currentSelection.remove(event.getPlayer().getName());
}
if (Setup.setupMap.containsKey(event.getPlayer().getName())) {
Setup.setupMap.remove(event.getPlayer().getName());
}
if (Settings.DELETE_PLOTS_ON_BAN && event.getPlayer().isBanned()) {
final Set<Plot> plots = PlotSquared.getPlots(event.getPlayer());
final Collection<Plot> plots = PlotSquared.getPlots(event.getPlayer().getName()).values();
for (final Plot plot : plots) {
PlotWorld plotworld = PlotSquared.getWorldSettings(plot.world);
final PlotManager manager = PlotSquared.getPlotManager(plot.world);
manager.clearPlot(null, plotworld, plot, true, null);
DBFunc.delete(plot.world.getName(), plot);
manager.clearPlot(plotworld, plot, true, null);
DBFunc.delete(plot.world, plot);
PlotSquared.log(String.format("&cPlot &6%s &cwas deleted + cleared due to &6%s&c getting banned", plot.getId(), event.getPlayer().getName()));
}
}

View File

@ -25,15 +25,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.WeatherType;
import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotSquared;
import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.config.Settings;
@ -41,6 +32,7 @@ import com.intellectualcrafters.plot.events.PlayerEnterPlotEvent;
import com.intellectualcrafters.plot.events.PlayerLeavePlotEvent;
import com.intellectualcrafters.plot.flag.Flag;
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.PlotWorld;
@ -56,7 +48,7 @@ import com.intellectualcrafters.plot.util.UUIDHandler;
@SuppressWarnings({"unused", "deprecation"}) public class PlotListener {
public static void textures(final Player p) {
if ((Settings.PLOT_SPECIFIC_RESOURCE_PACK.length() > 1) && isPlotWorld(p.getWorld())) {
if ((Settings.PLOT_SPECIFIC_RESOURCE_PACK.length() > 1) && isPlotWorld(p.getWorld().getName())) {
p.setResourcePack(Settings.PLOT_SPECIFIC_RESOURCE_PACK);
}
}
@ -73,15 +65,11 @@ import com.intellectualcrafters.plot.util.UUIDHandler;
return defaultValue;
}
public static boolean isInPlot(final Player player) {
return PlayerFunctions.isInPlot(player);
public static boolean isInPlot(String world, int x, int y, int z) {
return (PlayerFunctions.getPlot(new Location(world, x, y, z)) != null);
}
public static Plot getPlot(final Player player) {
return PlayerFunctions.getCurrentPlot(player);
}
public static boolean isPlotWorld(final World world) {
public static boolean isPlotWorld(final String world) {
return PlotSquared.isPlotWorld(world);
}
@ -93,10 +81,6 @@ import com.intellectualcrafters.plot.util.UUIDHandler;
return true;
}
public static PlotWorld getPlotWorld(final World world) {
return PlotSquared.getWorldSettings(world);
}
private static String getName(final UUID id) {
if (id == null) {
return "none";
@ -113,15 +97,15 @@ import com.intellectualcrafters.plot.util.UUIDHandler;
}
public static boolean enteredPlot(final Location l1, final Location l2) {
final PlotId p1 = PlayerFunctions.getPlot(new Location(l1.getWorld(), l1.getBlockX(), 0, l1.getBlockZ()));
final PlotId p2 = PlayerFunctions.getPlot(new Location(l2.getWorld(), l2.getBlockX(), 0, l2.getBlockZ()));
final PlotId p1 = PlayerFunctions.getPlot(new Location(l1.getWorld(), l1.getX(), 0, l1.getZ()));
final PlotId p2 = PlayerFunctions.getPlot(new Location(l2.getWorld(), l2.getX(), 0, l2.getZ()));
return (p2 != null) && ((p1 == null) || !p1.equals(p2));
}
public static boolean leftPlot(final Location l1, final Location l2) {
final PlotId p1 = PlayerFunctions.getPlot(new Location(l1.getWorld(), l1.getBlockX(), 0, l1.getBlockZ()));
final PlotId p2 = PlayerFunctions.getPlot(new Location(l2.getWorld(), l2.getBlockX(), 0, l2.getBlockZ()));
final PlotId p1 = PlayerFunctions.getPlot(new Location(l1.getWorld(), l1.getX(), 0, l1.getZ()));
final PlotId p2 = PlayerFunctions.getPlot(new Location(l2.getWorld(), l2.getX(), 0, l2.getZ()));
return (p1 != null) && ((p2 == null) || !p1.equals(p2));
}
@ -138,11 +122,11 @@ import com.intellectualcrafters.plot.util.UUIDHandler;
if (id == null) {
return null;
}
final World world = loc.getWorld();
final String world = loc.getWorld();
if (PlotSquared.getPlots(world).containsKey(id)) {
return PlotSquared.getPlots(world).get(id);
}
return new Plot(id, null, Biome.FOREST, new ArrayList<UUID>(), new ArrayList<UUID>(), loc.getWorld().getName());
return new Plot(id, null, Biome.FOREST, new ArrayList<UUID>(), new ArrayList<UUID>(), loc.getWorld());
}
private static WeatherType getWeatherType(String str) {

View File

@ -8,6 +8,7 @@ import java.util.List;
import com.intellectualcrafters.plot.object.ChunkLoc;
import com.intellectualcrafters.plot.object.Location;
import com.intellectualcrafters.plot.object.Plot;
@ -35,4 +36,8 @@ public abstract class AChunkManager {
public abstract boolean copyRegion(final Location pos1, final Location pos2, final Location newPos, final Runnable whenDone);
public abstract boolean regenerateRegion(final Location pos1, final Location pos2, final Runnable whenDone);
public abstract void update(Location loc);
public abstract void clearAllEntities(final Plot plot);
}

View File

@ -5,6 +5,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import org.apache.commons.lang.mutable.MutableInt;
import org.bukkit.Bukkit;
@ -35,16 +36,19 @@ import org.bukkit.block.banner.Pattern;
import org.bukkit.block.banner.PatternType;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin;
import com.intellectualcrafters.plot.BukkitMain;
import com.intellectualcrafters.plot.PlotSquared;
import com.intellectualcrafters.plot.listeners.PlotListener;
import com.intellectualcrafters.plot.object.BlockLoc;
import com.intellectualcrafters.plot.object.ChunkLoc;
import com.intellectualcrafters.plot.object.Location;
import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotId;
import com.intellectualcrafters.plot.object.RegionWrapper;
import com.intellectualcrafters.plot.object.entity.EntityWrapper;
import com.intellectualcrafters.plot.util.bukkit.BukkitTaskManager;
@ -741,4 +745,33 @@ public class ChunkManager extends AChunkManager {
}
return 0;
}
public void clearAllEntities(final Plot plot) {
final List<Entity> entities = BukkitUtil.getEntities(plot.world);
for (final Entity entity : entities) {
final PlotId id = PlayerFunctions.getPlot(BukkitUtil.getLocation(entity));
if (plot.id.equals(id)) {
if (entity instanceof Player) {
final Player player = (Player) entity;
BukkitMain.teleportPlayer(player, BukkitUtil.getLocation(entity), plot);
PlotListener.plotExit(player, plot);
} else {
entity.remove();
}
}
}
}
@Override
public void update(Location loc) {
ArrayList<Chunk> chunks = new ArrayList<>();
final int distance = Bukkit.getViewDistance();
for (int cx = -distance; cx < distance; cx++) {
for (int cz = -distance; cz < distance; cz++) {
Chunk chunk = BukkitUtil.getChunkAt(loc.getWorld(), loc.getX(), loc.getZ());
chunks.add(chunk);
}
}
AbstractSetBlock.setBlockManager.update(chunks);
}
}

View File

@ -32,10 +32,7 @@ import com.intellectualcrafters.plot.object.PlotManager;
import com.intellectualcrafters.plot.object.PlotWorld;
import com.intellectualcrafters.plot.util.bukkit.BukkitUtil;
import org.bukkit.ChatColor;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.util.ChatPaginator;
import net.milkbowl.vault.economy.Economy;
import java.util.ArrayList;
import java.util.HashSet;
@ -49,6 +46,99 @@ import java.util.UUID;
*/
@SuppressWarnings("javadoc") public class PlayerFunctions {
/**
* Clear a plot. Use null player if no player is present
* @param player
* @param world
* @param plot
* @param isDelete
*/
public static void clear(final Player player, final String world, final Plot plot, final boolean isDelete) {
if (runners.containsKey(plot)) {
PlayerFunctions.sendMessage(null, C.WAIT_FOR_TIMER);
return;
}
final PlotManager manager = PlotSquared.getPlotManager(world);
final Location pos1 = PlotHelper.getPlotBottomLoc(world, plot.id).add(1, 0, 1);
final int prime = 31;
int h = 1;
h = (prime * h) + pos1.getX();
h = (prime * h) + pos1.getZ();
state = h;
final long start = System.currentTimeMillis();
final Location location = PlotHelper.getPlotHomeDefault(plot);
PlotWorld plotworld = PlotSquared.getWorldSettings(world);
runners.put(plot, 1);
if (plotworld.TERRAIN != 0) {
final Location pos2 = PlotHelper.getPlotTopLoc(world, plot.id);
AChunkManager.manager.regenerateRegion(pos1, pos2, new Runnable() {
@Override
public void run() {
if (player != null && player.isOnline()) {
PlayerFunctions.sendMessage(player, C.CLEARING_DONE.s().replaceAll("%time%", "" + ((System.currentTimeMillis() - start))));
}
runners.remove(plot);
}
});
return;
}
Runnable run = new Runnable() {
@Override
public void run() {
PlotHelper.setBiome(world, plot, Biome.FOREST);
runners.remove(plot);
if (player != null && player.isOnline()) {
PlayerFunctions.sendMessage(player, C.CLEARING_DONE.s().replaceAll("%time%", "" + ((System.currentTimeMillis() - start))));
}
update(location);
}
};
manager.clearPlot(plotworld, plot, isDelete, run);
}
/**
* Merges all plots in the arraylist (with cost)
*
* @param plr
* @param world
* @param plotIds
*
* @return
*/
public static boolean mergePlots(final Player plr, final String world, final ArrayList<PlotId> plotIds) {
final PlotWorld plotworld = PlotSquared.getWorldSettings(world);
if ((PlotSquared.economy != null) && plotworld.USE_ECONOMY) {
final double cost = plotIds.size() * plotworld.MERGE_PRICE;
if (cost > 0d) {
final Economy economy = PlotSquared.economy;
if (economy.getBalance(plr) < cost) {
PlayerFunctions.sendMessage(plr, C.CANNOT_AFFORD_MERGE, "" + cost);
return false;
}
economy.withdrawPlayer(plr, cost);
PlayerFunctions.sendMessage(plr, C.REMOVED_BALANCE, cost + "");
}
}
return mergePlots(world, plotIds, true);
}
public static String getPlayerName(final UUID uuid) {
if (uuid == null) {
return "unknown";
}
final OfflinePlayer plr = UUIDHandler.uuidWrapper.getOfflinePlayer(uuid);
if (!plr.hasPlayedBefore()) {
return "unknown";
}
return plr.getName();
}
/**
* @param player player
*
@ -58,16 +148,6 @@ import java.util.UUID;
return getCurrentPlot(player) != null;
}
public static ArrayList<PlotId> getPlotSelectionIds(PlotId pos1, final PlotId pos2) {
final ArrayList<PlotId> myplots = new ArrayList<>();
for (int x = pos1.x; x <= pos2.x; x++) {
for (int y = pos1.y; y <= pos2.y; y++) {
myplots.add(new PlotId(x, y));
}
}
return myplots;
}
public static ArrayList<PlotId> getMaxPlotSelectionIds(final String world, PlotId pos1, PlotId pos2) {

View File

@ -27,19 +27,10 @@ import java.util.HashMap;
import java.util.List;
import java.util.UUID;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
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.Sign;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import net.milkbowl.vault.economy.Economy;
import com.intellectualcrafters.plot.BukkitMain;
import com.intellectualcrafters.plot.PlotSquared;
@ -126,31 +117,14 @@ import com.intellectualcrafters.plot.util.bukkit.BukkitUtil;
return id;
}
/**
* Merges all plots in the arraylist (with cost)
*
* @param plr
* @param world
* @param plotIds
*
* @return
*/
public static boolean mergePlots(final Player plr, final String world, final ArrayList<PlotId> plotIds) {
final PlotWorld plotworld = PlotSquared.getWorldSettings(world);
if ((PlotSquared.economy != null) && plotworld.USE_ECONOMY) {
final double cost = plotIds.size() * plotworld.MERGE_PRICE;
if (cost > 0d) {
final Economy economy = PlotSquared.economy;
if (economy.getBalance(plr) < cost) {
PlayerFunctions.sendMessage(plr, C.CANNOT_AFFORD_MERGE, "" + cost);
return false;
}
economy.withdrawPlayer(plr, cost);
PlayerFunctions.sendMessage(plr, C.REMOVED_BALANCE, cost + "");
public static ArrayList<PlotId> getPlotSelectionIds(PlotId pos1, final PlotId pos2) {
final ArrayList<PlotId> myplots = new ArrayList<>();
for (int x = pos1.x; x <= pos2.x; x++) {
for (int y = pos1.y; y <= pos2.y; y++) {
myplots.add(new PlotId(x, y));
}
}
return mergePlots(world, plotIds, true);
return myplots;
}
/**
@ -303,17 +277,6 @@ import com.intellectualcrafters.plot.util.bukkit.BukkitUtil;
BukkitUtil.setSign(p.world, loc.getX(), loc.getY(), loc.getZ(), lines);
}
public static String getPlayerName(final UUID uuid) {
if (uuid == null) {
return "unknown";
}
final OfflinePlayer plr = UUIDHandler.uuidWrapper.getOfflinePlayer(uuid);
if (!plr.hasPlayedBefore()) {
return "unknown";
}
return plr.getName();
}
public static String getStringSized(final int max, final String string) {
if (string.length() > max) {
return string.substring(0, max);
@ -321,18 +284,16 @@ import com.intellectualcrafters.plot.util.bukkit.BukkitUtil;
return string;
}
public static void autoMerge(final String world, final Plot plot, final Player player) {
public static void autoMerge(final String world, final Plot plot, final UUID uuid) {
if (plot == null) {
return;
}
if (plot.owner == null) {
return;
}
if (!plot.owner.equals(UUIDHandler.getUUID(player))) {
if (!plot.owner.equals(uuid)) {
return;
}
ArrayList<PlotId> plots;
boolean merge = true;
int count = 0;
@ -343,32 +304,32 @@ import com.intellectualcrafters.plot.util.bukkit.BukkitUtil;
count++;
final PlotId bot = PlayerFunctions.getBottomPlot(world, plot).id;
final PlotId top = PlayerFunctions.getTopPlot(world, plot).id;
plots = PlayerFunctions.getPlotSelectionIds(new PlotId(bot.x, bot.y - 1), new PlotId(top.x, top.y));
if (ownsPlots(world, plots, player, 0)) {
plots = getPlotSelectionIds(new PlotId(bot.x, bot.y - 1), new PlotId(top.x, top.y));
if (ownsPlots(world, plots, uuid, 0)) {
final boolean result = mergePlots(world, plots, true);
if (result) {
merge = true;
continue;
}
}
plots = PlayerFunctions.getPlotSelectionIds(new PlotId(bot.x, bot.y), new PlotId(top.x + 1, top.y));
if (ownsPlots(world, plots, player, 1)) {
plots = getPlotSelectionIds(new PlotId(bot.x, bot.y), new PlotId(top.x + 1, top.y));
if (ownsPlots(world, plots, uuid, 1)) {
final boolean result = mergePlots(world, plots, true);
if (result) {
merge = true;
continue;
}
}
plots = PlayerFunctions.getPlotSelectionIds(new PlotId(bot.x, bot.y), new PlotId(top.x, top.y + 1));
if (ownsPlots(world, plots, player, 2)) {
plots = getPlotSelectionIds(new PlotId(bot.x, bot.y), new PlotId(top.x, top.y + 1));
if (ownsPlots(world, plots, uuid, 2)) {
final boolean result = mergePlots(world, plots, true);
if (result) {
merge = true;
continue;
}
}
plots = PlayerFunctions.getPlotSelectionIds(new PlotId(bot.x - 1, bot.y), new PlotId(top.x, top.y));
if (ownsPlots(world, plots, player, 3)) {
plots = getPlotSelectionIds(new PlotId(bot.x - 1, bot.y), new PlotId(top.x, top.y));
if (ownsPlots(world, plots, uuid, 3)) {
final boolean result = mergePlots(world, plots, true);
if (result) {
merge = true;
@ -377,16 +338,16 @@ import com.intellectualcrafters.plot.util.bukkit.BukkitUtil;
}
merge = false;
}
update(BukkitUtil.getLocation(player));
AChunkManager.manager.update(getPlotHome(world, plot));
}
private static boolean ownsPlots(final String world, final ArrayList<PlotId> plots, final Player player, final int dir) {
private static boolean ownsPlots(final String world, final ArrayList<PlotId> plots, final UUID uuid, final int dir) {
final PlotId id_min = plots.get(0);
final PlotId id_max = plots.get(plots.size() - 1);
for (final PlotId myid : plots) {
final Plot myplot = PlotSquared.getPlots(world).get(myid);
if ((myplot == null) || !myplot.hasOwner() || !(myplot.getOwner().equals(UUIDHandler.getUUID(player)))) {
if ((myplot == null) || !myplot.hasOwner() || !(myplot.getOwner().equals(uuid))) {
return false;
}
final PlotId top = PlayerFunctions.getTopPlot(world, myplot).id;
@ -401,18 +362,6 @@ import com.intellectualcrafters.plot.util.bukkit.BukkitUtil;
return true;
}
public static void update(Location loc) {
ArrayList<Chunk> chunks = new ArrayList<>();
final int distance = Bukkit.getViewDistance();
for (int cx = -distance; cx < distance; cx++) {
for (int cz = -distance; cz < distance; cz++) {
Chunk chunk = BukkitUtil.getChunkAt(loc.getWorld(), loc.getX(), loc.getZ());
chunks.add(chunk);
}
}
AbstractSetBlock.setBlockManager.update(chunks);
}
public static void updateWorldBorder(Plot plot) {
if (!worldBorder.containsKey(plot.world)) {
return;
@ -434,16 +383,14 @@ import com.intellectualcrafters.plot.util.bukkit.BukkitUtil;
/**
* Create a plot and notify the world border and plot merger
*/
public static boolean createPlot(final Player player, final Plot plot) {
public static boolean createPlot(final UUID uuid, final Plot plot) {
if (PlotHelper.worldBorder.containsKey(plot.world)) {
updateWorldBorder(plot);
}
String w = BukkitUtil.getWorld(player);
UUID uuid = UUIDHandler.getUUID(player);
Plot p = createPlotAbs(uuid, plot);
final PlotWorld plotworld = PlotSquared.getWorldSettings(w);
final PlotWorld plotworld = PlotSquared.getWorldSettings(plot.world);
if (plotworld.AUTO_MERGE) {
autoMerge(w, p, player);
autoMerge(plot.world, p, uuid);
}
return true;
}
@ -475,39 +422,25 @@ import com.intellectualcrafters.plot.util.bukkit.BukkitUtil;
return new short[]{Short.parseShort(block), 0};
}
public static void clearAllEntities(final String world, final Plot plot, final boolean tile) {
final List<Entity> entities = BukkitUtil.getEntities(world);
for (final Entity entity : entities) {
final PlotId id = PlayerFunctions.getPlot(BukkitUtil.getLocation(entity));
if (plot.id.equals(id)) {
if (entity instanceof Player) {
final Player player = (Player) entity;
BukkitMain.teleportPlayer(player, BukkitUtil.getLocation(entity), plot);
PlotListener.plotExit(player, plot);
} else {
entity.remove();
}
}
}
}
/**
* Clear a plot. Use null player if no player is present
* @param player
* @param world
* Clear a plot and associated sections: [sign, entities, border]
*
* @param requester
* @param plot
* @param isDelete
*/
public static void clear(final Player player, final String world, final Plot plot, final boolean isDelete) {
public static boolean clear(UUID uuid, final Plot plot, final boolean isDelete, final Runnable whenDone) {
if (runners.containsKey(plot)) {
PlayerFunctions.sendMessage(null, C.WAIT_FOR_TIMER);
return;
return false;
}
AChunkManager.manager.clearAllEntities(plot);
clear(plot.world, plot, isDelete, whenDone);
removeSign(plot);
return true;
}
public static void clear(final String world, final Plot plot, final boolean isDelete, final Runnable whenDone) {
final PlotManager manager = PlotSquared.getPlotManager(world);
final Location pos1 = PlotHelper.getPlotBottomLoc(world, plot.id).add(1, 0, 1);
final int prime = 31;
int h = 1;
h = (prime * h) + pos1.getX();
@ -523,10 +456,8 @@ import com.intellectualcrafters.plot.util.bukkit.BukkitUtil;
AChunkManager.manager.regenerateRegion(pos1, pos2, new Runnable() {
@Override
public void run() {
if (player != null && player.isOnline()) {
PlayerFunctions.sendMessage(player, C.CLEARING_DONE.s().replaceAll("%time%", "" + ((System.currentTimeMillis() - start))));
}
runners.remove(plot);
TaskManager.runTask(whenDone);
}
});
return;
@ -536,42 +467,13 @@ import com.intellectualcrafters.plot.util.bukkit.BukkitUtil;
public void run() {
PlotHelper.setBiome(world, plot, Biome.FOREST);
runners.remove(plot);
if (player != null && player.isOnline()) {
PlayerFunctions.sendMessage(player, C.CLEARING_DONE.s().replaceAll("%time%", "" + ((System.currentTimeMillis() - start))));
}
update(location);
TaskManager.runTask(whenDone);
AChunkManager.manager.update(location);
}
};
manager.clearPlot(plotworld, plot, isDelete, run);
}
/**
* Clear a plot and associated sections: [sign, entities, border]
*
* @param requester
* @param plot
*/
public static void clear(final Player requester, final Plot plot, final boolean isDelete) {
if (requester == null) {
clearAllEntities(plot.world, plot, false);
clear(requester, plot.world, plot, isDelete);
removeSign(plot);
return;
}
if (runners.containsKey(plot)) {
PlayerFunctions.sendMessage(requester, C.WAIT_FOR_TIMER);
return;
}
PlayerFunctions.sendMessage(requester, C.CLEARING_PLOT);
String world = requester.getWorld().getName();
clearAllEntities(world, plot, false);
clear(requester, world, plot, isDelete);
removeSign(plot);
}
public static void setCuboid(final String world, final Location pos1, final Location pos2, final PlotBlock[] blocks) {
if (blocks.length == 1) {
setSimpleCuboid(world, pos1, pos2, blocks[0]);
@ -874,7 +776,7 @@ import com.intellectualcrafters.plot.util.bukkit.BukkitUtil;
int offset_x = newPlot.x - pos1.id.x;
int offset_y = newPlot.y - pos1.id.y;
final ArrayList<PlotId> selection = PlayerFunctions.getPlotSelectionIds(pos1.id, pos2.id);
final ArrayList<PlotId> selection = getPlotSelectionIds(pos1.id, pos2.id);
for (PlotId id : selection) {
DBFunc.movePlot(world, new PlotId(id.x, id.y), new PlotId(id.x + offset_x, id.y + offset_y));
Plot plot = PlotSquared.getPlots(world).get(id);