Fix merging

This commit is contained in:
NotMyFault 2019-09-08 20:02:45 +02:00
parent fe730574c9
commit 04f789d404
89 changed files with 854 additions and 823 deletions

View File

@ -3,15 +3,13 @@ __*NOTICE: Bukkit/Spigot versions 1.7.10 to 1.12.2 are considered legacy and wil
<!--- In order to create a valid issue report you have to follow this template. -->
<!--- Incomplete reports might be marked as invalid. -->
<!-- Feature requests and enhancements may be suggested at https://github.com/IntellectualSites/PlotSquaredSuggestions. -->
**[REQUIRED] PlotSquared Version Number:** <!--- Enter /plot version in game or in your console and copy the output here -->
**Debug paste link:**
<!--- Enter /plot debugpaste in game or in your console and copy the output here -->
**[REQUIRED] Spigot/Paper Version Number:**
**[REQUIRED] Minecraft Version Number:**
**Links to worlds.yml file and settings.yml file:**
<!--- Copy and paste the information to the service of your choosing and provide the link here. -->
**[REQUIRED] Description of the problem:**
**Any relevant console output or screenshots:**

View File

@ -54,8 +54,8 @@ import org.bukkit.metadata.MetadataValue;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.annotation.Nullable;
import java.io.File;
import java.lang.reflect.Method;
import java.util.ArrayList;
@ -132,8 +132,8 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
// Check for updates
if (PlotSquared.get().getUpdateUtility() != null) {
final UpdateUtility updateUtility = PlotSquared.get().getUpdateUtility();
updateUtility
.checkForUpdate(this.getPluginVersionString(), ((updateDescription, throwable) -> {
updateUtility.checkForUpdate(PlotSquared.get().getVersion().versionString(),
((updateDescription, throwable) -> {
Bukkit.getScheduler().runTask(BukkitMain.this, () -> {
getLogger().info("-------- PlotSquared Update Check --------");
if (throwable != null) {
@ -289,9 +289,11 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
@Override public void registerCommands() {
final BukkitCommand bukkitCommand = new BukkitCommand();
final PluginCommand plotCommand = getCommand("plots");
plotCommand.setExecutor(bukkitCommand);
plotCommand.setAliases(Arrays.asList("p", "ps", "plotme", "plot"));
plotCommand.setTabCompleter(bukkitCommand);
if (plotCommand != null) {
plotCommand.setExecutor(bukkitCommand);
plotCommand.setAliases(Arrays.asList("p", "ps", "plotme", "plot"));
plotCommand.setTabCompleter(bukkitCommand);
}
}
@Override public File getDirectory() {
@ -598,14 +600,15 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
}
@Override public QueueProvider initBlockQueue() {
try {
new SendChunk();
MainUtil.canSendChunk = true;
} catch (ClassNotFoundException | NoSuchFieldException | NoSuchMethodException e) {
PlotSquared.debug(
SendChunk.class + " does not support " + StringMan.getString(getServerVersion()));
MainUtil.canSendChunk = false;
}
//TODO Figure out why this code is still here yet isn't being called anywhere.
// try {
// new SendChunk();
// MainUtil.canSendChunk = true;
// } catch (ClassNotFoundException | NoSuchFieldException | NoSuchMethodException e) {
// PlotSquared.debug(
// SendChunk.class + " does not support " + StringMan.getString(getServerVersion()));
// MainUtil.canSendChunk = false;
// }
return QueueProvider.of(BukkitLocalQueue.class, BukkitLocalQueue.class);
}
@ -800,4 +803,5 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
@Override public LegacyMappings getLegacyMappings() {
return this.legacyMappings;
}
}

View File

@ -7,8 +7,8 @@ import lombok.Setter;
import org.bukkit.World;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;
import javax.annotation.Nonnull;
import java.util.Collections;
import java.util.List;
@ -30,8 +30,8 @@ public final class PlotAutoMergeEvent extends PlotEvent implements Cancellable {
* @param plot Plot that was merged
* @param plots A list of plots involved in the event
*/
public PlotAutoMergeEvent(@Nonnull final World world, @Nonnull final Plot plot,
@Nonnull final List<PlotId> plots) {
public PlotAutoMergeEvent(@NotNull final World world, @NotNull final Plot plot,
@NotNull final List<PlotId> plots) {
super(plot);
this.world = world;
this.plots = plots;

View File

@ -6,8 +6,7 @@ import lombok.Setter;
import org.bukkit.World;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import javax.annotation.Nonnull;
import org.jetbrains.annotations.NotNull;
/**
* Event called when several plots are merged
@ -29,8 +28,8 @@ public final class PlotMergeEvent extends PlotEvent implements Cancellable {
* @param dir The direction of the merge
* @param max Max merge size
*/
public PlotMergeEvent(@Nonnull final World world, @Nonnull final Plot plot,
@Nonnull final int dir, @Nonnull final int max) {
public PlotMergeEvent(@NotNull final World world, @NotNull final Plot plot,
@NotNull final int dir, @NotNull final int max) {
super(plot);
this.world = world;
this.dir = dir;

View File

@ -8,8 +8,8 @@ import org.bukkit.World;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;
import javax.annotation.Nonnull;
import java.util.Collections;
import java.util.List;
@ -31,8 +31,8 @@ public final 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(@Nonnull final World world, @Nonnull final PlotArea area,
@Nonnull final List<PlotId> plots) {
public PlotUnlinkEvent(@NotNull final World world, @NotNull final PlotArea area,
@NotNull final List<PlotId> plots) {
this.plots = plots;
this.world = world;
this.area = area;

View File

@ -85,10 +85,10 @@ import java.util.regex.Pattern;
int distance = Bukkit.getViewDistance() * 16;
for (Entry<String, PlotPlayer> entry : UUIDHandler.getPlayers().entrySet()) {
PlotPlayer player = entry.getValue();
Location loc = player.getLocation();
if (loc.getWorld().equals(world)) {
if (16 * Math.abs(loc.getX() - x) / 16 > distance
|| 16 * Math.abs(loc.getZ() - z) / 16 > distance) {
Location location = player.getLocation();
if (location.getWorld().equals(world)) {
if (16 * Math.abs(location.getX() - x) / 16 > distance
|| 16 * Math.abs(location.getZ() - z) / 16 > distance) {
continue;
}
((BukkitPlayer) player).player.sendBlockChange(bloc, data);
@ -314,12 +314,12 @@ import java.util.regex.Pattern;
case POWERED_RAIL:
return;
default:*/
Location loc = BukkitUtil.getLocation(block.getLocation());
PlotArea area = loc.getPlotArea();
Location location = BukkitUtil.getLocation(block.getLocation());
PlotArea area = location.getPlotArea();
if (area == null) {
return;
}
Plot plot = loc.getOwnedPlot();
Plot plot = location.getOwnedPlot();
if (plot == null) {
return;
}
@ -369,12 +369,11 @@ import java.util.regex.Pattern;
switch (event.getChangedType()) {
case COMPARATOR: {
Block block = event.getBlock();
Location loc = BukkitUtil.getLocation(block.getLocation());
PlotArea area = loc.getPlotArea();
if (area == null) {
Location location = BukkitUtil.getLocation(block.getLocation());
if (location.isPlotArea()) {
return;
}
Plot plot = area.getOwnedPlotAbs(loc);
Plot plot = location.getOwnedPlotAbs();
if (plot == null) {
return;
}
@ -391,12 +390,12 @@ import java.util.regex.Pattern;
case TURTLE_HELMET:
case TURTLE_SPAWN_EGG: {
Block block = event.getBlock();
Location loc = BukkitUtil.getLocation(block.getLocation());
PlotArea area = loc.getPlotArea();
Location location = BukkitUtil.getLocation(block.getLocation());
PlotArea area = location.getPlotArea();
if (area == null) {
return;
}
Plot plot = area.getOwnedPlotAbs(loc);
Plot plot = area.getOwnedPlotAbs(location);
if (plot == null) {
return;
}
@ -413,30 +412,30 @@ import java.util.regex.Pattern;
case STICKY_PISTON:
org.bukkit.block.data.Directional piston =
(org.bukkit.block.data.Directional) block.getBlockData();
Location loc = BukkitUtil.getLocation(block.getLocation());
PlotArea area = loc.getPlotArea();
Location location = BukkitUtil.getLocation(block.getLocation());
PlotArea area = location.getPlotArea();
if (area == null) {
return;
}
Plot plot = area.getOwnedPlotAbs(loc);
Plot plot = area.getOwnedPlotAbs(location);
if (plot == null) {
return;
}
switch (piston.getFacing()) {
case EAST:
loc.setX(loc.getX() + 1);
location.setX(location.getX() + 1);
break;
case SOUTH:
loc.setX(loc.getX() - 1);
location.setX(location.getX() - 1);
break;
case WEST:
loc.setZ(loc.getZ() + 1);
location.setZ(location.getZ() + 1);
break;
case NORTH:
loc.setZ(loc.getZ() - 1);
location.setZ(location.getZ() - 1);
break;
}
Plot newPlot = area.getOwnedPlotAbs(loc);
Plot newPlot = area.getOwnedPlotAbs(location);
if (!plot.equals(newPlot)) {
event.setCancelled(true);
return;
@ -470,15 +469,15 @@ import java.util.regex.Pattern;
@EventHandler public boolean onProjectileHit(ProjectileHitEvent event) {
Projectile entity = event.getEntity();
Location loc = BukkitUtil.getLocation(entity);
if (!PlotSquared.get().hasPlotArea(loc.getWorld())) {
Location location = BukkitUtil.getLocation(entity);
if (!PlotSquared.get().hasPlotArea(location.getWorld())) {
return true;
}
PlotArea area = loc.getPlotArea();
PlotArea area = location.getPlotArea();
if (area == null) {
return true;
}
Plot plot = area.getPlot(loc);
Plot plot = area.getPlot(location);
ProjectileSource shooter = entity.getShooter();
if (shooter instanceof Player) {
PlotPlayer pp = BukkitUtil.getPlayer((Player) shooter);
@ -523,22 +522,22 @@ import java.util.regex.Pattern;
return;
}
Player player = event.getPlayer();
PlotPlayer pp = BukkitUtil.getPlayer(player);
Location loc = pp.getLocation();
PlotArea area = loc.getPlotArea();
PlotPlayer plotPlayer = BukkitUtil.getPlayer(player);
Location location = plotPlayer.getLocation();
PlotArea area = location.getPlotArea();
if (area == null) {
return;
}
String[] parts = msg.split(" ");
Plot plot = pp.getCurrentPlot();
Plot plot = plotPlayer.getCurrentPlot();
// Check WorldEdit
switch (parts[0].toLowerCase()) {
case "up":
case "/up":
case "worldedit:up":
case "worldedit:/up":
if (plot == null || (!plot.isAdded(pp.getUUID()) && !Permissions
.hasPermission(pp, Captions.PERMISSION_ADMIN_BUILD_OTHER, true))) {
if (plot == null || (!plot.isAdded(plotPlayer.getUUID()) && !Permissions
.hasPermission(plotPlayer, Captions.PERMISSION_ADMIN_BUILD_OTHER, true))) {
event.setCancelled(true);
return;
}
@ -548,7 +547,7 @@ import java.util.regex.Pattern;
}
Optional<List<String>> flag = plot.getFlag(Flags.BLOCKED_CMDS);
if (flag.isPresent() && !Permissions
.hasPermission(pp, Captions.PERMISSION_ADMIN_INTERACT_BLOCKED_CMDS)) {
.hasPermission(plotPlayer, Captions.PERMISSION_ADMIN_INTERACT_BLOCKED_CMDS)) {
List<String> blocked_cmds = flag.get();
String part = parts[0];
if (parts[0].contains(":")) {
@ -592,13 +591,13 @@ import java.util.regex.Pattern;
}
if (pattern.matcher(msg).matches()) {
String perm;
if (plot.isAdded(pp.getUUID())) {
if (plot.isAdded(plotPlayer.getUUID())) {
perm = "plots.admin.command.blocked-cmds.shared";
} else {
perm = "plots.admin.command.blocked-cmds.other";
}
if (!Permissions.hasPermission(pp, perm)) {
MainUtil.sendMessage(pp, Captions.COMMAND_BLOCKED);
if (!Permissions.hasPermission(plotPlayer, perm)) {
MainUtil.sendMessage(plotPlayer, Captions.COMMAND_BLOCKED);
event.setCancelled(true);
}
return;
@ -619,10 +618,10 @@ import java.util.regex.Pattern;
UUID uuid = pp.getUUID();
UUIDHandler.add(sw, uuid);
Location loc = pp.getLocation();
PlotArea area = loc.getPlotArea();
Location location = pp.getLocation();
PlotArea area = location.getPlotArea();
if (area != null) {
Plot plot = area.getPlot(loc);
Plot plot = area.getPlot(location);
if (plot != null) {
plotEntry(pp, plot);
}
@ -641,7 +640,7 @@ import java.util.regex.Pattern;
&& PlotSquared.get().getUpdateUtility() != null) {
final UpdateUtility updateUtility = PlotSquared.get().getUpdateUtility();
final BukkitMain bukkitMain = BukkitMain.getPlugin(BukkitMain.class);
updateUtility.checkForUpdate(bukkitMain.getPluginVersionString(),
updateUtility.checkForUpdate(PlotSquared.get().getVersion().versionString(),
((updateDescription, throwable) -> {
if (throwable != null) {
bukkitMain.getLogger().severe(String
@ -688,27 +687,27 @@ import java.util.regex.Pattern;
org.bukkit.Location to = event.getTo();
if (to != null) {
Player player = event.getPlayer();
PlotPlayer pp = PlotPlayer.wrap(player);
Location loc = BukkitUtil.getLocation(to);
PlotArea area = loc.getPlotArea();
PlotPlayer plotPlayer = PlotPlayer.wrap(player);
Location location = BukkitUtil.getLocation(to);
PlotArea area = location.getPlotArea();
if (area == null) {
return;
}
Plot plot = area.getPlot(loc);
Plot plot = area.getPlot(location);
if (plot != null) {
final boolean result = Flags.DENY_TELEPORT.allowsTeleport(pp, plot);
final boolean result = Flags.DENY_TELEPORT.allowsTeleport(plotPlayer, plot);
if (!result) {
MainUtil.sendMessage(pp, Captions.NO_PERMISSION_EVENT,
MainUtil.sendMessage(plotPlayer, Captions.NO_PERMISSION_EVENT,
Captions.PERMISSION_ADMIN_ENTRY_DENIED);
event.setCancelled(true);
if (lastLoc != null) {
pp.setMeta(PlotPlayer.META_LOCATION, lastLoc);
plotPlayer.setMeta(PlotPlayer.META_LOCATION, lastLoc);
}
if (lastPlot != null) {
pp.setMeta(PlotPlayer.META_LAST_PLOT, lastPlot);
plotPlayer.setMeta(PlotPlayer.META_LAST_PLOT, lastPlot);
}
} else {
plotEntry(pp, plot);
plotEntry(plotPlayer, plot);
}
}
}
@ -809,14 +808,14 @@ import java.util.regex.Pattern;
// Cancel teleport
TaskManager.TELEPORT_QUEUE.remove(pp.getName());
// Set last location
Location loc = BukkitUtil.getLocation(to);
pp.setMeta(PlotPlayer.META_LOCATION, loc);
PlotArea area = loc.getPlotArea();
Location location = BukkitUtil.getLocation(to);
pp.setMeta(PlotPlayer.META_LOCATION, location);
PlotArea area = location.getPlotArea();
if (area == null) {
pp.deleteMeta(PlotPlayer.META_LAST_PLOT);
return;
}
Plot now = area.getPlot(loc);
Plot now = area.getPlot(location);
Plot lastPlot = pp.getMeta(PlotPlayer.META_LAST_PLOT);
if (now == null) {
if (lastPlot != null && !plotExit(pp, lastPlot) && this.tmpTeleport && !pp
@ -869,14 +868,14 @@ import java.util.regex.Pattern;
// Cancel teleport
TaskManager.TELEPORT_QUEUE.remove(pp.getName());
// Set last location
Location loc = BukkitUtil.getLocation(to);
pp.setMeta(PlotPlayer.META_LOCATION, loc);
PlotArea area = loc.getPlotArea();
Location location = BukkitUtil.getLocation(to);
pp.setMeta(PlotPlayer.META_LOCATION, location);
PlotArea area = location.getPlotArea();
if (area == null) {
pp.deleteMeta(PlotPlayer.META_LAST_PLOT);
return;
}
Plot now = area.getPlot(loc);
Plot now = area.getPlot(location);
Plot lastPlot = pp.getMeta(PlotPlayer.META_LAST_PLOT);
if (now == null) {
if (lastPlot != null && !plotExit(pp, lastPlot) && this.tmpTeleport && !pp
@ -1123,10 +1122,10 @@ import java.util.regex.Pattern;
if (Settings.Enabled_Components.PERMISSION_CACHE) {
pp.deleteMeta("perm");
}
Location loc = pp.getLocation();
PlotArea area = loc.getPlotArea();
if (loc.isPlotArea()) {
plot = loc.getPlot();
Location location = pp.getLocation();
PlotArea area = location.getPlotArea();
if (location.isPlotArea()) {
plot = location.getPlot();
if (plot != null) {
plotEntry(pp, plot);
}
@ -2269,17 +2268,17 @@ import java.util.regex.Pattern;
Entity ignitingEntity = event.getIgnitingEntity();
Block block = event.getBlock();
BlockIgniteEvent.IgniteCause igniteCause = event.getCause();
Location loc;
Location location1;
if (block != null) {
loc = BukkitUtil.getLocation(block.getLocation());
location1 = BukkitUtil.getLocation(block.getLocation());
} else if (ignitingEntity != null) {
loc = BukkitUtil.getLocation(ignitingEntity);
location1 = BukkitUtil.getLocation(ignitingEntity);
} else if (player != null) {
loc = BukkitUtil.getLocation(player);
location1 = BukkitUtil.getLocation(player);
} else {
return;
}
PlotArea area = loc.getPlotArea();
PlotArea area = location1.getPlotArea();
if (area == null) {
return;
}
@ -2288,7 +2287,7 @@ import java.util.regex.Pattern;
return;
}
Plot plot = area.getOwnedPlotAbs(loc);
Plot plot = area.getOwnedPlotAbs(location1);
if (player != null) {
PlotPlayer pp = BukkitUtil.getPlayer(player);
if (plot == null) {

View File

@ -30,8 +30,8 @@ import static com.github.intellectualsites.plotsquared.plot.util.ReflectionUtils
this.methodGetHandleChunk = classCraftChunk.getMethod("getHandle").getRealMethod();
try {
this.mustSave = classChunk.getField("mustSave").getRealField();
} catch (Throwable ignore) {
ignore.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
Bukkit.getPluginManager().registerEvents(this, plugin);
}

View File

@ -25,7 +25,6 @@ import org.bukkit.permissions.PermissionAttachmentInfo;
import org.bukkit.plugin.RegisteredListener;
import org.jetbrains.annotations.NotNull;
import javax.annotation.Nonnull;
import java.util.Arrays;
import java.util.Set;
import java.util.UUID;
@ -56,7 +55,7 @@ public class BukkitPlayer extends PlotPlayer {
super.populatePersistentMetaMap();
}
@Override public Location getLocation() {
@NotNull @Override public Location getLocation() {
final Location location = super.getLocation();
return location == null ? BukkitUtil.getLocation(this.player) : location;
}
@ -72,8 +71,8 @@ public class BukkitPlayer extends PlotPlayer {
return this.player.getLastPlayed();
}
@Override public boolean canTeleport(@NotNull final Location loc) {
final org.bukkit.Location to = BukkitUtil.getLocation(loc);
@Override public boolean canTeleport(@NotNull final Location location) {
final org.bukkit.Location to = BukkitUtil.getLocation(location);
final org.bukkit.Location from = player.getLocation();
PlayerTeleportEvent event = new PlayerTeleportEvent(player, from, to);
callEvent(event);
@ -184,7 +183,7 @@ public class BukkitPlayer extends PlotPlayer {
}
}
@Override public void teleport(@Nonnull final Location location) {
@Override public void teleport(@NotNull final Location location) {
if (Math.abs(location.getX()) >= 30000000 || Math.abs(location.getZ()) >= 30000000) {
return;
}
@ -229,7 +228,7 @@ public class BukkitPlayer extends PlotPlayer {
}
}
@Nonnull @Override public PlotGameMode getGameMode() {
@NotNull @Override public PlotGameMode getGameMode() {
switch (this.player.getGameMode()) {
case ADVENTURE:
return PlotGameMode.ADVENTURE;

View File

@ -351,8 +351,8 @@ public class BukkitChunkManager extends ChunkManager {
int bz = min.getZ();
for (int x1 = 0; x1 < 16; x1++) {
for (int z1 = 0; z1 < 16; z1++) {
PlotLoc loc = new PlotLoc(bx + x1, bz + z1);
BaseBlock[] ids = map.allBlocks.get(loc);
PlotLoc plotLoc = new PlotLoc(bx + x1, bz + z1);
BaseBlock[] ids = map.allBlocks.get(plotLoc);
if (ids != null) {
for (int y = 0; y < Math.min(128, ids.length); y++) {
BaseBlock id = ids[y];
@ -387,17 +387,18 @@ public class BukkitChunkManager extends ChunkManager {
return true;
}
@Override public boolean loadChunk(String world, ChunkLoc loc, boolean force) {
return BukkitUtil.getWorld(world).getChunkAt(loc.x, loc.z).load(force);
@Override public boolean loadChunk(String world, ChunkLoc chunkLoc, boolean force) {
return BukkitUtil.getWorld(world).getChunkAt(chunkLoc.x, chunkLoc.z).load(force);
}
@SuppressWarnings("deprecation") @Override
public void unloadChunk(final String world, final ChunkLoc loc, final boolean save,
@Override
public void unloadChunk(final String world, final ChunkLoc chunkLoc, final boolean save,
final boolean safe) {
if (!PlotSquared.get().isMainThread(Thread.currentThread())) {
TaskManager.runTask(() -> BukkitUtil.getWorld(world).unloadChunk(loc.x, loc.z, save));
TaskManager.runTask(
() -> BukkitUtil.getWorld(world).unloadChunk(chunkLoc.x, chunkLoc.z, save));
} else {
BukkitUtil.getWorld(world).unloadChunk(loc.x, loc.z, save);
BukkitUtil.getWorld(world).unloadChunk(chunkLoc.x, chunkLoc.z, save);
}
}
@ -614,9 +615,9 @@ public class BukkitChunkManager extends ChunkManager {
void saveEntitiesOut(Chunk chunk, RegionWrapper region) {
for (Entity entity : chunk.getEntities()) {
Location loc = BukkitUtil.getLocation(entity);
int x = loc.getX();
int z = loc.getZ();
Location location = BukkitUtil.getLocation(entity);
int x = location.getX();
int z = location.getZ();
if (isIn(region, x, z)) {
continue;
}
@ -636,9 +637,9 @@ public class BukkitChunkManager extends ChunkManager {
void saveEntitiesIn(Chunk chunk, RegionWrapper region, int offsetX, int offsetZ,
boolean delete) {
for (Entity entity : chunk.getEntities()) {
Location loc = BukkitUtil.getLocation(entity);
int x = loc.getX();
int z = loc.getZ();
Location location = BukkitUtil.getLocation(entity);
int x = location.getX();
int z = location.getZ();
if (!isIn(region, x, z)) {
continue;
}

View File

@ -1,22 +1,6 @@
package com.github.intellectualsites.plotsquared.bukkit.util;
import com.github.intellectualsites.plotsquared.bukkit.events.PlayerClaimPlotEvent;
import com.github.intellectualsites.plotsquared.bukkit.events.PlayerEnterPlotEvent;
import com.github.intellectualsites.plotsquared.bukkit.events.PlayerLeavePlotEvent;
import com.github.intellectualsites.plotsquared.bukkit.events.PlayerPlotDeniedEvent;
import com.github.intellectualsites.plotsquared.bukkit.events.PlayerPlotHelperEvent;
import com.github.intellectualsites.plotsquared.bukkit.events.PlayerPlotTrustedEvent;
import com.github.intellectualsites.plotsquared.bukkit.events.PlayerTeleportToPlotEvent;
import com.github.intellectualsites.plotsquared.bukkit.events.PlotAutoMergeEvent;
import com.github.intellectualsites.plotsquared.bukkit.events.PlotChangeOwnerEvent;
import com.github.intellectualsites.plotsquared.bukkit.events.PlotClearEvent;
import com.github.intellectualsites.plotsquared.bukkit.events.PlotComponentSetEvent;
import com.github.intellectualsites.plotsquared.bukkit.events.PlotDeleteEvent;
import com.github.intellectualsites.plotsquared.bukkit.events.PlotFlagAddEvent;
import com.github.intellectualsites.plotsquared.bukkit.events.PlotFlagRemoveEvent;
import com.github.intellectualsites.plotsquared.bukkit.events.PlotMergeEvent;
import com.github.intellectualsites.plotsquared.bukkit.events.PlotRateEvent;
import com.github.intellectualsites.plotsquared.bukkit.events.PlotUnlinkEvent;
import com.github.intellectualsites.plotsquared.bukkit.events.*;
import com.github.intellectualsites.plotsquared.bukkit.object.BukkitPlayer;
import com.github.intellectualsites.plotsquared.plot.flag.Flag;
import com.github.intellectualsites.plotsquared.plot.object.Location;
@ -30,9 +14,9 @@ import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.List;
import java.util.UUID;
@ -41,91 +25,93 @@ import java.util.UUID;
*/
public final class BukkitEventUtil extends EventUtil {
@Nullable public Player getPlayer(final PlotPlayer player) {
if (player instanceof BukkitPlayer) {
return ((BukkitPlayer) player).player;
@Nullable public Player getPlayer(final PlotPlayer player) {
if (player instanceof BukkitPlayer) {
return ((BukkitPlayer) player).player;
}
return null;
}
return null;
}
private boolean callEvent(@Nonnull final Event event) {
Bukkit.getServer().getPluginManager().callEvent(event);
return !(event instanceof Cancellable) || !((Cancellable) event).isCancelled();
}
@Override public boolean callClaim(PlotPlayer player, Plot plot, boolean auto) {
return callEvent(new PlayerClaimPlotEvent(getPlayer(player), plot, auto));
}
@Override public boolean callTeleport(PlotPlayer player, Location from, Plot plot) {
return callEvent(new PlayerTeleportToPlotEvent(getPlayer(player), from, plot));
}
@Override public boolean callComponentSet(Plot plot, String component) {
return callEvent(new PlotComponentSetEvent(plot, component));
}
@Override public boolean callClear(Plot plot) {
return callEvent(new PlotClearEvent(plot));
}
@Override public boolean callDelete(Plot plot) {
return callEvent(new PlotDeleteEvent(plot));
}
@Override public boolean callFlagAdd(Flag flag, Plot plot) {
return callEvent(new PlotFlagAddEvent(flag, plot));
}
@Override public boolean callFlagRemove(Flag<?> flag, Plot plot, Object value) {
return callEvent(new PlotFlagRemoveEvent(flag, plot));
}
@Override public boolean callMerge(Plot plot, int dir, int max) {
return callEvent(new PlotMergeEvent(BukkitUtil.getWorld(plot.getWorldName()), plot, dir, max));
}
@Override public boolean callAutoMerge(Plot plot, List<PlotId> plots) {
return callEvent(new PlotAutoMergeEvent(BukkitUtil.getWorld(plot.getWorldName()), plot, plots));
}
@Override public boolean callUnlink(PlotArea area, List<PlotId> plots) {
return callEvent(new PlotUnlinkEvent(BukkitUtil.getWorld(area.worldname), area, plots));
}
@Override public void callEntry(PlotPlayer player, Plot plot) {
callEvent(new PlayerEnterPlotEvent(getPlayer(player), plot));
}
@Override public void callLeave(PlotPlayer player, Plot plot) {
callEvent(new PlayerLeavePlotEvent(getPlayer(player), plot));
}
@Override public void callDenied(PlotPlayer initiator, Plot plot, UUID player, boolean added) {
callEvent(new PlayerPlotDeniedEvent(getPlayer(initiator), plot, player, added));
}
@Override public void callTrusted(PlotPlayer initiator, Plot plot, UUID player, boolean added) {
callEvent(new PlayerPlotTrustedEvent(getPlayer(initiator), plot, player, added));
}
@Override public void callMember(PlotPlayer initiator, Plot plot, UUID player, boolean added) {
callEvent(new PlayerPlotHelperEvent(getPlayer(initiator), plot, player, added));
}
@Override
public boolean callOwnerChange(PlotPlayer initiator, Plot plot, UUID oldOwner, UUID newOwner,
boolean hasOldOwner) {
return callEvent(
new PlotChangeOwnerEvent(getPlayer(initiator), plot, oldOwner, newOwner, hasOldOwner));
}
@Override @Nullable public Rating callRating(PlotPlayer player, Plot plot, Rating rating) {
PlotRateEvent event = new PlotRateEvent(player, rating, plot);
Bukkit.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) {
return null;
private boolean callEvent(@NotNull final Event event) {
Bukkit.getServer().getPluginManager().callEvent(event);
return !(event instanceof Cancellable) || !((Cancellable) event).isCancelled();
}
@Override public boolean callClaim(PlotPlayer player, Plot plot, boolean auto) {
return callEvent(new PlayerClaimPlotEvent(getPlayer(player), plot, auto));
}
@Override public boolean callTeleport(PlotPlayer player, Location from, Plot plot) {
return callEvent(new PlayerTeleportToPlotEvent(getPlayer(player), from, plot));
}
@Override public boolean callComponentSet(Plot plot, String component) {
return callEvent(new PlotComponentSetEvent(plot, component));
}
@Override public boolean callClear(Plot plot) {
return callEvent(new PlotClearEvent(plot));
}
@Override public boolean callDelete(Plot plot) {
return callEvent(new PlotDeleteEvent(plot));
}
@Override public boolean callFlagAdd(Flag flag, Plot plot) {
return callEvent(new PlotFlagAddEvent(flag, plot));
}
@Override public boolean callFlagRemove(Flag<?> flag, Plot plot, Object value) {
return callEvent(new PlotFlagRemoveEvent(flag, plot));
}
@Override public boolean callMerge(Plot plot, int dir, int max) {
return callEvent(
new PlotMergeEvent(BukkitUtil.getWorld(plot.getWorldName()), plot, dir, max));
}
@Override public boolean callAutoMerge(Plot plot, List<PlotId> plots) {
return callEvent(
new PlotAutoMergeEvent(BukkitUtil.getWorld(plot.getWorldName()), plot, plots));
}
@Override public boolean callUnlink(PlotArea area, List<PlotId> plots) {
return callEvent(new PlotUnlinkEvent(BukkitUtil.getWorld(area.worldname), area, plots));
}
@Override public void callEntry(PlotPlayer player, Plot plot) {
callEvent(new PlayerEnterPlotEvent(getPlayer(player), plot));
}
@Override public void callLeave(PlotPlayer player, Plot plot) {
callEvent(new PlayerLeavePlotEvent(getPlayer(player), plot));
}
@Override public void callDenied(PlotPlayer initiator, Plot plot, UUID player, boolean added) {
callEvent(new PlayerPlotDeniedEvent(getPlayer(initiator), plot, player, added));
}
@Override public void callTrusted(PlotPlayer initiator, Plot plot, UUID player, boolean added) {
callEvent(new PlayerPlotTrustedEvent(getPlayer(initiator), plot, player, added));
}
@Override public void callMember(PlotPlayer initiator, Plot plot, UUID player, boolean added) {
callEvent(new PlayerPlotHelperEvent(getPlayer(initiator), plot, player, added));
}
@Override
public boolean callOwnerChange(PlotPlayer initiator, Plot plot, UUID oldOwner, UUID newOwner,
boolean hasOldOwner) {
return callEvent(
new PlotChangeOwnerEvent(getPlayer(initiator), plot, oldOwner, newOwner, hasOldOwner));
}
@Override @Nullable public Rating callRating(PlotPlayer player, Plot plot, Rating rating) {
PlotRateEvent event = new PlotRateEvent(player, rating, plot);
Bukkit.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) {
return null;
}
return event.getRating();
}
return event.getRating();
}
}

View File

@ -27,8 +27,9 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
@ -242,7 +243,7 @@ import java.util.Set;
location.getBlockZ());
}
public static Location getLocationFull(@NonNull final Entity entity) {
@NotNull public static Location getLocationFull(@NonNull final Entity entity) {
final org.bukkit.Location location = entity.getLocation();
return new Location(location.getWorld().getName(), MathMan.roundInt(location.getX()),
MathMan.roundInt(location.getY()), MathMan.roundInt(location.getZ()), location.getYaw(),

View File

@ -42,7 +42,6 @@ public class SendChunk {
* Constructor.
*/
public SendChunk() throws ClassNotFoundException, NoSuchMethodException, NoSuchFieldException {
RefConstructor tempMapChunk;
RefClass classCraftPlayer = getRefClass("{cb}.entity.CraftPlayer");
this.methodGetHandlePlayer = classCraftPlayer.getMethod("getHandle");
RefClass classCraftChunk = getRefClass("{cb}.CraftChunk");
@ -50,8 +49,7 @@ public class SendChunk {
RefClass classChunk = getRefClass("{nms}.Chunk");
this.methodInitLighting = classChunk.getMethod("initLighting");
RefClass classMapChunk = getRefClass("{nms}.PacketPlayOutMapChunk");
tempMapChunk = classMapChunk.getConstructor(classChunk.getRealClass(), int.class);
this.mapChunk = tempMapChunk;
this.mapChunk = classMapChunk.getConstructor(classChunk.getRealClass(), int.class);
RefClass classEntityPlayer = getRefClass("{nms}.EntityPlayer");
this.connection = classEntityPlayer.getField("playerConnection");
RefClass classPacket = getRefClass("{nms}.Packet");

View File

@ -31,13 +31,13 @@ import java.util.ArrayDeque;
import java.util.Collections;
import java.util.HashMap;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
public class SQLUUIDHandler extends UUIDHandlerImplementation {
final int MAX_REQUESTS = 500;
private final String PROFILE_URL =
"https://sessionserver.mojang.com/session/minecraft/profile/";
private final int INTERVAL = 12000;
private final JSONParser jsonParser = new JSONParser();
private final SQLite sqlite;
@ -133,7 +133,10 @@ public class SQLUUIDHandler extends UUIDHandlerImplementation {
"Invalid response from Mojang: Some UUIDs will be cached later. (`unknown` until then or player joins)");
}
try {
Thread.sleep(INTERVAL * 50);
//Mojang allows requests every 10 minutes according to https://wiki.vg/Mojang_API
//15 Minutes is chosen here since system timers are not always precise
//and it should provide enough time where Mojang won't block requests.
TimeUnit.MINUTES.sleep(15);
} catch (InterruptedException e) {
e.printStackTrace();
break;
@ -142,7 +145,6 @@ public class SQLUUIDHandler extends UUIDHandlerImplementation {
if (whenDone != null) {
whenDone.run();
}
return;
});
});
} catch (SQLException e) {

View File

@ -1,6 +1,6 @@
name: ${name}
main: com.github.intellectualsites.plotsquared.bukkit.BukkitMain
api-version: 1.13
api-version: "1.13"
version: "${version}"
load: STARTUP
description: >
@ -126,6 +126,7 @@ permissions:
plots.toggle: true
plots.toggle.titles: true
plots.toggle.chat: true
plots.toggle.time: true
plots.set.biome: true
plots.set.home: true
plots.set.alias: true

View File

@ -263,7 +263,7 @@ public abstract class Command {
/**
* @param player Caller
* @param args Arguments
* @param args Arguments
* @param confirm Instance, Success, Failure
* @return CompletableFuture true if the command executed fully, false in
* any other case

View File

@ -6,7 +6,6 @@ package com.github.intellectualsites.plotsquared.configuration;
*/
class ConfigurationOptions {
private final Configuration configuration;
private char pathSeparator = '.';
private boolean copyDefaults = false;
protected ConfigurationOptions(Configuration configuration) {
@ -26,28 +25,12 @@ class ConfigurationOptions {
* Gets the char that will be used to separate {@link
* ConfigurationSection}s.
*
* <p>This value does not affect how the {@link Configuration} is stored,
* only in how you access the data. The default value is '.'.
* <p> This value is always '.'.
*
* @return Path separator
*/
public char pathSeparator() {
return pathSeparator;
}
/**
* Sets the char that will be used to separate {@link
* ConfigurationSection}s.
*
* <p>This value does not affect how the {@link Configuration} is stored,
* only in how you access the data. The default value is '.'.
*
* @param value Path separator
* @return This object, for chaining
*/
public ConfigurationOptions pathSeparator(char value) {
pathSeparator = value;
return this;
char pathSeparator() {
return '.';
}
/**

View File

@ -18,8 +18,4 @@ public class MemoryConfigurationOptions extends ConfigurationOptions {
return this;
}
@Override public MemoryConfigurationOptions pathSeparator(char value) {
super.pathSeparator(value);
return this;
}
}

View File

@ -25,11 +25,6 @@ public class FileConfigurationOptions extends MemoryConfigurationOptions {
return this;
}
@Override public FileConfigurationOptions pathSeparator(char value) {
super.pathSeparator(value);
return this;
}
/**
* Gets the header that will be applied to the top of the saved output.
*

View File

@ -5,7 +5,6 @@ package com.github.intellectualsites.plotsquared.configuration.file;
* YamlConfiguration}.
*/
public class YamlConfigurationOptions extends FileConfigurationOptions {
private int indent = 2;
YamlConfigurationOptions(YamlConfiguration configuration) {
super(configuration);
@ -20,11 +19,6 @@ public class YamlConfigurationOptions extends FileConfigurationOptions {
return this;
}
@Override public YamlConfigurationOptions pathSeparator(char value) {
super.pathSeparator(value);
return this;
}
@Override public YamlConfigurationOptions header(String value) {
super.header(value);
return this;
@ -42,27 +36,8 @@ public class YamlConfigurationOptions extends FileConfigurationOptions {
*
* @return How much to indent by
*/
public int indent() {
return indent;
int indent() {
return 2;
}
/**
* Sets how much spaces should be used to indent each line.
*
* <p>The minimum value this may be is 2, and the maximum is 9.
*
* @param value New indent
* @return This object, for chaining
*/
public YamlConfigurationOptions indent(int value) {
if (value < 2) {
throw new IllegalArgumentException("Indent must be at least 2 characters");
}
if (value > 9) {
throw new IllegalArgumentException("Indent cannot be greater than 9 characters");
}
indent = value;
return this;
}
}

View File

@ -63,12 +63,12 @@ public interface IPlotMain extends ILogger {
*/
String getPluginVersionString();
String getPluginName();
default String getPluginName() {
return "PlotSquared";
}
/**
* Gets the version of Minecraft that is running.
*
* @return
*/
int[] getServerVersion();
@ -101,7 +101,7 @@ public interface IPlotMain extends ILogger {
/**
* The task manager will run and manage Minecraft tasks.
*
* @return
* @return the PlotSquared task manager
*/
TaskManager getTaskManager();
@ -138,49 +138,39 @@ public interface IPlotMain extends ILogger {
/**
* Gets the economy provider.
*
* @return
* @return the PlotSquared economy manager
*/
EconHandler getEconomyHandler();
/**
* Gets the {@link QueueProvider} class.
*
* @return
*/
QueueProvider initBlockQueue();
/**
* Gets the {@link WorldUtil} class.
*
* @return
*/
WorldUtil initWorldUtil();
/**
* Gets the EventUtil class.
*
* @return
*/
EventUtil initEventUtil();
/**
* Gets the chunk manager.
*
* @return
* @return the PlotSquared chunk manager
*/
ChunkManager initChunkManager();
/**
* Gets the {@link SetupUtils} class.
*
* @return
*/
SetupUtils initSetupUtils();
/**
* Gets {@link HybridUtils} class.
*
* @return
*/
HybridUtils initHybridUtils();
@ -199,32 +189,28 @@ public interface IPlotMain extends ILogger {
/**
* Gets the {@link UUIDHandlerImplementation} which will cache and
* provide UUIDs.
*
* @return
*/
UUIDHandlerImplementation initUUIDHandler();
/**
* Gets the {@link InventoryUtil} class (used for implementation specific
* inventory guis).
*
* @return
*/
InventoryUtil initInventoryUtil();
/**
* Unregisters a {@link PlotPlayer} from cache e.g. if they have logged off.
*
* @param player
* @param player the player to remove
*/
void unregister(PlotPlayer player);
/**
* Gets the generator wrapper for a world (world) and generator (name).
*
* @param world
* @param name
* @return
* @param world the world to get the generator from
* @param name the name of the generator
* @return the generator being used for the provided world
*/
GeneratorWrapper<?> getGenerator(String world, String name);
@ -232,7 +218,7 @@ public interface IPlotMain extends ILogger {
/**
* Register the chunk processor which will clean out chunks that have too
* many blockstates or entities.
* many block states or entities.
*/
void registerChunkProcessor();

View File

@ -33,8 +33,8 @@ import com.sk89q.worldedit.WorldEdit;
import lombok.Getter;
import lombok.NonNull;
import lombok.Setter;
import org.jetbrains.annotations.Nullable;
import javax.annotation.Nullable;
import java.io.*;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
@ -1623,7 +1623,7 @@ import java.util.zip.ZipInputStream;
final Properties properties = new Properties();
properties.load(bufferedReader);
final boolean enabled =
Boolean.valueOf(properties.getOrDefault("enabled", true).toString());
Boolean.parseBoolean(properties.getOrDefault("enabled", true).toString());
if (enabled) {
this.updateUtility = new UpdateUtility(properties.getProperty("path"),
properties.getProperty("job"), properties.getProperty("artifact"));

View File

@ -24,12 +24,19 @@ public class PlotVersion {
public static PlotVersion tryParse(String version, String commit, String date) {
try {
return new PlotVersion(version, commit, date);
} catch (Exception ignore) {
ignore.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
return new PlotVersion(0, 0, 0, 0, 0);
}
}
public String versionString() {
if (hash == 0 && build == 0) {
return "NoVer-SNAPSHOT";
} else {
return "4." + build;
}
}
@Override public String toString() {
if (hash == 0 && build == 0) {
return "PlotSquared-NoVer-SNAPSHOT";

View File

@ -25,8 +25,8 @@ import com.github.intellectualsites.plotsquared.plot.util.UUIDHandler;
return false;
}
Location loc = player.getLocation();
Plot plot = loc.getPlotAbs();
Location location = player.getLocation();
Plot plot = location.getPlotAbs();
if (plot == null) {
return !sendMessage(player, Captions.NOT_IN_PLOT);
}

View File

@ -5,19 +5,14 @@ import com.github.intellectualsites.plotsquared.plot.PlotSquared;
import com.github.intellectualsites.plotsquared.plot.config.Captions;
import com.github.intellectualsites.plotsquared.plot.config.Settings;
import com.github.intellectualsites.plotsquared.plot.database.DBFunc;
import com.github.intellectualsites.plotsquared.plot.object.Expression;
import com.github.intellectualsites.plotsquared.plot.object.Plot;
import com.github.intellectualsites.plotsquared.plot.object.PlotArea;
import com.github.intellectualsites.plotsquared.plot.object.PlotId;
import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
import com.github.intellectualsites.plotsquared.plot.object.RunnableVal;
import com.github.intellectualsites.plotsquared.plot.object.*;
import com.github.intellectualsites.plotsquared.plot.util.ByteArrayUtilities;
import com.github.intellectualsites.plotsquared.plot.util.EconHandler;
import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
import com.github.intellectualsites.plotsquared.plot.util.Permissions;
import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
import javax.annotation.Nullable;
import org.jetbrains.annotations.Nullable;
import java.util.Set;
@CommandDeclaration(command = "auto", permission = "plots.auto",
@ -123,7 +118,8 @@ public class Auto extends SubCommand {
} else if (checkAllowedPlots(player, area, allowedPlots, 1, 1)) {
plot.claim(player, true, schematic, false);
if (area.AUTO_MERGE) {
plot.autoMerge(-1, Integer.MAX_VALUE, player.getUUID(), true);
plot.autoMerge(Direction.ALL, Integer.MAX_VALUE, player.getUUID(),
true);
}
} else {
DBFunc.delete(plot);
@ -253,6 +249,9 @@ public class Auto extends SubCommand {
for (int j = start.y; j <= end.y; j++) {
Plot plot = plotarea.getPlotAbs(new PlotId(i, j));
boolean teleport = i == end.x && j == end.y;
if (plot == null) {
return false;
}
plot.claim(player, teleport, null);
}
}

View File

@ -20,13 +20,14 @@ public class Claim extends SubCommand {
if (args.length >= 1) {
schematic = args[0];
}
Location loc = player.getLocation();
final Plot plot = loc.getPlotAbs();
Location location = player.getLocation();
final Plot plot = location.getPlotAbs();
if (plot == null) {
return sendMessage(player, Captions.NOT_IN_PLOT);
}
int currentPlots =
Settings.Limit.GLOBAL ? player.getPlotCount() : player.getPlotCount(loc.getWorld());
int currentPlots = Settings.Limit.GLOBAL ?
player.getPlotCount() :
player.getPlotCount(location.getWorld());
int grants = 0;
if (currentPlots >= player.getAllowedPlots()) {
if (player.hasPersistentMeta("grantedPlots")) {
@ -89,7 +90,7 @@ public class Claim extends SubCommand {
@Override public void run(Object value) {
plot.claim(player, true, finalSchematic, false);
if (area.AUTO_MERGE) {
plot.autoMerge(-1, Integer.MAX_VALUE, player.getUUID(), true);
plot.autoMerge(Direction.ALL, Integer.MAX_VALUE, player.getUUID(), true);
}
}
}), () -> sendMessage(player, Captions.PLOT_NOT_CLAIMED));

View File

@ -32,7 +32,7 @@ public class Comment extends SubCommand {
StringMan.join(CommentManager.inboxes.keySet(), "|"));
return false;
}
Location loc = player.getLocation();
Location location = player.getLocation();
PlotId id;
try {
id = PlotId.fromString(args[1]);
@ -44,7 +44,7 @@ public class Comment extends SubCommand {
int index;
if (plot == null) {
index = 1;
plot = loc.getPlotAbs();
plot = location.getPlotAbs();
} else {
if (args.length < 4) {
sendMessage(player, Captions.COMMENT_SYNTAX,
@ -59,7 +59,7 @@ public class Comment extends SubCommand {
}
String message = StringMan.join(Arrays.copyOfRange(args, index, args.length), " ");
PlotComment comment =
new PlotComment(loc.getWorld(), id, message, player.getName(), inbox.toString(),
new PlotComment(location.getWorld(), id, message, player.getName(), inbox.toString(),
System.currentTimeMillis());
boolean result = inbox.addComment(plot, comment);
if (!result) {

View File

@ -13,8 +13,8 @@ import com.github.intellectualsites.plotsquared.plot.util.Permissions;
requiredType = RequiredType.NONE) public class Copy extends SubCommand {
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
Location loc = player.getLocation();
Plot plot1 = loc.getPlotAbs();
Location location = player.getLocation();
Plot plot1 = location.getPlotAbs();
if (plot1 == null) {
return !MainUtil.sendMessage(player, Captions.NOT_IN_PLOT);
}

View File

@ -16,12 +16,12 @@ import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
usage = "/plot createroadschematic") public class CreateRoadSchematic extends SubCommand {
@Override public boolean onCommand(PlotPlayer player, String[] args) {
Location loc = player.getLocation();
Plot plot = loc.getPlotAbs();
Location location = player.getLocation();
Plot plot = location.getPlotAbs();
if (plot == null) {
return sendMessage(player, Captions.NOT_IN_PLOT);
}
if (!(loc.getPlotArea() instanceof HybridPlotWorld)) {
if (!(location.getPlotArea() instanceof HybridPlotWorld)) {
return sendMessage(player, Captions.NOT_IN_PLOT_WORLD);
}
HybridUtils.manager.setupRoadSchematic(plot);

View File

@ -55,13 +55,13 @@ public class DebugClaimTest extends SubCommand {
MainUtil.sendMessage(player, " - &cDB Already contains: " + plot.getId());
continue;
}
Location loc = manager.getSignLoc(plot);
ChunkLoc chunk = new ChunkLoc(loc.getX() >> 4, loc.getZ() >> 4);
Location location = manager.getSignLoc(plot);
ChunkLoc chunk = new ChunkLoc(location.getX() >> 4, location.getZ() >> 4);
boolean result = ChunkManager.manager.loadChunk(area.worldname, chunk, false);
if (!result) {
continue;
}
String[] lines = WorldUtil.IMP.getSign(loc);
String[] lines = WorldUtil.IMP.getSign(location);
if (lines != null) {
String line = lines[2];
if (line != null && line.length() > 2) {

View File

@ -369,17 +369,17 @@ import java.util.concurrent.CompletableFuture;
Command cmd = MainCommand.getInstance().getCommand(args[3]);
String[] params = Arrays.copyOfRange(args, 4, args.length);
if ("true".equals(args[1])) {
Location loc = player.getMeta(PlotPlayer.META_LOCATION);
Location location = player.getMeta(PlotPlayer.META_LOCATION);
Plot plot = player.getMeta(PlotPlayer.META_LAST_PLOT);
for (Plot current : PlotSquared.get().getBasePlots()) {
player.setMeta(PlotPlayer.META_LOCATION, current.getBottomAbs());
player.setMeta(PlotPlayer.META_LAST_PLOT, current);
cmd.execute(player, params, null, null);
}
if (loc == null) {
if (location == null) {
player.deleteMeta(PlotPlayer.META_LOCATION);
} else {
player.setMeta(PlotPlayer.META_LOCATION, loc);
player.setMeta(PlotPlayer.META_LOCATION, location);
}
if (plot == null) {
player.deleteMeta(PlotPlayer.META_LAST_PLOT);

View File

@ -3,7 +3,6 @@ package com.github.intellectualsites.plotsquared.plot.commands;
import com.github.intellectualsites.plotsquared.commands.CommandDeclaration;
import com.github.intellectualsites.plotsquared.plot.config.Captions;
import com.github.intellectualsites.plotsquared.plot.generator.HybridPlotManager;
import com.github.intellectualsites.plotsquared.plot.generator.HybridPlotWorld;
import com.github.intellectualsites.plotsquared.plot.generator.HybridUtils;
import com.github.intellectualsites.plotsquared.plot.object.Location;
import com.github.intellectualsites.plotsquared.plot.object.Plot;
@ -23,28 +22,24 @@ public class DebugRoadRegen extends SubCommand {
@Override public boolean onCommand(PlotPlayer player, String[] args) {
if (args.length < 1) {
MainUtil.sendMessage(player, Captions.COMMAND_SYNTAX,
DebugRoadRegen.USAGE);
MainUtil.sendMessage(player, Captions.COMMAND_SYNTAX, DebugRoadRegen.USAGE);
return false;
}
String kind = args[0].toLowerCase();
switch (kind) {
case "plot":
return regenPlot(player);
case "region":
return regenRegion(player, Arrays.copyOfRange(args, 1, args.length));
default:
MainUtil.sendMessage(player, Captions.COMMAND_SYNTAX,
DebugRoadRegen.USAGE);
MainUtil.sendMessage(player, Captions.COMMAND_SYNTAX, DebugRoadRegen.USAGE);
return false;
}
}
public boolean regenPlot(PlotPlayer player) {
Location loc = player.getLocation();
PlotArea area = loc.getPlotArea();
Location location = player.getLocation();
PlotArea area = location.getPlotArea();
if (area == null) {
return sendMessage(player, Captions.NOT_IN_PLOT_WORLD);
}
@ -82,8 +77,8 @@ public class DebugRoadRegen extends SubCommand {
return false;
}
Location loc = player.getLocation();
PlotArea area = loc.getPlotArea();
Location location = player.getLocation();
PlotArea area = location.getPlotArea();
if (area == null) {
return sendMessage(player, Captions.NOT_IN_PLOT_WORLD);
}

View File

@ -3,8 +3,16 @@ package com.github.intellectualsites.plotsquared.plot.commands;
import com.github.intellectualsites.plotsquared.commands.CommandDeclaration;
import com.github.intellectualsites.plotsquared.plot.config.Captions;
import com.github.intellectualsites.plotsquared.plot.config.Settings;
import com.github.intellectualsites.plotsquared.plot.object.*;
import com.github.intellectualsites.plotsquared.plot.util.*;
import com.github.intellectualsites.plotsquared.plot.object.Expression;
import com.github.intellectualsites.plotsquared.plot.object.Location;
import com.github.intellectualsites.plotsquared.plot.object.Plot;
import com.github.intellectualsites.plotsquared.plot.object.PlotArea;
import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
import com.github.intellectualsites.plotsquared.plot.util.CmdConfirm;
import com.github.intellectualsites.plotsquared.plot.util.EconHandler;
import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
import com.github.intellectualsites.plotsquared.plot.util.Permissions;
import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
@CommandDeclaration(command = "delete", permission = "plots.delete",
@ -16,8 +24,8 @@ import com.github.intellectualsites.plotsquared.plot.util.*;
// The syntax also works with any command: /plot <plot> <command>
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
Location loc = player.getLocation();
final Plot plot = loc.getPlotAbs();
Location location = player.getLocation();
final Plot plot = location.getPlotAbs();
if (plot == null) {
return !sendMessage(player, Captions.NOT_IN_PLOT);
}
@ -30,8 +38,9 @@ import com.github.intellectualsites.plotsquared.plot.util.*;
}
final PlotArea plotArea = plot.getArea();
final java.util.Set<Plot> plots = plot.getConnectedPlots();
final int currentPlots =
Settings.Limit.GLOBAL ? player.getPlotCount() : player.getPlotCount(loc.getWorld());
final int currentPlots = Settings.Limit.GLOBAL ?
player.getPlotCount() :
player.getPlotCount(location.getWorld());
Runnable run = new Runnable() {
@Override public void run() {
if (plot.getRunning() > 0) {

View File

@ -97,8 +97,8 @@ import java.util.UUID;
if (player.getGameMode() == PlotGameMode.SPECTATOR) {
player.stopSpectating();
}
Location loc = player.getLocation();
Location spawn = WorldUtil.IMP.getSpawn(loc.getWorld());
Location location = player.getLocation();
Location spawn = WorldUtil.IMP.getSpawn(location.getWorld());
MainUtil.sendMessage(player, Captions.YOU_GOT_DENIED);
if (plot.equals(spawn.getPlot())) {
Location newSpawn =

View File

@ -19,8 +19,8 @@ import com.github.intellectualsites.plotsquared.plot.util.expiry.PlotAnalysis;
requiredType = RequiredType.NONE) public class Done extends SubCommand {
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
Location loc = player.getLocation();
final Plot plot = loc.getPlotAbs();
Location location = player.getLocation();
final Plot plot = location.getPlotAbs();
if ((plot == null) || !plot.hasOwner()) {
return !sendMessage(player, Captions.NOT_IN_PLOT);
}

View File

@ -24,10 +24,9 @@ import com.github.intellectualsites.plotsquared.plot.util.StringMan;
import java.util.*;
@CommandDeclaration(command = "setflag", aliases = {"f", "flag", "setf", "setflag"},
usage = "/plot flag <set|remove|add|list|info> <flag> <value>", description = "Set plot flags",
category = CommandCategory.SETTINGS, requiredType = RequiredType.NONE,
permission = "plots.flag") public class FlagCmd extends SubCommand {
@CommandDeclaration(command = "setflag", aliases = {"f", "flag",
"setflag"}, usage = "/plot flag <set|remove|add|list|info> <flag> <value>", description = "Set plot flags", category = CommandCategory.SETTINGS, requiredType = RequiredType.NONE, permission = "plots.flag")
public class FlagCmd extends SubCommand {
private boolean checkPermValue(PlotPlayer player, Flag flag, String key, String value) {
key = key.toLowerCase();
@ -90,8 +89,8 @@ import java.util.*;
MainUtil.sendMessage(player, Captions.COMMAND_SYNTAX, getUsage());
return false;
}
Location loc = player.getLocation();
Plot plot = loc.getPlotAbs();
Location location = player.getLocation();
Plot plot = location.getPlotAbs();
if (plot == null) {
MainUtil.sendMessage(player, Captions.NOT_IN_PLOT);
return false;

View File

@ -14,9 +14,8 @@ import com.github.intellectualsites.plotsquared.plot.util.StringMan;
import java.util.List;
@CommandDeclaration(command = "inbox", description = "Review the comments for a plot",
usage = "/plot inbox [inbox] [delete <index>|clear|page]", permission = "plots.inbox",
category = CommandCategory.CHAT, requiredType = RequiredType.PLAYER) public class Inbox
extends SubCommand {
usage = "/plot inbox [inbox] [delete <index>|clear|page]", permission = "plots.inbox", category = CommandCategory.CHAT, requiredType = RequiredType.PLAYER)
public class Inbox extends SubCommand {
public void displayComments(PlotPlayer player, List<PlotComment> oldComments, int page) {
if (oldComments == null || oldComments.isEmpty()) {
@ -178,8 +177,7 @@ import java.util.List;
try {
page = Integer.parseInt(args[1]);
} catch (NumberFormatException ignored) {
sendMessage(player, Captions.COMMAND_SYNTAX,
"/plot inbox [inbox] [delete <index>|clear|page]");
sendMessage(player, Captions.COMMAND_SYNTAX, getUsage());
return false;
}
}

View File

@ -193,19 +193,19 @@ public class MainCommand extends Command {
// Clear perm caching //
player.deleteMeta("perm");
// Optional command scope //
Location loc = null;
Location location = null;
Plot plot = null;
boolean tp = false;
if (args.length >= 2) {
PlotArea area = player.getApplicablePlotArea();
Plot newPlot = Plot.fromString(area, args[0]);
if (newPlot != null && (player instanceof ConsolePlayer || newPlot.getArea()
.equals(area) || Permissions.hasPermission(player, Captions.PERMISSION_ADMIN))
.equals(area) || Permissions.hasPermission(player, Captions.PERMISSION_ADMIN) || Permissions.hasPermission(player, Captions.PERMISSION_ADMIN_SUDO_AREA))
&& !newPlot.isDenied(player.getUUID())) {
Location newLoc = newPlot.getCenter();
if (player.canTeleport(newLoc)) {
// Save meta
loc = player.getMeta(PlotPlayer.META_LOCATION);
location = player.getMeta(PlotPlayer.META_LOCATION);
plot = player.getMeta(PlotPlayer.META_LAST_PLOT);
tp = true;
// Set loc
@ -262,10 +262,10 @@ public class MainCommand extends Command {
}
// Reset command scope //
if (tp && !(player instanceof ConsolePlayer)) {
if (loc == null) {
if (location == null) {
player.deleteMeta(PlotPlayer.META_LOCATION);
} else {
player.setMeta(PlotPlayer.META_LOCATION, loc);
player.setMeta(PlotPlayer.META_LOCATION, location);
}
if (plot == null) {
player.deleteMeta(PlotPlayer.META_LAST_PLOT);

View File

@ -3,6 +3,7 @@ package com.github.intellectualsites.plotsquared.plot.commands;
import com.github.intellectualsites.plotsquared.commands.CommandDeclaration;
import com.github.intellectualsites.plotsquared.plot.config.Captions;
import com.github.intellectualsites.plotsquared.plot.config.Settings;
import com.github.intellectualsites.plotsquared.plot.object.Direction;
import com.github.intellectualsites.plotsquared.plot.object.Expression;
import com.github.intellectualsites.plotsquared.plot.object.Location;
import com.github.intellectualsites.plotsquared.plot.object.Plot;
@ -17,6 +18,8 @@ import com.github.intellectualsites.plotsquared.plot.util.UUIDHandler;
import java.util.UUID;
import static com.github.intellectualsites.plotsquared.plot.object.Direction.getFromIndex;
@CommandDeclaration(command = "merge", aliases = "m",
description = "Merge the plot you are standing on with another plot",
permission = "plots.merge", usage = "/plot merge <all|n|e|s|w> [removeroads]",
@ -49,8 +52,8 @@ public class Merge extends SubCommand {
}
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
Location loc = player.getLocationFull();
final Plot plot = loc.getPlotAbs();
Location location = player.getLocationFull();
final Plot plot = location.getPlotAbs();
if (plot == null) {
return !sendMessage(player, Captions.NOT_IN_PLOT);
}
@ -82,20 +85,20 @@ public class Merge extends SubCommand {
MainUtil.sendMessage(player, Captions.NO_PERMISSION, "plots.merge." + (size + 1));
return false;
}
int direction = -1;
Direction direction = Direction.ALL;
if (args.length == 0) {
switch (direction(player.getLocationFull().getYaw())) {
case "NORTH":
direction = 0;
direction = Direction.NORTH;
break;
case "EAST":
direction = 1;
direction = Direction.EAST;
break;
case "SOUTH":
direction = 2;
direction = Direction.SOUTH;
break;
case "WEST":
direction = 3;
direction = Direction.WEST;
break;
}
} else {
@ -110,7 +113,7 @@ public class Merge extends SubCommand {
Captions.PERMISSION_MERGE_KEEP_ROAD.getTranslated());
return true;
}
if (plot.autoMerge(-1, maxSize, uuid, terrain)) {
if (plot.autoMerge(Direction.ALL, maxSize, uuid, terrain)) {
if (EconHandler.manager != null && plotArea.USE_ECONOMY && price > 0d) {
EconHandler.manager.withdrawMoney(player, price);
sendMessage(player, Captions.REMOVED_BALANCE, String.valueOf(price));
@ -124,16 +127,16 @@ public class Merge extends SubCommand {
}
for (int i = 0; i < values.length; i++) {
if (args[0].equalsIgnoreCase(values[i]) || args[0].equalsIgnoreCase(aliases[i])) {
direction = i;
direction = getFromIndex(i);
break;
}
}
}
if (direction == -1) {
if (direction == Direction.ALL) {
MainUtil.sendMessage(player, Captions.COMMAND_SYNTAX,
"/plot merge <" + StringMan.join(values, "|") + "> [removeroads]");
MainUtil.sendMessage(player,
Captions.DIRECTION.getTranslated().replaceAll("%dir%", direction(loc.getYaw())));
MainUtil.sendMessage(player, Captions.DIRECTION.getTranslated()
.replaceAll("%dir%", direction(location.getYaw())));
return false;
}
final boolean terrain;
@ -156,7 +159,8 @@ public class Merge extends SubCommand {
return true;
}
Plot adjacent = plot.getRelative(direction);
if (adjacent == null || !adjacent.hasOwner() || adjacent.getMerged((direction + 2) % 4)
if (adjacent == null || !adjacent.hasOwner() || adjacent
.getMerged((direction.getIndex() + 2) % 4)
|| adjacent.isOwner(uuid)) {
MainUtil.sendMessage(player, Captions.NO_AVAILABLE_AUTOMERGE);
return false;
@ -173,7 +177,7 @@ public class Merge extends SubCommand {
continue;
}
isOnline = true;
final int dir = direction;
final Direction dir = direction;
Runnable run = () -> {
MainUtil.sendMessage(accepter, Captions.MERGE_ACCEPTED);
plot.autoMerge(dir, maxSize - size, owner, terrain);

View File

@ -11,12 +11,12 @@ import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
import com.github.intellectualsites.plotsquared.plot.util.Permissions;
@CommandDeclaration(usage = "/plot move <X;Z>", command = "move", description = "Move a plot",
permission = "plots.move", category = CommandCategory.CLAIMING,
permission = "plots.move", category = CommandCategory.CLAIMING,
requiredType = RequiredType.PLAYER) public class Move extends SubCommand {
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
Location loc = player.getLocation();
Plot plot1 = loc.getPlotAbs();
Location location = player.getLocation();
Plot plot1 = location.getPlotAbs();
if (plot1 == null) {
return !MainUtil.sendMessage(player, Captions.NOT_IN_PLOT);
}

View File

@ -3,7 +3,11 @@ package com.github.intellectualsites.plotsquared.plot.commands;
import com.github.intellectualsites.plotsquared.commands.CommandDeclaration;
import com.github.intellectualsites.plotsquared.plot.config.Captions;
import com.github.intellectualsites.plotsquared.plot.flag.Flags;
import com.github.intellectualsites.plotsquared.plot.object.*;
import com.github.intellectualsites.plotsquared.plot.object.Location;
import com.github.intellectualsites.plotsquared.plot.object.Plot;
import com.github.intellectualsites.plotsquared.plot.object.PlotInventory;
import com.github.intellectualsites.plotsquared.plot.object.PlotItemStack;
import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
import java.util.Arrays;
import java.util.Collection;
@ -20,8 +24,8 @@ import java.util.Locale;
"music_disc_strad", "music_disc_ward", "music_disc_11", "music_disc_wait");
@Override public boolean onCommand(PlotPlayer player, String[] args) {
Location loc = player.getLocation();
final Plot plot = loc.getPlotAbs();
Location location = player.getLocation();
final Plot plot = location.getPlotAbs();
if (plot == null) {
return !sendMessage(player, Captions.NOT_IN_PLOT);
}

View File

@ -17,7 +17,7 @@ import java.util.UUID;
@CommandDeclaration(command = "setowner", permission = "plots.set.owner",
description = "Set the plot owner", usage = "/plot setowner <player>",
aliases = {"owner", "so", "seto"}, category = CommandCategory.CLAIMING,
requiredType = RequiredType.PLAYER, confirmation = true) public class Owner extends SetCommand {
requiredType = RequiredType.NONE, confirmation = true) public class Owner extends SetCommand {
@Override public boolean set(final PlotPlayer player, final Plot plot, String value) {
Set<Plot> plots = plot.getConnectedPlots();

View File

@ -22,8 +22,8 @@ import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
"$2>> $1&lAuthors$2: $1Citymonstret $2& $1Empire92 $2& $1MattBDev $2& $1dordsor21");
MainUtil.sendMessage(player,
"$2>> $1&lWiki$2: $1https://github.com/IntellectualSites/PlotSquared/wiki");
MainUtil.sendMessage(player,
"$2>> $1&lNewest Version$2: $1" + getNewestVersionString());
// MainUtil.sendMessage(player,
// "$2>> $1&lNewest Version$2: $1" + getNewestVersionString());
}
});
return true;

View File

@ -19,7 +19,7 @@ import java.util.UUID;
@CommandDeclaration(command = "remove", aliases = {"r", "untrust", "ut", "undeny", "unban", "ud"},
description = "Remove a player from a plot", usage = "/plot remove <player>",
category = CommandCategory.SETTINGS, requiredType = RequiredType.PLAYER,
category = CommandCategory.SETTINGS, requiredType = RequiredType.NONE,
permission = "plots.remove") public class Remove extends SubCommand {
public Remove() {

View File

@ -158,8 +158,7 @@ public class SchematicCmd extends SubCommand {
}
Collection<Plot> plots = area.getPlots();
if (plots.isEmpty()) {
MainUtil
.sendMessage(player, Captions.SCHEMATIC_EXPORTALL_WORLD);
MainUtil.sendMessage(player, Captions.SCHEMATIC_EXPORTALL_WORLD);
return false;
}
boolean result = SchematicHandler.manager.exportAll(plots, null, null,
@ -169,7 +168,7 @@ public class SchematicCmd extends SubCommand {
return false;
} else {
MainUtil.sendMessage(player, Captions.SCHEMATIC_EXPORTALL_STARTED);
MainUtil.sendMessage(player, Captions.SCHEMATIC_EXPORTALL_COUNT, plots.size());
MainUtil.sendMessage(player, "&3Plot&8->&3Schematic&8: &7Found &c" + plots.size() + "&7 plots...");
}
break;
}

View File

@ -10,7 +10,6 @@ import com.github.intellectualsites.plotsquared.plot.flag.FlagManager;
import com.github.intellectualsites.plotsquared.plot.flag.Flags;
import com.github.intellectualsites.plotsquared.plot.object.BlockBucket;
import com.github.intellectualsites.plotsquared.plot.object.Plot;
import com.github.intellectualsites.plotsquared.plot.object.PlotArea;
import com.github.intellectualsites.plotsquared.plot.object.PlotBlock;
import com.github.intellectualsites.plotsquared.plot.object.PlotManager;
import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
@ -45,7 +44,6 @@ import java.util.stream.IntStream;
}
@Override public boolean set(PlotPlayer player, final Plot plot, String value) {
PlotArea plotArea = player.getLocation().getPlotArea();
PlotManager manager = player.getLocation().getPlotManager();
String[] components = manager.getPlotComponents(plot.getId());
boolean allowUnsafe = DebugAllowUnsafe.unsafeAllowed.contains(player.getUUID());

View File

@ -11,8 +11,8 @@ import com.github.intellectualsites.plotsquared.plot.util.StringMan;
public abstract class SetCommand extends SubCommand {
@Override public boolean onCommand(PlotPlayer player, String[] args) {
Location loc = player.getLocation();
Plot plot = loc.getPlotAbs();
Location location = player.getLocation();
Plot plot = location.getPlotAbs();
if (plot == null) {
return !sendMessage(player, Captions.NOT_IN_PLOT);
}

View File

@ -25,11 +25,10 @@ public class SetHome extends SetCommand {
}
case "":
Plot base = plot.getBasePlot(false);
Location bot = base.getBottomAbs();
Location loc = player.getLocationFull();
BlockLoc rel =
new BlockLoc(loc.getX() - bot.getX(), loc.getY(), loc.getZ() - bot.getZ(),
loc.getYaw(), loc.getPitch());
Location bottom = base.getBottomAbs();
Location location = player.getLocationFull();
BlockLoc rel = new BlockLoc(location.getX() - bottom.getX(), location.getY(),
location.getZ() - bottom.getZ(), location.getYaw(), location.getPitch());
base.setHome(rel);
return MainUtil.sendMessage(player, Captions.POSITION_SET);
default:

View File

@ -16,8 +16,8 @@ import com.github.intellectualsites.plotsquared.plot.util.SetupUtils;
import com.github.intellectualsites.plotsquared.plot.util.StringMan;
import com.github.intellectualsites.plotsquared.plot.util.WorldUtil;
import lombok.*;
import org.jetbrains.annotations.Nullable;
import javax.annotation.Nullable;
import java.util.*;
import java.util.Map.Entry;
@ -288,6 +288,11 @@ import java.util.Map.Entry;
MainUtil.sendMessage(player, "&cYou need to choose a world name!");
return false;
}
if (!d(args[0])) {
MainUtil.sendMessage(player,
"Non [a-z0-9_.-] character in the world name: " + args[0]);
return false;
}
if (WorldUtil.IMP.isWorld(args[0])) {
if (PlotSquared.get().hasPlotArea(args[0])) {
MainUtil.sendMessage(player, "&cThat world name is already taken!");
@ -317,6 +322,11 @@ import java.util.Map.Entry;
return false;
}
private static boolean d(String s) {
return s.chars().allMatch((i) -> {
return i == 95 || i == 45 || i >= 97 && i <= 122 || i >= 48 && i <= 57 || i == 46;
});
}
private static final class StepPickGenerator extends SetupStep {
@Getter private String generator;

View File

@ -13,8 +13,8 @@ import com.github.intellectualsites.plotsquared.plot.util.Permissions;
public class Swap extends SubCommand {
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
Location loc = player.getLocation();
Plot plot1 = loc.getPlotAbs();
Location location = player.getLocation();
Plot plot1 = location.getPlotAbs();
if (plot1 == null) {
return !MainUtil.sendMessage(player, Captions.NOT_IN_PLOT);
}

View File

@ -9,10 +9,9 @@ import com.github.intellectualsites.plotsquared.plot.object.RunnableVal3;
import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
@CommandDeclaration(command = "toggle", aliases = {"attribute"}, permission = "plots.use",
usage = "/plot toggle <chat|chatspy|clear-confirmation|titles|worldedit>",
usage = "/plot toggle <chat|chatspy|clear-confirmation|time|titles|worldedit>",
description = "Toggle per user settings", requiredType = RequiredType.NONE,
category = CommandCategory.SETTINGS) public class Toggle extends Command {
public Toggle() {
super(MainCommand.getInstance(), true);
}
@ -77,6 +76,18 @@ import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
}
}
@CommandDeclaration(command = "time", permission = "plots.toggle.time",
description = "Toggle plot time settings")
public void time(Command command, PlotPlayer player, String[] args,
RunnableVal3<Command, Runnable, Runnable> confirm,
RunnableVal2<Command, CommandResult> whenDone) {
if (toggle(player, "disabletime")) {
MainUtil.sendMessage(player, Captions.TOGGLE_ENABLED, command.toString());
} else {
MainUtil.sendMessage(player, Captions.TOGGLE_DISABLED, command.toString());
}
}
public boolean toggle(PlotPlayer player, String key) {
if (player.getAttribute(key)) {
player.removeAttribute(key);

View File

@ -5,7 +5,11 @@ import com.github.intellectualsites.plotsquared.plot.config.Captions;
import com.github.intellectualsites.plotsquared.plot.object.Location;
import com.github.intellectualsites.plotsquared.plot.object.Plot;
import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
import com.github.intellectualsites.plotsquared.plot.util.*;
import com.github.intellectualsites.plotsquared.plot.util.CmdConfirm;
import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
import com.github.intellectualsites.plotsquared.plot.util.Permissions;
import com.github.intellectualsites.plotsquared.plot.util.StringMan;
import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
@CommandDeclaration(command = "unlink", aliases = {"u", "unmerge"},
description = "Unlink a mega-plot", usage = "/plot unlink [createroads]",
@ -13,9 +17,8 @@ import com.github.intellectualsites.plotsquared.plot.util.*;
public class Unlink extends SubCommand {
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
Location loc = player.getLocation();
final Plot plot = loc.getPlotAbs();
Location location = player.getLocation();
final Plot plot = location.getPlotAbs();
if (plot == null) {
return !sendMessage(player, Captions.NOT_IN_PLOT);
}

View File

@ -5,7 +5,8 @@ import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
@CommandDeclaration(command = "weanywhere", permission = "plots.worldedit.bypass",
description = "Force bypass of WorldEdit restrictions", aliases = {"wea"}, usage = "/plot weanywhere",
requiredType = RequiredType.NONE, category = CommandCategory.ADMINISTRATION) @Deprecated
requiredType = RequiredType.NONE, category = CommandCategory.ADMINISTRATION)
@Deprecated
public class WE_Anywhere extends SubCommand {
@Override public boolean onCommand(PlotPlayer player, String[] arguments) {

View File

@ -59,8 +59,8 @@ public enum Captions {
PERMISSION_ADMIN_ENTRY_DENIED("plots.admin.entry.denied", "static.permissions"),
PERMISSION_ADMIN_ENTRY_FORCEFIELD("plots.admin.entry.forcefield", "static.permissions"),
PERMISSION_COMMANDS_CHAT("plots.admin.command.chat", "static.permissions"),
PERMISSION_MERGE_OTHER("plots.merge.other", "static.permissions"),
PERMISSION_MERGE_KEEP_ROAD("plots.merge.keeproad", "static.permissions"),
PERMISSION_MERGE_OTHER("plots.merge.other", "static.permissions"), PERMISSION_MERGE_KEEP_ROAD(
"plots.merge.keeproad", "static.permissions"),
PERMISSION_ADMIN_DESTROY_UNOWNED("plots.admin.destroy.unowned", "static.permissions"),
PERMISSION_ADMIN_DESTROY_GROUNDLEVEL("plots.admin.destroy.groundlevel", "static.permissions"),
PERMISSION_ADMIN_DESTROY_OTHER("plots.admin.destroy.other", "static.permissions"),
@ -70,8 +70,8 @@ public enum Captions {
PERMISSION_ADMIN_BUILD_OTHER("plots.admin.build.other", "static.permissions"),
PERMISSION_ADMIN_INTERACT_ROAD("plots.admin.interact.road", "static.permissions"),
PERMISSION_ADMIN_INTERACT_UNOWNED("plots.admin.interact.unowned", "static.permissions"),
PERMISSION_ADMIN_INTERACT_OTHER("plots.admin.interact.other", "static.permissions"),
PERMISSION_ADMIN_BUILD_HEIGHT_LIMIT("plots.admin.build.heightlimit", "static.permissions"),
PERMISSION_ADMIN_INTERACT_OTHER("plots.admin.interact.other", "static.permissions"), PERMISSION_ADMIN_BUILD_HEIGHT_LIMIT(
"plots.admin.build.heightlimit", "static.permissions"),
PERMISSION_ADMIN_UPDATE("plots.admin.command.update", "static.permissions"),
PERMISSION_ADMIN_COMMAND_RATE("plots.admin.command.rate", "static.permissions"),
PERMISSION_ADMIN_COMMAND_TRUST("plots.admin.command.trust", "static.permissions"),
@ -124,8 +124,8 @@ public enum Captions {
PERMISSION_FLAG_ADD("plots.flag.add", "static.permissions"),
PERMISSION_FLAG_LIST("plots.flag.list", "static.permissions"),
PERMISSION_ADMIN_COMMAND_KICK("plots.admin.command.kick", "static.permissions"),
PERMISSION_GRANT("plots.grant.%s0", "static.permissions"),
PERMISSION_LIST_FOR_SALE("plots.list.forsale", "static.permissions"),
PERMISSION_GRANT("plots.grant.%s0", "static.permissions"), PERMISSION_LIST_FOR_SALE(
"plots.list.forsale", "static.permissions"),
PERMISSION_LIST_MINE("plots.list.mine", "static.permissions"),
PERMISSION_LIST_SHARED("plots.list.shared", "static.permissions"),
PERMISSION_LIST_WORLD("plots.list.world", "static.permissions"),
@ -140,8 +140,8 @@ public enum Captions {
PERMISSION_LIST_FUZZY("plots.list.fuzzy", "static.permissions"),
PERMISSION_LIST_AREA("plots.list.area", "static.permissions"),
PERMISSION_ADMIN_COMMAND_LOAD("plots.admin.command.load", "static.permissions"),
PERMISSION_ADMIN_COMMAND_MERGE("plots.admin.command.merge", "static.permissions"),
PERMISSION_ADMIN_COMMAND_SET_OWNER("plots.admin.command.setowner", "static.permissions"),
PERMISSION_ADMIN_COMMAND_MERGE("plots.admin.command.merge", "static.permissions"), PERMISSION_ADMIN_COMMAND_SET_OWNER(
"plots.admin.command.setowner", "static.permissions"),
PERMISSION_COMMENT("plots.comment", "static.permissions"),
PERMISSION_ADMIN_COMMAND_REMOVE("plots.admin.command.remove", "static.permissions"),
PERMISSION_ADMIN_COMMAND_SAVE("plots.admin.command.save", "static.permissions"),
@ -224,15 +224,9 @@ public enum Captions {
//</editor-fold>
//<editor-fold desc="Border">
BORDER("$2You are outside the current map border", "Border"),
//</editor-fold>
//<editor-fold desc="WorldEdit Masks">
WORLDEDIT_BYPASS("$2&oTo bypass your restrictions use $4/plot wea", "WorldEdit Masks"),
WORLDEDIT_BYPASSED("$2Currently bypassing WorldEdit restriction.", "WorldEdit Masks"),
//</editor-fold>
//<editor-fold desc="GameMode">
GAMEMODE_WAS_BYPASSED("$1You bypassed the gamemode ($2{gamemode}$1) $1set for $2{plot}", "GameMode"),
//</editor-fold>
//<editor-fold desc="Height Limit">
GAMEMODE_WAS_BYPASSED("$1You bypassed the GameMode ($2{gamemode}$1) $1set for $2{plot}", "GameMode"),
HEIGHT_LIMIT("$1This plot area has a height limit of $2{limit}", "Height Limit"),
//</editor-fold>
//<editor-fold desc="Records">
@ -244,9 +238,8 @@ public enum Captions {
SWAP_DIMENSIONS("$2The proposed areas must have comparable dimensions", "Swap"),
SWAP_SYNTAX("$2/plot swap <id>", "Swap"),
SWAP_SUCCESS("$4Successfully swapped plots", "Swap"),
STARTED_SWAP("$2Started plot swap task. You will be notified when it finishes", "Swap"),
//</editor-fold>
//<editor-fold desc="Comment">
//<editor-fold desc="Comments">
INBOX_NOTIFICATION("%s unread messages. Use /plot inbox", "Comment"),
NOT_VALID_INBOX_INDEX("$2No comment at index %s", "Comment"),
INBOX_ITEM("$2 - $4%s", "Comment"),
@ -271,8 +264,6 @@ public enum Captions {
//<editor-fold desc="Toggle">
TOGGLE_ENABLED("$2Enabled setting: %s", "Toggle"),
TOGGLE_DISABLED("$2Disabled setting: %s", "Toggle"),
//</editor-fold>
//<editor-fold desc="Blocked Command">
COMMAND_BLOCKED("$2That command is not allowed in this plot", "Blocked Command"),
//</editor-fold>
//<editor-fold desc="Done">
@ -303,7 +294,7 @@ public enum Captions {
NOT_FOR_SALE("$2This plot is not for sale", "Economy"),
CANNOT_BUY_OWN("$2You cannot buy your own plot", "Economy"),
PLOT_SOLD("$4Your plot; $1%s0$4, has been sold to $1%s1$4 for $1$%s2", "Economy"),
CANNOT_AFFORD_MERGE("$2You cannot afford to merge the plots. It costs $1%s", "Economy"),
CANNOT_AFFORD_MERGE("$2You cannot afford to merge the plots. It costs $1%s","Economy"),
ADDED_BALANCE("$1%s $2has been added to your balance", "Economy"),
REMOVED_BALANCE("$1%s $2has been taken from your balance", "Economy"),
REMOVED_GRANTED_PLOT("$2You used %s plot grant(s), you've got $1%s $2left", "Economy"),
@ -317,17 +308,21 @@ public enum Captions {
"$4You should have been teleported to the created world. Otherwise you will need to set the generator manually using the bukkit.yml or "
+ "your chosen world management plugin.", "Setup"),
SETUP_WORLD_TAKEN("$2%s is already a world", "Setup"),
SETUP_MISSING_WORLD(
"$2You need to specify a world name ($1/plot setup &l<world>$1 <generator>$2)&-$1Additional commands:&-$2 - $1/plot setup <value>&-$2 -"
+ " $1/plot setup back&-$2 - $1/plot setup cancel", "Setup"),
SETUP_MISSING_GENERATOR(
"$2You need to specify a generator ($1/plot setup <world> &l<generator>&r$2)&-$1Additional commands:&-$2 - $1/plot setup <value>&-$2 - "
+ "$1/plot setup back&-$2 - $1/plot setup cancel", "Setup"),
SETUP_INVALID_GENERATOR("$2Invalid generator. Possible options: %s", "Setup"),
//</editor-fold>
//<editor-fold desc="Schematics">
SCHEMATIC_TOO_LARGE("$2The plot is too large for this action!", "Schematics"),
//<editor-fold desc="Schematic">
SCHEMATIC_TOO_LARGE("$2The plot is too large for this action!",
"Schematics"),
SCHEMATIC_MISSING_ARG("$2You need to specify an argument. Possible values: $1test <name>$2 , $1save$2 , $1paste $2, $1exportall$2, $1list", "Schematics"),
SCHEMATIC_INVALID("$2That is not a valid schematic. Reason: $2%s", "Schematics"),
SCHEMATIC_VALID("$2That is a valid schematic", "Schematics"),
SCHEMATIC_PASTE_FAILED("$2Failed to paste the schematic", "Schematics"),
@ -336,12 +331,13 @@ public enum Captions {
SCHEMATIC_ROAD_CREATED("$1Saved new road schematic. To test the schematic, fly to a few other plots and run /plot debugroadregen", "Schematics"),
MCA_FILE_SIZE("$1Note: The `.mca` files are 512x512", "Schematics"),
SCHEMATIC_EXPORTALL_STARTED("$1Starting export...", "Schematics"),
SCHEMATIC_EXPORTALL_WORLD_ARGS("$1Need world argument. Use $3/plot schem exportall <area>", "Schematics"),
SCHEMATIC_EXPORTALL_WORLD("$1Invalid world. Use &3/plot sch exportall <area>", "Schematics"),
SCHEMATIC_EXPORTALL_MASS_STARTED("$1Schematic mass export has been started. This may take a while", "Schematicss"),
SCHEMATIC_EXPORTALL_WORLD_ARGS("$1Need world argument. Use $3/plot sch exportall <area>", "Schematics"),
SCHEMATIC_EXPORTALL_WORLD("$1Invalid world. Use &3/plot sch exportall <area>", "Schematic"),
SCHEMATIC_EXPORTALL_MASS_STARTED("$1Schematic mass export has been started. This may take a while", "Schematics"),
SCHEMATIC_EXPORTALL_COUNT("$1Found $3%s $1plots...", "Schematics"),
SCHEMATIC_EXPORTALL_FINISHED("$1Finished mass export", "Schematics"),
SCHEMATIC_EXPORTALL_SINGLE_FINISHED("$1Finished export", "Schematics"),
TASK_IN_PROCESS("$1Task is already running.", "Error"),
//</editor-fold>
//<editor-fold desc="Titles">
TITLE_ENTERED_PLOT("$1Plot: %world%;%x%;%z%", "Titles"),
@ -357,13 +353,14 @@ public enum Captions {
RELOADED_CONFIGS("$1Translations and world settings have been reloaded", "Reload"),
RELOAD_FAILED("$2Failed to reload file configurations", "Reload"),
//</editor-fold>
//<editor-fold desc="Desc">
//<editor-fold desc="Description">
DESC_SET("$2Plot description set", "Desc"),
DESC_UNSET("$2Plot description unset", "Desc"),
//</editor-fold>
//<editor-fold desc="Alias">
ALIAS_SET_TO("$2Plot alias set to $1%alias%", "Alias"),
ALIAS_REMOVED("$2Plot alias removed", "Alias"),
ALIAS_TOO_LONG("$2The alias must be < 50 characters in length", "Alias"),
ALIAS_IS_TAKEN("$2That alias is already taken", "Alias"),
//</editor-fold>
@ -379,6 +376,7 @@ public enum Captions {
NO_PLOT_PERMS("$2You must be the plot owner to perform this action", "Permission"),
CANT_CLAIM_MORE_PLOTS("$2You can't claim more plots.", "Permission"),
CANT_CLAIM_MORE_CLUSTERS("$2You can't claim more clusters.", "Permission"),
CANT_TRANSFER_MORE_PLOTS("$2You can't send more plots to that user", "Permission"),
CANT_CLAIM_MORE_PLOTS_NUM("$2You can't claim more than $1%s $2plots at once", "Permission"),
//</editor-fold>
@ -390,8 +388,8 @@ public enum Captions {
MERGE_REQUEST_CONFIRM("Merge request from %s", "Permission"),
NO_PERM_MERGE("$2You are not the owner of the plot: $1%plot%", "Merge"),
NO_AVAILABLE_AUTOMERGE("$2You do not own any adjacent plots in the specified direction or are not allowed to merge to the required size.", "Merge"),
UNMERGE_CANCELLED("$1Unlink has been cancelled", "Merge"),
UNLINK_IMPOSSIBLE("$2You can only unlink a mega-plot", "Merge"),
UNMERGE_CANCELLED("$1Unlink has been cancelled", "Merge"),
UNLINK_SUCCESS("$2Successfully unlinked plots.", "Merge"),
//</editor-fold>
//<editor-fold desc="CommandConfig">
@ -416,14 +414,9 @@ public enum Captions {
NOT_VALID_PLOT_WORLD("$2That is not a valid plot area (case sensitive)", "Errors"),
NO_PLOTS("$2You don't have any plots", "Errors"),
WAIT_FOR_TIMER("$2A set block timer is bound to either the current plot or you. Please wait for it to finish", "Errors"),
TASK_IN_PROCESS("$1Task is already running.", "Error"),
//</editor-fold>
//<editor-fold desc="Paste">
DEBUG_REPORT_CREATED("$1Uploaded a full debug to: $1%url%", "Paste"),
//</editor-fold>
//<editor-fold desc="Purge">
PURGE_SUCCESS("$4Successfully purged %s plots", "Purge"),
//</editor-fold>
//<editor-fold desc="Trim">
TRIM_IN_PROGRESS("A world trim task is already in progress!", "Trim"),
//</editor-fold>
@ -443,7 +436,7 @@ public enum Captions {
//<editor-fold desc="Set Block">
SET_BLOCK_ACTION_FINISHED("$1The last setblock action is now finished.", "Set Block"),
//</editor-fold>
//<editor-fold desc="unsafe">
//<editor-fold desc="AllowUnsafe">
DEBUGALLOWUNSAFE_ON("$2Unsafe actions allowed", "unsafe"),
DEBUGALLOWUNSAFE_OFF("$2Unsafe actions disabled", "unsafe"),
//</editor-fold>
@ -529,9 +522,7 @@ public enum Captions {
YOU_GOT_DENIED("$4You are denied from the plot you were previously on, and got teleported to spawn", "Deny"),
CANT_REMOVE_OWNER("$2You can't remove the plot owner", "Deny"),
//</editor-fold>
//<editor-fold desc="Kick">
YOU_GOT_KICKED("$4You got kicked!", "Kick"),
//</editor-fold>
//<editor-fold desc="Flag">
FLAG_KEY("$2Key: %s", "Flag"),
FLAG_TYPE("$2Type: %s", "Flag"),
@ -547,6 +538,7 @@ public enum Captions {
//</editor-fold>
//<editor-fold desc="Trusted">
TRUSTED_ADDED("$4You successfully trusted a user to the plot", "Trusted"),
WAS_NOT_ADDED("$2That player was not trusted on this plot", "Trusted"),
PLOT_REMOVED_USER("$1Plot %s of which you were added to has been deleted due to owner inactivity", "Trusted"),
//</editor-fold>
//<editor-fold desc="Member">
@ -554,10 +546,9 @@ public enum Captions {
ALREADY_OWNER("$2That user is already the plot owner: %s0", "Member"),
ALREADY_ADDED("$2That user is already added to that category: %s0", "Member"),
MEMBER_ADDED("$4That user can now build while the plot owner is online", "Member"),
MEMBER_WAS_NOT_ADDED("$2That player was not added as a user on this plot", "Member"),
PLOT_MAX_MEMBERS("$2You are not allowed to add any more players to this plot", "Member"),
//</editor-fold>
//<editor-fold desc="Owner">
//<editor-fold desc="Set Owner">
SET_OWNER("$4You successfully set the plot owner", "Owner"),
SET_OWNER_CANCELLED("$2The set owner action was cancelled", "Owner"),
NOW_OWNER("$4You are now owner of plot %s", "Owner"),
@ -577,8 +568,7 @@ public enum Captions {
HELP_DISPLAY_ALL_COMMANDS("Display all commands", "Help"),
DIRECTION("$1Current direction: %dir%", "Help"),
//</editor-fold>
//<editor-fold desc="Generator_Bucket">
BUCKET_ENTRIES_IGNORED("$2Total bucket values add up to 1 or more. Blocks without a specified chance will be ignored", "Generator_Bucket"),
BUCKET_ENTRIES_IGNORED("$2Total bucket values add up to 1 or more. Blocks without a specified chance will be ignored","Generator_Bucket"),
/**
* Command Categories
@ -593,6 +583,7 @@ public enum Captions {
COMMAND_CATEGORY_DEBUG("Debug", "Category"),
COMMAND_CATEGORY_ADMINISTRATION("Admin", "Category"),
//<editor-fold desc="Grants">
GRANTED_PLOTS("$1Result: $2%s $1grants left", "Grants"),
GRANTED_PLOT("$1You granted %s0 plot to $2%s1", "Grants"),
@ -602,16 +593,18 @@ public enum Captions {
/**
* Legacy Configuration Conversion
*/
LEGACY_CONFIG_FOUND("A legacy configuration file was detected. Conversion will be attempted.", "LegacyConfig"),
LEGACY_CONFIG_BACKUP("A copy of worlds.yml $1have been saved in the file worlds.yml.old$1.", "LegacyConfig"),
LEGACY_CONFIG_REPLACED("> %s has been replaced with %s", "LegacyConfig"),
LEGACY_CONFIG_DONE(
LEGACY_CONFIG_FOUND("A legacy configuration file was detected. Conversion will be attempted.",
"LegacyConfig"), LEGACY_CONFIG_BACKUP(
"A copy of worlds.yml $1have been saved in the file worlds.yml.old$1.",
"LegacyConfig"), LEGACY_CONFIG_REPLACED("> %s has been replaced with %s",
"LegacyConfig"), LEGACY_CONFIG_DONE(
"The conversion has finished. PlotSquared will now be disabled and the new configuration file will"
+ " be used at next startup. Please review the new worlds.yml file. "
+ "Please note that schematics will not be converted, as we are now using WorldEdit to handle schematics. "
+ "You need to re-generate the schematics.",
"LegacyConfig"), LEGACY_CONFIG_CONVERSION_FAILED(
"Failed to convert the legacy configuration file. See stack trace for information.",
"LegacyConfig"),
LEGACY_CONFIG_CONVERSION_FAILED("Failed to convert the legacy configuration file. See stack trace for information.", "LegacyConfig"),
CUSTOM_STRING("-", "-");
//@formatter:on

View File

@ -1,11 +1,19 @@
package com.github.intellectualsites.plotsquared.plot.database;
import com.github.intellectualsites.plotsquared.plot.flag.Flag;
import com.github.intellectualsites.plotsquared.plot.object.*;
import com.github.intellectualsites.plotsquared.plot.object.Plot;
import com.github.intellectualsites.plotsquared.plot.object.PlotArea;
import com.github.intellectualsites.plotsquared.plot.object.PlotCluster;
import com.github.intellectualsites.plotsquared.plot.object.PlotId;
import com.github.intellectualsites.plotsquared.plot.object.RunnableVal;
import com.github.intellectualsites.plotsquared.plot.object.comment.PlotComment;
import org.jetbrains.annotations.NotNull;
import javax.annotation.Nonnull;
import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
public interface AbstractDB {
@ -223,7 +231,7 @@ public interface AbstractDB {
/**
* @param cluster PlotCluster Object
* @param uuid Player that should be removed
* @param uuid Player that should be removed
*/
void setHelper(PlotCluster cluster, UUID uuid);
@ -275,7 +283,7 @@ public interface AbstractDB {
/**
* Removes the specified comment from the given plot.
*
* @param plot the plot
* @param plot the plot
* @param comment the comment to remove
*/
void removeComment(Plot plot, PlotComment comment);
@ -283,7 +291,7 @@ public interface AbstractDB {
/**
* Clears the specified inbox on the given plot.
*
* @param plot the plot
* @param plot the plot
* @param inbox the inbox to clear
*/
void clearInbox(Plot plot, String inbox);
@ -291,17 +299,17 @@ public interface AbstractDB {
/**
* Adds the specified comment to the given plot.
*
* @param plot the plot
* @param plot the plot
* @param comment the comment to add
*/
void setComment(Plot plot, PlotComment comment);
/**
* Gets Plot Comments.
* Gets Plot comments.
*
* @param plot The Plot to get comments from
*/
void getComments(@Nonnull Plot plot, String inbox, RunnableVal<List<PlotComment>> whenDone);
void getComments(@NotNull Plot plot, String inbox, RunnableVal<List<PlotComment>> whenDone);
void createPlotAndSettings(Plot plot, Runnable whenDone);

View File

@ -1,13 +1,21 @@
package com.github.intellectualsites.plotsquared.plot.database;
import com.github.intellectualsites.plotsquared.plot.flag.Flag;
import com.github.intellectualsites.plotsquared.plot.object.*;
import com.github.intellectualsites.plotsquared.plot.object.Plot;
import com.github.intellectualsites.plotsquared.plot.object.PlotArea;
import com.github.intellectualsites.plotsquared.plot.object.PlotCluster;
import com.github.intellectualsites.plotsquared.plot.object.PlotId;
import com.github.intellectualsites.plotsquared.plot.object.RunnableVal;
import com.github.intellectualsites.plotsquared.plot.object.comment.PlotComment;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
/**
* Database Functions
@ -74,6 +82,8 @@ public class DBFunc {
DBFunc.dbManager.validateAllPlots(plots);
}
//TODO Consider Removal
/**
* Check if a {@link ResultSet} contains a column.
*
@ -81,7 +91,7 @@ public class DBFunc {
* @param name
* @return
*/
public static boolean hasColumn(ResultSet resultSet, String name) {
@Deprecated public static boolean hasColumn(ResultSet resultSet, String name) {
try {
ResultSetMetaData meta = resultSet.getMetaData();
int count = meta.getColumnCount();

View File

@ -12,8 +12,8 @@ import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
import com.github.intellectualsites.plotsquared.plot.util.StringMan;
import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
import com.google.common.base.Charsets;
import org.jetbrains.annotations.NotNull;
import javax.annotation.Nonnull;
import java.sql.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@ -2170,7 +2170,7 @@ import java.util.concurrent.atomic.AtomicInteger;
});
}
@Override public void getComments(@Nonnull Plot plot, final String inbox,
@Override public void getComments(@NotNull Plot plot, final String inbox,
final RunnableVal<List<PlotComment>> whenDone) {
addPlotTask(plot, new UniqueStatement("getComments_" + plot) {
@Override public void set(PreparedStatement statement) throws SQLException {
@ -2942,7 +2942,7 @@ import java.util.concurrent.atomic.AtomicInteger;
boolean[] pm = plot.getMerged();
boolean[] dm = dataPlot.getMerged();
if (pm[0] != dm[0] || pm[1] != dm[1]) {
PlotSquared.debug("&8 - &7Correcting merge for: " + plot);
PlotSquared.debug(" - Correcting merge for: " + plot);
setMerged(dataPlot, plot.getMerged());
}
HashMap<Flag<?>, Object> pf = plot.getFlags();
@ -2951,7 +2951,7 @@ import java.util.concurrent.atomic.AtomicInteger;
if (pf.size() != df.size() || !StringMan
.isEqual(StringMan.joinOrdered(pf.values(), ","),
StringMan.joinOrdered(df.values(), ","))) {
PlotSquared.debug("&8 - &7Correcting flags for: " + plot);
PlotSquared.debug(" - Correcting flags for: " + plot);
setFlags(plot, pf);
}
}

View File

@ -47,9 +47,6 @@ public class AugmentedUtils {
continue;
}
IndependentPlotGenerator generator = area.getGenerator();
if (generator == null) {
continue;
}
// Mask
if (queue == null) {
queue = GlobalBlockQueue.IMP.getNewQueue(world, false);

View File

@ -24,29 +24,21 @@ public class ClassicPlotManager extends SquarePlotManager {
BlockBucket blocks) {
switch (component) {
case "floor":
setFloor(plotId, blocks);
return true;
return setFloor(plotId, blocks);
case "wall":
setWallFilling(plotId, blocks);
return true;
return setWallFilling(plotId, blocks);
case "all":
setAll(plotId, blocks);
return true;
return setAll(plotId, blocks);
case "air":
setAir(plotId, blocks);
return true;
return setAir(plotId, blocks);
case "main":
setMain(plotId, blocks);
return true;
return setMain(plotId, blocks);
case "middle":
setMiddle(plotId, blocks);
return true;
return setMiddle(plotId, blocks);
case "outline":
setOutline(plotId, blocks);
return true;
return setOutline(plotId, blocks);
case "border":
setWall(plotId, blocks);
return true;
return setWall(plotId, blocks);
}
return false;
}
@ -54,8 +46,7 @@ public class ClassicPlotManager extends SquarePlotManager {
@Override public boolean unClaimPlot(Plot plot, Runnable whenDone) {
setWallFilling(plot.getId(), classicPlotWorld.WALL_FILLING);
setWall(plot.getId(), classicPlotWorld.WALL_BLOCK);
GlobalBlockQueue.IMP.addTask(whenDone);
return true;
return GlobalBlockQueue.IMP.addTask(whenDone);
}
public boolean setFloor(PlotId plotId, BlockBucket blocks) {
@ -70,8 +61,7 @@ public class ClassicPlotManager extends SquarePlotManager {
queue.setCuboid(pos1, pos2, blocks);
}
}
queue.enqueue();
return true;
return queue.enqueue();
}
public boolean setAll(PlotId plotId, BlockBucket blocks) {
@ -86,8 +76,7 @@ public class ClassicPlotManager extends SquarePlotManager {
Location pos2 = new Location(classicPlotWorld.worldname, region.maxX, maxY, region.maxZ);
queue.setCuboid(pos1, pos2, blocks);
}
queue.enqueue();
return true;
return queue.enqueue();
}
public boolean setAir(PlotId plotId, BlockBucket blocks) {
@ -103,8 +92,7 @@ public class ClassicPlotManager extends SquarePlotManager {
Location pos2 = new Location(classicPlotWorld.worldname, region.maxX, maxY, region.maxZ);
queue.setCuboid(pos1, pos2, blocks);
}
queue.enqueue();
return true;
return queue.enqueue();
}
public boolean setMain(PlotId plotId, BlockBucket blocks) {
@ -119,8 +107,7 @@ public class ClassicPlotManager extends SquarePlotManager {
new Location(classicPlotWorld.worldname, region.maxX, classicPlotWorld.PLOT_HEIGHT - 1, region.maxZ);
queue.setCuboid(pos1, pos2, blocks);
}
queue.enqueue();
return true;
return queue.enqueue();
}
public boolean setMiddle(PlotId plotId, BlockBucket blocks) {
@ -134,8 +121,7 @@ public class ClassicPlotManager extends SquarePlotManager {
int x = MathMan.average(corners[0].getX(), corners[1].getX());
int z = MathMan.average(corners[0].getZ(), corners[1].getZ());
queue.setBlock(x, classicPlotWorld.PLOT_HEIGHT, z, blocks.getBlock());
queue.enqueue();
return true;
return queue.enqueue();
}
public boolean setOutline(PlotId plotId, BlockBucket blocks) {
@ -187,8 +173,7 @@ public class ClassicPlotManager extends SquarePlotManager {
queue.setCuboid(pos1, pos2, blocks);
}
}
queue.enqueue();
return true;
return queue.enqueue();
}
public boolean setWallFilling(PlotId plotId, BlockBucket blocks) {
@ -235,8 +220,7 @@ public class ClassicPlotManager extends SquarePlotManager {
}
}
}
queue.enqueue();
return true;
return queue.enqueue();
}
public boolean setWall(PlotId plotId, BlockBucket blocks) {
@ -276,8 +260,7 @@ public class ClassicPlotManager extends SquarePlotManager {
queue.setBlock(x, y, z, blocks.getBlock());
}
}
queue.enqueue();
return true;
return queue.enqueue();
}
/**
@ -308,8 +291,7 @@ public class ClassicPlotManager extends SquarePlotManager {
new Location(classicPlotWorld.worldname, ex, classicPlotWorld.WALL_HEIGHT + 1, ez - 1), classicPlotWorld.WALL_BLOCK);
queue.setCuboid(new Location(classicPlotWorld.worldname, sx + 1, 1, sz + 1),
new Location(classicPlotWorld.worldname, ex - 1, classicPlotWorld.ROAD_HEIGHT, ez - 1), classicPlotWorld.ROAD_BLOCK);
queue.enqueue();
return true;
return queue.enqueue();
}
@Override public boolean createRoadSouth(Plot plot) {
@ -337,8 +319,7 @@ public class ClassicPlotManager extends SquarePlotManager {
new Location(classicPlotWorld.worldname, ex - 1, classicPlotWorld.WALL_HEIGHT + 1, ez), classicPlotWorld.WALL_BLOCK);
queue.setCuboid(new Location(classicPlotWorld.worldname, sx + 1, 1, sz + 1),
new Location(classicPlotWorld.worldname, ex - 1, classicPlotWorld.ROAD_HEIGHT, ez - 1), classicPlotWorld.ROAD_BLOCK);
queue.enqueue();
return true;
return queue.enqueue();
}
@Override public boolean createRoadSouthEast(Plot plot) {
@ -356,8 +337,7 @@ public class ClassicPlotManager extends SquarePlotManager {
PlotBlock.get((short) 7, (byte) 0));
queue.setCuboid(new Location(classicPlotWorld.worldname, sx + 1, 1, sz + 1),
new Location(classicPlotWorld.worldname, ex - 1, classicPlotWorld.ROAD_HEIGHT, ez - 1), classicPlotWorld.ROAD_BLOCK);
queue.enqueue();
return true;
return queue.enqueue();
}
@Override public boolean removeRoadEast(Plot plot) {
@ -377,8 +357,7 @@ public class ClassicPlotManager extends SquarePlotManager {
new Location(classicPlotWorld.worldname, ex, classicPlotWorld.PLOT_HEIGHT - 1, ez - 1), classicPlotWorld.MAIN_BLOCK);
queue.setCuboid(new Location(classicPlotWorld.worldname, sx, classicPlotWorld.PLOT_HEIGHT, sz + 1),
new Location(classicPlotWorld.worldname, ex, classicPlotWorld.PLOT_HEIGHT, ez - 1), classicPlotWorld.TOP_BLOCK);
queue.enqueue();
return true;
return queue.enqueue();
}
@Override public boolean removeRoadSouth(Plot plot) {
@ -398,8 +377,7 @@ public class ClassicPlotManager extends SquarePlotManager {
new Location(classicPlotWorld.worldname, ex - 1, classicPlotWorld.PLOT_HEIGHT - 1, ez), classicPlotWorld.MAIN_BLOCK);
queue.setCuboid(new Location(classicPlotWorld.worldname, sx + 1, classicPlotWorld.PLOT_HEIGHT, sz),
new Location(classicPlotWorld.worldname, ex - 1, classicPlotWorld.PLOT_HEIGHT, ez), classicPlotWorld.TOP_BLOCK);
queue.enqueue();
return true;
return queue.enqueue();
}
@Override public boolean removeRoadSouthEast(Plot plot) {
@ -416,38 +394,53 @@ public class ClassicPlotManager extends SquarePlotManager {
new Location(classicPlotWorld.worldname, ex, classicPlotWorld.ROAD_HEIGHT - 1, ez), classicPlotWorld.MAIN_BLOCK);
queue.setCuboid(new Location(classicPlotWorld.worldname, sx, classicPlotWorld.ROAD_HEIGHT, sz),
new Location(classicPlotWorld.worldname, ex, classicPlotWorld.ROAD_HEIGHT, ez), classicPlotWorld.TOP_BLOCK);
queue.enqueue();
return true;
return queue.enqueue();
}
/**
* Finishing off plot merging by adding in the walls surrounding the plot (OPTIONAL)(UNFINISHED).
*
* @return false if part of the merge failed, otherwise true if successful.
*/
@Override public boolean finishPlotMerge(List<PlotId> plotIds) {
final BlockBucket block = classicPlotWorld.CLAIMED_WALL_BLOCK;
plotIds.forEach(id -> setWall(id, block));
boolean success = true;
for (PlotId plotId : plotIds) {
success &= setWall(plotId, block);
}
if (Settings.General.MERGE_REPLACE_WALL) {
final BlockBucket wallBlock = classicPlotWorld.WALL_FILLING;
plotIds.forEach(id -> setWallFilling(id, wallBlock));
for (PlotId id : plotIds) {
success &= setWallFilling(id, wallBlock);
}
}
return true;
return success;
}
@Override public boolean finishPlotUnlink(List<PlotId> plotIds) {
final BlockBucket block = classicPlotWorld.CLAIMED_WALL_BLOCK;
plotIds.forEach(id -> setWall(id, block));
return true;
boolean success = true;
for (PlotId id : plotIds) {
success &= setWall(id, block);
}
return success;
}
/**
* Sets all the blocks along all the plot walls to their correct state (claimed or unclaimed).
*
* @return true if the wall blocks were successfully set
*/
@Override public boolean regenerateAllPlotWalls() {
boolean success = true;
for (Plot plot : classicPlotWorld.getPlots()) {
if (plot.hasOwner()) {
setWall(plot.getId(), classicPlotWorld.CLAIMED_WALL_BLOCK);
success &= setWall(plot.getId(), classicPlotWorld.CLAIMED_WALL_BLOCK);
} else {
setWall(plot.getId(), classicPlotWorld.WALL_BLOCK);
success &= setWall(plot.getId(), classicPlotWorld.WALL_BLOCK);
}
}
return true;
return success;
}
@Override public boolean startPlotMerge(List<PlotId> plotIds) {
@ -460,8 +453,7 @@ public class ClassicPlotManager extends SquarePlotManager {
@Override public boolean claimPlot(Plot plot) {
final BlockBucket claim = classicPlotWorld.CLAIMED_WALL_BLOCK;
setWall(plot.getId(), claim);
return true;
return setWall(plot.getId(), claim);
}
@Override public String[] getPlotComponents(PlotId plotId) {
@ -469,7 +461,9 @@ public class ClassicPlotManager extends SquarePlotManager {
}
/**
* Remove sign for a plot.
* Retrieves the location of where a sign should be for a plot.
* @param plot The plot
* @return The location where a sign should be
*/
@Override public Location getSignLoc(Plot plot) {
plot = plot.getBasePlot(false);

View File

@ -46,7 +46,7 @@ import java.util.Locale;
* 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</p>
*/
@Nonnull @Override public ConfigurationNode[] getSettingNodes() {
@NotNull @Override public ConfigurationNode[] getSettingNodes() {
return new ConfigurationNode[] {
new ConfigurationNode("plot.height", this.PLOT_HEIGHT, "Plot height",
Configuration.INTEGER),

View File

@ -12,6 +12,7 @@ import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue;
import com.google.common.collect.Sets;
import com.sk89q.worldedit.world.block.BaseBlock;
import com.sk89q.worldedit.world.block.BlockTypes;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
@ -34,13 +35,13 @@ public class HybridPlotManager extends ClassicPlotManager {
String dir = "schematics" + File.separator + "GEN_ROAD_SCHEMATIC" + File.separator
+ hybridPlotWorld.worldname + File.separator;
try {
File sideroad =
File sideRoad =
MainUtil.getFile(PlotSquared.get().IMP.getDirectory(), dir + "sideroad.schem");
String newDir = "schematics" + File.separator + "GEN_ROAD_SCHEMATIC" + File.separator
+ "__TEMP_DIR__" + File.separator;
if (sideroad.exists()) {
if (sideRoad.exists()) {
files.add(new FileBytes(newDir + "sideroad.schem",
Files.readAllBytes(sideroad.toPath())));
Files.readAllBytes(sideRoad.toPath())));
}
File intersection =
MainUtil.getFile(PlotSquared.get().IMP.getDirectory(), dir + "intersection.schem");
@ -146,8 +147,7 @@ public class HybridPlotManager extends ClassicPlotManager {
if (hybridPlotWorld.ROAD_SCHEMATIC_ENABLED) {
createSchemAbs(queue, pos1, pos2);
}
queue.enqueue();
return true;
return queue.enqueue();
}
/**
@ -221,7 +221,9 @@ public class HybridPlotManager extends ClassicPlotManager {
}
/**
* Remove sign for a plot.
* Retrieves the location of where a sign should be for a plot.
* @param plot The plot
* @return The location where a sign should be
*/
@Override public Location getSignLoc(Plot plot) {
return hybridPlotWorld.getSignLocation(plot);

View File

@ -44,7 +44,7 @@ public class HybridPlotWorld extends ClassicPlotWorld {
super(worldName, id, generator, min, max);
}
@Override
@NotNull @Override
protected PlotManager createManager() {
return new HybridPlotManager(this);
}

View File

@ -140,7 +140,7 @@ public abstract class HybridUtils {
}
HybridUtils.UPDATE = true;
Set<ChunkLoc> regions = new HashSet<>();
regions.add(ChunkManager.manager.getChunkChunk(plot.getCenter()));
regions.add(ChunkManager.getChunkChunk(plot.getCenter()));
return scheduleRoadUpdate(plot.getArea(), regions, extend);
}

View File

@ -122,7 +122,7 @@ public class PlotListener {
}
}
Optional<Long> timeFlag = plot.getFlag(Flags.TIME);
if (timeFlag.isPresent()) {
if (timeFlag.isPresent() && !player.getAttribute("disabletime")) {
try {
long time = timeFlag.get();
player.setTime(time);
@ -138,18 +138,18 @@ public class PlotListener {
final PlotBlock block = PlotBlock.get(id);
final String rawId = block.getRawId().toString();
if (rawId.contains("disc") || PlotBlock.isEverything(block) || block.isAir()) {
Location loc = player.getLocation();
Location lastLoc = player.getMeta("music");
if (lastLoc != null) {
player.playMusic(lastLoc, PlotBlock.get("air"));
Location location = player.getLocation();
Location lastLocation = player.getMeta("music");
if (lastLocation != null) {
player.playMusic(lastLocation, PlotBlock.get("air"));
if (PlotBlock.isEverything(block) || block.isAir()) {
player.deleteMeta("music");
}
}
if (!(PlotBlock.isEverything(block) || block.isAir())) {
try {
player.setMeta("music", loc);
player.playMusic(loc, block);
player.setMeta("music", location);
player.playMusic(location, block);
} catch (Exception ignored) {
}
}

View File

@ -5,8 +5,8 @@ import com.github.intellectualsites.plotsquared.plot.commands.RequiredType;
import com.github.intellectualsites.plotsquared.plot.database.DBFunc;
import com.github.intellectualsites.plotsquared.plot.util.PlotGameMode;
import com.github.intellectualsites.plotsquared.plot.util.PlotWeather;
import org.jetbrains.annotations.NotNull;
import javax.annotation.Nonnull;
import java.util.UUID;
public class ConsolePlayer extends PlotPlayer {
@ -15,15 +15,15 @@ public class ConsolePlayer extends PlotPlayer {
private ConsolePlayer() {
PlotArea area = PlotSquared.get().getFirstPlotArea();
Location loc;
Location location;
if (area != null) {
RegionWrapper region = area.getRegion();
loc = new Location(area.worldname, region.minX + region.maxX / 2, 0,
location = new Location(area.worldname, region.minX + region.maxX / 2, 0,
region.minZ + region.maxZ / 2);
} else {
loc = new Location("world", 0, 0, 0);
location = new Location("world", 0, 0, 0);
}
setMeta("location", loc);
setMeta("location", location);
}
public static ConsolePlayer getConsole() {
@ -34,7 +34,7 @@ public class ConsolePlayer extends PlotPlayer {
return instance;
}
@Override public boolean canTeleport(@Nonnull Location loc) {
@Override public boolean canTeleport(@NotNull Location location) {
return true;
}
@ -42,7 +42,7 @@ public class ConsolePlayer extends PlotPlayer {
public void sendTitle(String title, String subtitle, int fadeIn, int stay, int fadeOut) {
}
@Override public Location getLocation() {
@NotNull @Override public Location getLocation() {
return this.getMeta("location");
}
@ -50,7 +50,7 @@ public class ConsolePlayer extends PlotPlayer {
return getLocation();
}
@Nonnull @Override public UUID getUUID() {
@NotNull @Override public UUID getUUID() {
return DBFunc.EVERYONE;
}
@ -100,14 +100,14 @@ public class ConsolePlayer extends PlotPlayer {
return RequiredType.CONSOLE;
}
@Override public void setWeather(@Nonnull PlotWeather weather) {
@Override public void setWeather(@NotNull PlotWeather weather) {
}
@Nonnull @Override public PlotGameMode getGameMode() {
@NotNull @Override public PlotGameMode getGameMode() {
return PlotGameMode.NOT_SET;
}
@Override public void setGameMode(@Nonnull PlotGameMode gameMode) {
@Override public void setGameMode(@NotNull PlotGameMode gameMode) {
}
@Override public void setTime(long time) {
@ -120,7 +120,7 @@ public class ConsolePlayer extends PlotPlayer {
@Override public void setFlight(boolean fly) {
}
@Override public void playMusic(@Nonnull Location location, @Nonnull PlotBlock id) {
@Override public void playMusic(@NotNull Location location, @NotNull PlotBlock id) {
}
@Override public void kick(String message) {

View File

@ -1,9 +1,9 @@
package com.github.intellectualsites.plotsquared.plot.object;
public enum Direction {
NORTH(0, "north"), EAST(1, "east"), SOUTH(2, "south"), WEST(3, "west"), NORTHEAST(4,
"northeast"), SOUTHEAST(5, "southeast"), SOUTHWEST(6, "southwest"), NORTHWEST(7,
"northwest"),
ALL(-1, "all"), NORTH(0, "north"), EAST(1, "east"), SOUTH(2, "south"), WEST(3,
"west"), NORTHEAST(4, "northeast"), SOUTHEAST(5, "southeast"), SOUTHWEST(6,
"southwest"), NORTHWEST(7, "northwest"),
;
@ -16,6 +16,15 @@ public enum Direction {
this.name = name;
}
public static Direction getFromIndex(int index) {
for (Direction value : values()) {
if (value.getIndex() == index) {
return value;
}
}
return NORTH;
}
public int getIndex() {
return index;
}

View File

@ -21,9 +21,9 @@ import com.google.common.collect.BiMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
import com.sk89q.jnbt.CompoundTag;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.awt.geom.Area;
import java.awt.geom.PathIterator;
import java.awt.geom.Rectangle2D;
@ -46,13 +46,14 @@ import java.util.stream.Collectors;
public class Plot {
private static final int MAX_HEIGHT = 256;
/**
* @deprecated raw access is deprecated
*/
@Deprecated private static HashSet<Plot> connected_cache;
private static HashSet<RegionWrapper> regions_cache;
private final PlotId id;
@NotNull private final PlotId id;
/**
* plot owner
@ -62,10 +63,12 @@ public class Plot {
* @deprecated
*/
@Deprecated public UUID owner;
/**
* Has the plot changed since the last save cycle?
*/
public boolean countsTowardsMax = true;
/**
* Represents whatever the database manager needs it to: <br>
* - A value of -1 usually indicates the plot will not be stored in the DB<br>
@ -74,23 +77,28 @@ public class Plot {
* @deprecated magical
*/
@Deprecated public int temp;
/**
* Plot creation timestamp (not accurate if the plot was created before this was implemented)<br>
* - Milliseconds since the epoch<br>
*/
private long timestamp;
/**
* List of trusted (with plot permissions).
*/
private HashSet<UUID> trusted;
/**
* List of members users (with plot permissions).
*/
private HashSet<UUID> members;
/**
* List of denied players.
*/
private HashSet<UUID> denied;
/**
* External settings class.
* - Please favor the methods over direct access to this class<br>
@ -99,6 +107,7 @@ public class Plot {
private PlotSettings settings;
private PlotArea area;
/**
* Session only plot metadata (session is until the server stops)<br>
* <br>
@ -107,6 +116,7 @@ public class Plot {
* @see FlagManager
*/
private ConcurrentHashMap<String, Object> meta;
/**
* The cached origin plot.
* - The origin plot is used for plot grouping and relational data
@ -117,12 +127,12 @@ public class Plot {
* Constructor for a new plot.
* (Only changes after plot.create() will be properly set in the database)
*
* @param area the PlotArea where the plot is located
* @param id the plot id
* @param area the PlotArea where the plot is located
* @param id the plot id
* @param owner the plot owner
* @see Plot#getPlot(Location) for existing plots
*/
public Plot(PlotArea area, PlotId id, UUID owner) {
public Plot(PlotArea area, @NotNull PlotId id, UUID owner) {
this.area = area;
this.id = id;
this.owner = owner;
@ -133,10 +143,10 @@ public class Plot {
* (Only changes after plot.create() will be properly set in the database)
*
* @param area the PlotArea where the plot is located
* @param id the plot id
* @param id the plot id
* @see Plot#getPlot(Location) for existing plots
*/
public Plot(PlotArea area, PlotId id) {
public Plot(PlotArea area, @NotNull PlotId id) {
this.area = area;
this.id = id;
}
@ -146,13 +156,13 @@ public class Plot {
* The database will ignore any queries regarding temporary plots.
* Please note that some bulk plot management functions may still affect temporary plots (TODO: fix this)
*
* @param area the PlotArea where the plot is located
* @param id the plot id
* @param area the PlotArea where the plot is located
* @param id the plot id
* @param owner the owner of the plot
* @param temp Represents whatever the database manager needs it to
* @param temp Represents whatever the database manager needs it to
* @see Plot#getPlot(Location) for existing plots
*/
public Plot(PlotArea area, PlotId id, UUID owner, int temp) {
public Plot(PlotArea area, @NotNull PlotId id, UUID owner, int temp) {
this.area = area;
this.id = id;
this.owner = owner;
@ -162,14 +172,14 @@ public class Plot {
/**
* Constructor for a saved plots (Used by the database manager when plots are fetched)
*
* @param id the plot id
* @param owner the plot owner
* @param id the plot id
* @param owner the plot owner
* @param trusted the plot trusted players
* @param denied the plot denied players
* @param merged array giving merged plots
* @param denied the plot denied players
* @param merged an array giving merged plots
* @see Plot#getPlot(Location) for existing plots
*/
public Plot(PlotId id, UUID owner, HashSet<UUID> trusted, HashSet<UUID> members,
public Plot(@NotNull PlotId id, UUID owner, HashSet<UUID> trusted, HashSet<UUID> members,
HashSet<UUID> denied, String alias, BlockLoc position, Collection<Flag> flags,
PlotArea area, boolean[] merged, long timestamp, int temp) {
this.id = id;
@ -194,8 +204,8 @@ public class Plot {
/**
* Gets a plot from a string e.g. [area];[id]
*
* @param defaultArea If no area is specified
* @param string plot id/area + id
* @param defaultArea if no area is specified
* @param string plot id/area + id
* @return New or existing plot object
*/
public static Plot fromString(PlotArea defaultArea, String string) {
@ -326,7 +336,7 @@ public class Plot {
* @param uuid the player uuid
* @return if the provided uuid is the owner of the plot
*/
public boolean isOwner(@Nonnull UUID uuid) {
public boolean isOwner(@NotNull UUID uuid) {
if (uuid.equals(this.getOwner())) {
return true;
}
@ -452,7 +462,7 @@ public class Plot {
*
* @return the PlotId for this plot
*/
public PlotId getId() {
@NotNull public PlotId getId() {
return this.id;
}
@ -779,7 +789,7 @@ public class Plot {
/**
* Sets the plot owner (and update the database)
*
* @param owner uuid to set as owner
* @param owner uuid to set as owner
* @param initiator player initiating set owner
* @return boolean
*/
@ -864,8 +874,15 @@ public class Plot {
}
Plot current = queue.poll();
if (Plot.this.area.TERRAIN != 0) {
ChunkManager.manager
.regenerateRegion(current.getBottomAbs(), current.getTopAbs(), false, this);
try {
ChunkManager.manager
.regenerateRegion(current.getBottomAbs(), current.getTopAbs(), false,
this);
} catch (UnsupportedOperationException exception) {
MainUtil.sendMessage(null,
"Please ask md_5 to fix regenerateChunk() because it breaks plugins. We apologize for the inconvenience");
return;
}
return;
}
manager.clearPlot(current, this);
@ -919,8 +936,8 @@ public class Plot {
/**
* Unlink the plot and all connected plots.
*
* @param createSign whether to recreate signs
* @param createRoad whether to recreate road
* @param createSign whether to recreate signs
* @return success/!cancelled
*/
public boolean unlinkPlot(boolean createRoad, boolean createSign) {
@ -982,7 +999,7 @@ public class Plot {
*
* @param name name
*/
public void setSign(@Nonnull String name) {
public void setSign(@NotNull String name) {
if (!isLoaded()) {
return;
}
@ -992,7 +1009,7 @@ public class Plot {
}
PlotManager manager = this.area.getPlotManager();
if (this.area.ALLOW_SIGNS) {
Location loc = manager.getSignLoc(this);
Location location = manager.getSignLoc(this);
String id = this.id.x + ";" + this.id.y;
String[] lines =
new String[] {Captions.OWNER_SIGN_LINE_1.formatted().replaceAll("%id%", id),
@ -1002,7 +1019,9 @@ public class Plot {
"%plr%", name),
Captions.OWNER_SIGN_LINE_4.formatted().replaceAll("%id%", id).replaceAll(
"%plr%", name)};
WorldUtil.IMP.setSign(this.getWorldName(), loc.getX(), loc.getY(), loc.getZ(), lines);
WorldUtil.IMP
.setSign(this.getWorldName(), location.getX(), location.getY(), location.getZ(),
lines);
}
}
@ -1199,18 +1218,18 @@ public class Plot {
Location[] corners = getCorners();
Location top = corners[0];
Location bot = corners[1];
Location loc = new Location(this.getWorldName(), MathMan.average(bot.getX(), top.getX()),
Location location =
new Location(this.getWorldName(), MathMan.average(bot.getX(), top.getX()),
MathMan.average(bot.getY(), top.getY()), MathMan.average(bot.getZ(), top.getZ()));
if (!isLoaded()) {
return loc;
return location;
}
int y =
isLoaded() ? WorldUtil.IMP.getHighestBlock(getWorldName(), loc.getX(), loc.getZ()) : 62;
int y = WorldUtil.IMP.getHighestBlock(getWorldName(), location.getX(), location.getZ());
if (area.ALLOW_SIGNS) {
y = Math.max(y, getManager().getSignLoc(this).getY());
}
loc.setY(1 + y);
return loc;
location.setY(1 + y);
return location;
}
public Location getSide() {
@ -1235,18 +1254,19 @@ public class Plot {
if (home == null || home.x == 0 && home.z == 0) {
return this.getDefaultHome(true);
} else {
Location bot = this.getBottomAbs();
Location loc = new Location(bot.getWorld(), bot.getX() + home.x, bot.getY() + home.y,
bot.getZ() + home.z, home.yaw, home.pitch);
Location bottom = this.getBottomAbs();
Location location =
new Location(bottom.getWorld(), bottom.getX() + home.x, bottom.getY() + home.y,
bottom.getZ() + home.z, home.yaw, home.pitch);
if (!isLoaded()) {
return loc;
return location;
}
if (!WorldUtil.IMP.getBlock(loc).isAir()) {
loc.setY(Math.max(
1 + WorldUtil.IMP.getHighestBlock(this.getWorldName(), loc.getX(), loc.getZ()),
bot.getY()));
if (!WorldUtil.IMP.getBlock(location).isAir()) {
location.setY(Math.max(1 + WorldUtil.IMP
.getHighestBlock(this.getWorldName(), location.getX(), location.getZ()),
bottom.getY()));
}
return loc;
return location;
}
}
@ -1413,9 +1433,9 @@ public class Plot {
if (!this.area.ALLOW_SIGNS) {
return;
}
Location loc = manager.getSignLoc(this);
Location location = manager.getSignLoc(this);
LocalBlockQueue queue = GlobalBlockQueue.IMP.getNewQueue(getWorldName(), false);
queue.setBlock(loc.getX(), loc.getY(), loc.getZ(), PlotBlock.get("air"));
queue.setBlock(location.getX(), location.getY(), location.getZ(), PlotBlock.get("air"));
queue.flush();
}
@ -1510,7 +1530,7 @@ public class Plot {
* @param notify notify
* @return true if plot was created successfully
*/
public boolean create(@Nonnull UUID uuid, final boolean notify) {
public boolean create(@NotNull UUID uuid, final boolean notify) {
this.owner = uuid;
Plot existing = this.area.getOwnedPlotAbs(this.id);
if (existing != null) {
@ -1532,7 +1552,7 @@ public class Plot {
DBFunc.createPlotAndSettings(this, () -> {
PlotArea plotworld = Plot.this.area;
if (notify && plotworld.AUTO_MERGE) {
Plot.this.autoMerge(-1, Integer.MAX_VALUE, uuid, true);
Plot.this.autoMerge(Direction.ALL, Integer.MAX_VALUE, uuid, true);
}
});
return true;
@ -1555,8 +1575,8 @@ public class Plot {
* @return the name of the biome
*/
public String getBiome() {
Location loc = this.getCenter();
return WorldUtil.IMP.getBiome(loc.getWorld(), loc.getX(), loc.getZ());
Location location = this.getCenter();
return WorldUtil.IMP.getBiome(location.getWorld(), location.getX(), location.getZ());
}
//TODO Better documentation needed.
@ -1576,9 +1596,9 @@ public class Plot {
* Returns the bottom location for the plot.
*/
public Location getBottomAbs() {
Location loc = getManager().getPlotBottomLocAbs(this.id);
loc.setWorld(getWorldName());
return loc;
Location location = getManager().getPlotBottomLocAbs(this.id);
location.setWorld(getWorldName());
return location;
}
/**
@ -1627,7 +1647,7 @@ public class Plot {
/**
* Moves the settings for a plot.
*
* @param plot the plot to move
* @param plot the plot to move
* @param whenDone
* @return
*/
@ -2009,17 +2029,11 @@ public class Plot {
* Sets the raw merge data<br>
* - Updates DB<br>
* - Does not modify terrain<br>
* ----------<br>
* 0 = north<br>
* 1 = east<br>
* 2 = south<br>
* 3 = west<br>
* ----------<br>
*
* @param direction
* @param value
*/
public void setMerged(int direction, boolean value) {
public void setMerged(Direction direction, boolean value) {
if (this.getSettings().setMerged(direction, value)) {
if (value) {
Plot other = this.getRelative(direction).getBasePlot(false);
@ -2124,11 +2138,12 @@ public class Plot {
return null;
}
try {
final Location loc = this.getManager().getSignLoc(this);
final Location location = this.getManager().getSignLoc(this);
String[] lines = TaskManager.IMP.sync(new RunnableVal<String[]>() {
@Override public void run(String[] value) {
ChunkManager.manager.loadChunk(loc.getWorld(), loc.getChunkLoc(), false);
this.value = WorldUtil.IMP.getSign(loc);
ChunkManager.manager
.loadChunk(location.getWorld(), location.getChunkLoc(), false);
this.value = WorldUtil.IMP.getSign(location);
}
});
if (lines == null) {
@ -2198,24 +2213,21 @@ public class Plot {
}
/**
* Auto merge a plot in a specific direction<br>
* Auto merge a plot in a specific direction.
*
* @param dir The direction to merge<br>
* -1 = All directions<br>
* 0 = north<br>
* 1 = east<br>
* 2 = south<br>
* 3 = west<br>
* @param max The max number of merges to do
* @param uuid The UUID it is allowed to merge with
* @param removeRoads Whether to remove roads
* @param dir the direction to merge
* @param max the max number of merges to do
* @param uuid the UUID it is allowed to merge with
* @param removeRoads whether to remove roads
* @return true if a merge takes place
*/
public boolean autoMerge(int dir, int max, UUID uuid, boolean removeRoads) {
public boolean autoMerge(Direction dir, int max, UUID uuid, boolean removeRoads) {
//Ignore merging if there is no owner for the plot
if (this.owner == null) {
return false;
}
if (!EventUtil.manager.callMerge(this, dir, max)) {
//Call the merge event
if (!EventUtil.manager.callMerge(this, dir.getIndex(), max)) {
return false;
}
Set<Plot> connected = this.getConnectedPlots();
@ -2231,7 +2243,7 @@ public class Plot {
}
visited.add(current);
Set<Plot> plots;
if ((dir == -1 || dir == 0) && !getMerged(Direction.NORTH)) {
if ((dir == Direction.ALL || dir == Direction.NORTH) && !getMerged(Direction.NORTH)) {
Plot other = current.getRelative(Direction.NORTH);
if (other != null && other.isOwner(uuid) && (
other.getBasePlot(false).equals(current.getBasePlot(false))
@ -2250,7 +2262,8 @@ public class Plot {
}
}
}
if (max >= 0 && (dir == -1 || dir == 1) && !current.getMerged(Direction.EAST)) {
if (max >= 0 && (dir == Direction.ALL || dir == Direction.EAST) && !current
.getMerged(Direction.EAST)) {
Plot other = current.getRelative(Direction.EAST);
if (other != null && other.isOwner(uuid) && (
other.getBasePlot(false).equals(current.getBasePlot(false))
@ -2269,7 +2282,8 @@ public class Plot {
}
}
}
if (max >= 0 && (dir == -1 || dir == 2) && !getMerged(Direction.SOUTH)) {
if (max >= 0 && (dir == Direction.ALL || dir == Direction.SOUTH) && !getMerged(
Direction.SOUTH)) {
Plot other = current.getRelative(Direction.SOUTH);
if (other != null && other.isOwner(uuid) && (
other.getBasePlot(false).equals(current.getBasePlot(false))
@ -2288,7 +2302,8 @@ public class Plot {
}
}
}
if (max >= 0 && (dir == -1 || dir == 3) && !getMerged(Direction.WEST)) {
if (max >= 0 && (dir == Direction.ALL || dir == Direction.WEST) && !getMerged(
Direction.WEST)) {
Plot other = current.getRelative(Direction.WEST);
if (other != null && other.isOwner(uuid) && (
other.getBasePlot(false).equals(current.getBasePlot(false))
@ -2403,20 +2418,16 @@ public class Plot {
* @param direction
* @return
*/
public Plot getRelative(int direction) {
@Deprecated public Plot getRelative(int direction) {
return this.area.getPlotAbs(this.id.getRelative(direction));
}
/**
* Gets the plot in a relative direction<br>
* 0 = north<br>
* 1 = east<br>
* 2 = south<br>
* 3 = west<br>
* Gets the plot in a relative direction
* Note: May be null if the partial plot area does not include the relative location
*
* @param direction
* @return
* @return the plot relative to this one
*/
public Plot getRelative(Direction direction) {
return this.area.getPlotAbs(this.id.getRelative(direction));
@ -2426,7 +2437,7 @@ public class Plot {
* Gets a set of plots connected (and including) this plot<br>
* - This result is cached globally
*
* @return
* @return a Set of Plots connected to this Plot
*/
public Set<Plot> getConnectedPlots() {
if (this.settings == null) {
@ -2451,10 +2462,10 @@ public class Plot {
// invalid merge
PlotSquared.debug("Fixing invalid merge: " + this);
if (tmp.isOwnerAbs(this.owner)) {
tmp.getSettings().setMerged(2, true);
tmp.getSettings().setMerged(Direction.SOUTH, true);
DBFunc.setMerged(tmp, tmp.getSettings().getMerged());
} else {
this.getSettings().setMerged(0, false);
this.getSettings().setMerged(Direction.NORTH, false);
DBFunc.setMerged(this, this.getSettings().getMerged());
}
}
@ -2467,10 +2478,10 @@ public class Plot {
// invalid merge
PlotSquared.debug("Fixing invalid merge: " + this);
if (tmp.isOwnerAbs(this.owner)) {
tmp.getSettings().setMerged(3, true);
tmp.getSettings().setMerged(Direction.WEST, true);
DBFunc.setMerged(tmp, tmp.getSettings().getMerged());
} else {
this.getSettings().setMerged(1, false);
this.getSettings().setMerged(Direction.EAST, false);
DBFunc.setMerged(this, this.getSettings().getMerged());
}
}
@ -2483,10 +2494,10 @@ public class Plot {
// invalid merge
PlotSquared.debug("Fixing invalid merge: " + this);
if (tmp.isOwnerAbs(this.owner)) {
tmp.getSettings().setMerged(0, true);
tmp.getSettings().setMerged(Direction.NORTH, true);
DBFunc.setMerged(tmp, tmp.getSettings().getMerged());
} else {
this.getSettings().setMerged(2, false);
this.getSettings().setMerged(Direction.SOUTH, false);
DBFunc.setMerged(this, this.getSettings().getMerged());
}
}
@ -2499,10 +2510,10 @@ public class Plot {
// invalid merge
PlotSquared.debug("Fixing invalid merge: " + this);
if (tmp.isOwnerAbs(this.owner)) {
tmp.getSettings().setMerged(1, true);
tmp.getSettings().setMerged(Direction.EAST, true);
DBFunc.setMerged(tmp, tmp.getSettings().getMerged());
} else {
this.getSettings().setMerged(3, false);
this.getSettings().setMerged(Direction.WEST, false);
DBFunc.setMerged(this, this.getSettings().getMerged());
}
}
@ -2560,7 +2571,7 @@ public class Plot {
*
* @return
*/
@Nonnull public HashSet<RegionWrapper> getRegions() {
@NotNull public HashSet<RegionWrapper> getRegions() {
if (regions_cache != null && connected_cache != null && connected_cache.contains(this)) {
return regions_cache;
}
@ -2787,6 +2798,11 @@ public class Plot {
return false;
}
/**
* Checks if the owner of this Plot is online.
*
* @return true if the owner of the Plot is online
*/
public boolean isOnline() {
if (this.owner == null) {
return false;
@ -2841,13 +2857,14 @@ public class Plot {
}
/**
* Merges 2 plots Removes the road in-between <br>- Assumes plots are directly next to each other <br> - saves to DB
* Merges two plots. <br>- Assumes plots are directly next to each other <br> - saves to DB
*
* @param lesserPlot
* @param removeRoads
*/
public void mergePlot(Plot lesserPlot, boolean removeRoads) {
Plot greaterPlot = this;
lesserPlot.removeSign();
if (lesserPlot.getId().x == greaterPlot.getId().x) {
if (lesserPlot.getId().y > greaterPlot.getId().y) {
Plot tmp = lesserPlot;
@ -2857,10 +2874,11 @@ public class Plot {
if (!lesserPlot.getMerged(Direction.SOUTH)) {
lesserPlot.clearRatings();
greaterPlot.clearRatings();
lesserPlot.setMerged(2, true);
greaterPlot.setMerged(0, true);
lesserPlot.setMerged(Direction.SOUTH, true);
greaterPlot.setMerged(Direction.NORTH, true);
lesserPlot.mergeData(greaterPlot);
if (removeRoads) {
//lesserPlot.removeSign();
lesserPlot.removeRoadSouth();
Plot diagonal = greaterPlot.getRelative(Direction.EAST);
if (diagonal.getMerged(Direction.NORTHWEST)) {
@ -2881,10 +2899,11 @@ public class Plot {
if (!lesserPlot.getMerged(Direction.EAST)) {
lesserPlot.clearRatings();
greaterPlot.clearRatings();
lesserPlot.setMerged(1, true);
greaterPlot.setMerged(3, true);
lesserPlot.setMerged(Direction.EAST, true);
greaterPlot.setMerged(Direction.WEST, true);
lesserPlot.mergeData(greaterPlot);
if (removeRoads) {
//lesserPlot.removeSign();
Plot diagonal = greaterPlot.getRelative(Direction.SOUTH);
if (diagonal.getMerged(Direction.NORTHWEST)) {
lesserPlot.removeRoadSouthEast();
@ -2897,6 +2916,7 @@ public class Plot {
}
}
}
}
/**
@ -3079,23 +3099,23 @@ public class Plot {
return getFlags().containsKey(flag);
}
@SuppressWarnings("deprecation") public boolean removeComment(PlotComment comment) {
public boolean removeComment(PlotComment comment) {
return getSettings().removeComment(comment);
}
@SuppressWarnings("deprecation") public void removeComments(List<PlotComment> comments) {
public void removeComments(List<PlotComment> comments) {
getSettings().removeComments(comments);
}
@SuppressWarnings("deprecation") public List<PlotComment> getComments(String inbox) {
public List<PlotComment> getComments(String inbox) {
return getSettings().getComments(inbox);
}
@SuppressWarnings("deprecation") public void addComment(PlotComment comment) {
public void addComment(PlotComment comment) {
getSettings().addComment(comment);
}
@SuppressWarnings("deprecation") public void setComments(List<PlotComment> list) {
public void setComments(List<PlotComment> list) {
getSettings().setComments(list);
}

View File

@ -22,9 +22,8 @@ import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.*;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
@ -37,12 +36,12 @@ public abstract class PlotArea {
public final String worldname;
public final String id;
public final PlotManager manager;
@NotNull public final PlotManager manager;
public final int worldhash;
protected final ConcurrentHashMap<PlotId, Plot> plots = new ConcurrentHashMap<>();
private final PlotId min;
private final PlotId max;
private final IndependentPlotGenerator generator;
@NotNull private final IndependentPlotGenerator generator;
private final BlockBucket[][] blockBucketChunk;
public int MAX_PLOT_MEMBERS = 128;
public boolean AUTO_MERGE = false;
@ -76,7 +75,7 @@ public abstract class PlotArea {
private ConcurrentHashMap<String, Object> meta;
private QuadMap<PlotCluster> clusters;
public PlotArea(@Nonnull final String worldName, @Nullable final String id,
public PlotArea(@NotNull final String worldName, @Nullable final String id,
@NotNull IndependentPlotGenerator generator, @Nullable final PlotId min,
@Nullable final PlotId max) {
this.worldname = worldName;
@ -102,7 +101,7 @@ public abstract class PlotArea {
}
}
protected abstract PlotManager createManager();
@NotNull protected abstract PlotManager createManager();
public LocalBlockQueue getQueue(final boolean autoQueue) {
return GlobalBlockQueue.IMP.getNewQueue(worldname, autoQueue);
@ -117,10 +116,7 @@ public abstract class PlotArea {
if (blockBucketChunk != null) {
return blockBucketChunk;
}
if (generator != null) {
return generator.generateBlockBucketChunk(this);
}
return null;
return generator.generateBlockBucketChunk(this);
}
/**
@ -178,7 +174,7 @@ public abstract class PlotArea {
*
* @return the {@link IndependentPlotGenerator}
*/
public IndependentPlotGenerator getGenerator() {
@NotNull public IndependentPlotGenerator getGenerator() {
return this.generator;
}
@ -394,7 +390,7 @@ public abstract class PlotArea {
}
}
@Nonnull @Override public String toString() {
@NotNull @Override public String toString() {
if (this.id == null) {
return this.worldname;
} else {
@ -422,7 +418,7 @@ public abstract class PlotArea {
* @param location the location
* @return the {@code Plot} or null if none exists
*/
@Nullable public Plot getPlotAbs(@Nonnull final Location location) {
@Nullable public Plot getPlotAbs(@NotNull final Location location) {
final PlotId pid =
this.manager.getPlotId(location.getX(), location.getY(), location.getZ());
if (pid == null) {
@ -437,7 +433,7 @@ public abstract class PlotArea {
* @param location the location
* @return base Plot
*/
@Nullable public Plot getPlot(@Nonnull final Location location) {
@Nullable public Plot getPlot(@NotNull final Location location) {
final PlotId pid =
this.manager.getPlotId(location.getX(), location.getY(), location.getZ());
if (pid == null) {
@ -452,7 +448,7 @@ public abstract class PlotArea {
* @param location the location
* @return the base plot or null
*/
@Nullable public Plot getOwnedPlot(@Nonnull final Location location) {
@Nullable public Plot getOwnedPlot(@NotNull final Location location) {
final PlotId pid =
this.manager.getPlotId(location.getX(), location.getY(), location.getZ());
if (pid == null) {
@ -468,7 +464,7 @@ public abstract class PlotArea {
* @param location the location
* @return Plot or null
*/
@Nullable public Plot getOwnedPlotAbs(@Nonnull final Location location) {
@Nullable public Plot getOwnedPlotAbs(@NotNull final Location location) {
final PlotId pid =
this.manager.getPlotId(location.getX(), location.getY(), location.getZ());
if (pid == null) {
@ -483,11 +479,11 @@ public abstract class PlotArea {
* @param id the {@code PlotId}
* @return the plot or null
*/
@Nullable public Plot getOwnedPlotAbs(@Nonnull final PlotId id) {
@Nullable public Plot getOwnedPlotAbs(@NotNull final PlotId id) {
return this.plots.get(id);
}
@Nullable public Plot getOwnedPlot(@Nonnull final PlotId id) {
@Nullable public Plot getOwnedPlot(@NotNull final PlotId id) {
Plot plot = this.plots.get(id);
return plot == null ? null : plot.getBasePlot(false);
}
@ -496,17 +492,17 @@ public abstract class PlotArea {
return this.TYPE != 2 || getRegionAbs().isIn(x, z);
}
public boolean contains(@Nonnull final PlotId id) {
public boolean contains(@NotNull 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(@Nonnull final Location location) {
public boolean contains(@NotNull final Location location) {
return StringMan.isEqual(location.getWorld(), this.worldname) && (getRegionAbs() == null
|| this.region.isIn(location.getX(), location.getZ()));
}
@Nonnull Set<Plot> getPlotsAbs(final UUID uuid) {
@NotNull Set<Plot> getPlotsAbs(final UUID uuid) {
if (uuid == null) {
return Collections.emptySet();
}
@ -519,7 +515,7 @@ public abstract class PlotArea {
return myPlots;
}
@Nonnull public Set<Plot> getPlots(@Nonnull final UUID uuid) {
@NotNull public Set<Plot> getPlots(@NotNull final UUID uuid) {
return getPlots().stream().filter(plot -> plot.isBasePlot() && plot.isOwner(uuid))
.collect(ImmutableSet.toImmutableSet());
}
@ -533,7 +529,7 @@ public abstract class PlotArea {
return this.plots.values();
}
public int getPlotCount(@Nonnull final UUID uuid) {
public int getPlotCount(@NotNull final UUID uuid) {
if (!Settings.Done.COUNTS_TOWARDS_LIMIT) {
return (int) getPlotsAbs(uuid).stream().filter(plot -> !plot.hasFlag(Flags.DONE))
.count();
@ -546,11 +542,11 @@ public abstract class PlotArea {
*
* @deprecated Use {@link #getPlots(UUID)}
*/
@Deprecated public Set<Plot> getPlots(@Nonnull final PlotPlayer player) {
@Deprecated public Set<Plot> getPlots(@NotNull final PlotPlayer player) {
return getPlots(player.getUUID());
}
public boolean hasPlot(@Nonnull final UUID uuid) {
public boolean hasPlot(@NotNull final UUID uuid) {
return this.plots.entrySet().stream().anyMatch(entry -> entry.getValue().isOwner(uuid));
}
@ -559,7 +555,7 @@ public abstract class PlotArea {
return player != null ? getPlotCount(player.getUUID()) : 0;
}
@Nullable public Plot getPlotAbs(@Nonnull final PlotId id) {
@Nullable public Plot getPlotAbs(@NotNull 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
@ -571,7 +567,7 @@ public abstract class PlotArea {
return plot;
}
@Nullable public Plot getPlot(@Nonnull final PlotId id) {
@Nullable public Plot getPlot(@NotNull 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
@ -592,7 +588,7 @@ public abstract class PlotArea {
return this.plots.size();
}
@Nullable public PlotCluster getCluster(@Nonnull final Location location) {
@Nullable public PlotCluster getCluster(@NotNull final Location location) {
final Plot plot = getPlot(location);
if (plot == null) {
return null;
@ -600,8 +596,8 @@ public abstract class PlotArea {
return this.clusters != null ? this.clusters.get(plot.getId().x, plot.getId().y) : null;
}
@Nullable public PlotCluster getFirstIntersectingCluster(@Nonnull final PlotId pos1,
@Nonnull final PlotId pos2) {
@Nullable public PlotCluster getFirstIntersectingCluster(@NotNull final PlotId pos1,
@NotNull final PlotId pos2) {
if (this.clusters == null) {
return null;
}
@ -613,11 +609,11 @@ public abstract class PlotArea {
return null;
}
@Nullable PlotCluster getCluster(@Nonnull final PlotId id) {
@Nullable PlotCluster getCluster(@NotNull final PlotId id) {
return this.clusters != null ? this.clusters.get(id.x, id.y) : null;
}
public PlotManager getPlotManager() {
@NotNull public PlotManager getPlotManager() {
return this.manager;
}
@ -628,14 +624,14 @@ public abstract class PlotArea {
*
* @see FlagManager
*/
public void setMeta(@Nonnull final String key, @Nullable final Object value) {
public void setMeta(@NotNull final String key, @Nullable final Object value) {
if (this.meta == null) {
this.meta = new ConcurrentHashMap<>();
}
this.meta.put(key, value);
}
@Nullable public <T> T getMeta(@Nullable final String key, @Nullable final T def) {
@NotNull public <T> T getMeta(@Nullable final String key, @NotNull final T def) {
final Object v = getMeta(key);
return v == null ? def : (T) v;
}
@ -645,14 +641,14 @@ public abstract class PlotArea {
* <br>
* For persistent metadata use the flag system
*/
@Nullable public Object getMeta(@Nonnull final String key) {
@Nullable public Object getMeta(@NotNull final String key) {
if (this.meta != null) {
return this.meta.get(key);
}
return null;
}
@SuppressWarnings("unused") @Nonnull public Set<Plot> getBasePlots() {
@SuppressWarnings("unused") @NotNull public Set<Plot> getBasePlots() {
final HashSet<Plot> myPlots = new HashSet<>(getPlots());
myPlots.removeIf(plot -> !plot.isBasePlot());
return myPlots;
@ -685,15 +681,15 @@ public abstract class PlotArea {
* @deprecated Use {@link #getPlotsMap()}
*/
//todo eventually remove
@Deprecated @Nonnull public Map<PlotId, Plot> getPlotsRaw() {
@Deprecated @NotNull public Map<PlotId, Plot> getPlotsRaw() {
return ImmutableMap.copyOf(plots);
}
@Nonnull public Set<Entry<PlotId, Plot>> getPlotEntries() {
@NotNull public Set<Entry<PlotId, Plot>> getPlotEntries() {
return this.plots.entrySet();
}
public boolean addPlot(@Nonnull final Plot plot) {
public boolean addPlot(@NotNull final Plot plot) {
for (PlotPlayer pp : plot.getPlayersInPlot()) {
pp.setMeta(PlotPlayer.META_LAST_PLOT, plot);
}
@ -731,7 +727,7 @@ public abstract class PlotArea {
return null;
}
public boolean addPlotIfAbsent(@Nonnull final Plot plot) {
public boolean addPlotIfAbsent(@NotNull final Plot plot) {
if (this.plots.putIfAbsent(plot.getId(), plot) == null) {
for (PlotPlayer pp : plot.getPlayersInPlot()) {
pp.setMeta(PlotPlayer.META_LAST_PLOT, plot);
@ -741,7 +737,7 @@ public abstract class PlotArea {
return false;
}
public boolean addPlotAbs(@Nonnull final Plot plot) {
public boolean addPlotAbs(@NotNull final Plot plot) {
return this.plots.put(plot.getId(), plot) == null;
}
@ -786,14 +782,14 @@ public abstract class PlotArea {
*
* @param key Meta data key
*/
public void deleteMeta(@Nonnull final String key) {
public void deleteMeta(@NotNull final String key) {
if (this.meta != null) {
this.meta.remove(key);
}
}
public boolean canClaim(@Nullable final PlotPlayer player, @Nonnull final PlotId pos1,
@Nonnull final PlotId pos2) {
public boolean canClaim(@Nullable final PlotPlayer player, @NotNull final PlotId pos1,
@NotNull final PlotId pos2) {
if (pos1.x == pos2.x && pos1.y == pos2.y) {
if (getOwnedPlot(pos1) != null) {
return false;
@ -819,11 +815,11 @@ public abstract class PlotArea {
return true;
}
public boolean removePlot(@Nonnull final PlotId id) {
public boolean removePlot(@NotNull final PlotId id) {
return this.plots.remove(id) != null;
}
public boolean mergePlots(@Nonnull final List<PlotId> plotIds, final boolean removeRoads) {
public boolean mergePlots(@NotNull final List<PlotId> plotIds, final boolean removeRoads) {
if (plotIds.size() < 2) {
return false;
}
@ -901,7 +897,7 @@ public abstract class PlotArea {
* @param pos2 second corner of selection
* @return the plots in the selection which are owned
*/
public Set<Plot> getPlotSelectionOwned(@Nonnull final PlotId pos1, @Nonnull final PlotId pos2) {
public Set<Plot> getPlotSelectionOwned(@NotNull final PlotId pos1, @NotNull final PlotId pos2) {
final int size = (1 + pos2.x - pos1.x) * (1 + pos2.y - pos1.y);
final Set<Plot> result = new HashSet<>();
if (size < 16 || size < getPlotCount()) {

View File

@ -132,8 +132,8 @@ public class PlotCluster {
toReturn = center.getHome();
if (toReturn.getY() == 0) {
PlotManager manager = this.area.getPlotManager();
Location loc = manager.getSignLoc(center);
toReturn.setY(loc.getY());
Location location = manager.getSignLoc(center);
toReturn.setY(location.getY());
}
} else {
toReturn = getClusterBottom().add(home.x, home.y, home.z);

View File

@ -1,7 +1,7 @@
package com.github.intellectualsites.plotsquared.plot.object;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class PlotId {
/**
@ -32,14 +32,14 @@ public class PlotId {
* @return the PlotId representation of the arguement
* @throws IllegalArgumentException if the string does not contain a valid PlotId
*/
@Nonnull public static PlotId fromString(@Nonnull String string) {
@NotNull public static PlotId fromString(@NotNull String string) {
PlotId plot = fromStringOrNull(string);
if (plot == null)
throw new IllegalArgumentException("Cannot create PlotID. String invalid.");
return plot;
}
@Nullable public static PlotId fromStringOrNull(@Nonnull String string) {
@Nullable public static PlotId fromStringOrNull(@NotNull String string) {
String[] parts = string.split("[;|,]");
if (parts.length < 2) {
return null;

View File

@ -39,6 +39,12 @@ public abstract class PlotManager {
public abstract boolean unClaimPlot(Plot plot, Runnable whenDone);
/**
* Retrieves the location of where a sign should be for a plot.
*
* @param plot The plot
* @return The location where a sign should be
*/
public abstract Location getSignLoc(Plot plot);
/*
@ -47,8 +53,7 @@ public abstract class PlotManager {
*/
public abstract String[] getPlotComponents(PlotId plotId);
public abstract boolean setComponent(PlotId plotId, String component,
BlockBucket blocks);
public abstract boolean setComponent(PlotId plotId, String component, BlockBucket blocks);
/*
* PLOT MERGING (return false if your generator does not support plot

View File

@ -14,8 +14,8 @@ import com.github.intellectualsites.plotsquared.plot.util.*;
import com.github.intellectualsites.plotsquared.plot.util.expiry.ExpireManager;
import com.google.common.base.Preconditions;
import lombok.NonNull;
import org.jetbrains.annotations.NotNull;
import javax.annotation.Nonnull;
import java.nio.ByteBuffer;
import java.util.HashMap;
import java.util.HashSet;
@ -306,7 +306,7 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer {
*
* @return The location
*/
public Location getLocation() {
@NotNull public Location getLocation() {
Location location = getMeta("location");
if (location != null) {
return location;
@ -335,14 +335,14 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer {
*
* @return UUID
*/
@Override @Nonnull public abstract UUID getUUID();
@Override @NotNull public abstract UUID getUUID();
public boolean canTeleport(@Nonnull final Location loc) {
Preconditions.checkNotNull(loc, "Specified location cannot be null");
public boolean canTeleport(@NotNull final Location location) {
Preconditions.checkNotNull(location, "Specified location cannot be null");
final Location current = getLocationFull();
teleport(loc);
teleport(location);
boolean result = true;
if (!getLocation().equals(loc)) {
if (!getLocation().equals(location)) {
result = false;
}
teleport(current);
@ -421,21 +421,21 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer {
*
* @param weather the weather visible to the player
*/
public abstract void setWeather(@Nonnull PlotWeather weather);
public abstract void setWeather(@NotNull PlotWeather weather);
/**
* Get this player's gamemode.
*
* @return the gamemode of the player.
*/
@Nonnull public abstract PlotGameMode getGameMode();
@NotNull public abstract PlotGameMode getGameMode();
/**
* Set this player's gameMode.
*
* @param gameMode the gamemode to set
*/
public abstract void setGameMode(@Nonnull PlotGameMode gameMode);
public abstract void setGameMode(@NotNull PlotGameMode gameMode);
/**
* Set this player's local time (ticks).
@ -464,7 +464,7 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer {
* @param location where to play the music
* @param id the record item id
*/
public abstract void playMusic(@Nonnull Location location, @Nonnull PlotBlock id);
public abstract void playMusic(@NotNull Location location, @NotNull PlotBlock id);
/**
* Check if this player is banned.
@ -493,10 +493,10 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer {
ByteBuffer buffer = ByteBuffer.allocate(13);
buffer.putShort((short) x);
buffer.putShort((short) z);
Location loc = getLocation();
buffer.putInt(loc.getX());
buffer.put((byte) loc.getY());
buffer.putInt(loc.getZ());
Location location = getLocation();
buffer.putInt(location.getX());
buffer.put((byte) location.getY());
buffer.putInt(location.getZ());
setPersistentMeta("quitLoc", buffer.array());
} else if (hasPersistentMeta("quitLoc")) {
removePersistentMeta("quitLoc");
@ -596,11 +596,11 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer {
return;
}
final Location loc = new Location(plot.getWorldName(), x, y, z);
final Location location = new Location(plot.getWorldName(), x, y, z);
if (plot.isLoaded()) {
TaskManager.runTask(() -> {
if (getMeta("teleportOnLogin", true)) {
teleport(loc);
teleport(location);
sendMessage(
Captions.TELEPORTED_TO_PLOT.f() + " (quitLoc) (" + plotX
+ "," + plotZ + ")");
@ -612,7 +612,7 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer {
TaskManager.runTask(() -> {
if (getMeta("teleportOnLogin", true)) {
if (plot.isLoaded()) {
teleport(loc);
teleport(location);
sendMessage(Captions.TELEPORTED_TO_PLOT.f()
+ " (quitLoc-unloaded) (" + plotX + "," + plotZ
+ ")");

View File

@ -5,7 +5,12 @@ import com.github.intellectualsites.plotsquared.plot.flag.Flags;
import com.github.intellectualsites.plotsquared.plot.object.comment.PlotComment;
import com.google.common.collect.ImmutableList;
import java.util.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
/**
* Generic settings class.
@ -80,6 +85,17 @@ public class PlotSettings {
return false;
}
public boolean setMerged(Direction direction, boolean merged) {
if (Direction.ALL == direction) {
throw new IllegalArgumentException("You cannot use Direction.ALL in this method!");
}
if (this.merged[direction.getIndex()] != merged) {
this.merged[direction.getIndex()] = merged;
return true;
}
return false;
}
public BlockLoc getPosition() {
if (this.position == null) {
return new BlockLoc(0, 0, 0);

View File

@ -30,8 +30,8 @@ public class Schematic {
public boolean setBlock(BlockVector3 position, BaseBlock block) throws WorldEditException {
if (clipboard.getRegion().contains(position)) {
BlockVector3 v = position.subtract(clipboard.getRegion().getMinimumPoint());
clipboard.setBlock(v, block);
BlockVector3 vector3 = position.subtract(clipboard.getRegion().getMinimumPoint());
clipboard.setBlock(vector3, block);
return true;
} else {
return false;
@ -39,9 +39,9 @@ public class Schematic {
}
public void save(File file) throws IOException {
try (SpongeSchematicWriter ssw = new SpongeSchematicWriter(
try (SpongeSchematicWriter schematicWriter = new SpongeSchematicWriter(
new NBTOutputStream(new FileOutputStream(file)))) {
ssw.write(clipboard);
schematicWriter.write(clipboard);
}
}
}

View File

@ -4,8 +4,8 @@ import com.github.intellectualsites.plotsquared.plot.config.Captions;
import com.github.intellectualsites.plotsquared.plot.flag.Flag;
import com.github.intellectualsites.plotsquared.plot.object.*;
import com.google.common.collect.Sets;
import org.jetbrains.annotations.NotNull;
import javax.annotation.Nonnull;
import java.util.Collection;
import java.util.HashSet;
import java.util.UUID;
@ -60,7 +60,7 @@ public class SinglePlot extends Plot {
return super.isLoaded();
}
@Nonnull @Override public HashSet<RegionWrapper> getRegions() {
@NotNull @Override public HashSet<RegionWrapper> getRegions() {
return regions;
}

View File

@ -9,9 +9,9 @@ import com.github.intellectualsites.plotsquared.plot.object.*;
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 org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
@ -26,7 +26,7 @@ public class SinglePlotArea extends GridPlotWorld {
this.DEFAULT_HOME = new PlotLoc(Integer.MAX_VALUE, Integer.MAX_VALUE);
}
@Override
@NotNull @Override
protected PlotManager createManager() {
return new SinglePlotManager(this);
}
@ -76,8 +76,8 @@ public class SinglePlotArea extends GridPlotWorld {
new File(dataDest, file.getName()).toPath());
}
}
} catch (IOException ignore) {
ignore.printStackTrace();
} catch (IOException exception) {
exception.printStackTrace();
}
}
}
@ -113,38 +113,38 @@ public class SinglePlotArea extends GridPlotWorld {
new ConfigurationNode("void", this.VOID, "Void world", Configuration.BOOLEAN)};
}
@Nullable @Override public Plot getOwnedPlot(@Nonnull final Location location) {
@Nullable @Override public Plot getOwnedPlot(@NotNull final Location location) {
PlotId pid = PlotId.fromStringOrNull(location.getWorld());
Plot plot = pid == null ? null : this.plots.get(pid);
return plot == null ? null : plot.getBasePlot(false);
}
@Nullable @Override public Plot getOwnedPlotAbs(@Nonnull Location location) {
@Nullable @Override public Plot getOwnedPlotAbs(@NotNull Location location) {
PlotId pid = PlotId.fromStringOrNull(location.getWorld());
return pid == null ? null : plots.get(pid);
}
@Nullable @Override public Plot getPlot(@Nonnull final Location location) {
@Nullable @Override public Plot getPlot(@NotNull final Location location) {
PlotId pid = PlotId.fromStringOrNull(location.getWorld());
return pid == null ? null : getPlot(pid);
}
@Nullable @Override public Plot getPlotAbs(@Nonnull final Location location) {
@Nullable @Override public Plot getPlotAbs(@NotNull final Location location) {
final PlotId pid = PlotId.fromStringOrNull(location.getWorld());
return pid == null ? null : getPlotAbs(pid);
}
public boolean addPlot(@Nonnull Plot plot) {
public boolean addPlot(@NotNull Plot plot) {
plot = adapt(plot);
return super.addPlot(plot);
}
@Override public boolean addPlotAbs(@Nonnull Plot plot) {
@Override public boolean addPlotAbs(@NotNull Plot plot) {
plot = adapt(plot);
return super.addPlotAbs(plot);
}
@Override public boolean addPlotIfAbsent(@Nonnull Plot plot) {
@Override public boolean addPlotIfAbsent(@NotNull Plot plot) {
plot = adapt(plot);
return super.addPlotIfAbsent(plot);
}
@ -160,7 +160,7 @@ public class SinglePlotArea extends GridPlotWorld {
return p;
}
@Nullable public Plot getPlotAbs(@Nonnull final PlotId id) {
@Nullable public Plot getPlotAbs(@NotNull final PlotId id) {
Plot plot = getOwnedPlotAbs(id);
if (plot == null) {
return new SinglePlot(this, id);
@ -168,7 +168,7 @@ public class SinglePlotArea extends GridPlotWorld {
return plot;
}
@Nullable public Plot getPlot(@Nonnull PlotId id) {
@Nullable public Plot getPlot(@NotNull PlotId id) {
// TODO
Plot plot = getOwnedPlotAbs(id);
if (plot == null) {

View File

@ -10,7 +10,7 @@ import com.github.intellectualsites.plotsquared.plot.object.*;
import com.github.intellectualsites.plotsquared.plot.object.worlds.SinglePlotArea;
import com.github.intellectualsites.plotsquared.plot.util.expiry.ExpireManager;
import javax.annotation.Nullable;
import org.jetbrains.annotations.Nullable;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;

View File

@ -13,8 +13,8 @@ import com.github.intellectualsites.plotsquared.plot.flag.Flags;
import com.github.intellectualsites.plotsquared.plot.object.*;
import com.github.intellectualsites.plotsquared.plot.object.stream.AbstractDelegateOutputStream;
import com.github.intellectualsites.plotsquared.plot.util.expiry.ExpireManager;
import org.jetbrains.annotations.NotNull;
import javax.annotation.Nonnull;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
@ -329,7 +329,7 @@ public class MainUtil {
* @param owner
* @return The player's name, None, Everyone or Unknown
*/
@Nonnull public static String getName(UUID owner) {
@NotNull public static String getName(UUID owner) {
if (owner == null) {
return Captions.NONE.getTranslated();
}
@ -358,7 +358,7 @@ public class MainUtil {
* @return
* @see Plot#getCorners()
*/
@Nonnull public static Location[] getCorners(String world, Collection<RegionWrapper> regions) {
@NotNull public static Location[] getCorners(String world, Collection<RegionWrapper> regions) {
Location min = null;
Location max = null;
for (RegionWrapper region : regions) {
@ -560,11 +560,11 @@ public class MainUtil {
* Send a message to the player.
*
* @param player Player to receive message
* @param msg Message to send
* @param message Message to send
* @return true Can be used in things such as commands (return PlayerFunctions.sendMessage(...))
*/
public static boolean sendMessage(PlotPlayer player, String msg) {
return sendMessage(player, msg, true);
public static boolean sendMessage(PlotPlayer player, String message) {
return sendMessage(player, message, true);
}
/**
@ -585,7 +585,7 @@ public class MainUtil {
* @param prefix If the message should be prefixed with the configured prefix
* @return
*/
public static boolean sendMessage(CommandCaller player, String msg, boolean prefix) {
public static boolean sendMessage(CommandCaller player, @NotNull String msg, boolean prefix) {
if (!msg.isEmpty()) {
if (player == null) {
String message = (prefix ? Captions.PREFIX.getTranslated() : "") + msg;

View File

@ -327,9 +327,9 @@ public abstract class SchematicHandler {
public Schematic getSchematic(@NotNull URL url) {
try {
ReadableByteChannel rbc = Channels.newChannel(url.openStream());
InputStream is = Channels.newInputStream(rbc);
return getSchematic(is);
ReadableByteChannel readableByteChannel = Channels.newChannel(url.openStream());
InputStream inputStream = Channels.newInputStream(readableByteChannel);
return getSchematic(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
@ -338,15 +338,15 @@ public abstract class SchematicHandler {
public Schematic getSchematic(@NotNull InputStream is) {
try {
SpongeSchematicReader ssr =
SpongeSchematicReader schematicReader =
new SpongeSchematicReader(new NBTInputStream(new GZIPInputStream(is)));
BlockArrayClipboard clip = (BlockArrayClipboard) ssr.read();
BlockArrayClipboard clip = (BlockArrayClipboard) schematicReader.read();
return new Schematic(clip);
} catch (IOException ignored) {
try {
MCEditSchematicReader msr =
MCEditSchematicReader schematicReader =
new MCEditSchematicReader(new NBTInputStream(new GZIPInputStream(is)));
BlockArrayClipboard clip = (BlockArrayClipboard) msr.read();
BlockArrayClipboard clip = (BlockArrayClipboard) schematicReader.read();
return new Schematic(clip);
} catch (IOException e) {
e.printStackTrace();

View File

@ -11,7 +11,7 @@ import com.github.intellectualsites.plotsquared.plot.uuid.UUIDWrapper;
import com.google.common.collect.BiMap;
import org.jetbrains.annotations.NotNull;
import javax.annotation.Nullable;
import org.jetbrains.annotations.Nullable;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;

View File

@ -15,7 +15,7 @@ import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import org.jetbrains.annotations.NotNull;
import javax.annotation.Nullable;
import org.jetbrains.annotations.Nullable;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;

View File

@ -102,8 +102,7 @@ public abstract class BasicLocalBlockQueue extends LocalBlockQueue {
lastWrappedChunk.setBlock(x & 15, y, z & 15, id);
LocalChunk previous = this.blockChunks.put(pair, lastWrappedChunk);
if (previous == null) {
chunks.add(lastWrappedChunk);
return true;
return chunks.add(lastWrappedChunk);
}
this.blockChunks.put(pair, previous);
lastWrappedChunk = previous;

View File

@ -102,9 +102,10 @@ public class DelegateLocalBlockQueue extends LocalBlockQueue {
}
}
@Override public void enqueue() {
@Override public boolean enqueue() {
if (parent != null) {
parent.enqueue();
return parent.enqueue();
}
return false;
}
}

View File

@ -45,10 +45,10 @@ public class GlobalBlockQueue {
public GlobalBlockQueue(QueueProvider provider, int threads) {
this.provider = provider;
activeQueues = new ConcurrentLinkedDeque<>();
inactiveQueues = new ConcurrentLinkedDeque<>();
runnables = new ConcurrentLinkedDeque<>();
running = new AtomicBoolean();
this.activeQueues = new ConcurrentLinkedDeque<>();
this.inactiveQueues = new ConcurrentLinkedDeque<>();
this.runnables = new ConcurrentLinkedDeque<>();
this.running = new AtomicBoolean();
this.PARALLEL_THREADS = threads;
}
@ -151,12 +151,20 @@ public class GlobalBlockQueue {
return false;
}
public void enqueue(LocalBlockQueue queue) {
inactiveQueues.remove(queue);
/**
* TODO Documentation needed.
*
* @param queue todo
* @return true if added to queue, false otherwise
*/
public boolean enqueue(LocalBlockQueue queue) {
boolean success = false;
success = inactiveQueues.remove(queue);
if (queue.size() > 0 && !activeQueues.contains(queue)) {
queue.optimize();
activeQueues.add(queue);
success = activeQueues.add(queue);
}
return success;
}
public void dequeue(LocalBlockQueue queue) {

View File

@ -16,8 +16,12 @@ import java.util.Map;
public abstract class LocalBlockQueue {
public LocalBlockQueue(String world) {
// Implement this elsewhere
/**
* Needed for compatibility with FAWE.
*
* @param world unused
*/
@Deprecated public LocalBlockQueue(String world) {
}
public ScopedLocalBlockQueue getForChunk(int x, int z) {
@ -92,8 +96,8 @@ public abstract class LocalBlockQueue {
}
}
public void enqueue() {
GlobalBlockQueue.IMP.enqueue(this);
public boolean enqueue() {
return GlobalBlockQueue.IMP.enqueue(this);
}
public void setCuboid(Location pos1, Location pos2, PlotBlock block) {

View File

@ -80,22 +80,22 @@ public class ScopedLocalBlockQueue extends DelegateLocalBlockQueue {
int bx = minX;
int bz = minZ;
PlotArea area = PlotSquared.get().getPlotArea(getWorld(), null);
Location loc = new Location(getWorld(), bx, 0, bz);
Location location = new Location(getWorld(), bx, 0, bz);
if (area != null) {
PlotManager manager = area.getPlotManager();
for (int x = 0; x < 16; x++) {
loc.setX(bx + x);
location.setX(bx + x);
for (int z = 0; z < 16; z++) {
loc.setZ(bz + z);
task.run(area.getPlotAbs(loc), x, z);
location.setZ(bz + z);
task.run(area.getPlotAbs(location), x, z);
}
}
} else {
for (int x = 0; x < 16; x++) {
loc.setX(bx + x);
location.setX(bx + x);
for (int z = 0; z < 16; z++) {
loc.setZ(bz + z);
task.run(loc.getPlotAbs(), x, z);
location.setZ(bz + z);
task.run(location.getPlotAbs(), x, z);
}
}
}

View File

@ -1,11 +1,19 @@
package com.github.intellectualsites.plotsquared.plot.database;
import com.github.intellectualsites.plotsquared.plot.flag.Flag;
import com.github.intellectualsites.plotsquared.plot.object.*;
import com.github.intellectualsites.plotsquared.plot.object.Plot;
import com.github.intellectualsites.plotsquared.plot.object.PlotArea;
import com.github.intellectualsites.plotsquared.plot.object.PlotCluster;
import com.github.intellectualsites.plotsquared.plot.object.PlotId;
import com.github.intellectualsites.plotsquared.plot.object.RunnableVal;
import com.github.intellectualsites.plotsquared.plot.object.comment.PlotComment;
import org.jetbrains.annotations.NotNull;
import javax.annotation.Nonnull;
import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
public class AbstractDBTest implements AbstractDB {
@ -149,7 +157,7 @@ public class AbstractDBTest implements AbstractDB {
@Override public void setComment(Plot plot, PlotComment comment) {
}
@Override public void getComments(@Nonnull Plot plot, String inbox,
@Override public void getComments(@NotNull Plot plot, String inbox,
RunnableVal<List<PlotComment>> whenDone) {
}

View File

@ -119,6 +119,7 @@ permissions:
plots.toggle: true
plots.toggle.titles: true
plots.toggle.chat: true
plots.toggle.time: true
plots.set.biome: true
plots.set.home: true
plots.set.alias: true

2
gradlew vendored
View File

@ -7,7 +7,7 @@
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,

2
gradlew.bat vendored
View File

@ -5,7 +5,7 @@
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem http://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,