diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotMergeEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotMergeEvent.java index 20e88f90a..b03729be0 100644 --- a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotMergeEvent.java +++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotMergeEvent.java @@ -2,18 +2,26 @@ package com.github.intellectualsites.plotsquared.bukkit.events; import com.github.intellectualsites.plotsquared.plot.object.Plot; import com.github.intellectualsites.plotsquared.plot.object.PlotId; +import lombok.Getter; +import lombok.Setter; import org.bukkit.World; import org.bukkit.event.Cancellable; import org.bukkit.event.HandlerList; -import java.util.ArrayList; +import javax.annotation.Nonnull; +import java.util.Collections; +import java.util.List; -public class PlotMergeEvent extends PlotEvent implements Cancellable { +/** + * Event called when several plots are merged + * {@inheritDoc} + */ +public final class PlotMergeEvent extends PlotEvent implements Cancellable { private static final HandlerList handlers = new HandlerList(); - private final ArrayList plots; - private final World world; - private boolean cancelled; + private final List plots; + @Getter private final World world; + @Getter @Setter private boolean cancelled; /** * PlotMergeEvent: Called when plots are merged @@ -22,7 +30,8 @@ public class PlotMergeEvent extends PlotEvent implements Cancellable { * @param plot Plot that was merged * @param plots A list of plots involved in the event */ - public PlotMergeEvent(World world, Plot plot, ArrayList plots) { + public PlotMergeEvent(@Nonnull final World world, @Nonnull final Plot plot, + @Nonnull final List plots) { super(plot); this.world = world; this.plots = plots; @@ -35,25 +44,13 @@ public class PlotMergeEvent extends PlotEvent implements Cancellable { /** * Get the plots being added. * - * @return Plot + * @return Unmodifiable list containing the merging plots */ - public ArrayList getPlots() { - return this.plots; - } - - public World getWorld() { - return this.world; + public List getPlots() { + return Collections.unmodifiableList(this.plots); } @Override public HandlerList getHandlers() { return handlers; } - - @Override public boolean isCancelled() { - return this.cancelled; - } - - @Override public void setCancelled(boolean b) { - this.cancelled = b; - } } diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotUnlinkEvent.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotUnlinkEvent.java index 914f394fd..675f10d8f 100644 --- a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotUnlinkEvent.java +++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/events/PlotUnlinkEvent.java @@ -2,20 +2,28 @@ package com.github.intellectualsites.plotsquared.bukkit.events; import com.github.intellectualsites.plotsquared.plot.object.PlotArea; import com.github.intellectualsites.plotsquared.plot.object.PlotId; +import lombok.Getter; +import lombok.Setter; import org.bukkit.World; import org.bukkit.event.Cancellable; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; -import java.util.ArrayList; +import javax.annotation.Nonnull; +import java.util.Collections; +import java.util.List; -public class PlotUnlinkEvent extends Event implements Cancellable { +/** + * Event called when several merged plots are unlinked + * {@inheritDoc} + */ +public final class PlotUnlinkEvent extends Event implements Cancellable { private static final HandlerList handlers = new HandlerList(); - private final ArrayList plots; - private final World world; - private final PlotArea area; - private boolean cancelled; + private final List plots; + @Getter private final World world; + @Getter private final PlotArea area; + @Getter @Setter private boolean cancelled; /** * Called when a mega-plot is unlinked. @@ -23,7 +31,8 @@ public class PlotUnlinkEvent extends Event implements Cancellable { * @param world World in which the event occurred * @param plots Plots that are involved in the event */ - public PlotUnlinkEvent(World world, PlotArea area, ArrayList plots) { + public PlotUnlinkEvent(@Nonnull final World world, @Nonnull final PlotArea area, + @Nonnull final List plots) { this.plots = plots; this.world = world; this.area = area; @@ -36,29 +45,13 @@ public class PlotUnlinkEvent extends Event implements Cancellable { /** * Get the plots involved. * - * @return The {@link PlotId}'s of the plots involved + * @return Unmodifiable list containing {@link PlotId PlotIds} of the plots involved */ - public ArrayList getPlots() { - return this.plots; - } - - public World getWorld() { - return this.world; - } - - public PlotArea getArea() { - return this.area; + public List getPlots() { + return Collections.unmodifiableList(this.plots); } @Override public HandlerList getHandlers() { return handlers; } - - @Override public boolean isCancelled() { - return this.cancelled; - } - - @Override public void setCancelled(boolean b) { - this.cancelled = b; - } } diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitEventUtil.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitEventUtil.java index 4b7df7471..b198084d6 100644 --- a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitEventUtil.java +++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitEventUtil.java @@ -10,20 +10,24 @@ import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; import org.bukkit.event.Event; +import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.util.ArrayList; +import java.util.List; import java.util.UUID; -public class BukkitEventUtil extends EventUtil { +/** + * Utility class for handling Bukkit {@link Event events} + */ +public final class BukkitEventUtil extends EventUtil { - public Player getPlayer(PlotPlayer player) { + @Nullable public Player getPlayer(final PlotPlayer player) { if (player instanceof BukkitPlayer) { return ((BukkitPlayer) player).player; } return null; } - public boolean callEvent(Event event) { + private boolean callEvent(@Nonnull final Event event) { Bukkit.getServer().getPluginManager().callEvent(event); return !(event instanceof Cancellable) || !((Cancellable) event).isCancelled(); } @@ -56,11 +60,11 @@ public class BukkitEventUtil extends EventUtil { return callEvent(new PlotFlagRemoveEvent(flag, plot)); } - @Override public boolean callMerge(Plot plot, ArrayList plots) { + @Override public boolean callMerge(Plot plot, List plots) { return callEvent(new PlotMergeEvent(BukkitUtil.getWorld(plot.getWorldName()), plot, plots)); } - @Override public boolean callUnlink(PlotArea area, ArrayList plots) { + @Override public boolean callUnlink(PlotArea area, List plots) { return callEvent(new PlotUnlinkEvent(BukkitUtil.getWorld(area.worldname), area, plots)); } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Auto.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Auto.java index a8636d1e1..33048e0fd 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Auto.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Auto.java @@ -244,7 +244,7 @@ public class Auto extends SubCommand { } } if (!plotarea - .mergePlots(MainUtil.getPlotSelectionIds(start, end), true, true)) { + .mergePlots(MainUtil.getPlotSelectionIds(start, end), true)) { return false; } break; diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Cluster.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Cluster.java index 154a8f914..c8360f696 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Cluster.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/commands/Cluster.java @@ -244,10 +244,12 @@ import java.util.UUID; MainUtil.sendMessage(player, C.CLUSTER_INTERSECTION, intersect.getName()); return false; } - HashSet existing = + Set existing = area.getPlotSelectionOwned(cluster.getP1(), cluster.getP2()); - HashSet newPlots = area.getPlotSelectionOwned(pos1, pos2); - HashSet removed = (HashSet) existing.clone(); + Set newPlots = area.getPlotSelectionOwned(pos1, pos2); + // Set removed = (HashSet) existing.clone(); + Set removed = new HashSet<>(existing); + removed.removeAll(newPlots); // Check expand / shrink if (!removed.isEmpty()) { diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/config/Configuration.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/config/Configuration.java index 470421cc3..b50de8ca6 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/config/Configuration.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/config/Configuration.java @@ -12,25 +12,6 @@ import lombok.NonNull; */ public class Configuration { - public static final SettingValue STRING = new SettingValue("STRING") { - @Override public boolean validateValue(String string) { - return true; - } - - @Override public String parseString(String string) { - return string; - } - }; - public static final SettingValue STRINGLIST = - new SettingValue("STRINGLIST") { - @Override public boolean validateValue(String string) { - return true; - } - - @Override public String[] parseString(String string) { - return string.split(","); - } - }; public static final SettingValue INTEGER = new SettingValue("INTEGER") { @Override public boolean validateValue(String string) { try { @@ -47,6 +28,7 @@ public class Configuration { }; public static final SettingValue BOOLEAN = new SettingValue("BOOLEAN") { @Override public boolean validateValue(String string) { + //noinspection ResultOfMethodCallIgnored Boolean.parseBoolean(string); return true; } @@ -55,20 +37,6 @@ public class Configuration { return Boolean.parseBoolean(string); } }; - public static final SettingValue DOUBLE = new SettingValue("DOUBLE") { - @Override public boolean validateValue(String string) { - try { - Double.parseDouble(string); - return true; - } catch (NumberFormatException ignored) { - return false; - } - } - - @Override public Double parseString(String string) { - return Double.parseDouble(string); - } - }; public static final SettingValue BIOME = new SettingValue("BIOME") { @Override public boolean validateValue(String string) { try { @@ -112,7 +80,8 @@ public class Configuration { WorldUtil.IMP.getClosestBlock(block); if (value == null) { throw new UnknownBlockException(block); - } else if (!value.best.isAir() && !WorldUtil.IMP.isBlockSolid(value.best)) { + } else if (Settings.Enabled_Components.PREVENT_UNSAFE && !value.best.isAir() && + !WorldUtil.IMP.isBlockSolid(value.best)) { throw new UnsafeBlockException(value.best); } blockBucket.addBlock(value.best, chance); @@ -145,7 +114,7 @@ public class Configuration { WorldUtil.IMP.getClosestBlock(block); if (value == null || value.match > 1) { return false; - } else if (!value.best.isAir() && !WorldUtil.IMP.isBlockSolid(value.best)) { + } else if (Settings.Enabled_Components.PREVENT_UNSAFE && !value.best.isAir() && !WorldUtil.IMP.isBlockSolid(value.best)) { throw new UnsafeBlockException(value.best); } } @@ -156,27 +125,12 @@ public class Configuration { } }; - public static int gcd(int a, int b) { - if (b == 0) { - return a; - } - return gcd(b, a % b); - } - - private static int gcd(int[] a) { - int result = a[0]; - for (int i = 1; i < a.length; i++) { - result = gcd(result, a[i]); - } - return result; - } - public static final class UnknownBlockException extends IllegalArgumentException { @Getter private final String unknownValue; - public UnknownBlockException(@NonNull final String unknownValue) { + UnknownBlockException(@NonNull final String unknownValue) { super(String.format("\"%s\" is not a valid block", unknownValue)); this.unknownValue = unknownValue; } @@ -191,7 +145,7 @@ public class Configuration { private final String type; - public SettingValue(String type) { + SettingValue(String type) { this.type = type; } @@ -209,7 +163,7 @@ public class Configuration { @Getter private final PlotBlock unsafeBlock; - public UnsafeBlockException(@NonNull final PlotBlock unsafeBlock) { + UnsafeBlockException(@NonNull final PlotBlock unsafeBlock) { super(String.format("%s is not a valid block", unsafeBlock)); this.unsafeBlock = unsafeBlock; } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/config/Settings.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/config/Settings.java index 7c9d3542b..d67a0ea0c 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/config/Settings.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/config/Settings.java @@ -354,5 +354,7 @@ public class Settings extends Config { @Comment("Actively purge invalid database entries") public static boolean DATABASE_PURGER = false; @Comment("Delete plots when a player is banned") public static boolean BAN_DELETER = false; + @Comment("Prevent possibly unsafe blocks from being used in plot components") public static + boolean PREVENT_UNSAFE = true; } } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/ClassicPlotManager.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/ClassicPlotManager.java index f69ea6785..a553140b2 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/ClassicPlotManager.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/ClassicPlotManager.java @@ -5,7 +5,7 @@ import com.github.intellectualsites.plotsquared.plot.util.MathMan; import com.github.intellectualsites.plotsquared.plot.util.block.GlobalBlockQueue; import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue; -import java.util.ArrayList; +import java.util.List; /** * A plot manager with square plots which tessellate on a square grid with the following sections: ROAD, WALL, BORDER (wall), PLOT, FLOOR (plot). @@ -424,23 +424,23 @@ public class ClassicPlotManager extends SquarePlotManager { /** * Finishing off plot merging by adding in the walls surrounding the plot (OPTIONAL)(UNFINISHED). */ - @Override public boolean finishPlotMerge(PlotArea plotArea, ArrayList plotIds) { + @Override public boolean finishPlotMerge(PlotArea plotArea, List plotIds) { final BlockBucket block = ((ClassicPlotWorld) plotArea).CLAIMED_WALL_BLOCK; plotIds.forEach(id -> setWall(plotArea, id, block)); return true; } - @Override public boolean finishPlotUnlink(PlotArea plotArea, ArrayList plotIds) { + @Override public boolean finishPlotUnlink(PlotArea plotArea, List plotIds) { final BlockBucket block = ((ClassicPlotWorld) plotArea).CLAIMED_WALL_BLOCK; plotIds.forEach(id -> setWall(plotArea, id, block)); return true; } - @Override public boolean startPlotMerge(PlotArea plotArea, ArrayList plotIds) { + @Override public boolean startPlotMerge(PlotArea plotArea, List plotIds) { return true; } - @Override public boolean startPlotUnlink(PlotArea plotArea, ArrayList plotIds) { + @Override public boolean startPlotUnlink(PlotArea plotArea, List plotIds) { return true; } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/ClassicPlotWorld.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/ClassicPlotWorld.java index 745770fe2..816adbf55 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/ClassicPlotWorld.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/generator/ClassicPlotWorld.java @@ -1,12 +1,19 @@ package com.github.intellectualsites.plotsquared.plot.generator; import com.github.intellectualsites.plotsquared.configuration.ConfigurationSection; +import com.github.intellectualsites.plotsquared.plot.PlotSquared; import com.github.intellectualsites.plotsquared.plot.config.Configuration; import com.github.intellectualsites.plotsquared.plot.config.ConfigurationNode; +import com.github.intellectualsites.plotsquared.plot.config.Settings; import com.github.intellectualsites.plotsquared.plot.object.BlockBucket; import com.github.intellectualsites.plotsquared.plot.object.PlotBlock; import com.github.intellectualsites.plotsquared.plot.object.PlotId; +import javax.annotation.Nonnull; +import java.lang.reflect.Field; +import java.util.Locale; + +@SuppressWarnings("WeakerAccess") public abstract class ClassicPlotWorld extends SquarePlotWorld { public int ROAD_HEIGHT = 62; @@ -38,7 +45,7 @@ public abstract class ClassicPlotWorld extends SquarePlotWorld { * command - this may be useful if a config value can be changed at a later date, and has no impact on the actual * world generation

*/ - @Override public ConfigurationNode[] getSettingNodes() { + @Nonnull @Override public ConfigurationNode[] getSettingNodes() { return new ConfigurationNode[] { new ConfigurationNode("plot.height", this.PLOT_HEIGHT, "Plot height", Configuration.INTEGER), @@ -84,5 +91,24 @@ public abstract class ClassicPlotWorld extends SquarePlotWorld { this.WALL_HEIGHT = Math.min(254, config.getInt("wall.height")); this.CLAIMED_WALL_BLOCK = Configuration.BLOCK_BUCKET.parseString(config.getString("wall.block_claimed")); + + // Dump world settings + if (Settings.DEBUG) { + PlotSquared.debug(String.format("- Dumping settings for ClassicPlotWorld with name %s", this.worldname)); + final Field[] fields = this.getClass().getFields(); + for (final Field field : fields) { + final String name = field.getName().toLowerCase(Locale.ENGLISH); + Object value; + try { + final boolean accessible = field.isAccessible(); + field.setAccessible(true); + value = field.get(this); + field.setAccessible(accessible); + } catch (final IllegalAccessException e) { + value = String.format("Failed to parse: %s", e.getMessage()); + } + PlotSquared.debug(String.format("-- %s = %s", name, value)); + } + } } } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/Plot.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/Plot.java index f330bad3c..fe5db5e8f 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/Plot.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/Plot.java @@ -21,6 +21,7 @@ import com.google.common.collect.BiMap; import com.google.common.collect.ImmutableSet; import com.sk89q.jnbt.CompoundTag; +import javax.annotation.Nullable; import java.awt.geom.Area; import java.awt.geom.PathIterator; import java.awt.geom.Rectangle2D; @@ -2052,7 +2053,7 @@ public class Plot { * @param player the claiming player * @return */ - public boolean canClaim(PlotPlayer player) { + public boolean canClaim(@Nullable PlotPlayer player) { PlotCluster cluster = this.getCluster(); if (cluster != null && player != null) { if (!cluster.isAdded(player.getUUID()) && !Permissions diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotArea.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotArea.java index 498119dec..c8173ed15 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotArea.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotArea.java @@ -15,13 +15,14 @@ import com.github.intellectualsites.plotsquared.plot.util.area.QuadMap; import com.github.intellectualsites.plotsquared.plot.util.block.GlobalBlockQueue; import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue; +import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.*; import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; /** - * @author Jesse Boyd + * @author Jesse Boyd, Alexander Söderberg */ public abstract class PlotArea { @@ -65,8 +66,8 @@ public abstract class PlotArea { private ConcurrentHashMap meta; private QuadMap clusters; - public PlotArea(String worldName, String id, IndependentPlotGenerator generator, PlotId min, - PlotId max) { + public PlotArea(@Nonnull final String worldName, @Nullable final String id, @Nullable IndependentPlotGenerator generator, + @Nullable final PlotId min, @Nullable final PlotId max) { this.worldname = worldName; this.id = id; this.manager = generator != null ? generator.getNewPlotManager() : null; @@ -88,11 +89,8 @@ public abstract class PlotArea { /** * Create a new PlotArea object with no functionality/information. * - Mainly used during startup before worlds are created as a temporary object - * - * @param world - * @return */ - public static PlotArea createGeneric(String world) { + public static PlotArea createGeneric(@Nonnull final String world) { return new PlotArea(world, null, null, null, null) { @Override public void loadConfiguration(ConfigurationSection config) { } @@ -103,7 +101,7 @@ public abstract class PlotArea { }; } - public LocalBlockQueue getQueue(boolean autoQueue) { + public LocalBlockQueue getQueue(final boolean autoQueue) { return GlobalBlockQueue.IMP.getNewQueue(worldname, autoQueue); } @@ -127,7 +125,7 @@ public abstract class PlotArea { * * @return RegionWrapper or null if no applicable region */ - public RegionWrapper getRegionAbs() { + private RegionWrapper getRegionAbs() { if (this.region == null) { if (this.min != null) { Location bot = getPlotManager().getPlotBottomLocAbs(this, this.min); @@ -179,7 +177,7 @@ public abstract class PlotArea { } public Set getClusters() { - return this.clusters == null ? new HashSet() : this.clusters.getAll(); + return this.clusters == null ? new HashSet<>() : this.clusters.getAll(); } /** @@ -377,7 +375,7 @@ public abstract class PlotArea { } } - @Override public String toString() { + @Nonnull @Override public String toString() { if (this.id == null) { return this.worldname; } else { @@ -397,7 +395,7 @@ public abstract class PlotArea { * * @return ConfigurationNode[] */ - public abstract ConfigurationNode[] getSettingNodes(); + public abstract ConfigurationNode[] getSettingNodes(); /** * Gets the {@code Plot} at a location. @@ -405,8 +403,8 @@ public abstract class PlotArea { * @param location the location * @return the {@code Plot} or null if none exists */ - public Plot getPlotAbs(Location location) { - PlotId pid = + @Nullable public Plot getPlotAbs(@Nonnull final Location location) { + final PlotId pid = this.manager.getPlotId(this, location.getX(), location.getY(), location.getZ()); if (pid == null) { return null; @@ -420,8 +418,8 @@ public abstract class PlotArea { * @param location the location * @return base Plot */ - public Plot getPlot(Location location) { - PlotId pid = + @Nullable public Plot getPlot(@Nonnull final Location location) { + final PlotId pid = this.manager.getPlotId(this, location.getX(), location.getY(), location.getZ()); if (pid == null) { return null; @@ -435,8 +433,8 @@ public abstract class PlotArea { * @param location the location * @return the base plot or null */ - public Plot getOwnedPlot(Location location) { - PlotId pid = + @Nullable public Plot getOwnedPlot(@Nonnull final Location location) { + final PlotId pid = this.manager.getPlotId(this, location.getX(), location.getY(), location.getZ()); if (pid == null) { return null; @@ -451,8 +449,8 @@ public abstract class PlotArea { * @param location the location * @return Plot or null */ - public Plot getOwnedPlotAbs(Location location) { - PlotId pid = + @Nullable public Plot getOwnedPlotAbs(@Nonnull final Location location) { + final PlotId pid = this.manager.getPlotId(this, location.getX(), location.getY(), location.getZ()); if (pid == null) { return null; @@ -466,30 +464,30 @@ public abstract class PlotArea { * @param id the {@code PlotId} * @return the plot or null */ - public Plot getOwnedPlotAbs(PlotId id) { + @Nullable public Plot getOwnedPlotAbs(@Nonnull final PlotId id) { return this.plots.get(id); } - public Plot getOwnedPlot(PlotId id) { + @Nullable public Plot getOwnedPlot(@Nonnull final PlotId id) { Plot plot = this.plots.get(id); return plot == null ? null : plot.getBasePlot(false); } - public boolean contains(int x, int z) { + public boolean contains(final int x, final int z) { return this.TYPE != 2 || getRegionAbs().isIn(x, z); } - public boolean contains(PlotId id) { + public boolean contains(@Nonnull final PlotId id) { return this.min == null || (id.x >= this.min.x && id.x <= this.max.x && id.y >= this.min.y && id.y <= this.max.y); } - public boolean contains(Location location) { + public boolean contains(@Nonnull final Location location) { return StringMan.isEqual(location.getWorld(), this.worldname) && (getRegionAbs() == null || this.region.isIn(location.getX(), location.getZ())); } - public Set getPlotsAbs(final UUID uuid) { + @Nonnull Set getPlotsAbs(final UUID uuid) { if (uuid == null) { return Collections.emptySet(); } @@ -504,19 +502,17 @@ public abstract class PlotArea { return myPlots; } - public Set getPlots(UUID uuid) { - HashSet myplots = new HashSet<>(); - for (Plot plot : getPlots()) { - if (plot.isBasePlot()) { - if (plot.isOwner(uuid)) { - myplots.add(plot); - } + @Nonnull public Set getPlots(@Nonnull final UUID uuid) { + final Set myplots = new HashSet<>(); + for (final Plot plot : getPlots()) { + if (plot.isBasePlot() && plot.isOwner(uuid)) { + myplots.add(plot); } } return myplots; } - public Set getPlots(PlotPlayer player) { + public Set getPlots(@Nonnull final PlotPlayer player) { return getPlots(player.getUUID()); } @@ -529,11 +525,7 @@ public abstract class PlotArea { return this.plots.values(); } - public Set getPlotsAbs(PlotPlayer player) { - return player != null ? getPlotsAbs(player.getUUID()) : new HashSet(); - } - - public int getPlotCount(UUID uuid) { + public int getPlotCount(@Nonnull final UUID uuid) { if (!Settings.Done.COUNTS_TOWARDS_LIMIT) { int count = 0; for (Plot plot : getPlotsAbs(uuid)) { @@ -546,7 +538,7 @@ public abstract class PlotArea { return getPlotsAbs(uuid).size(); } - public boolean hasPlot(UUID uuid) { + public boolean hasPlot(@Nonnull final UUID uuid) { for (Entry entry : this.plots.entrySet()) { if (entry.getValue().isOwner(uuid)) return true; @@ -554,11 +546,11 @@ public abstract class PlotArea { return false; } - public int getPlotCount(PlotPlayer player) { + public int getPlotCount(@Nullable final PlotPlayer player) { return player != null ? getPlotCount(player.getUUID()) : 0; } - public Plot getPlotAbs(PlotId id) { + @Nullable public Plot getPlotAbs(@Nonnull final PlotId id) { Plot plot = getOwnedPlotAbs(id); if (plot == null) { if (this.min != null && (id.x < this.min.x || id.x > this.max.x || id.y < this.min.y @@ -570,8 +562,8 @@ public abstract class PlotArea { return plot; } - public Plot getPlot(PlotId id) { - Plot plot = getOwnedPlotAbs(id); + @Nullable public Plot getPlot(@Nonnull final PlotId id) { + final Plot plot = getOwnedPlotAbs(id); if (plot == null) { if (this.min != null && (id.x < this.min.x || id.x > this.max.x || id.y < this.min.y || id.y > this.max.y)) { @@ -591,15 +583,15 @@ public abstract class PlotArea { return this.plots.size(); } - public PlotCluster getCluster(Location location) { - Plot plot = getPlot(location); + @Nullable public PlotCluster getCluster(@Nonnull final Location location) { + final Plot plot = getPlot(location); if (plot == null) { return null; } return this.clusters != null ? this.clusters.get(plot.getId().x, plot.getId().y) : null; } - public PlotCluster getFirstIntersectingCluster(PlotId pos1, PlotId pos2) { + @Nullable public PlotCluster getFirstIntersectingCluster(@Nonnull final PlotId pos1, @Nonnull final PlotId pos2) { if (this.clusters == null) { return null; } @@ -611,7 +603,7 @@ public abstract class PlotArea { return null; } - public PlotCluster getCluster(PlotId id) { + @Nullable PlotCluster getCluster(@Nonnull final PlotId id) { return this.clusters != null ? this.clusters.get(id.x, id.y) : null; } @@ -623,20 +615,17 @@ public abstract class PlotArea { * Session only plot metadata (session is until the server stops). *
* For persistent metadata use the flag system - * - * @param key - * @param value * @see FlagManager */ - public void setMeta(String key, Object value) { + public void setMeta(@Nonnull final String key, @Nullable final Object value) { if (this.meta == null) { this.meta = new ConcurrentHashMap<>(); } this.meta.put(key, value); } - public T getMeta(String key, T def) { - Object v = getMeta(key); + @Nullable public T getMeta(@Nullable final String key, @Nullable final T def) { + final Object v = getMeta(key); return v == null ? def : (T) v; } @@ -644,59 +633,50 @@ public abstract class PlotArea { * Get the metadata for a key
*
* For persistent metadata use the flag system - * - * @param key - * @return */ - public Object getMeta(String key) { + @Nullable public Object getMeta(@Nonnull final String key) { if (this.meta != null) { return this.meta.get(key); } return null; } - public Set getBasePlots() { - HashSet myPlots = new HashSet<>(getPlots()); - Iterator iterator = myPlots.iterator(); - while (iterator.hasNext()) { - if (!iterator.next().isBasePlot()) { - iterator.remove(); - } - } + @SuppressWarnings("unused") @Nonnull public Set getBasePlots() { + final HashSet myPlots = new HashSet<>(getPlots()); + myPlots.removeIf(plot -> !plot.isBasePlot()); return myPlots; } - public void foreachPlotAbs(RunnableVal run) { - for (Entry entry : this.plots.entrySet()) { + private void foreachPlotAbs(@Nonnull final RunnableVal run) { + for (final Entry entry : this.plots.entrySet()) { run.run(entry.getValue()); } - } - public void foreachBasePlot(RunnableVal run) { - for (Plot plot : getPlots()) { + public void foreachBasePlot(@Nonnull final RunnableVal run) { + for (final Plot plot : getPlots()) { if (plot.isBasePlot()) { run.run(plot); } } } - public Map getPlotsRaw() { + @Nonnull public Map getPlotsRaw() { return this.plots; } - public Set> getPlotEntries() { + @Nonnull public Set> getPlotEntries() { return this.plots.entrySet(); } - public boolean addPlot(Plot plot) { + public boolean addPlot(@Nonnull final Plot plot) { for (PlotPlayer pp : plot.getPlayersInPlot()) { pp.setMeta(PlotPlayer.META_LAST_PLOT, plot); } return this.plots.put(plot.getId(), plot) == null; } - public Plot getNextFreePlot(PlotPlayer player, @Nullable PlotId start) { + public Plot getNextFreePlot(final PlotPlayer player, @Nullable PlotId start) { int plots; PlotId center; PlotId min = getMin(); @@ -710,7 +690,7 @@ public abstract class PlotArea { center = new PlotId(0, 0); plots = Integer.MAX_VALUE; } - PlotId currentId = new PlotId(0, 0); + PlotId currentId; for (int i = 0; i < plots; i++) { if (start == null) { start = getMeta("lastPlot", new PlotId(0, 0)); @@ -727,7 +707,7 @@ public abstract class PlotArea { return null; } - public boolean addPlotIfAbsent(Plot plot) { + public boolean addPlotIfAbsent(@Nonnull final Plot plot) { if (this.plots.putIfAbsent(plot.getId(), plot) == null) { for (PlotPlayer pp : plot.getPlayersInPlot()) { pp.setMeta(PlotPlayer.META_LAST_PLOT, plot); @@ -737,46 +717,17 @@ public abstract class PlotArea { return false; } - public boolean addPlotAbs(Plot plot) { + public boolean addPlotAbs(@Nonnull final Plot plot) { return this.plots.put(plot.getId(), plot) == null; } - /** - * Check if the plots in a selection are unowned. - * - * @param pos1 first corner of selection - * @param pos2 second corner of selection - * @return are plots in selection unowned - */ - public boolean isUnowned(PlotId pos1, PlotId pos2) { - int area = (pos2.x - pos1.x + 1) * (pos2.y - pos1.y + 1); - if (area > getPlotCount()) { - for (Plot plot : getPlots()) { - if (plot.getId().x >= pos1.x && plot.getId().x <= pos2.x && plot.getId().y >= pos1.y - && plot.getId().y <= pos2.y) { - return false; - } - } - } else { - for (int x = pos1.x; x <= pos2.x; x++) { - for (int y = pos1.y; y <= pos2.y; y++) { - PlotId id = new PlotId(x, y); - if (this.plots.get(id) != null) { - return false; - } - } - } - } - return true; - } - /** * Get the plot border distance for a world
* * @return The border distance or Integer.MAX_VALUE if no border is set */ public int getBorder() { - Integer meta = (Integer) getMeta("worldBorder"); + final Integer meta = (Integer) getMeta("worldBorder"); if (meta != null) { int border = meta + 1; if (border == 0) { @@ -795,11 +746,11 @@ public abstract class PlotArea { if (!this.WORLD_BORDER) { return; } - Integer meta = (Integer) getMeta("worldBorder"); + final Integer meta = (Integer) getMeta("worldBorder"); if (meta == null) { setMeta("worldBorder", 1); } - for (Plot plot : getPlots()) { + for (final Plot plot : getPlots()) { plot.updateWorldBorder(); } } @@ -809,30 +760,33 @@ public abstract class PlotArea { * - metadata is session only * - deleting other plugin's metadata may cause issues * - * @param key + * @param key Meta data key */ - public void deleteMeta(String key) { + public void deleteMeta(@Nonnull final String key) { if (this.meta != null) { this.meta.remove(key); } } - public boolean canClaim(PlotPlayer player, PlotId pos1, PlotId pos2) { + public boolean canClaim(@Nullable final PlotPlayer player, @Nonnull final PlotId pos1, + @Nonnull final PlotId pos2) { if (pos1.x == pos2.x && pos1.y == pos2.y) { if (getOwnedPlot(pos1) != null) { return false; } - Plot plot = getPlotAbs(pos1); - if (plot == null) + final Plot plot = getPlotAbs(pos1); + if (plot == null) { return false; + } return plot.canClaim(player); } for (int x = pos1.x; x <= pos2.x; x++) { for (int y = pos1.y; y <= pos2.y; y++) { - PlotId id = new PlotId(x, y); - Plot plot = getPlotAbs(id); - if (plot == null) + final PlotId id = new PlotId(x, y); + final Plot plot = getPlotAbs(id); + if (plot == null) { return false; + } if (!plot.canClaim(player)) { return false; } @@ -841,27 +795,27 @@ public abstract class PlotArea { return true; } - public boolean removePlot(PlotId id) { + public boolean removePlot(@Nonnull final PlotId id) { return this.plots.remove(id) != null; } - public boolean mergePlots(ArrayList plotIds, boolean removeRoads, - boolean updateDatabase) { + public boolean mergePlots(@Nonnull final List plotIds, final boolean removeRoads) { if (plotIds.size() < 2) { return false; } - PlotId pos1 = plotIds.get(0); - PlotId pos2 = plotIds.get(plotIds.size() - 1); - PlotManager manager = getPlotManager(); - boolean result = EventUtil.manager.callMerge(getPlotAbs(pos1), plotIds); + final PlotId pos1 = plotIds.get(0); + final PlotId pos2 = plotIds.get(plotIds.size() - 1); + final PlotManager manager = getPlotManager(); + + final boolean result = EventUtil.manager.callMerge(getPlotAbs(pos1), plotIds); if (!result) { return false; } - HashSet trusted = new HashSet<>(); - HashSet members = new HashSet<>(); - HashSet denied = new HashSet<>(); + final Set trusted = new HashSet<>(); + final Set members = new HashSet<>(); + final Set denied = new HashSet<>(); manager.startPlotMerge(this, plotIds); for (int x = pos1.x; x <= pos2.x; x++) { @@ -881,13 +835,15 @@ public abstract class PlotArea { denied.removeAll(members); for (int x = pos1.x; x <= pos2.x; x++) { for (int y = pos1.y; y <= pos2.y; y++) { - boolean lx = x < pos2.x; - boolean ly = y < pos2.y; - PlotId id = new PlotId(x, y); - Plot plot = getPlotAbs(id); + final boolean lx = x < pos2.x; + final boolean ly = y < pos2.y; + final PlotId id = new PlotId(x, y); + final Plot plot = getPlotAbs(id); + plot.setTrusted(trusted); plot.setMembers(members); plot.setDenied(denied); + Plot plot2; if (lx) { if (ly) { @@ -922,12 +878,12 @@ public abstract class PlotArea { * @param pos2 second corner of selection * @return the plots in the selection which are owned */ - public HashSet getPlotSelectionOwned(PlotId pos1, PlotId pos2) { - int size = (1 + pos2.x - pos1.x) * (1 + pos2.y - pos1.y); - HashSet result = new HashSet<>(); + public Set getPlotSelectionOwned(@Nonnull final PlotId pos1, @Nonnull final PlotId pos2) { + final int size = (1 + pos2.x - pos1.x) * (1 + pos2.y - pos1.y); + final Set result = new HashSet<>(); if (size < 16 || size < getPlotCount()) { - for (PlotId pid : MainUtil.getPlotSelectionIds(pos1, pos2)) { - Plot plot = getPlotAbs(pid); + for (final PlotId pid : MainUtil.getPlotSelectionIds(pos1, pos2)) { + final Plot plot = getPlotAbs(pid); if (plot.hasOwner()) { if (plot.getId().x > pos1.x || plot.getId().y > pos1.y || plot.getId().x < pos2.x || plot.getId().y < pos2.y) { @@ -936,7 +892,7 @@ public abstract class PlotArea { } } } else { - for (Plot plot : getPlots()) { + for (final Plot plot : getPlots()) { if (plot.getId().x > pos1.x || plot.getId().y > pos1.y || plot.getId().x < pos2.x || plot.getId().y < pos2.y) { result.add(plot); @@ -946,14 +902,15 @@ public abstract class PlotArea { return result; } - public void removeCluster(PlotCluster plotCluster) { + @SuppressWarnings("WeakerAccess") + public void removeCluster(@Nullable final PlotCluster plotCluster) { if (this.clusters == null) { throw new IllegalAccessError("Clusters not enabled!"); } this.clusters.remove(plotCluster); } - public void addCluster(PlotCluster plotCluster) { + public void addCluster(@Nullable final PlotCluster plotCluster) { if (this.clusters == null) { this.clusters = new QuadMap(Integer.MAX_VALUE, 0, 0, 62) { @Override public RegionWrapper getRegion(PlotCluster value) { @@ -965,7 +922,7 @@ public abstract class PlotArea { this.clusters.add(plotCluster); } - public PlotCluster getCluster(String string) { + @Nullable public PlotCluster getCluster(final String string) { for (PlotCluster cluster : getClusters()) { if (cluster.getName().equalsIgnoreCase(string)) { return cluster; @@ -973,4 +930,5 @@ public abstract class PlotArea { } return null; } + } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotManager.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotManager.java index 4a7b3b8a2..0e99ce00a 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotManager.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/PlotManager.java @@ -4,9 +4,9 @@ import com.github.intellectualsites.plotsquared.plot.commands.Template; import com.github.intellectualsites.plotsquared.plot.config.Settings; import java.io.IOException; -import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; +import java.util.List; public abstract class PlotManager { @@ -60,13 +60,13 @@ public abstract class PlotManager { public abstract boolean removeRoadSouthEast(PlotArea plotArea, Plot plot); - public abstract boolean startPlotMerge(PlotArea plotArea, ArrayList plotIds); + public abstract boolean startPlotMerge(PlotArea plotArea, List plotIds); - public abstract boolean startPlotUnlink(PlotArea plotArea, ArrayList plotIds); + public abstract boolean startPlotUnlink(PlotArea plotArea, List plotIds); - public abstract boolean finishPlotMerge(PlotArea plotArea, ArrayList plotIds); + public abstract boolean finishPlotMerge(PlotArea plotArea, List plotIds); - public abstract boolean finishPlotUnlink(PlotArea plotArea, ArrayList plotIds); + public abstract boolean finishPlotUnlink(PlotArea plotArea, List plotIds); public void exportTemplate(PlotArea plotArea) throws IOException { HashSet files = new HashSet<>(Collections.singletonList( diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/worlds/SinglePlotArea.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/worlds/SinglePlotArea.java index bca105f6d..1cc49f682 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/worlds/SinglePlotArea.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/worlds/SinglePlotArea.java @@ -9,6 +9,9 @@ import com.github.intellectualsites.plotsquared.plot.util.SetupUtils; import com.github.intellectualsites.plotsquared.plot.util.TaskManager; import com.github.intellectualsites.plotsquared.plot.util.WorldUtil; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + public class SinglePlotArea extends GridPlotWorld { public boolean VOID = false; @@ -58,7 +61,7 @@ public class SinglePlotArea extends GridPlotWorld { new ConfigurationNode("void", this.VOID, "Void world", Configuration.BOOLEAN)}; } - @Override public Plot getOwnedPlot(Location location) { + @Nullable @Override public Plot getOwnedPlot(@Nonnull final Location location) { PlotId pid = PlotId.fromString(location.getWorld()); if (pid == null) { return null; @@ -67,7 +70,7 @@ public class SinglePlotArea extends GridPlotWorld { return plot == null ? null : plot.getBasePlot(false); } - @Override public Plot getOwnedPlotAbs(Location location) { + @Nullable @Override public Plot getOwnedPlotAbs(@Nonnull Location location) { PlotId pid = PlotId.fromString(location.getWorld()); if (pid == null) { return null; @@ -75,7 +78,7 @@ public class SinglePlotArea extends GridPlotWorld { return plots.get(pid); } - @Override public Plot getPlot(Location location) { + @Nullable @Override public Plot getPlot(@Nonnull final Location location) { PlotId pid = PlotId.fromString(location.getWorld()); if (pid == null) { return null; @@ -83,30 +86,30 @@ public class SinglePlotArea extends GridPlotWorld { return getPlot(pid); } - @Override public Plot getPlotAbs(Location location) { - PlotId pid = PlotId.fromString(location.getWorld()); + @Nullable @Override public Plot getPlotAbs(@Nonnull final Location location) { + final PlotId pid = PlotId.fromString(location.getWorld()); if (pid == null) { return null; } return getPlotAbs(pid); } - public boolean addPlot(Plot plot) { + public boolean addPlot(@Nonnull Plot plot) { plot = adapt(plot); return super.addPlot(plot); } - @Override public boolean addPlotAbs(Plot plot) { + @Override public boolean addPlotAbs(@Nonnull Plot plot) { plot = adapt(plot); return super.addPlotAbs(plot); } - @Override public boolean addPlotIfAbsent(Plot plot) { + @Override public boolean addPlotIfAbsent(@Nonnull Plot plot) { plot = adapt(plot); return super.addPlotIfAbsent(plot); } - protected Plot adapt(Plot p) { + private Plot adapt(Plot p) { if (p instanceof SinglePlot) { return p; } @@ -117,7 +120,7 @@ public class SinglePlotArea extends GridPlotWorld { return p; } - public Plot getPlotAbs(PlotId id) { + @Nullable public Plot getPlotAbs(@Nonnull final PlotId id) { Plot plot = getOwnedPlotAbs(id); if (plot == null) { return new SinglePlot(this, id); @@ -125,7 +128,7 @@ public class SinglePlotArea extends GridPlotWorld { return plot; } - public Plot getPlot(PlotId id) { + @Nullable public Plot getPlot(@Nonnull PlotId id) { // TODO Plot plot = getOwnedPlotAbs(id); if (plot == null) { diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/worlds/SinglePlotManager.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/worlds/SinglePlotManager.java index 0222dc815..8e5a6da12 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/worlds/SinglePlotManager.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/object/worlds/SinglePlotManager.java @@ -7,7 +7,7 @@ import com.github.intellectualsites.plotsquared.plot.util.SetupUtils; import com.github.intellectualsites.plotsquared.plot.util.TaskManager; import java.io.File; -import java.util.ArrayList; +import java.util.List; public class SinglePlotManager extends PlotManager { @Override public PlotId getPlotIdAbs(PlotArea plotArea, int x, int y, int z) { @@ -88,19 +88,19 @@ public class SinglePlotManager extends PlotManager { return false; } - @Override public boolean startPlotMerge(PlotArea plotArea, ArrayList plotIds) { + @Override public boolean startPlotMerge(PlotArea plotArea, List plotIds) { return false; } - @Override public boolean startPlotUnlink(PlotArea plotArea, ArrayList plotIds) { + @Override public boolean startPlotUnlink(PlotArea plotArea, List plotIds) { return false; } - @Override public boolean finishPlotMerge(PlotArea plotArea, ArrayList plotIds) { + @Override public boolean finishPlotMerge(PlotArea plotArea, List plotIds) { return false; } - @Override public boolean finishPlotUnlink(PlotArea plotArea, ArrayList plotIds) { + @Override public boolean finishPlotUnlink(PlotArea plotArea, List plotIds) { return false; } } diff --git a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/EventUtil.java b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/EventUtil.java index 45052042a..1a7d8bb8c 100644 --- a/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/EventUtil.java +++ b/Core/src/main/java/com/github/intellectualsites/plotsquared/plot/util/EventUtil.java @@ -11,8 +11,8 @@ import com.github.intellectualsites.plotsquared.plot.util.expiry.ExpireManager; import com.google.common.base.Optional; import javax.annotation.Nullable; -import java.util.ArrayList; import java.util.HashSet; +import java.util.List; import java.util.UUID; public abstract class EventUtil { @@ -45,9 +45,9 @@ public abstract class EventUtil { public abstract boolean callFlagRemove(Flag flag, Object value, PlotCluster cluster); - public abstract boolean callMerge(Plot plot, ArrayList plots); + public abstract boolean callMerge(Plot plot, List plots); - public abstract boolean callUnlink(PlotArea area, ArrayList plots); + public abstract boolean callUnlink(PlotArea area, List plots); public abstract void callEntry(PlotPlayer player, Plot plot); @@ -90,11 +90,7 @@ public abstract class EventUtil { public void doRespawnTask(final PlotPlayer player) { final Plot plot = player.getCurrentPlot(); if (Settings.Teleport.ON_DEATH && plot != null) { - TaskManager.runTask(new Runnable() { - @Override public void run() { - plot.teleportPlayer(player); - } - }); + TaskManager.runTask(() -> plot.teleportPlayer(player)); MainUtil.sendMessage(player, C.TELEPORTED_TO_ROAD); } } diff --git a/Core/src/test/java/com/github/intellectualsites/plotsquared/plot/util/EventUtilTest.java b/Core/src/test/java/com/github/intellectualsites/plotsquared/plot/util/EventUtilTest.java index 566a459b3..aee8176b9 100644 --- a/Core/src/test/java/com/github/intellectualsites/plotsquared/plot/util/EventUtilTest.java +++ b/Core/src/test/java/com/github/intellectualsites/plotsquared/plot/util/EventUtilTest.java @@ -3,7 +3,7 @@ package com.github.intellectualsites.plotsquared.plot.util; import com.github.intellectualsites.plotsquared.plot.flag.Flag; import com.github.intellectualsites.plotsquared.plot.object.*; -import java.util.ArrayList; +import java.util.List; import java.util.UUID; public class EventUtilTest extends EventUtil { @@ -43,11 +43,11 @@ public class EventUtilTest extends EventUtil { return true; } - @Override public boolean callMerge(Plot plot, ArrayList plots) { + @Override public boolean callMerge(Plot plot, List plots) { return false; } - @Override public boolean callUnlink(PlotArea area, ArrayList plots) { + @Override public boolean callUnlink(PlotArea area, List plots) { return false; }