mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-24 06:06:45 +01:00
Fix merging
This commit is contained in:
parent
fe730574c9
commit
04f789d404
6
.github/ISSUE_TEMPLATE.md
vendored
6
.github/ISSUE_TEMPLATE.md
vendored
@ -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. -->
|
<!--- In order to create a valid issue report you have to follow this template. -->
|
||||||
<!--- Incomplete reports might be marked as invalid. -->
|
<!--- Incomplete reports might be marked as invalid. -->
|
||||||
<!-- Feature requests and enhancements may be suggested at https://github.com/IntellectualSites/PlotSquaredSuggestions. -->
|
<!-- 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] Spigot/Paper Version Number:**
|
||||||
|
|
||||||
**[REQUIRED] Minecraft 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:**
|
**[REQUIRED] Description of the problem:**
|
||||||
|
|
||||||
**Any relevant console output or screenshots:**
|
**Any relevant console output or screenshots:**
|
||||||
|
@ -54,8 +54,8 @@ import org.bukkit.metadata.MetadataValue;
|
|||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -132,8 +132,8 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
|
|||||||
// Check for updates
|
// Check for updates
|
||||||
if (PlotSquared.get().getUpdateUtility() != null) {
|
if (PlotSquared.get().getUpdateUtility() != null) {
|
||||||
final UpdateUtility updateUtility = PlotSquared.get().getUpdateUtility();
|
final UpdateUtility updateUtility = PlotSquared.get().getUpdateUtility();
|
||||||
updateUtility
|
updateUtility.checkForUpdate(PlotSquared.get().getVersion().versionString(),
|
||||||
.checkForUpdate(this.getPluginVersionString(), ((updateDescription, throwable) -> {
|
((updateDescription, throwable) -> {
|
||||||
Bukkit.getScheduler().runTask(BukkitMain.this, () -> {
|
Bukkit.getScheduler().runTask(BukkitMain.this, () -> {
|
||||||
getLogger().info("-------- PlotSquared Update Check --------");
|
getLogger().info("-------- PlotSquared Update Check --------");
|
||||||
if (throwable != null) {
|
if (throwable != null) {
|
||||||
@ -289,10 +289,12 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
|
|||||||
@Override public void registerCommands() {
|
@Override public void registerCommands() {
|
||||||
final BukkitCommand bukkitCommand = new BukkitCommand();
|
final BukkitCommand bukkitCommand = new BukkitCommand();
|
||||||
final PluginCommand plotCommand = getCommand("plots");
|
final PluginCommand plotCommand = getCommand("plots");
|
||||||
|
if (plotCommand != null) {
|
||||||
plotCommand.setExecutor(bukkitCommand);
|
plotCommand.setExecutor(bukkitCommand);
|
||||||
plotCommand.setAliases(Arrays.asList("p", "ps", "plotme", "plot"));
|
plotCommand.setAliases(Arrays.asList("p", "ps", "plotme", "plot"));
|
||||||
plotCommand.setTabCompleter(bukkitCommand);
|
plotCommand.setTabCompleter(bukkitCommand);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override public File getDirectory() {
|
@Override public File getDirectory() {
|
||||||
return getDataFolder();
|
return getDataFolder();
|
||||||
@ -598,14 +600,15 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override public QueueProvider initBlockQueue() {
|
@Override public QueueProvider initBlockQueue() {
|
||||||
try {
|
//TODO Figure out why this code is still here yet isn't being called anywhere.
|
||||||
new SendChunk();
|
// try {
|
||||||
MainUtil.canSendChunk = true;
|
// new SendChunk();
|
||||||
} catch (ClassNotFoundException | NoSuchFieldException | NoSuchMethodException e) {
|
// MainUtil.canSendChunk = true;
|
||||||
PlotSquared.debug(
|
// } catch (ClassNotFoundException | NoSuchFieldException | NoSuchMethodException e) {
|
||||||
SendChunk.class + " does not support " + StringMan.getString(getServerVersion()));
|
// PlotSquared.debug(
|
||||||
MainUtil.canSendChunk = false;
|
// SendChunk.class + " does not support " + StringMan.getString(getServerVersion()));
|
||||||
}
|
// MainUtil.canSendChunk = false;
|
||||||
|
// }
|
||||||
return QueueProvider.of(BukkitLocalQueue.class, BukkitLocalQueue.class);
|
return QueueProvider.of(BukkitLocalQueue.class, BukkitLocalQueue.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -800,4 +803,5 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
|
|||||||
@Override public LegacyMappings getLegacyMappings() {
|
@Override public LegacyMappings getLegacyMappings() {
|
||||||
return this.legacyMappings;
|
return this.legacyMappings;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,8 +7,8 @@ import lombok.Setter;
|
|||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.event.Cancellable;
|
import org.bukkit.event.Cancellable;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -30,8 +30,8 @@ public final class PlotAutoMergeEvent extends PlotEvent implements Cancellable {
|
|||||||
* @param plot Plot that was merged
|
* @param plot Plot that was merged
|
||||||
* @param plots A list of plots involved in the event
|
* @param plots A list of plots involved in the event
|
||||||
*/
|
*/
|
||||||
public PlotAutoMergeEvent(@Nonnull final World world, @Nonnull final Plot plot,
|
public PlotAutoMergeEvent(@NotNull final World world, @NotNull final Plot plot,
|
||||||
@Nonnull final List<PlotId> plots) {
|
@NotNull final List<PlotId> plots) {
|
||||||
super(plot);
|
super(plot);
|
||||||
this.world = world;
|
this.world = world;
|
||||||
this.plots = plots;
|
this.plots = plots;
|
||||||
|
@ -6,8 +6,7 @@ import lombok.Setter;
|
|||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.event.Cancellable;
|
import org.bukkit.event.Cancellable;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Event called when several plots are merged
|
* 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 dir The direction of the merge
|
||||||
* @param max Max merge size
|
* @param max Max merge size
|
||||||
*/
|
*/
|
||||||
public PlotMergeEvent(@Nonnull final World world, @Nonnull final Plot plot,
|
public PlotMergeEvent(@NotNull final World world, @NotNull final Plot plot,
|
||||||
@Nonnull final int dir, @Nonnull final int max) {
|
@NotNull final int dir, @NotNull final int max) {
|
||||||
super(plot);
|
super(plot);
|
||||||
this.world = world;
|
this.world = world;
|
||||||
this.dir = dir;
|
this.dir = dir;
|
||||||
|
@ -8,8 +8,8 @@ import org.bukkit.World;
|
|||||||
import org.bukkit.event.Cancellable;
|
import org.bukkit.event.Cancellable;
|
||||||
import org.bukkit.event.Event;
|
import org.bukkit.event.Event;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
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 world World in which the event occurred
|
||||||
* @param plots Plots that are involved in the event
|
* @param plots Plots that are involved in the event
|
||||||
*/
|
*/
|
||||||
public PlotUnlinkEvent(@Nonnull final World world, @Nonnull final PlotArea area,
|
public PlotUnlinkEvent(@NotNull final World world, @NotNull final PlotArea area,
|
||||||
@Nonnull final List<PlotId> plots) {
|
@NotNull final List<PlotId> plots) {
|
||||||
this.plots = plots;
|
this.plots = plots;
|
||||||
this.world = world;
|
this.world = world;
|
||||||
this.area = area;
|
this.area = area;
|
||||||
|
@ -85,10 +85,10 @@ import java.util.regex.Pattern;
|
|||||||
int distance = Bukkit.getViewDistance() * 16;
|
int distance = Bukkit.getViewDistance() * 16;
|
||||||
for (Entry<String, PlotPlayer> entry : UUIDHandler.getPlayers().entrySet()) {
|
for (Entry<String, PlotPlayer> entry : UUIDHandler.getPlayers().entrySet()) {
|
||||||
PlotPlayer player = entry.getValue();
|
PlotPlayer player = entry.getValue();
|
||||||
Location loc = player.getLocation();
|
Location location = player.getLocation();
|
||||||
if (loc.getWorld().equals(world)) {
|
if (location.getWorld().equals(world)) {
|
||||||
if (16 * Math.abs(loc.getX() - x) / 16 > distance
|
if (16 * Math.abs(location.getX() - x) / 16 > distance
|
||||||
|| 16 * Math.abs(loc.getZ() - z) / 16 > distance) {
|
|| 16 * Math.abs(location.getZ() - z) / 16 > distance) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
((BukkitPlayer) player).player.sendBlockChange(bloc, data);
|
((BukkitPlayer) player).player.sendBlockChange(bloc, data);
|
||||||
@ -314,12 +314,12 @@ import java.util.regex.Pattern;
|
|||||||
case POWERED_RAIL:
|
case POWERED_RAIL:
|
||||||
return;
|
return;
|
||||||
default:*/
|
default:*/
|
||||||
Location loc = BukkitUtil.getLocation(block.getLocation());
|
Location location = BukkitUtil.getLocation(block.getLocation());
|
||||||
PlotArea area = loc.getPlotArea();
|
PlotArea area = location.getPlotArea();
|
||||||
if (area == null) {
|
if (area == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Plot plot = loc.getOwnedPlot();
|
Plot plot = location.getOwnedPlot();
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -369,12 +369,11 @@ import java.util.regex.Pattern;
|
|||||||
switch (event.getChangedType()) {
|
switch (event.getChangedType()) {
|
||||||
case COMPARATOR: {
|
case COMPARATOR: {
|
||||||
Block block = event.getBlock();
|
Block block = event.getBlock();
|
||||||
Location loc = BukkitUtil.getLocation(block.getLocation());
|
Location location = BukkitUtil.getLocation(block.getLocation());
|
||||||
PlotArea area = loc.getPlotArea();
|
if (location.isPlotArea()) {
|
||||||
if (area == null) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Plot plot = area.getOwnedPlotAbs(loc);
|
Plot plot = location.getOwnedPlotAbs();
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -391,12 +390,12 @@ import java.util.regex.Pattern;
|
|||||||
case TURTLE_HELMET:
|
case TURTLE_HELMET:
|
||||||
case TURTLE_SPAWN_EGG: {
|
case TURTLE_SPAWN_EGG: {
|
||||||
Block block = event.getBlock();
|
Block block = event.getBlock();
|
||||||
Location loc = BukkitUtil.getLocation(block.getLocation());
|
Location location = BukkitUtil.getLocation(block.getLocation());
|
||||||
PlotArea area = loc.getPlotArea();
|
PlotArea area = location.getPlotArea();
|
||||||
if (area == null) {
|
if (area == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Plot plot = area.getOwnedPlotAbs(loc);
|
Plot plot = area.getOwnedPlotAbs(location);
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -413,30 +412,30 @@ import java.util.regex.Pattern;
|
|||||||
case STICKY_PISTON:
|
case STICKY_PISTON:
|
||||||
org.bukkit.block.data.Directional piston =
|
org.bukkit.block.data.Directional piston =
|
||||||
(org.bukkit.block.data.Directional) block.getBlockData();
|
(org.bukkit.block.data.Directional) block.getBlockData();
|
||||||
Location loc = BukkitUtil.getLocation(block.getLocation());
|
Location location = BukkitUtil.getLocation(block.getLocation());
|
||||||
PlotArea area = loc.getPlotArea();
|
PlotArea area = location.getPlotArea();
|
||||||
if (area == null) {
|
if (area == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Plot plot = area.getOwnedPlotAbs(loc);
|
Plot plot = area.getOwnedPlotAbs(location);
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
switch (piston.getFacing()) {
|
switch (piston.getFacing()) {
|
||||||
case EAST:
|
case EAST:
|
||||||
loc.setX(loc.getX() + 1);
|
location.setX(location.getX() + 1);
|
||||||
break;
|
break;
|
||||||
case SOUTH:
|
case SOUTH:
|
||||||
loc.setX(loc.getX() - 1);
|
location.setX(location.getX() - 1);
|
||||||
break;
|
break;
|
||||||
case WEST:
|
case WEST:
|
||||||
loc.setZ(loc.getZ() + 1);
|
location.setZ(location.getZ() + 1);
|
||||||
break;
|
break;
|
||||||
case NORTH:
|
case NORTH:
|
||||||
loc.setZ(loc.getZ() - 1);
|
location.setZ(location.getZ() - 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
Plot newPlot = area.getOwnedPlotAbs(loc);
|
Plot newPlot = area.getOwnedPlotAbs(location);
|
||||||
if (!plot.equals(newPlot)) {
|
if (!plot.equals(newPlot)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
@ -470,15 +469,15 @@ import java.util.regex.Pattern;
|
|||||||
|
|
||||||
@EventHandler public boolean onProjectileHit(ProjectileHitEvent event) {
|
@EventHandler public boolean onProjectileHit(ProjectileHitEvent event) {
|
||||||
Projectile entity = event.getEntity();
|
Projectile entity = event.getEntity();
|
||||||
Location loc = BukkitUtil.getLocation(entity);
|
Location location = BukkitUtil.getLocation(entity);
|
||||||
if (!PlotSquared.get().hasPlotArea(loc.getWorld())) {
|
if (!PlotSquared.get().hasPlotArea(location.getWorld())) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
PlotArea area = loc.getPlotArea();
|
PlotArea area = location.getPlotArea();
|
||||||
if (area == null) {
|
if (area == null) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
Plot plot = area.getPlot(loc);
|
Plot plot = area.getPlot(location);
|
||||||
ProjectileSource shooter = entity.getShooter();
|
ProjectileSource shooter = entity.getShooter();
|
||||||
if (shooter instanceof Player) {
|
if (shooter instanceof Player) {
|
||||||
PlotPlayer pp = BukkitUtil.getPlayer((Player) shooter);
|
PlotPlayer pp = BukkitUtil.getPlayer((Player) shooter);
|
||||||
@ -523,22 +522,22 @@ import java.util.regex.Pattern;
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
PlotPlayer pp = BukkitUtil.getPlayer(player);
|
PlotPlayer plotPlayer = BukkitUtil.getPlayer(player);
|
||||||
Location loc = pp.getLocation();
|
Location location = plotPlayer.getLocation();
|
||||||
PlotArea area = loc.getPlotArea();
|
PlotArea area = location.getPlotArea();
|
||||||
if (area == null) {
|
if (area == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String[] parts = msg.split(" ");
|
String[] parts = msg.split(" ");
|
||||||
Plot plot = pp.getCurrentPlot();
|
Plot plot = plotPlayer.getCurrentPlot();
|
||||||
// Check WorldEdit
|
// Check WorldEdit
|
||||||
switch (parts[0].toLowerCase()) {
|
switch (parts[0].toLowerCase()) {
|
||||||
case "up":
|
case "up":
|
||||||
case "/up":
|
case "/up":
|
||||||
case "worldedit:up":
|
case "worldedit:up":
|
||||||
case "worldedit:/up":
|
case "worldedit:/up":
|
||||||
if (plot == null || (!plot.isAdded(pp.getUUID()) && !Permissions
|
if (plot == null || (!plot.isAdded(plotPlayer.getUUID()) && !Permissions
|
||||||
.hasPermission(pp, Captions.PERMISSION_ADMIN_BUILD_OTHER, true))) {
|
.hasPermission(plotPlayer, Captions.PERMISSION_ADMIN_BUILD_OTHER, true))) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -548,7 +547,7 @@ import java.util.regex.Pattern;
|
|||||||
}
|
}
|
||||||
Optional<List<String>> flag = plot.getFlag(Flags.BLOCKED_CMDS);
|
Optional<List<String>> flag = plot.getFlag(Flags.BLOCKED_CMDS);
|
||||||
if (flag.isPresent() && !Permissions
|
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();
|
List<String> blocked_cmds = flag.get();
|
||||||
String part = parts[0];
|
String part = parts[0];
|
||||||
if (parts[0].contains(":")) {
|
if (parts[0].contains(":")) {
|
||||||
@ -592,13 +591,13 @@ import java.util.regex.Pattern;
|
|||||||
}
|
}
|
||||||
if (pattern.matcher(msg).matches()) {
|
if (pattern.matcher(msg).matches()) {
|
||||||
String perm;
|
String perm;
|
||||||
if (plot.isAdded(pp.getUUID())) {
|
if (plot.isAdded(plotPlayer.getUUID())) {
|
||||||
perm = "plots.admin.command.blocked-cmds.shared";
|
perm = "plots.admin.command.blocked-cmds.shared";
|
||||||
} else {
|
} else {
|
||||||
perm = "plots.admin.command.blocked-cmds.other";
|
perm = "plots.admin.command.blocked-cmds.other";
|
||||||
}
|
}
|
||||||
if (!Permissions.hasPermission(pp, perm)) {
|
if (!Permissions.hasPermission(plotPlayer, perm)) {
|
||||||
MainUtil.sendMessage(pp, Captions.COMMAND_BLOCKED);
|
MainUtil.sendMessage(plotPlayer, Captions.COMMAND_BLOCKED);
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@ -619,10 +618,10 @@ import java.util.regex.Pattern;
|
|||||||
UUID uuid = pp.getUUID();
|
UUID uuid = pp.getUUID();
|
||||||
UUIDHandler.add(sw, uuid);
|
UUIDHandler.add(sw, uuid);
|
||||||
|
|
||||||
Location loc = pp.getLocation();
|
Location location = pp.getLocation();
|
||||||
PlotArea area = loc.getPlotArea();
|
PlotArea area = location.getPlotArea();
|
||||||
if (area != null) {
|
if (area != null) {
|
||||||
Plot plot = area.getPlot(loc);
|
Plot plot = area.getPlot(location);
|
||||||
if (plot != null) {
|
if (plot != null) {
|
||||||
plotEntry(pp, plot);
|
plotEntry(pp, plot);
|
||||||
}
|
}
|
||||||
@ -641,7 +640,7 @@ import java.util.regex.Pattern;
|
|||||||
&& PlotSquared.get().getUpdateUtility() != null) {
|
&& PlotSquared.get().getUpdateUtility() != null) {
|
||||||
final UpdateUtility updateUtility = PlotSquared.get().getUpdateUtility();
|
final UpdateUtility updateUtility = PlotSquared.get().getUpdateUtility();
|
||||||
final BukkitMain bukkitMain = BukkitMain.getPlugin(BukkitMain.class);
|
final BukkitMain bukkitMain = BukkitMain.getPlugin(BukkitMain.class);
|
||||||
updateUtility.checkForUpdate(bukkitMain.getPluginVersionString(),
|
updateUtility.checkForUpdate(PlotSquared.get().getVersion().versionString(),
|
||||||
((updateDescription, throwable) -> {
|
((updateDescription, throwable) -> {
|
||||||
if (throwable != null) {
|
if (throwable != null) {
|
||||||
bukkitMain.getLogger().severe(String
|
bukkitMain.getLogger().severe(String
|
||||||
@ -688,27 +687,27 @@ import java.util.regex.Pattern;
|
|||||||
org.bukkit.Location to = event.getTo();
|
org.bukkit.Location to = event.getTo();
|
||||||
if (to != null) {
|
if (to != null) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
PlotPlayer pp = PlotPlayer.wrap(player);
|
PlotPlayer plotPlayer = PlotPlayer.wrap(player);
|
||||||
Location loc = BukkitUtil.getLocation(to);
|
Location location = BukkitUtil.getLocation(to);
|
||||||
PlotArea area = loc.getPlotArea();
|
PlotArea area = location.getPlotArea();
|
||||||
if (area == null) {
|
if (area == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Plot plot = area.getPlot(loc);
|
Plot plot = area.getPlot(location);
|
||||||
if (plot != null) {
|
if (plot != null) {
|
||||||
final boolean result = Flags.DENY_TELEPORT.allowsTeleport(pp, plot);
|
final boolean result = Flags.DENY_TELEPORT.allowsTeleport(plotPlayer, plot);
|
||||||
if (!result) {
|
if (!result) {
|
||||||
MainUtil.sendMessage(pp, Captions.NO_PERMISSION_EVENT,
|
MainUtil.sendMessage(plotPlayer, Captions.NO_PERMISSION_EVENT,
|
||||||
Captions.PERMISSION_ADMIN_ENTRY_DENIED);
|
Captions.PERMISSION_ADMIN_ENTRY_DENIED);
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
if (lastLoc != null) {
|
if (lastLoc != null) {
|
||||||
pp.setMeta(PlotPlayer.META_LOCATION, lastLoc);
|
plotPlayer.setMeta(PlotPlayer.META_LOCATION, lastLoc);
|
||||||
}
|
}
|
||||||
if (lastPlot != null) {
|
if (lastPlot != null) {
|
||||||
pp.setMeta(PlotPlayer.META_LAST_PLOT, lastPlot);
|
plotPlayer.setMeta(PlotPlayer.META_LAST_PLOT, lastPlot);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
plotEntry(pp, plot);
|
plotEntry(plotPlayer, plot);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -809,14 +808,14 @@ import java.util.regex.Pattern;
|
|||||||
// Cancel teleport
|
// Cancel teleport
|
||||||
TaskManager.TELEPORT_QUEUE.remove(pp.getName());
|
TaskManager.TELEPORT_QUEUE.remove(pp.getName());
|
||||||
// Set last location
|
// Set last location
|
||||||
Location loc = BukkitUtil.getLocation(to);
|
Location location = BukkitUtil.getLocation(to);
|
||||||
pp.setMeta(PlotPlayer.META_LOCATION, loc);
|
pp.setMeta(PlotPlayer.META_LOCATION, location);
|
||||||
PlotArea area = loc.getPlotArea();
|
PlotArea area = location.getPlotArea();
|
||||||
if (area == null) {
|
if (area == null) {
|
||||||
pp.deleteMeta(PlotPlayer.META_LAST_PLOT);
|
pp.deleteMeta(PlotPlayer.META_LAST_PLOT);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Plot now = area.getPlot(loc);
|
Plot now = area.getPlot(location);
|
||||||
Plot lastPlot = pp.getMeta(PlotPlayer.META_LAST_PLOT);
|
Plot lastPlot = pp.getMeta(PlotPlayer.META_LAST_PLOT);
|
||||||
if (now == null) {
|
if (now == null) {
|
||||||
if (lastPlot != null && !plotExit(pp, lastPlot) && this.tmpTeleport && !pp
|
if (lastPlot != null && !plotExit(pp, lastPlot) && this.tmpTeleport && !pp
|
||||||
@ -869,14 +868,14 @@ import java.util.regex.Pattern;
|
|||||||
// Cancel teleport
|
// Cancel teleport
|
||||||
TaskManager.TELEPORT_QUEUE.remove(pp.getName());
|
TaskManager.TELEPORT_QUEUE.remove(pp.getName());
|
||||||
// Set last location
|
// Set last location
|
||||||
Location loc = BukkitUtil.getLocation(to);
|
Location location = BukkitUtil.getLocation(to);
|
||||||
pp.setMeta(PlotPlayer.META_LOCATION, loc);
|
pp.setMeta(PlotPlayer.META_LOCATION, location);
|
||||||
PlotArea area = loc.getPlotArea();
|
PlotArea area = location.getPlotArea();
|
||||||
if (area == null) {
|
if (area == null) {
|
||||||
pp.deleteMeta(PlotPlayer.META_LAST_PLOT);
|
pp.deleteMeta(PlotPlayer.META_LAST_PLOT);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Plot now = area.getPlot(loc);
|
Plot now = area.getPlot(location);
|
||||||
Plot lastPlot = pp.getMeta(PlotPlayer.META_LAST_PLOT);
|
Plot lastPlot = pp.getMeta(PlotPlayer.META_LAST_PLOT);
|
||||||
if (now == null) {
|
if (now == null) {
|
||||||
if (lastPlot != null && !plotExit(pp, lastPlot) && this.tmpTeleport && !pp
|
if (lastPlot != null && !plotExit(pp, lastPlot) && this.tmpTeleport && !pp
|
||||||
@ -1123,10 +1122,10 @@ import java.util.regex.Pattern;
|
|||||||
if (Settings.Enabled_Components.PERMISSION_CACHE) {
|
if (Settings.Enabled_Components.PERMISSION_CACHE) {
|
||||||
pp.deleteMeta("perm");
|
pp.deleteMeta("perm");
|
||||||
}
|
}
|
||||||
Location loc = pp.getLocation();
|
Location location = pp.getLocation();
|
||||||
PlotArea area = loc.getPlotArea();
|
PlotArea area = location.getPlotArea();
|
||||||
if (loc.isPlotArea()) {
|
if (location.isPlotArea()) {
|
||||||
plot = loc.getPlot();
|
plot = location.getPlot();
|
||||||
if (plot != null) {
|
if (plot != null) {
|
||||||
plotEntry(pp, plot);
|
plotEntry(pp, plot);
|
||||||
}
|
}
|
||||||
@ -2269,17 +2268,17 @@ import java.util.regex.Pattern;
|
|||||||
Entity ignitingEntity = event.getIgnitingEntity();
|
Entity ignitingEntity = event.getIgnitingEntity();
|
||||||
Block block = event.getBlock();
|
Block block = event.getBlock();
|
||||||
BlockIgniteEvent.IgniteCause igniteCause = event.getCause();
|
BlockIgniteEvent.IgniteCause igniteCause = event.getCause();
|
||||||
Location loc;
|
Location location1;
|
||||||
if (block != null) {
|
if (block != null) {
|
||||||
loc = BukkitUtil.getLocation(block.getLocation());
|
location1 = BukkitUtil.getLocation(block.getLocation());
|
||||||
} else if (ignitingEntity != null) {
|
} else if (ignitingEntity != null) {
|
||||||
loc = BukkitUtil.getLocation(ignitingEntity);
|
location1 = BukkitUtil.getLocation(ignitingEntity);
|
||||||
} else if (player != null) {
|
} else if (player != null) {
|
||||||
loc = BukkitUtil.getLocation(player);
|
location1 = BukkitUtil.getLocation(player);
|
||||||
} else {
|
} else {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
PlotArea area = loc.getPlotArea();
|
PlotArea area = location1.getPlotArea();
|
||||||
if (area == null) {
|
if (area == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -2288,7 +2287,7 @@ import java.util.regex.Pattern;
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Plot plot = area.getOwnedPlotAbs(loc);
|
Plot plot = area.getOwnedPlotAbs(location1);
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
PlotPlayer pp = BukkitUtil.getPlayer(player);
|
PlotPlayer pp = BukkitUtil.getPlayer(player);
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
|
@ -30,8 +30,8 @@ import static com.github.intellectualsites.plotsquared.plot.util.ReflectionUtils
|
|||||||
this.methodGetHandleChunk = classCraftChunk.getMethod("getHandle").getRealMethod();
|
this.methodGetHandleChunk = classCraftChunk.getMethod("getHandle").getRealMethod();
|
||||||
try {
|
try {
|
||||||
this.mustSave = classChunk.getField("mustSave").getRealField();
|
this.mustSave = classChunk.getField("mustSave").getRealField();
|
||||||
} catch (Throwable ignore) {
|
} catch (NoSuchFieldException e) {
|
||||||
ignore.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
Bukkit.getPluginManager().registerEvents(this, plugin);
|
Bukkit.getPluginManager().registerEvents(this, plugin);
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,6 @@ import org.bukkit.permissions.PermissionAttachmentInfo;
|
|||||||
import org.bukkit.plugin.RegisteredListener;
|
import org.bukkit.plugin.RegisteredListener;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@ -56,7 +55,7 @@ public class BukkitPlayer extends PlotPlayer {
|
|||||||
super.populatePersistentMetaMap();
|
super.populatePersistentMetaMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public Location getLocation() {
|
@NotNull @Override public Location getLocation() {
|
||||||
final Location location = super.getLocation();
|
final Location location = super.getLocation();
|
||||||
return location == null ? BukkitUtil.getLocation(this.player) : location;
|
return location == null ? BukkitUtil.getLocation(this.player) : location;
|
||||||
}
|
}
|
||||||
@ -72,8 +71,8 @@ public class BukkitPlayer extends PlotPlayer {
|
|||||||
return this.player.getLastPlayed();
|
return this.player.getLastPlayed();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean canTeleport(@NotNull final Location loc) {
|
@Override public boolean canTeleport(@NotNull final Location location) {
|
||||||
final org.bukkit.Location to = BukkitUtil.getLocation(loc);
|
final org.bukkit.Location to = BukkitUtil.getLocation(location);
|
||||||
final org.bukkit.Location from = player.getLocation();
|
final org.bukkit.Location from = player.getLocation();
|
||||||
PlayerTeleportEvent event = new PlayerTeleportEvent(player, from, to);
|
PlayerTeleportEvent event = new PlayerTeleportEvent(player, from, to);
|
||||||
callEvent(event);
|
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) {
|
if (Math.abs(location.getX()) >= 30000000 || Math.abs(location.getZ()) >= 30000000) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -229,7 +228,7 @@ public class BukkitPlayer extends PlotPlayer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull @Override public PlotGameMode getGameMode() {
|
@NotNull @Override public PlotGameMode getGameMode() {
|
||||||
switch (this.player.getGameMode()) {
|
switch (this.player.getGameMode()) {
|
||||||
case ADVENTURE:
|
case ADVENTURE:
|
||||||
return PlotGameMode.ADVENTURE;
|
return PlotGameMode.ADVENTURE;
|
||||||
|
@ -351,8 +351,8 @@ public class BukkitChunkManager extends ChunkManager {
|
|||||||
int bz = min.getZ();
|
int bz = min.getZ();
|
||||||
for (int x1 = 0; x1 < 16; x1++) {
|
for (int x1 = 0; x1 < 16; x1++) {
|
||||||
for (int z1 = 0; z1 < 16; z1++) {
|
for (int z1 = 0; z1 < 16; z1++) {
|
||||||
PlotLoc loc = new PlotLoc(bx + x1, bz + z1);
|
PlotLoc plotLoc = new PlotLoc(bx + x1, bz + z1);
|
||||||
BaseBlock[] ids = map.allBlocks.get(loc);
|
BaseBlock[] ids = map.allBlocks.get(plotLoc);
|
||||||
if (ids != null) {
|
if (ids != null) {
|
||||||
for (int y = 0; y < Math.min(128, ids.length); y++) {
|
for (int y = 0; y < Math.min(128, ids.length); y++) {
|
||||||
BaseBlock id = ids[y];
|
BaseBlock id = ids[y];
|
||||||
@ -387,17 +387,18 @@ public class BukkitChunkManager extends ChunkManager {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean loadChunk(String world, ChunkLoc loc, boolean force) {
|
@Override public boolean loadChunk(String world, ChunkLoc chunkLoc, boolean force) {
|
||||||
return BukkitUtil.getWorld(world).getChunkAt(loc.x, loc.z).load(force);
|
return BukkitUtil.getWorld(world).getChunkAt(chunkLoc.x, chunkLoc.z).load(force);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation") @Override
|
@Override
|
||||||
public void unloadChunk(final String world, final ChunkLoc loc, final boolean save,
|
public void unloadChunk(final String world, final ChunkLoc chunkLoc, final boolean save,
|
||||||
final boolean safe) {
|
final boolean safe) {
|
||||||
if (!PlotSquared.get().isMainThread(Thread.currentThread())) {
|
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 {
|
} 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) {
|
void saveEntitiesOut(Chunk chunk, RegionWrapper region) {
|
||||||
for (Entity entity : chunk.getEntities()) {
|
for (Entity entity : chunk.getEntities()) {
|
||||||
Location loc = BukkitUtil.getLocation(entity);
|
Location location = BukkitUtil.getLocation(entity);
|
||||||
int x = loc.getX();
|
int x = location.getX();
|
||||||
int z = loc.getZ();
|
int z = location.getZ();
|
||||||
if (isIn(region, x, z)) {
|
if (isIn(region, x, z)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -636,9 +637,9 @@ public class BukkitChunkManager extends ChunkManager {
|
|||||||
void saveEntitiesIn(Chunk chunk, RegionWrapper region, int offsetX, int offsetZ,
|
void saveEntitiesIn(Chunk chunk, RegionWrapper region, int offsetX, int offsetZ,
|
||||||
boolean delete) {
|
boolean delete) {
|
||||||
for (Entity entity : chunk.getEntities()) {
|
for (Entity entity : chunk.getEntities()) {
|
||||||
Location loc = BukkitUtil.getLocation(entity);
|
Location location = BukkitUtil.getLocation(entity);
|
||||||
int x = loc.getX();
|
int x = location.getX();
|
||||||
int z = loc.getZ();
|
int z = location.getZ();
|
||||||
if (!isIn(region, x, z)) {
|
if (!isIn(region, x, z)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -1,22 +1,6 @@
|
|||||||
package com.github.intellectualsites.plotsquared.bukkit.util;
|
package com.github.intellectualsites.plotsquared.bukkit.util;
|
||||||
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.events.PlayerClaimPlotEvent;
|
import com.github.intellectualsites.plotsquared.bukkit.events.*;
|
||||||
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.object.BukkitPlayer;
|
import com.github.intellectualsites.plotsquared.bukkit.object.BukkitPlayer;
|
||||||
import com.github.intellectualsites.plotsquared.plot.flag.Flag;
|
import com.github.intellectualsites.plotsquared.plot.flag.Flag;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.Location;
|
import com.github.intellectualsites.plotsquared.plot.object.Location;
|
||||||
@ -30,9 +14,9 @@ import org.bukkit.Bukkit;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.Cancellable;
|
import org.bukkit.event.Cancellable;
|
||||||
import org.bukkit.event.Event;
|
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.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@ -48,7 +32,7 @@ public final class BukkitEventUtil extends EventUtil {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean callEvent(@Nonnull final Event event) {
|
private boolean callEvent(@NotNull final Event event) {
|
||||||
Bukkit.getServer().getPluginManager().callEvent(event);
|
Bukkit.getServer().getPluginManager().callEvent(event);
|
||||||
return !(event instanceof Cancellable) || !((Cancellable) event).isCancelled();
|
return !(event instanceof Cancellable) || !((Cancellable) event).isCancelled();
|
||||||
}
|
}
|
||||||
@ -82,11 +66,13 @@ public final class BukkitEventUtil extends EventUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean callMerge(Plot plot, int dir, int max) {
|
@Override public boolean callMerge(Plot plot, int dir, int max) {
|
||||||
return callEvent(new PlotMergeEvent(BukkitUtil.getWorld(plot.getWorldName()), plot, dir, max));
|
return callEvent(
|
||||||
|
new PlotMergeEvent(BukkitUtil.getWorld(plot.getWorldName()), plot, dir, max));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean callAutoMerge(Plot plot, List<PlotId> plots) {
|
@Override public boolean callAutoMerge(Plot plot, List<PlotId> plots) {
|
||||||
return callEvent(new PlotAutoMergeEvent(BukkitUtil.getWorld(plot.getWorldName()), plot, plots));
|
return callEvent(
|
||||||
|
new PlotAutoMergeEvent(BukkitUtil.getWorld(plot.getWorldName()), plot, plots));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean callUnlink(PlotArea area, List<PlotId> plots) {
|
@Override public boolean callUnlink(PlotArea area, List<PlotId> plots) {
|
||||||
|
@ -27,8 +27,9 @@ import org.bukkit.entity.Player;
|
|||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.InventoryHolder;
|
import org.bukkit.inventory.InventoryHolder;
|
||||||
import org.bukkit.inventory.ItemStack;
|
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.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@ -242,7 +243,7 @@ import java.util.Set;
|
|||||||
location.getBlockZ());
|
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();
|
final org.bukkit.Location location = entity.getLocation();
|
||||||
return new Location(location.getWorld().getName(), MathMan.roundInt(location.getX()),
|
return new Location(location.getWorld().getName(), MathMan.roundInt(location.getX()),
|
||||||
MathMan.roundInt(location.getY()), MathMan.roundInt(location.getZ()), location.getYaw(),
|
MathMan.roundInt(location.getY()), MathMan.roundInt(location.getZ()), location.getYaw(),
|
||||||
|
@ -42,7 +42,6 @@ public class SendChunk {
|
|||||||
* Constructor.
|
* Constructor.
|
||||||
*/
|
*/
|
||||||
public SendChunk() throws ClassNotFoundException, NoSuchMethodException, NoSuchFieldException {
|
public SendChunk() throws ClassNotFoundException, NoSuchMethodException, NoSuchFieldException {
|
||||||
RefConstructor tempMapChunk;
|
|
||||||
RefClass classCraftPlayer = getRefClass("{cb}.entity.CraftPlayer");
|
RefClass classCraftPlayer = getRefClass("{cb}.entity.CraftPlayer");
|
||||||
this.methodGetHandlePlayer = classCraftPlayer.getMethod("getHandle");
|
this.methodGetHandlePlayer = classCraftPlayer.getMethod("getHandle");
|
||||||
RefClass classCraftChunk = getRefClass("{cb}.CraftChunk");
|
RefClass classCraftChunk = getRefClass("{cb}.CraftChunk");
|
||||||
@ -50,8 +49,7 @@ public class SendChunk {
|
|||||||
RefClass classChunk = getRefClass("{nms}.Chunk");
|
RefClass classChunk = getRefClass("{nms}.Chunk");
|
||||||
this.methodInitLighting = classChunk.getMethod("initLighting");
|
this.methodInitLighting = classChunk.getMethod("initLighting");
|
||||||
RefClass classMapChunk = getRefClass("{nms}.PacketPlayOutMapChunk");
|
RefClass classMapChunk = getRefClass("{nms}.PacketPlayOutMapChunk");
|
||||||
tempMapChunk = classMapChunk.getConstructor(classChunk.getRealClass(), int.class);
|
this.mapChunk = classMapChunk.getConstructor(classChunk.getRealClass(), int.class);
|
||||||
this.mapChunk = tempMapChunk;
|
|
||||||
RefClass classEntityPlayer = getRefClass("{nms}.EntityPlayer");
|
RefClass classEntityPlayer = getRefClass("{nms}.EntityPlayer");
|
||||||
this.connection = classEntityPlayer.getField("playerConnection");
|
this.connection = classEntityPlayer.getField("playerConnection");
|
||||||
RefClass classPacket = getRefClass("{nms}.Packet");
|
RefClass classPacket = getRefClass("{nms}.Packet");
|
||||||
|
@ -31,13 +31,13 @@ import java.util.ArrayDeque;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
public class SQLUUIDHandler extends UUIDHandlerImplementation {
|
public class SQLUUIDHandler extends UUIDHandlerImplementation {
|
||||||
|
|
||||||
final int MAX_REQUESTS = 500;
|
final int MAX_REQUESTS = 500;
|
||||||
private final String PROFILE_URL =
|
private final String PROFILE_URL =
|
||||||
"https://sessionserver.mojang.com/session/minecraft/profile/";
|
"https://sessionserver.mojang.com/session/minecraft/profile/";
|
||||||
private final int INTERVAL = 12000;
|
|
||||||
private final JSONParser jsonParser = new JSONParser();
|
private final JSONParser jsonParser = new JSONParser();
|
||||||
private final SQLite sqlite;
|
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)");
|
"Invalid response from Mojang: Some UUIDs will be cached later. (`unknown` until then or player joins)");
|
||||||
}
|
}
|
||||||
try {
|
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) {
|
} catch (InterruptedException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
break;
|
break;
|
||||||
@ -142,7 +145,6 @@ public class SQLUUIDHandler extends UUIDHandlerImplementation {
|
|||||||
if (whenDone != null) {
|
if (whenDone != null) {
|
||||||
whenDone.run();
|
whenDone.run();
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
name: ${name}
|
name: ${name}
|
||||||
main: com.github.intellectualsites.plotsquared.bukkit.BukkitMain
|
main: com.github.intellectualsites.plotsquared.bukkit.BukkitMain
|
||||||
api-version: 1.13
|
api-version: "1.13"
|
||||||
version: "${version}"
|
version: "${version}"
|
||||||
load: STARTUP
|
load: STARTUP
|
||||||
description: >
|
description: >
|
||||||
@ -126,6 +126,7 @@ permissions:
|
|||||||
plots.toggle: true
|
plots.toggle: true
|
||||||
plots.toggle.titles: true
|
plots.toggle.titles: true
|
||||||
plots.toggle.chat: true
|
plots.toggle.chat: true
|
||||||
|
plots.toggle.time: true
|
||||||
plots.set.biome: true
|
plots.set.biome: true
|
||||||
plots.set.home: true
|
plots.set.home: true
|
||||||
plots.set.alias: true
|
plots.set.alias: true
|
||||||
|
@ -6,7 +6,6 @@ package com.github.intellectualsites.plotsquared.configuration;
|
|||||||
*/
|
*/
|
||||||
class ConfigurationOptions {
|
class ConfigurationOptions {
|
||||||
private final Configuration configuration;
|
private final Configuration configuration;
|
||||||
private char pathSeparator = '.';
|
|
||||||
private boolean copyDefaults = false;
|
private boolean copyDefaults = false;
|
||||||
|
|
||||||
protected ConfigurationOptions(Configuration configuration) {
|
protected ConfigurationOptions(Configuration configuration) {
|
||||||
@ -26,28 +25,12 @@ class ConfigurationOptions {
|
|||||||
* Gets the char that will be used to separate {@link
|
* Gets the char that will be used to separate {@link
|
||||||
* ConfigurationSection}s.
|
* ConfigurationSection}s.
|
||||||
*
|
*
|
||||||
* <p>This value does not affect how the {@link Configuration} is stored,
|
* <p> This value is always '.'.
|
||||||
* only in how you access the data. The default value is '.'.
|
|
||||||
*
|
*
|
||||||
* @return Path separator
|
* @return Path separator
|
||||||
*/
|
*/
|
||||||
public char pathSeparator() {
|
char pathSeparator() {
|
||||||
return pathSeparator;
|
return '.';
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -18,8 +18,4 @@ public class MemoryConfigurationOptions extends ConfigurationOptions {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public MemoryConfigurationOptions pathSeparator(char value) {
|
|
||||||
super.pathSeparator(value);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -25,11 +25,6 @@ public class FileConfigurationOptions extends MemoryConfigurationOptions {
|
|||||||
return this;
|
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.
|
* Gets the header that will be applied to the top of the saved output.
|
||||||
*
|
*
|
||||||
|
@ -5,7 +5,6 @@ package com.github.intellectualsites.plotsquared.configuration.file;
|
|||||||
* YamlConfiguration}.
|
* YamlConfiguration}.
|
||||||
*/
|
*/
|
||||||
public class YamlConfigurationOptions extends FileConfigurationOptions {
|
public class YamlConfigurationOptions extends FileConfigurationOptions {
|
||||||
private int indent = 2;
|
|
||||||
|
|
||||||
YamlConfigurationOptions(YamlConfiguration configuration) {
|
YamlConfigurationOptions(YamlConfiguration configuration) {
|
||||||
super(configuration);
|
super(configuration);
|
||||||
@ -20,11 +19,6 @@ public class YamlConfigurationOptions extends FileConfigurationOptions {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public YamlConfigurationOptions pathSeparator(char value) {
|
|
||||||
super.pathSeparator(value);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override public YamlConfigurationOptions header(String value) {
|
@Override public YamlConfigurationOptions header(String value) {
|
||||||
super.header(value);
|
super.header(value);
|
||||||
return this;
|
return this;
|
||||||
@ -42,27 +36,8 @@ public class YamlConfigurationOptions extends FileConfigurationOptions {
|
|||||||
*
|
*
|
||||||
* @return How much to indent by
|
* @return How much to indent by
|
||||||
*/
|
*/
|
||||||
public int indent() {
|
int indent() {
|
||||||
return 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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -63,12 +63,12 @@ public interface IPlotMain extends ILogger {
|
|||||||
*/
|
*/
|
||||||
String getPluginVersionString();
|
String getPluginVersionString();
|
||||||
|
|
||||||
String getPluginName();
|
default String getPluginName() {
|
||||||
|
return "PlotSquared";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the version of Minecraft that is running.
|
* Gets the version of Minecraft that is running.
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
int[] getServerVersion();
|
int[] getServerVersion();
|
||||||
|
|
||||||
@ -101,7 +101,7 @@ public interface IPlotMain extends ILogger {
|
|||||||
/**
|
/**
|
||||||
* The task manager will run and manage Minecraft tasks.
|
* The task manager will run and manage Minecraft tasks.
|
||||||
*
|
*
|
||||||
* @return
|
* @return the PlotSquared task manager
|
||||||
*/
|
*/
|
||||||
TaskManager getTaskManager();
|
TaskManager getTaskManager();
|
||||||
|
|
||||||
@ -138,49 +138,39 @@ public interface IPlotMain extends ILogger {
|
|||||||
/**
|
/**
|
||||||
* Gets the economy provider.
|
* Gets the economy provider.
|
||||||
*
|
*
|
||||||
* @return
|
* @return the PlotSquared economy manager
|
||||||
*/
|
*/
|
||||||
EconHandler getEconomyHandler();
|
EconHandler getEconomyHandler();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the {@link QueueProvider} class.
|
* Gets the {@link QueueProvider} class.
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
QueueProvider initBlockQueue();
|
QueueProvider initBlockQueue();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the {@link WorldUtil} class.
|
* Gets the {@link WorldUtil} class.
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
WorldUtil initWorldUtil();
|
WorldUtil initWorldUtil();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the EventUtil class.
|
* Gets the EventUtil class.
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
EventUtil initEventUtil();
|
EventUtil initEventUtil();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the chunk manager.
|
* Gets the chunk manager.
|
||||||
*
|
*
|
||||||
* @return
|
* @return the PlotSquared chunk manager
|
||||||
*/
|
*/
|
||||||
ChunkManager initChunkManager();
|
ChunkManager initChunkManager();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the {@link SetupUtils} class.
|
* Gets the {@link SetupUtils} class.
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
SetupUtils initSetupUtils();
|
SetupUtils initSetupUtils();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets {@link HybridUtils} class.
|
* Gets {@link HybridUtils} class.
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
HybridUtils initHybridUtils();
|
HybridUtils initHybridUtils();
|
||||||
|
|
||||||
@ -199,32 +189,28 @@ public interface IPlotMain extends ILogger {
|
|||||||
/**
|
/**
|
||||||
* Gets the {@link UUIDHandlerImplementation} which will cache and
|
* Gets the {@link UUIDHandlerImplementation} which will cache and
|
||||||
* provide UUIDs.
|
* provide UUIDs.
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
UUIDHandlerImplementation initUUIDHandler();
|
UUIDHandlerImplementation initUUIDHandler();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the {@link InventoryUtil} class (used for implementation specific
|
* Gets the {@link InventoryUtil} class (used for implementation specific
|
||||||
* inventory guis).
|
* inventory guis).
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
InventoryUtil initInventoryUtil();
|
InventoryUtil initInventoryUtil();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unregisters a {@link PlotPlayer} from cache e.g. if they have logged off.
|
* 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);
|
void unregister(PlotPlayer player);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the generator wrapper for a world (world) and generator (name).
|
* Gets the generator wrapper for a world (world) and generator (name).
|
||||||
*
|
*
|
||||||
* @param world
|
* @param world the world to get the generator from
|
||||||
* @param name
|
* @param name the name of the generator
|
||||||
* @return
|
* @return the generator being used for the provided world
|
||||||
*/
|
*/
|
||||||
GeneratorWrapper<?> getGenerator(String world, String name);
|
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
|
* Register the chunk processor which will clean out chunks that have too
|
||||||
* many blockstates or entities.
|
* many block states or entities.
|
||||||
*/
|
*/
|
||||||
void registerChunkProcessor();
|
void registerChunkProcessor();
|
||||||
|
|
||||||
|
@ -33,8 +33,8 @@ import com.sk89q.worldedit.WorldEdit;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NonNull;
|
import lombok.NonNull;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
@ -1623,7 +1623,7 @@ import java.util.zip.ZipInputStream;
|
|||||||
final Properties properties = new Properties();
|
final Properties properties = new Properties();
|
||||||
properties.load(bufferedReader);
|
properties.load(bufferedReader);
|
||||||
final boolean enabled =
|
final boolean enabled =
|
||||||
Boolean.valueOf(properties.getOrDefault("enabled", true).toString());
|
Boolean.parseBoolean(properties.getOrDefault("enabled", true).toString());
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
this.updateUtility = new UpdateUtility(properties.getProperty("path"),
|
this.updateUtility = new UpdateUtility(properties.getProperty("path"),
|
||||||
properties.getProperty("job"), properties.getProperty("artifact"));
|
properties.getProperty("job"), properties.getProperty("artifact"));
|
||||||
|
@ -24,12 +24,19 @@ public class PlotVersion {
|
|||||||
public static PlotVersion tryParse(String version, String commit, String date) {
|
public static PlotVersion tryParse(String version, String commit, String date) {
|
||||||
try {
|
try {
|
||||||
return new PlotVersion(version, commit, date);
|
return new PlotVersion(version, commit, date);
|
||||||
} catch (Exception ignore) {
|
} catch (Exception e) {
|
||||||
ignore.printStackTrace();
|
e.printStackTrace();
|
||||||
return new PlotVersion(0, 0, 0, 0, 0);
|
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() {
|
@Override public String toString() {
|
||||||
if (hash == 0 && build == 0) {
|
if (hash == 0 && build == 0) {
|
||||||
return "PlotSquared-NoVer-SNAPSHOT";
|
return "PlotSquared-NoVer-SNAPSHOT";
|
||||||
|
@ -25,8 +25,8 @@ import com.github.intellectualsites.plotsquared.plot.util.UUIDHandler;
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Location loc = player.getLocation();
|
Location location = player.getLocation();
|
||||||
Plot plot = loc.getPlotAbs();
|
Plot plot = location.getPlotAbs();
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
return !sendMessage(player, Captions.NOT_IN_PLOT);
|
return !sendMessage(player, Captions.NOT_IN_PLOT);
|
||||||
}
|
}
|
||||||
|
@ -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.Captions;
|
||||||
import com.github.intellectualsites.plotsquared.plot.config.Settings;
|
import com.github.intellectualsites.plotsquared.plot.config.Settings;
|
||||||
import com.github.intellectualsites.plotsquared.plot.database.DBFunc;
|
import com.github.intellectualsites.plotsquared.plot.database.DBFunc;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.Expression;
|
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.PlotId;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.RunnableVal;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.ByteArrayUtilities;
|
import com.github.intellectualsites.plotsquared.plot.util.ByteArrayUtilities;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.EconHandler;
|
import com.github.intellectualsites.plotsquared.plot.util.EconHandler;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
|
import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.Permissions;
|
import com.github.intellectualsites.plotsquared.plot.util.Permissions;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
|
import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@CommandDeclaration(command = "auto", permission = "plots.auto",
|
@CommandDeclaration(command = "auto", permission = "plots.auto",
|
||||||
@ -123,7 +118,8 @@ public class Auto extends SubCommand {
|
|||||||
} else if (checkAllowedPlots(player, area, allowedPlots, 1, 1)) {
|
} else if (checkAllowedPlots(player, area, allowedPlots, 1, 1)) {
|
||||||
plot.claim(player, true, schematic, false);
|
plot.claim(player, true, schematic, false);
|
||||||
if (area.AUTO_MERGE) {
|
if (area.AUTO_MERGE) {
|
||||||
plot.autoMerge(-1, Integer.MAX_VALUE, player.getUUID(), true);
|
plot.autoMerge(Direction.ALL, Integer.MAX_VALUE, player.getUUID(),
|
||||||
|
true);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
DBFunc.delete(plot);
|
DBFunc.delete(plot);
|
||||||
@ -253,6 +249,9 @@ public class Auto extends SubCommand {
|
|||||||
for (int j = start.y; j <= end.y; j++) {
|
for (int j = start.y; j <= end.y; j++) {
|
||||||
Plot plot = plotarea.getPlotAbs(new PlotId(i, j));
|
Plot plot = plotarea.getPlotAbs(new PlotId(i, j));
|
||||||
boolean teleport = i == end.x && j == end.y;
|
boolean teleport = i == end.x && j == end.y;
|
||||||
|
if (plot == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
plot.claim(player, teleport, null);
|
plot.claim(player, teleport, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,13 +20,14 @@ public class Claim extends SubCommand {
|
|||||||
if (args.length >= 1) {
|
if (args.length >= 1) {
|
||||||
schematic = args[0];
|
schematic = args[0];
|
||||||
}
|
}
|
||||||
Location loc = player.getLocation();
|
Location location = player.getLocation();
|
||||||
final Plot plot = loc.getPlotAbs();
|
final Plot plot = location.getPlotAbs();
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
return sendMessage(player, Captions.NOT_IN_PLOT);
|
return sendMessage(player, Captions.NOT_IN_PLOT);
|
||||||
}
|
}
|
||||||
int currentPlots =
|
int currentPlots = Settings.Limit.GLOBAL ?
|
||||||
Settings.Limit.GLOBAL ? player.getPlotCount() : player.getPlotCount(loc.getWorld());
|
player.getPlotCount() :
|
||||||
|
player.getPlotCount(location.getWorld());
|
||||||
int grants = 0;
|
int grants = 0;
|
||||||
if (currentPlots >= player.getAllowedPlots()) {
|
if (currentPlots >= player.getAllowedPlots()) {
|
||||||
if (player.hasPersistentMeta("grantedPlots")) {
|
if (player.hasPersistentMeta("grantedPlots")) {
|
||||||
@ -89,7 +90,7 @@ public class Claim extends SubCommand {
|
|||||||
@Override public void run(Object value) {
|
@Override public void run(Object value) {
|
||||||
plot.claim(player, true, finalSchematic, false);
|
plot.claim(player, true, finalSchematic, false);
|
||||||
if (area.AUTO_MERGE) {
|
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));
|
}), () -> sendMessage(player, Captions.PLOT_NOT_CLAIMED));
|
||||||
|
@ -32,7 +32,7 @@ public class Comment extends SubCommand {
|
|||||||
StringMan.join(CommentManager.inboxes.keySet(), "|"));
|
StringMan.join(CommentManager.inboxes.keySet(), "|"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Location loc = player.getLocation();
|
Location location = player.getLocation();
|
||||||
PlotId id;
|
PlotId id;
|
||||||
try {
|
try {
|
||||||
id = PlotId.fromString(args[1]);
|
id = PlotId.fromString(args[1]);
|
||||||
@ -44,7 +44,7 @@ public class Comment extends SubCommand {
|
|||||||
int index;
|
int index;
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
index = 1;
|
index = 1;
|
||||||
plot = loc.getPlotAbs();
|
plot = location.getPlotAbs();
|
||||||
} else {
|
} else {
|
||||||
if (args.length < 4) {
|
if (args.length < 4) {
|
||||||
sendMessage(player, Captions.COMMENT_SYNTAX,
|
sendMessage(player, Captions.COMMENT_SYNTAX,
|
||||||
@ -59,7 +59,7 @@ public class Comment extends SubCommand {
|
|||||||
}
|
}
|
||||||
String message = StringMan.join(Arrays.copyOfRange(args, index, args.length), " ");
|
String message = StringMan.join(Arrays.copyOfRange(args, index, args.length), " ");
|
||||||
PlotComment comment =
|
PlotComment comment =
|
||||||
new PlotComment(loc.getWorld(), id, message, player.getName(), inbox.toString(),
|
new PlotComment(location.getWorld(), id, message, player.getName(), inbox.toString(),
|
||||||
System.currentTimeMillis());
|
System.currentTimeMillis());
|
||||||
boolean result = inbox.addComment(plot, comment);
|
boolean result = inbox.addComment(plot, comment);
|
||||||
if (!result) {
|
if (!result) {
|
||||||
|
@ -13,8 +13,8 @@ import com.github.intellectualsites.plotsquared.plot.util.Permissions;
|
|||||||
requiredType = RequiredType.NONE) public class Copy extends SubCommand {
|
requiredType = RequiredType.NONE) public class Copy extends SubCommand {
|
||||||
|
|
||||||
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
|
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
|
||||||
Location loc = player.getLocation();
|
Location location = player.getLocation();
|
||||||
Plot plot1 = loc.getPlotAbs();
|
Plot plot1 = location.getPlotAbs();
|
||||||
if (plot1 == null) {
|
if (plot1 == null) {
|
||||||
return !MainUtil.sendMessage(player, Captions.NOT_IN_PLOT);
|
return !MainUtil.sendMessage(player, Captions.NOT_IN_PLOT);
|
||||||
}
|
}
|
||||||
|
@ -16,12 +16,12 @@ import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
|
|||||||
usage = "/plot createroadschematic") public class CreateRoadSchematic extends SubCommand {
|
usage = "/plot createroadschematic") public class CreateRoadSchematic extends SubCommand {
|
||||||
|
|
||||||
@Override public boolean onCommand(PlotPlayer player, String[] args) {
|
@Override public boolean onCommand(PlotPlayer player, String[] args) {
|
||||||
Location loc = player.getLocation();
|
Location location = player.getLocation();
|
||||||
Plot plot = loc.getPlotAbs();
|
Plot plot = location.getPlotAbs();
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
return sendMessage(player, Captions.NOT_IN_PLOT);
|
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);
|
return sendMessage(player, Captions.NOT_IN_PLOT_WORLD);
|
||||||
}
|
}
|
||||||
HybridUtils.manager.setupRoadSchematic(plot);
|
HybridUtils.manager.setupRoadSchematic(plot);
|
||||||
|
@ -55,13 +55,13 @@ public class DebugClaimTest extends SubCommand {
|
|||||||
MainUtil.sendMessage(player, " - &cDB Already contains: " + plot.getId());
|
MainUtil.sendMessage(player, " - &cDB Already contains: " + plot.getId());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Location loc = manager.getSignLoc(plot);
|
Location location = manager.getSignLoc(plot);
|
||||||
ChunkLoc chunk = new ChunkLoc(loc.getX() >> 4, loc.getZ() >> 4);
|
ChunkLoc chunk = new ChunkLoc(location.getX() >> 4, location.getZ() >> 4);
|
||||||
boolean result = ChunkManager.manager.loadChunk(area.worldname, chunk, false);
|
boolean result = ChunkManager.manager.loadChunk(area.worldname, chunk, false);
|
||||||
if (!result) {
|
if (!result) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
String[] lines = WorldUtil.IMP.getSign(loc);
|
String[] lines = WorldUtil.IMP.getSign(location);
|
||||||
if (lines != null) {
|
if (lines != null) {
|
||||||
String line = lines[2];
|
String line = lines[2];
|
||||||
if (line != null && line.length() > 2) {
|
if (line != null && line.length() > 2) {
|
||||||
|
@ -369,17 +369,17 @@ import java.util.concurrent.CompletableFuture;
|
|||||||
Command cmd = MainCommand.getInstance().getCommand(args[3]);
|
Command cmd = MainCommand.getInstance().getCommand(args[3]);
|
||||||
String[] params = Arrays.copyOfRange(args, 4, args.length);
|
String[] params = Arrays.copyOfRange(args, 4, args.length);
|
||||||
if ("true".equals(args[1])) {
|
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);
|
Plot plot = player.getMeta(PlotPlayer.META_LAST_PLOT);
|
||||||
for (Plot current : PlotSquared.get().getBasePlots()) {
|
for (Plot current : PlotSquared.get().getBasePlots()) {
|
||||||
player.setMeta(PlotPlayer.META_LOCATION, current.getBottomAbs());
|
player.setMeta(PlotPlayer.META_LOCATION, current.getBottomAbs());
|
||||||
player.setMeta(PlotPlayer.META_LAST_PLOT, current);
|
player.setMeta(PlotPlayer.META_LAST_PLOT, current);
|
||||||
cmd.execute(player, params, null, null);
|
cmd.execute(player, params, null, null);
|
||||||
}
|
}
|
||||||
if (loc == null) {
|
if (location == null) {
|
||||||
player.deleteMeta(PlotPlayer.META_LOCATION);
|
player.deleteMeta(PlotPlayer.META_LOCATION);
|
||||||
} else {
|
} else {
|
||||||
player.setMeta(PlotPlayer.META_LOCATION, loc);
|
player.setMeta(PlotPlayer.META_LOCATION, location);
|
||||||
}
|
}
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
player.deleteMeta(PlotPlayer.META_LAST_PLOT);
|
player.deleteMeta(PlotPlayer.META_LAST_PLOT);
|
||||||
|
@ -3,7 +3,6 @@ package com.github.intellectualsites.plotsquared.plot.commands;
|
|||||||
import com.github.intellectualsites.plotsquared.commands.CommandDeclaration;
|
import com.github.intellectualsites.plotsquared.commands.CommandDeclaration;
|
||||||
import com.github.intellectualsites.plotsquared.plot.config.Captions;
|
import com.github.intellectualsites.plotsquared.plot.config.Captions;
|
||||||
import com.github.intellectualsites.plotsquared.plot.generator.HybridPlotManager;
|
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.generator.HybridUtils;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.Location;
|
import com.github.intellectualsites.plotsquared.plot.object.Location;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.Plot;
|
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) {
|
@Override public boolean onCommand(PlotPlayer player, String[] args) {
|
||||||
if (args.length < 1) {
|
if (args.length < 1) {
|
||||||
MainUtil.sendMessage(player, Captions.COMMAND_SYNTAX,
|
MainUtil.sendMessage(player, Captions.COMMAND_SYNTAX, DebugRoadRegen.USAGE);
|
||||||
DebugRoadRegen.USAGE);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
String kind = args[0].toLowerCase();
|
String kind = args[0].toLowerCase();
|
||||||
switch (kind) {
|
switch (kind) {
|
||||||
case "plot":
|
case "plot":
|
||||||
return regenPlot(player);
|
return regenPlot(player);
|
||||||
|
|
||||||
case "region":
|
case "region":
|
||||||
return regenRegion(player, Arrays.copyOfRange(args, 1, args.length));
|
return regenRegion(player, Arrays.copyOfRange(args, 1, args.length));
|
||||||
|
|
||||||
default:
|
default:
|
||||||
MainUtil.sendMessage(player, Captions.COMMAND_SYNTAX,
|
MainUtil.sendMessage(player, Captions.COMMAND_SYNTAX, DebugRoadRegen.USAGE);
|
||||||
DebugRoadRegen.USAGE);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean regenPlot(PlotPlayer player) {
|
public boolean regenPlot(PlotPlayer player) {
|
||||||
Location loc = player.getLocation();
|
Location location = player.getLocation();
|
||||||
PlotArea area = loc.getPlotArea();
|
PlotArea area = location.getPlotArea();
|
||||||
if (area == null) {
|
if (area == null) {
|
||||||
return sendMessage(player, Captions.NOT_IN_PLOT_WORLD);
|
return sendMessage(player, Captions.NOT_IN_PLOT_WORLD);
|
||||||
}
|
}
|
||||||
@ -82,8 +77,8 @@ public class DebugRoadRegen extends SubCommand {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Location loc = player.getLocation();
|
Location location = player.getLocation();
|
||||||
PlotArea area = loc.getPlotArea();
|
PlotArea area = location.getPlotArea();
|
||||||
if (area == null) {
|
if (area == null) {
|
||||||
return sendMessage(player, Captions.NOT_IN_PLOT_WORLD);
|
return sendMessage(player, Captions.NOT_IN_PLOT_WORLD);
|
||||||
}
|
}
|
||||||
|
@ -3,8 +3,16 @@ package com.github.intellectualsites.plotsquared.plot.commands;
|
|||||||
import com.github.intellectualsites.plotsquared.commands.CommandDeclaration;
|
import com.github.intellectualsites.plotsquared.commands.CommandDeclaration;
|
||||||
import com.github.intellectualsites.plotsquared.plot.config.Captions;
|
import com.github.intellectualsites.plotsquared.plot.config.Captions;
|
||||||
import com.github.intellectualsites.plotsquared.plot.config.Settings;
|
import com.github.intellectualsites.plotsquared.plot.config.Settings;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.*;
|
import com.github.intellectualsites.plotsquared.plot.object.Expression;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.*;
|
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",
|
@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>
|
// The syntax also works with any command: /plot <plot> <command>
|
||||||
|
|
||||||
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
|
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
|
||||||
Location loc = player.getLocation();
|
Location location = player.getLocation();
|
||||||
final Plot plot = loc.getPlotAbs();
|
final Plot plot = location.getPlotAbs();
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
return !sendMessage(player, Captions.NOT_IN_PLOT);
|
return !sendMessage(player, Captions.NOT_IN_PLOT);
|
||||||
}
|
}
|
||||||
@ -30,8 +38,9 @@ import com.github.intellectualsites.plotsquared.plot.util.*;
|
|||||||
}
|
}
|
||||||
final PlotArea plotArea = plot.getArea();
|
final PlotArea plotArea = plot.getArea();
|
||||||
final java.util.Set<Plot> plots = plot.getConnectedPlots();
|
final java.util.Set<Plot> plots = plot.getConnectedPlots();
|
||||||
final int currentPlots =
|
final int currentPlots = Settings.Limit.GLOBAL ?
|
||||||
Settings.Limit.GLOBAL ? player.getPlotCount() : player.getPlotCount(loc.getWorld());
|
player.getPlotCount() :
|
||||||
|
player.getPlotCount(location.getWorld());
|
||||||
Runnable run = new Runnable() {
|
Runnable run = new Runnable() {
|
||||||
@Override public void run() {
|
@Override public void run() {
|
||||||
if (plot.getRunning() > 0) {
|
if (plot.getRunning() > 0) {
|
||||||
|
@ -97,8 +97,8 @@ import java.util.UUID;
|
|||||||
if (player.getGameMode() == PlotGameMode.SPECTATOR) {
|
if (player.getGameMode() == PlotGameMode.SPECTATOR) {
|
||||||
player.stopSpectating();
|
player.stopSpectating();
|
||||||
}
|
}
|
||||||
Location loc = player.getLocation();
|
Location location = player.getLocation();
|
||||||
Location spawn = WorldUtil.IMP.getSpawn(loc.getWorld());
|
Location spawn = WorldUtil.IMP.getSpawn(location.getWorld());
|
||||||
MainUtil.sendMessage(player, Captions.YOU_GOT_DENIED);
|
MainUtil.sendMessage(player, Captions.YOU_GOT_DENIED);
|
||||||
if (plot.equals(spawn.getPlot())) {
|
if (plot.equals(spawn.getPlot())) {
|
||||||
Location newSpawn =
|
Location newSpawn =
|
||||||
|
@ -19,8 +19,8 @@ import com.github.intellectualsites.plotsquared.plot.util.expiry.PlotAnalysis;
|
|||||||
requiredType = RequiredType.NONE) public class Done extends SubCommand {
|
requiredType = RequiredType.NONE) public class Done extends SubCommand {
|
||||||
|
|
||||||
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
|
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
|
||||||
Location loc = player.getLocation();
|
Location location = player.getLocation();
|
||||||
final Plot plot = loc.getPlotAbs();
|
final Plot plot = location.getPlotAbs();
|
||||||
if ((plot == null) || !plot.hasOwner()) {
|
if ((plot == null) || !plot.hasOwner()) {
|
||||||
return !sendMessage(player, Captions.NOT_IN_PLOT);
|
return !sendMessage(player, Captions.NOT_IN_PLOT);
|
||||||
}
|
}
|
||||||
|
@ -24,10 +24,9 @@ import com.github.intellectualsites.plotsquared.plot.util.StringMan;
|
|||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@CommandDeclaration(command = "setflag", aliases = {"f", "flag", "setf", "setflag"},
|
@CommandDeclaration(command = "setflag", aliases = {"f", "flag",
|
||||||
usage = "/plot flag <set|remove|add|list|info> <flag> <value>", description = "Set plot flags",
|
"setflag"}, usage = "/plot flag <set|remove|add|list|info> <flag> <value>", description = "Set plot flags", category = CommandCategory.SETTINGS, requiredType = RequiredType.NONE, permission = "plots.flag")
|
||||||
category = CommandCategory.SETTINGS, requiredType = RequiredType.NONE,
|
public class FlagCmd extends SubCommand {
|
||||||
permission = "plots.flag") public class FlagCmd extends SubCommand {
|
|
||||||
|
|
||||||
private boolean checkPermValue(PlotPlayer player, Flag flag, String key, String value) {
|
private boolean checkPermValue(PlotPlayer player, Flag flag, String key, String value) {
|
||||||
key = key.toLowerCase();
|
key = key.toLowerCase();
|
||||||
@ -90,8 +89,8 @@ import java.util.*;
|
|||||||
MainUtil.sendMessage(player, Captions.COMMAND_SYNTAX, getUsage());
|
MainUtil.sendMessage(player, Captions.COMMAND_SYNTAX, getUsage());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Location loc = player.getLocation();
|
Location location = player.getLocation();
|
||||||
Plot plot = loc.getPlotAbs();
|
Plot plot = location.getPlotAbs();
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
MainUtil.sendMessage(player, Captions.NOT_IN_PLOT);
|
MainUtil.sendMessage(player, Captions.NOT_IN_PLOT);
|
||||||
return false;
|
return false;
|
||||||
|
@ -14,9 +14,8 @@ import com.github.intellectualsites.plotsquared.plot.util.StringMan;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@CommandDeclaration(command = "inbox", description = "Review the comments for a plot",
|
@CommandDeclaration(command = "inbox", description = "Review the comments for a plot",
|
||||||
usage = "/plot inbox [inbox] [delete <index>|clear|page]", permission = "plots.inbox",
|
usage = "/plot inbox [inbox] [delete <index>|clear|page]", permission = "plots.inbox", category = CommandCategory.CHAT, requiredType = RequiredType.PLAYER)
|
||||||
category = CommandCategory.CHAT, requiredType = RequiredType.PLAYER) public class Inbox
|
public class Inbox extends SubCommand {
|
||||||
extends SubCommand {
|
|
||||||
|
|
||||||
public void displayComments(PlotPlayer player, List<PlotComment> oldComments, int page) {
|
public void displayComments(PlotPlayer player, List<PlotComment> oldComments, int page) {
|
||||||
if (oldComments == null || oldComments.isEmpty()) {
|
if (oldComments == null || oldComments.isEmpty()) {
|
||||||
@ -178,8 +177,7 @@ import java.util.List;
|
|||||||
try {
|
try {
|
||||||
page = Integer.parseInt(args[1]);
|
page = Integer.parseInt(args[1]);
|
||||||
} catch (NumberFormatException ignored) {
|
} catch (NumberFormatException ignored) {
|
||||||
sendMessage(player, Captions.COMMAND_SYNTAX,
|
sendMessage(player, Captions.COMMAND_SYNTAX, getUsage());
|
||||||
"/plot inbox [inbox] [delete <index>|clear|page]");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -193,19 +193,19 @@ public class MainCommand extends Command {
|
|||||||
// Clear perm caching //
|
// Clear perm caching //
|
||||||
player.deleteMeta("perm");
|
player.deleteMeta("perm");
|
||||||
// Optional command scope //
|
// Optional command scope //
|
||||||
Location loc = null;
|
Location location = null;
|
||||||
Plot plot = null;
|
Plot plot = null;
|
||||||
boolean tp = false;
|
boolean tp = false;
|
||||||
if (args.length >= 2) {
|
if (args.length >= 2) {
|
||||||
PlotArea area = player.getApplicablePlotArea();
|
PlotArea area = player.getApplicablePlotArea();
|
||||||
Plot newPlot = Plot.fromString(area, args[0]);
|
Plot newPlot = Plot.fromString(area, args[0]);
|
||||||
if (newPlot != null && (player instanceof ConsolePlayer || newPlot.getArea()
|
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())) {
|
&& !newPlot.isDenied(player.getUUID())) {
|
||||||
Location newLoc = newPlot.getCenter();
|
Location newLoc = newPlot.getCenter();
|
||||||
if (player.canTeleport(newLoc)) {
|
if (player.canTeleport(newLoc)) {
|
||||||
// Save meta
|
// Save meta
|
||||||
loc = player.getMeta(PlotPlayer.META_LOCATION);
|
location = player.getMeta(PlotPlayer.META_LOCATION);
|
||||||
plot = player.getMeta(PlotPlayer.META_LAST_PLOT);
|
plot = player.getMeta(PlotPlayer.META_LAST_PLOT);
|
||||||
tp = true;
|
tp = true;
|
||||||
// Set loc
|
// Set loc
|
||||||
@ -262,10 +262,10 @@ public class MainCommand extends Command {
|
|||||||
}
|
}
|
||||||
// Reset command scope //
|
// Reset command scope //
|
||||||
if (tp && !(player instanceof ConsolePlayer)) {
|
if (tp && !(player instanceof ConsolePlayer)) {
|
||||||
if (loc == null) {
|
if (location == null) {
|
||||||
player.deleteMeta(PlotPlayer.META_LOCATION);
|
player.deleteMeta(PlotPlayer.META_LOCATION);
|
||||||
} else {
|
} else {
|
||||||
player.setMeta(PlotPlayer.META_LOCATION, loc);
|
player.setMeta(PlotPlayer.META_LOCATION, location);
|
||||||
}
|
}
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
player.deleteMeta(PlotPlayer.META_LAST_PLOT);
|
player.deleteMeta(PlotPlayer.META_LAST_PLOT);
|
||||||
|
@ -3,6 +3,7 @@ package com.github.intellectualsites.plotsquared.plot.commands;
|
|||||||
import com.github.intellectualsites.plotsquared.commands.CommandDeclaration;
|
import com.github.intellectualsites.plotsquared.commands.CommandDeclaration;
|
||||||
import com.github.intellectualsites.plotsquared.plot.config.Captions;
|
import com.github.intellectualsites.plotsquared.plot.config.Captions;
|
||||||
import com.github.intellectualsites.plotsquared.plot.config.Settings;
|
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.Expression;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.Location;
|
import com.github.intellectualsites.plotsquared.plot.object.Location;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.Plot;
|
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 java.util.UUID;
|
||||||
|
|
||||||
|
import static com.github.intellectualsites.plotsquared.plot.object.Direction.getFromIndex;
|
||||||
|
|
||||||
@CommandDeclaration(command = "merge", aliases = "m",
|
@CommandDeclaration(command = "merge", aliases = "m",
|
||||||
description = "Merge the plot you are standing on with another plot",
|
description = "Merge the plot you are standing on with another plot",
|
||||||
permission = "plots.merge", usage = "/plot merge <all|n|e|s|w> [removeroads]",
|
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) {
|
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
|
||||||
Location loc = player.getLocationFull();
|
Location location = player.getLocationFull();
|
||||||
final Plot plot = loc.getPlotAbs();
|
final Plot plot = location.getPlotAbs();
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
return !sendMessage(player, Captions.NOT_IN_PLOT);
|
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));
|
MainUtil.sendMessage(player, Captions.NO_PERMISSION, "plots.merge." + (size + 1));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
int direction = -1;
|
Direction direction = Direction.ALL;
|
||||||
if (args.length == 0) {
|
if (args.length == 0) {
|
||||||
switch (direction(player.getLocationFull().getYaw())) {
|
switch (direction(player.getLocationFull().getYaw())) {
|
||||||
case "NORTH":
|
case "NORTH":
|
||||||
direction = 0;
|
direction = Direction.NORTH;
|
||||||
break;
|
break;
|
||||||
case "EAST":
|
case "EAST":
|
||||||
direction = 1;
|
direction = Direction.EAST;
|
||||||
break;
|
break;
|
||||||
case "SOUTH":
|
case "SOUTH":
|
||||||
direction = 2;
|
direction = Direction.SOUTH;
|
||||||
break;
|
break;
|
||||||
case "WEST":
|
case "WEST":
|
||||||
direction = 3;
|
direction = Direction.WEST;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -110,7 +113,7 @@ public class Merge extends SubCommand {
|
|||||||
Captions.PERMISSION_MERGE_KEEP_ROAD.getTranslated());
|
Captions.PERMISSION_MERGE_KEEP_ROAD.getTranslated());
|
||||||
return true;
|
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) {
|
if (EconHandler.manager != null && plotArea.USE_ECONOMY && price > 0d) {
|
||||||
EconHandler.manager.withdrawMoney(player, price);
|
EconHandler.manager.withdrawMoney(player, price);
|
||||||
sendMessage(player, Captions.REMOVED_BALANCE, String.valueOf(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++) {
|
for (int i = 0; i < values.length; i++) {
|
||||||
if (args[0].equalsIgnoreCase(values[i]) || args[0].equalsIgnoreCase(aliases[i])) {
|
if (args[0].equalsIgnoreCase(values[i]) || args[0].equalsIgnoreCase(aliases[i])) {
|
||||||
direction = i;
|
direction = getFromIndex(i);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (direction == -1) {
|
if (direction == Direction.ALL) {
|
||||||
MainUtil.sendMessage(player, Captions.COMMAND_SYNTAX,
|
MainUtil.sendMessage(player, Captions.COMMAND_SYNTAX,
|
||||||
"/plot merge <" + StringMan.join(values, "|") + "> [removeroads]");
|
"/plot merge <" + StringMan.join(values, "|") + "> [removeroads]");
|
||||||
MainUtil.sendMessage(player,
|
MainUtil.sendMessage(player, Captions.DIRECTION.getTranslated()
|
||||||
Captions.DIRECTION.getTranslated().replaceAll("%dir%", direction(loc.getYaw())));
|
.replaceAll("%dir%", direction(location.getYaw())));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
final boolean terrain;
|
final boolean terrain;
|
||||||
@ -156,7 +159,8 @@ public class Merge extends SubCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
Plot adjacent = plot.getRelative(direction);
|
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)) {
|
|| adjacent.isOwner(uuid)) {
|
||||||
MainUtil.sendMessage(player, Captions.NO_AVAILABLE_AUTOMERGE);
|
MainUtil.sendMessage(player, Captions.NO_AVAILABLE_AUTOMERGE);
|
||||||
return false;
|
return false;
|
||||||
@ -173,7 +177,7 @@ public class Merge extends SubCommand {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
isOnline = true;
|
isOnline = true;
|
||||||
final int dir = direction;
|
final Direction dir = direction;
|
||||||
Runnable run = () -> {
|
Runnable run = () -> {
|
||||||
MainUtil.sendMessage(accepter, Captions.MERGE_ACCEPTED);
|
MainUtil.sendMessage(accepter, Captions.MERGE_ACCEPTED);
|
||||||
plot.autoMerge(dir, maxSize - size, owner, terrain);
|
plot.autoMerge(dir, maxSize - size, owner, terrain);
|
||||||
|
@ -15,8 +15,8 @@ import com.github.intellectualsites.plotsquared.plot.util.Permissions;
|
|||||||
requiredType = RequiredType.PLAYER) public class Move extends SubCommand {
|
requiredType = RequiredType.PLAYER) public class Move extends SubCommand {
|
||||||
|
|
||||||
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
|
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
|
||||||
Location loc = player.getLocation();
|
Location location = player.getLocation();
|
||||||
Plot plot1 = loc.getPlotAbs();
|
Plot plot1 = location.getPlotAbs();
|
||||||
if (plot1 == null) {
|
if (plot1 == null) {
|
||||||
return !MainUtil.sendMessage(player, Captions.NOT_IN_PLOT);
|
return !MainUtil.sendMessage(player, Captions.NOT_IN_PLOT);
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,11 @@ package com.github.intellectualsites.plotsquared.plot.commands;
|
|||||||
import com.github.intellectualsites.plotsquared.commands.CommandDeclaration;
|
import com.github.intellectualsites.plotsquared.commands.CommandDeclaration;
|
||||||
import com.github.intellectualsites.plotsquared.plot.config.Captions;
|
import com.github.intellectualsites.plotsquared.plot.config.Captions;
|
||||||
import com.github.intellectualsites.plotsquared.plot.flag.Flags;
|
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.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@ -20,8 +24,8 @@ import java.util.Locale;
|
|||||||
"music_disc_strad", "music_disc_ward", "music_disc_11", "music_disc_wait");
|
"music_disc_strad", "music_disc_ward", "music_disc_11", "music_disc_wait");
|
||||||
|
|
||||||
@Override public boolean onCommand(PlotPlayer player, String[] args) {
|
@Override public boolean onCommand(PlotPlayer player, String[] args) {
|
||||||
Location loc = player.getLocation();
|
Location location = player.getLocation();
|
||||||
final Plot plot = loc.getPlotAbs();
|
final Plot plot = location.getPlotAbs();
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
return !sendMessage(player, Captions.NOT_IN_PLOT);
|
return !sendMessage(player, Captions.NOT_IN_PLOT);
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ import java.util.UUID;
|
|||||||
@CommandDeclaration(command = "setowner", permission = "plots.set.owner",
|
@CommandDeclaration(command = "setowner", permission = "plots.set.owner",
|
||||||
description = "Set the plot owner", usage = "/plot setowner <player>",
|
description = "Set the plot owner", usage = "/plot setowner <player>",
|
||||||
aliases = {"owner", "so", "seto"}, category = CommandCategory.CLAIMING,
|
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) {
|
@Override public boolean set(final PlotPlayer player, final Plot plot, String value) {
|
||||||
Set<Plot> plots = plot.getConnectedPlots();
|
Set<Plot> plots = plot.getConnectedPlots();
|
||||||
|
@ -22,8 +22,8 @@ import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
|
|||||||
"$2>> $1&lAuthors$2: $1Citymonstret $2& $1Empire92 $2& $1MattBDev $2& $1dordsor21");
|
"$2>> $1&lAuthors$2: $1Citymonstret $2& $1Empire92 $2& $1MattBDev $2& $1dordsor21");
|
||||||
MainUtil.sendMessage(player,
|
MainUtil.sendMessage(player,
|
||||||
"$2>> $1&lWiki$2: $1https://github.com/IntellectualSites/PlotSquared/wiki");
|
"$2>> $1&lWiki$2: $1https://github.com/IntellectualSites/PlotSquared/wiki");
|
||||||
MainUtil.sendMessage(player,
|
// MainUtil.sendMessage(player,
|
||||||
"$2>> $1&lNewest Version$2: $1" + getNewestVersionString());
|
// "$2>> $1&lNewest Version$2: $1" + getNewestVersionString());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
|
@ -19,7 +19,7 @@ import java.util.UUID;
|
|||||||
|
|
||||||
@CommandDeclaration(command = "remove", aliases = {"r", "untrust", "ut", "undeny", "unban", "ud"},
|
@CommandDeclaration(command = "remove", aliases = {"r", "untrust", "ut", "undeny", "unban", "ud"},
|
||||||
description = "Remove a player from a plot", usage = "/plot remove <player>",
|
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 {
|
permission = "plots.remove") public class Remove extends SubCommand {
|
||||||
|
|
||||||
public Remove() {
|
public Remove() {
|
||||||
|
@ -158,8 +158,7 @@ public class SchematicCmd extends SubCommand {
|
|||||||
}
|
}
|
||||||
Collection<Plot> plots = area.getPlots();
|
Collection<Plot> plots = area.getPlots();
|
||||||
if (plots.isEmpty()) {
|
if (plots.isEmpty()) {
|
||||||
MainUtil
|
MainUtil.sendMessage(player, Captions.SCHEMATIC_EXPORTALL_WORLD);
|
||||||
.sendMessage(player, Captions.SCHEMATIC_EXPORTALL_WORLD);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
boolean result = SchematicHandler.manager.exportAll(plots, null, null,
|
boolean result = SchematicHandler.manager.exportAll(plots, null, null,
|
||||||
@ -169,7 +168,7 @@ public class SchematicCmd extends SubCommand {
|
|||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
MainUtil.sendMessage(player, Captions.SCHEMATIC_EXPORTALL_STARTED);
|
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;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -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.flag.Flags;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.BlockBucket;
|
import com.github.intellectualsites.plotsquared.plot.object.BlockBucket;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.Plot;
|
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.PlotBlock;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.PlotManager;
|
import com.github.intellectualsites.plotsquared.plot.object.PlotManager;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
|
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) {
|
@Override public boolean set(PlotPlayer player, final Plot plot, String value) {
|
||||||
PlotArea plotArea = player.getLocation().getPlotArea();
|
|
||||||
PlotManager manager = player.getLocation().getPlotManager();
|
PlotManager manager = player.getLocation().getPlotManager();
|
||||||
String[] components = manager.getPlotComponents(plot.getId());
|
String[] components = manager.getPlotComponents(plot.getId());
|
||||||
boolean allowUnsafe = DebugAllowUnsafe.unsafeAllowed.contains(player.getUUID());
|
boolean allowUnsafe = DebugAllowUnsafe.unsafeAllowed.contains(player.getUUID());
|
||||||
|
@ -11,8 +11,8 @@ import com.github.intellectualsites.plotsquared.plot.util.StringMan;
|
|||||||
public abstract class SetCommand extends SubCommand {
|
public abstract class SetCommand extends SubCommand {
|
||||||
|
|
||||||
@Override public boolean onCommand(PlotPlayer player, String[] args) {
|
@Override public boolean onCommand(PlotPlayer player, String[] args) {
|
||||||
Location loc = player.getLocation();
|
Location location = player.getLocation();
|
||||||
Plot plot = loc.getPlotAbs();
|
Plot plot = location.getPlotAbs();
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
return !sendMessage(player, Captions.NOT_IN_PLOT);
|
return !sendMessage(player, Captions.NOT_IN_PLOT);
|
||||||
}
|
}
|
||||||
|
@ -25,11 +25,10 @@ public class SetHome extends SetCommand {
|
|||||||
}
|
}
|
||||||
case "":
|
case "":
|
||||||
Plot base = plot.getBasePlot(false);
|
Plot base = plot.getBasePlot(false);
|
||||||
Location bot = base.getBottomAbs();
|
Location bottom = base.getBottomAbs();
|
||||||
Location loc = player.getLocationFull();
|
Location location = player.getLocationFull();
|
||||||
BlockLoc rel =
|
BlockLoc rel = new BlockLoc(location.getX() - bottom.getX(), location.getY(),
|
||||||
new BlockLoc(loc.getX() - bot.getX(), loc.getY(), loc.getZ() - bot.getZ(),
|
location.getZ() - bottom.getZ(), location.getYaw(), location.getPitch());
|
||||||
loc.getYaw(), loc.getPitch());
|
|
||||||
base.setHome(rel);
|
base.setHome(rel);
|
||||||
return MainUtil.sendMessage(player, Captions.POSITION_SET);
|
return MainUtil.sendMessage(player, Captions.POSITION_SET);
|
||||||
default:
|
default:
|
||||||
|
@ -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.StringMan;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.WorldUtil;
|
import com.github.intellectualsites.plotsquared.plot.util.WorldUtil;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
@ -288,6 +288,11 @@ import java.util.Map.Entry;
|
|||||||
MainUtil.sendMessage(player, "&cYou need to choose a world name!");
|
MainUtil.sendMessage(player, "&cYou need to choose a world name!");
|
||||||
return false;
|
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 (WorldUtil.IMP.isWorld(args[0])) {
|
||||||
if (PlotSquared.get().hasPlotArea(args[0])) {
|
if (PlotSquared.get().hasPlotArea(args[0])) {
|
||||||
MainUtil.sendMessage(player, "&cThat world name is already taken!");
|
MainUtil.sendMessage(player, "&cThat world name is already taken!");
|
||||||
@ -317,6 +322,11 @@ import java.util.Map.Entry;
|
|||||||
return false;
|
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 {
|
private static final class StepPickGenerator extends SetupStep {
|
||||||
|
|
||||||
@Getter private String generator;
|
@Getter private String generator;
|
||||||
|
@ -13,8 +13,8 @@ import com.github.intellectualsites.plotsquared.plot.util.Permissions;
|
|||||||
public class Swap extends SubCommand {
|
public class Swap extends SubCommand {
|
||||||
|
|
||||||
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
|
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
|
||||||
Location loc = player.getLocation();
|
Location location = player.getLocation();
|
||||||
Plot plot1 = loc.getPlotAbs();
|
Plot plot1 = location.getPlotAbs();
|
||||||
if (plot1 == null) {
|
if (plot1 == null) {
|
||||||
return !MainUtil.sendMessage(player, Captions.NOT_IN_PLOT);
|
return !MainUtil.sendMessage(player, Captions.NOT_IN_PLOT);
|
||||||
}
|
}
|
||||||
|
@ -9,10 +9,9 @@ import com.github.intellectualsites.plotsquared.plot.object.RunnableVal3;
|
|||||||
import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
|
import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
|
||||||
|
|
||||||
@CommandDeclaration(command = "toggle", aliases = {"attribute"}, permission = "plots.use",
|
@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,
|
description = "Toggle per user settings", requiredType = RequiredType.NONE,
|
||||||
category = CommandCategory.SETTINGS) public class Toggle extends Command {
|
category = CommandCategory.SETTINGS) public class Toggle extends Command {
|
||||||
|
|
||||||
public Toggle() {
|
public Toggle() {
|
||||||
super(MainCommand.getInstance(), true);
|
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) {
|
public boolean toggle(PlotPlayer player, String key) {
|
||||||
if (player.getAttribute(key)) {
|
if (player.getAttribute(key)) {
|
||||||
player.removeAttribute(key);
|
player.removeAttribute(key);
|
||||||
|
@ -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.Location;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.Plot;
|
import com.github.intellectualsites.plotsquared.plot.object.Plot;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
|
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"},
|
@CommandDeclaration(command = "unlink", aliases = {"u", "unmerge"},
|
||||||
description = "Unlink a mega-plot", usage = "/plot unlink [createroads]",
|
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 {
|
public class Unlink extends SubCommand {
|
||||||
|
|
||||||
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
|
@Override public boolean onCommand(final PlotPlayer player, String[] args) {
|
||||||
|
Location location = player.getLocation();
|
||||||
Location loc = player.getLocation();
|
final Plot plot = location.getPlotAbs();
|
||||||
final Plot plot = loc.getPlotAbs();
|
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
return !sendMessage(player, Captions.NOT_IN_PLOT);
|
return !sendMessage(player, Captions.NOT_IN_PLOT);
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,8 @@ import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
|
|||||||
|
|
||||||
@CommandDeclaration(command = "weanywhere", permission = "plots.worldedit.bypass",
|
@CommandDeclaration(command = "weanywhere", permission = "plots.worldedit.bypass",
|
||||||
description = "Force bypass of WorldEdit restrictions", aliases = {"wea"}, usage = "/plot weanywhere",
|
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 {
|
public class WE_Anywhere extends SubCommand {
|
||||||
|
|
||||||
@Override public boolean onCommand(PlotPlayer player, String[] arguments) {
|
@Override public boolean onCommand(PlotPlayer player, String[] arguments) {
|
||||||
|
@ -59,8 +59,8 @@ public enum Captions {
|
|||||||
PERMISSION_ADMIN_ENTRY_DENIED("plots.admin.entry.denied", "static.permissions"),
|
PERMISSION_ADMIN_ENTRY_DENIED("plots.admin.entry.denied", "static.permissions"),
|
||||||
PERMISSION_ADMIN_ENTRY_FORCEFIELD("plots.admin.entry.forcefield", "static.permissions"),
|
PERMISSION_ADMIN_ENTRY_FORCEFIELD("plots.admin.entry.forcefield", "static.permissions"),
|
||||||
PERMISSION_COMMANDS_CHAT("plots.admin.command.chat", "static.permissions"),
|
PERMISSION_COMMANDS_CHAT("plots.admin.command.chat", "static.permissions"),
|
||||||
PERMISSION_MERGE_OTHER("plots.merge.other", "static.permissions"),
|
PERMISSION_MERGE_OTHER("plots.merge.other", "static.permissions"), PERMISSION_MERGE_KEEP_ROAD(
|
||||||
PERMISSION_MERGE_KEEP_ROAD("plots.merge.keeproad", "static.permissions"),
|
"plots.merge.keeproad", "static.permissions"),
|
||||||
PERMISSION_ADMIN_DESTROY_UNOWNED("plots.admin.destroy.unowned", "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_GROUNDLEVEL("plots.admin.destroy.groundlevel", "static.permissions"),
|
||||||
PERMISSION_ADMIN_DESTROY_OTHER("plots.admin.destroy.other", "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_BUILD_OTHER("plots.admin.build.other", "static.permissions"),
|
||||||
PERMISSION_ADMIN_INTERACT_ROAD("plots.admin.interact.road", "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_UNOWNED("plots.admin.interact.unowned", "static.permissions"),
|
||||||
PERMISSION_ADMIN_INTERACT_OTHER("plots.admin.interact.other", "static.permissions"),
|
PERMISSION_ADMIN_INTERACT_OTHER("plots.admin.interact.other", "static.permissions"), PERMISSION_ADMIN_BUILD_HEIGHT_LIMIT(
|
||||||
PERMISSION_ADMIN_BUILD_HEIGHT_LIMIT("plots.admin.build.heightlimit", "static.permissions"),
|
"plots.admin.build.heightlimit", "static.permissions"),
|
||||||
PERMISSION_ADMIN_UPDATE("plots.admin.command.update", "static.permissions"),
|
PERMISSION_ADMIN_UPDATE("plots.admin.command.update", "static.permissions"),
|
||||||
PERMISSION_ADMIN_COMMAND_RATE("plots.admin.command.rate", "static.permissions"),
|
PERMISSION_ADMIN_COMMAND_RATE("plots.admin.command.rate", "static.permissions"),
|
||||||
PERMISSION_ADMIN_COMMAND_TRUST("plots.admin.command.trust", "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_ADD("plots.flag.add", "static.permissions"),
|
||||||
PERMISSION_FLAG_LIST("plots.flag.list", "static.permissions"),
|
PERMISSION_FLAG_LIST("plots.flag.list", "static.permissions"),
|
||||||
PERMISSION_ADMIN_COMMAND_KICK("plots.admin.command.kick", "static.permissions"),
|
PERMISSION_ADMIN_COMMAND_KICK("plots.admin.command.kick", "static.permissions"),
|
||||||
PERMISSION_GRANT("plots.grant.%s0", "static.permissions"),
|
PERMISSION_GRANT("plots.grant.%s0", "static.permissions"), PERMISSION_LIST_FOR_SALE(
|
||||||
PERMISSION_LIST_FOR_SALE("plots.list.forsale", "static.permissions"),
|
"plots.list.forsale", "static.permissions"),
|
||||||
PERMISSION_LIST_MINE("plots.list.mine", "static.permissions"),
|
PERMISSION_LIST_MINE("plots.list.mine", "static.permissions"),
|
||||||
PERMISSION_LIST_SHARED("plots.list.shared", "static.permissions"),
|
PERMISSION_LIST_SHARED("plots.list.shared", "static.permissions"),
|
||||||
PERMISSION_LIST_WORLD("plots.list.world", "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_FUZZY("plots.list.fuzzy", "static.permissions"),
|
||||||
PERMISSION_LIST_AREA("plots.list.area", "static.permissions"),
|
PERMISSION_LIST_AREA("plots.list.area", "static.permissions"),
|
||||||
PERMISSION_ADMIN_COMMAND_LOAD("plots.admin.command.load", "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_MERGE("plots.admin.command.merge", "static.permissions"), PERMISSION_ADMIN_COMMAND_SET_OWNER(
|
||||||
PERMISSION_ADMIN_COMMAND_SET_OWNER("plots.admin.command.setowner", "static.permissions"),
|
"plots.admin.command.setowner", "static.permissions"),
|
||||||
PERMISSION_COMMENT("plots.comment", "static.permissions"),
|
PERMISSION_COMMENT("plots.comment", "static.permissions"),
|
||||||
PERMISSION_ADMIN_COMMAND_REMOVE("plots.admin.command.remove", "static.permissions"),
|
PERMISSION_ADMIN_COMMAND_REMOVE("plots.admin.command.remove", "static.permissions"),
|
||||||
PERMISSION_ADMIN_COMMAND_SAVE("plots.admin.command.save", "static.permissions"),
|
PERMISSION_ADMIN_COMMAND_SAVE("plots.admin.command.save", "static.permissions"),
|
||||||
@ -224,15 +224,9 @@ public enum Captions {
|
|||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
//<editor-fold desc="Border">
|
//<editor-fold desc="Border">
|
||||||
BORDER("$2You are outside the current map border", "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_BYPASS("$2&oTo bypass your restrictions use $4/plot wea", "WorldEdit Masks"),
|
||||||
WORLDEDIT_BYPASSED("$2Currently bypassing WorldEdit restriction.", "WorldEdit Masks"),
|
WORLDEDIT_BYPASSED("$2Currently bypassing WorldEdit restriction.", "WorldEdit Masks"),
|
||||||
//</editor-fold>
|
GAMEMODE_WAS_BYPASSED("$1You bypassed the GameMode ($2{gamemode}$1) $1set for $2{plot}", "GameMode"),
|
||||||
//<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">
|
|
||||||
HEIGHT_LIMIT("$1This plot area has a height limit of $2{limit}", "Height Limit"),
|
HEIGHT_LIMIT("$1This plot area has a height limit of $2{limit}", "Height Limit"),
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
//<editor-fold desc="Records">
|
//<editor-fold desc="Records">
|
||||||
@ -244,9 +238,8 @@ public enum Captions {
|
|||||||
SWAP_DIMENSIONS("$2The proposed areas must have comparable dimensions", "Swap"),
|
SWAP_DIMENSIONS("$2The proposed areas must have comparable dimensions", "Swap"),
|
||||||
SWAP_SYNTAX("$2/plot swap <id>", "Swap"),
|
SWAP_SYNTAX("$2/plot swap <id>", "Swap"),
|
||||||
SWAP_SUCCESS("$4Successfully swapped plots", "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>
|
||||||
//<editor-fold desc="Comment">
|
//<editor-fold desc="Comments">
|
||||||
INBOX_NOTIFICATION("%s unread messages. Use /plot inbox", "Comment"),
|
INBOX_NOTIFICATION("%s unread messages. Use /plot inbox", "Comment"),
|
||||||
NOT_VALID_INBOX_INDEX("$2No comment at index %s", "Comment"),
|
NOT_VALID_INBOX_INDEX("$2No comment at index %s", "Comment"),
|
||||||
INBOX_ITEM("$2 - $4%s", "Comment"),
|
INBOX_ITEM("$2 - $4%s", "Comment"),
|
||||||
@ -271,8 +264,6 @@ public enum Captions {
|
|||||||
//<editor-fold desc="Toggle">
|
//<editor-fold desc="Toggle">
|
||||||
TOGGLE_ENABLED("$2Enabled setting: %s", "Toggle"),
|
TOGGLE_ENABLED("$2Enabled setting: %s", "Toggle"),
|
||||||
TOGGLE_DISABLED("$2Disabled 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"),
|
COMMAND_BLOCKED("$2That command is not allowed in this plot", "Blocked Command"),
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
//<editor-fold desc="Done">
|
//<editor-fold desc="Done">
|
||||||
@ -303,7 +294,7 @@ public enum Captions {
|
|||||||
NOT_FOR_SALE("$2This plot is not for sale", "Economy"),
|
NOT_FOR_SALE("$2This plot is not for sale", "Economy"),
|
||||||
CANNOT_BUY_OWN("$2You cannot buy your own plot", "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"),
|
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"),
|
ADDED_BALANCE("$1%s $2has been added to your balance", "Economy"),
|
||||||
REMOVED_BALANCE("$1%s $2has been taken from 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"),
|
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 "
|
"$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"),
|
+ "your chosen world management plugin.", "Setup"),
|
||||||
SETUP_WORLD_TAKEN("$2%s is already a world", "Setup"),
|
SETUP_WORLD_TAKEN("$2%s is already a world", "Setup"),
|
||||||
|
|
||||||
SETUP_MISSING_WORLD(
|
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 -"
|
"$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"),
|
+ " $1/plot setup back&-$2 - $1/plot setup cancel", "Setup"),
|
||||||
SETUP_MISSING_GENERATOR(
|
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 - "
|
"$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"),
|
+ "$1/plot setup back&-$2 - $1/plot setup cancel", "Setup"),
|
||||||
|
|
||||||
SETUP_INVALID_GENERATOR("$2Invalid generator. Possible options: %s", "Setup"),
|
SETUP_INVALID_GENERATOR("$2Invalid generator. Possible options: %s", "Setup"),
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
//<editor-fold desc="Schematics">
|
//<editor-fold desc="Schematic">
|
||||||
SCHEMATIC_TOO_LARGE("$2The plot is too large for this action!", "Schematics"),
|
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_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_INVALID("$2That is not a valid schematic. Reason: $2%s", "Schematics"),
|
||||||
SCHEMATIC_VALID("$2That is a valid schematic", "Schematics"),
|
SCHEMATIC_VALID("$2That is a valid schematic", "Schematics"),
|
||||||
SCHEMATIC_PASTE_FAILED("$2Failed to paste the 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"),
|
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"),
|
MCA_FILE_SIZE("$1Note: The `.mca` files are 512x512", "Schematics"),
|
||||||
SCHEMATIC_EXPORTALL_STARTED("$1Starting export...", "Schematics"),
|
SCHEMATIC_EXPORTALL_STARTED("$1Starting export...", "Schematics"),
|
||||||
SCHEMATIC_EXPORTALL_WORLD_ARGS("$1Need world argument. Use $3/plot schem exportall <area>", "Schematics"),
|
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>", "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", "Schematicss"),
|
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_COUNT("$1Found $3%s $1plots...", "Schematics"),
|
||||||
SCHEMATIC_EXPORTALL_FINISHED("$1Finished mass export", "Schematics"),
|
SCHEMATIC_EXPORTALL_FINISHED("$1Finished mass export", "Schematics"),
|
||||||
SCHEMATIC_EXPORTALL_SINGLE_FINISHED("$1Finished export", "Schematics"),
|
SCHEMATIC_EXPORTALL_SINGLE_FINISHED("$1Finished export", "Schematics"),
|
||||||
|
TASK_IN_PROCESS("$1Task is already running.", "Error"),
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
//<editor-fold desc="Titles">
|
//<editor-fold desc="Titles">
|
||||||
TITLE_ENTERED_PLOT("$1Plot: %world%;%x%;%z%", "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"),
|
RELOADED_CONFIGS("$1Translations and world settings have been reloaded", "Reload"),
|
||||||
RELOAD_FAILED("$2Failed to reload file configurations", "Reload"),
|
RELOAD_FAILED("$2Failed to reload file configurations", "Reload"),
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
//<editor-fold desc="Desc">
|
//<editor-fold desc="Description">
|
||||||
DESC_SET("$2Plot description set", "Desc"),
|
DESC_SET("$2Plot description set", "Desc"),
|
||||||
DESC_UNSET("$2Plot description unset", "Desc"),
|
DESC_UNSET("$2Plot description unset", "Desc"),
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
//<editor-fold desc="Alias">
|
//<editor-fold desc="Alias">
|
||||||
ALIAS_SET_TO("$2Plot alias set to $1%alias%", "Alias"),
|
ALIAS_SET_TO("$2Plot alias set to $1%alias%", "Alias"),
|
||||||
ALIAS_REMOVED("$2Plot alias removed", "Alias"),
|
ALIAS_REMOVED("$2Plot alias removed", "Alias"),
|
||||||
|
|
||||||
ALIAS_TOO_LONG("$2The alias must be < 50 characters in length", "Alias"),
|
ALIAS_TOO_LONG("$2The alias must be < 50 characters in length", "Alias"),
|
||||||
ALIAS_IS_TAKEN("$2That alias is already taken", "Alias"),
|
ALIAS_IS_TAKEN("$2That alias is already taken", "Alias"),
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
@ -379,6 +376,7 @@ public enum Captions {
|
|||||||
NO_PLOT_PERMS("$2You must be the plot owner to perform this action", "Permission"),
|
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_PLOTS("$2You can't claim more plots.", "Permission"),
|
||||||
CANT_CLAIM_MORE_CLUSTERS("$2You can't claim more clusters.", "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_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"),
|
CANT_CLAIM_MORE_PLOTS_NUM("$2You can't claim more than $1%s $2plots at once", "Permission"),
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
@ -390,8 +388,8 @@ public enum Captions {
|
|||||||
MERGE_REQUEST_CONFIRM("Merge request from %s", "Permission"),
|
MERGE_REQUEST_CONFIRM("Merge request from %s", "Permission"),
|
||||||
NO_PERM_MERGE("$2You are not the owner of the plot: $1%plot%", "Merge"),
|
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"),
|
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"),
|
UNLINK_IMPOSSIBLE("$2You can only unlink a mega-plot", "Merge"),
|
||||||
|
UNMERGE_CANCELLED("$1Unlink has been cancelled", "Merge"),
|
||||||
UNLINK_SUCCESS("$2Successfully unlinked plots.", "Merge"),
|
UNLINK_SUCCESS("$2Successfully unlinked plots.", "Merge"),
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
//<editor-fold desc="CommandConfig">
|
//<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"),
|
NOT_VALID_PLOT_WORLD("$2That is not a valid plot area (case sensitive)", "Errors"),
|
||||||
NO_PLOTS("$2You don't have any plots", "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"),
|
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>
|
||||||
//<editor-fold desc="Paste">
|
|
||||||
DEBUG_REPORT_CREATED("$1Uploaded a full debug to: $1%url%", "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"),
|
PURGE_SUCCESS("$4Successfully purged %s plots", "Purge"),
|
||||||
//</editor-fold>
|
|
||||||
//<editor-fold desc="Trim">
|
//<editor-fold desc="Trim">
|
||||||
TRIM_IN_PROGRESS("A world trim task is already in progress!", "Trim"),
|
TRIM_IN_PROGRESS("A world trim task is already in progress!", "Trim"),
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
@ -443,7 +436,7 @@ public enum Captions {
|
|||||||
//<editor-fold desc="Set Block">
|
//<editor-fold desc="Set Block">
|
||||||
SET_BLOCK_ACTION_FINISHED("$1The last setblock action is now finished.", "Set Block"),
|
SET_BLOCK_ACTION_FINISHED("$1The last setblock action is now finished.", "Set Block"),
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
//<editor-fold desc="unsafe">
|
//<editor-fold desc="AllowUnsafe">
|
||||||
DEBUGALLOWUNSAFE_ON("$2Unsafe actions allowed", "unsafe"),
|
DEBUGALLOWUNSAFE_ON("$2Unsafe actions allowed", "unsafe"),
|
||||||
DEBUGALLOWUNSAFE_OFF("$2Unsafe actions disabled", "unsafe"),
|
DEBUGALLOWUNSAFE_OFF("$2Unsafe actions disabled", "unsafe"),
|
||||||
//</editor-fold>
|
//</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"),
|
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"),
|
CANT_REMOVE_OWNER("$2You can't remove the plot owner", "Deny"),
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
//<editor-fold desc="Kick">
|
|
||||||
YOU_GOT_KICKED("$4You got kicked!", "Kick"),
|
YOU_GOT_KICKED("$4You got kicked!", "Kick"),
|
||||||
//</editor-fold>
|
|
||||||
//<editor-fold desc="Flag">
|
//<editor-fold desc="Flag">
|
||||||
FLAG_KEY("$2Key: %s", "Flag"),
|
FLAG_KEY("$2Key: %s", "Flag"),
|
||||||
FLAG_TYPE("$2Type: %s", "Flag"),
|
FLAG_TYPE("$2Type: %s", "Flag"),
|
||||||
@ -547,6 +538,7 @@ public enum Captions {
|
|||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
//<editor-fold desc="Trusted">
|
//<editor-fold desc="Trusted">
|
||||||
TRUSTED_ADDED("$4You successfully trusted a user to the plot", "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"),
|
PLOT_REMOVED_USER("$1Plot %s of which you were added to has been deleted due to owner inactivity", "Trusted"),
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
//<editor-fold desc="Member">
|
//<editor-fold desc="Member">
|
||||||
@ -554,10 +546,9 @@ public enum Captions {
|
|||||||
ALREADY_OWNER("$2That user is already the plot owner: %s0", "Member"),
|
ALREADY_OWNER("$2That user is already the plot owner: %s0", "Member"),
|
||||||
ALREADY_ADDED("$2That user is already added to that category: %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_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"),
|
PLOT_MAX_MEMBERS("$2You are not allowed to add any more players to this plot", "Member"),
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
//<editor-fold desc="Owner">
|
//<editor-fold desc="Set Owner">
|
||||||
SET_OWNER("$4You successfully set the plot owner", "Owner"),
|
SET_OWNER("$4You successfully set the plot owner", "Owner"),
|
||||||
SET_OWNER_CANCELLED("$2The set owner action was cancelled", "Owner"),
|
SET_OWNER_CANCELLED("$2The set owner action was cancelled", "Owner"),
|
||||||
NOW_OWNER("$4You are now owner of plot %s", "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"),
|
HELP_DISPLAY_ALL_COMMANDS("Display all commands", "Help"),
|
||||||
DIRECTION("$1Current direction: %dir%", "Help"),
|
DIRECTION("$1Current direction: %dir%", "Help"),
|
||||||
//</editor-fold>
|
//</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
|
* Command Categories
|
||||||
@ -593,6 +583,7 @@ public enum Captions {
|
|||||||
COMMAND_CATEGORY_DEBUG("Debug", "Category"),
|
COMMAND_CATEGORY_DEBUG("Debug", "Category"),
|
||||||
COMMAND_CATEGORY_ADMINISTRATION("Admin", "Category"),
|
COMMAND_CATEGORY_ADMINISTRATION("Admin", "Category"),
|
||||||
|
|
||||||
|
|
||||||
//<editor-fold desc="Grants">
|
//<editor-fold desc="Grants">
|
||||||
GRANTED_PLOTS("$1Result: $2%s $1grants left", "Grants"),
|
GRANTED_PLOTS("$1Result: $2%s $1grants left", "Grants"),
|
||||||
GRANTED_PLOT("$1You granted %s0 plot to $2%s1", "Grants"),
|
GRANTED_PLOT("$1You granted %s0 plot to $2%s1", "Grants"),
|
||||||
@ -602,16 +593,18 @@ public enum Captions {
|
|||||||
/**
|
/**
|
||||||
* Legacy Configuration Conversion
|
* Legacy Configuration Conversion
|
||||||
*/
|
*/
|
||||||
LEGACY_CONFIG_FOUND("A legacy configuration file was detected. Conversion will be attempted.", "LegacyConfig"),
|
LEGACY_CONFIG_FOUND("A legacy configuration file was detected. Conversion will be attempted.",
|
||||||
LEGACY_CONFIG_BACKUP("A copy of worlds.yml $1have been saved in the file worlds.yml.old$1.", "LegacyConfig"),
|
"LegacyConfig"), LEGACY_CONFIG_BACKUP(
|
||||||
LEGACY_CONFIG_REPLACED("> %s has been replaced with %s", "LegacyConfig"),
|
"A copy of worlds.yml $1have been saved in the file worlds.yml.old$1.",
|
||||||
LEGACY_CONFIG_DONE(
|
"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"
|
"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. "
|
+ " 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. "
|
+ "Please note that schematics will not be converted, as we are now using WorldEdit to handle schematics. "
|
||||||
+ "You need to re-generate the 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"),
|
"LegacyConfig"),
|
||||||
LEGACY_CONFIG_CONVERSION_FAILED("Failed to convert the legacy configuration file. See stack trace for information.", "LegacyConfig"),
|
|
||||||
|
|
||||||
CUSTOM_STRING("-", "-");
|
CUSTOM_STRING("-", "-");
|
||||||
//@formatter:on
|
//@formatter:on
|
||||||
|
@ -1,11 +1,19 @@
|
|||||||
package com.github.intellectualsites.plotsquared.plot.database;
|
package com.github.intellectualsites.plotsquared.plot.database;
|
||||||
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.flag.Flag;
|
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 com.github.intellectualsites.plotsquared.plot.object.comment.PlotComment;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import java.util.HashMap;
|
||||||
import java.util.*;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public interface AbstractDB {
|
public interface AbstractDB {
|
||||||
|
|
||||||
@ -297,11 +305,11 @@ public interface AbstractDB {
|
|||||||
void setComment(Plot plot, PlotComment comment);
|
void setComment(Plot plot, PlotComment comment);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets Plot Comments.
|
* Gets Plot comments.
|
||||||
*
|
*
|
||||||
* @param plot The Plot to get comments from
|
* @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);
|
void createPlotAndSettings(Plot plot, Runnable whenDone);
|
||||||
|
|
||||||
|
@ -1,13 +1,21 @@
|
|||||||
package com.github.intellectualsites.plotsquared.plot.database;
|
package com.github.intellectualsites.plotsquared.plot.database;
|
||||||
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.flag.Flag;
|
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 com.github.intellectualsites.plotsquared.plot.object.comment.PlotComment;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.ResultSetMetaData;
|
import java.sql.ResultSetMetaData;
|
||||||
import java.sql.SQLException;
|
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
|
* Database Functions
|
||||||
@ -74,6 +82,8 @@ public class DBFunc {
|
|||||||
DBFunc.dbManager.validateAllPlots(plots);
|
DBFunc.dbManager.validateAllPlots(plots);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//TODO Consider Removal
|
||||||
/**
|
/**
|
||||||
* Check if a {@link ResultSet} contains a column.
|
* Check if a {@link ResultSet} contains a column.
|
||||||
*
|
*
|
||||||
@ -81,7 +91,7 @@ public class DBFunc {
|
|||||||
* @param name
|
* @param name
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static boolean hasColumn(ResultSet resultSet, String name) {
|
@Deprecated public static boolean hasColumn(ResultSet resultSet, String name) {
|
||||||
try {
|
try {
|
||||||
ResultSetMetaData meta = resultSet.getMetaData();
|
ResultSetMetaData meta = resultSet.getMetaData();
|
||||||
int count = meta.getColumnCount();
|
int count = meta.getColumnCount();
|
||||||
|
@ -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.StringMan;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
|
import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
|
||||||
import com.google.common.base.Charsets;
|
import com.google.common.base.Charsets;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
import java.sql.*;
|
import java.sql.*;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
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) {
|
final RunnableVal<List<PlotComment>> whenDone) {
|
||||||
addPlotTask(plot, new UniqueStatement("getComments_" + plot) {
|
addPlotTask(plot, new UniqueStatement("getComments_" + plot) {
|
||||||
@Override public void set(PreparedStatement statement) throws SQLException {
|
@Override public void set(PreparedStatement statement) throws SQLException {
|
||||||
@ -2942,7 +2942,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
boolean[] pm = plot.getMerged();
|
boolean[] pm = plot.getMerged();
|
||||||
boolean[] dm = dataPlot.getMerged();
|
boolean[] dm = dataPlot.getMerged();
|
||||||
if (pm[0] != dm[0] || pm[1] != dm[1]) {
|
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());
|
setMerged(dataPlot, plot.getMerged());
|
||||||
}
|
}
|
||||||
HashMap<Flag<?>, Object> pf = plot.getFlags();
|
HashMap<Flag<?>, Object> pf = plot.getFlags();
|
||||||
@ -2951,7 +2951,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
if (pf.size() != df.size() || !StringMan
|
if (pf.size() != df.size() || !StringMan
|
||||||
.isEqual(StringMan.joinOrdered(pf.values(), ","),
|
.isEqual(StringMan.joinOrdered(pf.values(), ","),
|
||||||
StringMan.joinOrdered(df.values(), ","))) {
|
StringMan.joinOrdered(df.values(), ","))) {
|
||||||
PlotSquared.debug("&8 - &7Correcting flags for: " + plot);
|
PlotSquared.debug(" - Correcting flags for: " + plot);
|
||||||
setFlags(plot, pf);
|
setFlags(plot, pf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,9 +47,6 @@ public class AugmentedUtils {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
IndependentPlotGenerator generator = area.getGenerator();
|
IndependentPlotGenerator generator = area.getGenerator();
|
||||||
if (generator == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// Mask
|
// Mask
|
||||||
if (queue == null) {
|
if (queue == null) {
|
||||||
queue = GlobalBlockQueue.IMP.getNewQueue(world, false);
|
queue = GlobalBlockQueue.IMP.getNewQueue(world, false);
|
||||||
|
@ -24,29 +24,21 @@ public class ClassicPlotManager extends SquarePlotManager {
|
|||||||
BlockBucket blocks) {
|
BlockBucket blocks) {
|
||||||
switch (component) {
|
switch (component) {
|
||||||
case "floor":
|
case "floor":
|
||||||
setFloor(plotId, blocks);
|
return setFloor(plotId, blocks);
|
||||||
return true;
|
|
||||||
case "wall":
|
case "wall":
|
||||||
setWallFilling(plotId, blocks);
|
return setWallFilling(plotId, blocks);
|
||||||
return true;
|
|
||||||
case "all":
|
case "all":
|
||||||
setAll(plotId, blocks);
|
return setAll(plotId, blocks);
|
||||||
return true;
|
|
||||||
case "air":
|
case "air":
|
||||||
setAir(plotId, blocks);
|
return setAir(plotId, blocks);
|
||||||
return true;
|
|
||||||
case "main":
|
case "main":
|
||||||
setMain(plotId, blocks);
|
return setMain(plotId, blocks);
|
||||||
return true;
|
|
||||||
case "middle":
|
case "middle":
|
||||||
setMiddle(plotId, blocks);
|
return setMiddle(plotId, blocks);
|
||||||
return true;
|
|
||||||
case "outline":
|
case "outline":
|
||||||
setOutline(plotId, blocks);
|
return setOutline(plotId, blocks);
|
||||||
return true;
|
|
||||||
case "border":
|
case "border":
|
||||||
setWall(plotId, blocks);
|
return setWall(plotId, blocks);
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -54,8 +46,7 @@ public class ClassicPlotManager extends SquarePlotManager {
|
|||||||
@Override public boolean unClaimPlot(Plot plot, Runnable whenDone) {
|
@Override public boolean unClaimPlot(Plot plot, Runnable whenDone) {
|
||||||
setWallFilling(plot.getId(), classicPlotWorld.WALL_FILLING);
|
setWallFilling(plot.getId(), classicPlotWorld.WALL_FILLING);
|
||||||
setWall(plot.getId(), classicPlotWorld.WALL_BLOCK);
|
setWall(plot.getId(), classicPlotWorld.WALL_BLOCK);
|
||||||
GlobalBlockQueue.IMP.addTask(whenDone);
|
return GlobalBlockQueue.IMP.addTask(whenDone);
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setFloor(PlotId plotId, BlockBucket blocks) {
|
public boolean setFloor(PlotId plotId, BlockBucket blocks) {
|
||||||
@ -70,8 +61,7 @@ public class ClassicPlotManager extends SquarePlotManager {
|
|||||||
queue.setCuboid(pos1, pos2, blocks);
|
queue.setCuboid(pos1, pos2, blocks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
queue.enqueue();
|
return queue.enqueue();
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setAll(PlotId plotId, BlockBucket blocks) {
|
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);
|
Location pos2 = new Location(classicPlotWorld.worldname, region.maxX, maxY, region.maxZ);
|
||||||
queue.setCuboid(pos1, pos2, blocks);
|
queue.setCuboid(pos1, pos2, blocks);
|
||||||
}
|
}
|
||||||
queue.enqueue();
|
return queue.enqueue();
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setAir(PlotId plotId, BlockBucket blocks) {
|
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);
|
Location pos2 = new Location(classicPlotWorld.worldname, region.maxX, maxY, region.maxZ);
|
||||||
queue.setCuboid(pos1, pos2, blocks);
|
queue.setCuboid(pos1, pos2, blocks);
|
||||||
}
|
}
|
||||||
queue.enqueue();
|
return queue.enqueue();
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setMain(PlotId plotId, BlockBucket blocks) {
|
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);
|
new Location(classicPlotWorld.worldname, region.maxX, classicPlotWorld.PLOT_HEIGHT - 1, region.maxZ);
|
||||||
queue.setCuboid(pos1, pos2, blocks);
|
queue.setCuboid(pos1, pos2, blocks);
|
||||||
}
|
}
|
||||||
queue.enqueue();
|
return queue.enqueue();
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setMiddle(PlotId plotId, BlockBucket blocks) {
|
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 x = MathMan.average(corners[0].getX(), corners[1].getX());
|
||||||
int z = MathMan.average(corners[0].getZ(), corners[1].getZ());
|
int z = MathMan.average(corners[0].getZ(), corners[1].getZ());
|
||||||
queue.setBlock(x, classicPlotWorld.PLOT_HEIGHT, z, blocks.getBlock());
|
queue.setBlock(x, classicPlotWorld.PLOT_HEIGHT, z, blocks.getBlock());
|
||||||
queue.enqueue();
|
return queue.enqueue();
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setOutline(PlotId plotId, BlockBucket blocks) {
|
public boolean setOutline(PlotId plotId, BlockBucket blocks) {
|
||||||
@ -187,8 +173,7 @@ public class ClassicPlotManager extends SquarePlotManager {
|
|||||||
queue.setCuboid(pos1, pos2, blocks);
|
queue.setCuboid(pos1, pos2, blocks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
queue.enqueue();
|
return queue.enqueue();
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setWallFilling(PlotId plotId, BlockBucket blocks) {
|
public boolean setWallFilling(PlotId plotId, BlockBucket blocks) {
|
||||||
@ -235,8 +220,7 @@ public class ClassicPlotManager extends SquarePlotManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
queue.enqueue();
|
return queue.enqueue();
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setWall(PlotId plotId, BlockBucket blocks) {
|
public boolean setWall(PlotId plotId, BlockBucket blocks) {
|
||||||
@ -276,8 +260,7 @@ public class ClassicPlotManager extends SquarePlotManager {
|
|||||||
queue.setBlock(x, y, z, blocks.getBlock());
|
queue.setBlock(x, y, z, blocks.getBlock());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
queue.enqueue();
|
return queue.enqueue();
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -308,8 +291,7 @@ public class ClassicPlotManager extends SquarePlotManager {
|
|||||||
new Location(classicPlotWorld.worldname, ex, classicPlotWorld.WALL_HEIGHT + 1, ez - 1), classicPlotWorld.WALL_BLOCK);
|
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),
|
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);
|
new Location(classicPlotWorld.worldname, ex - 1, classicPlotWorld.ROAD_HEIGHT, ez - 1), classicPlotWorld.ROAD_BLOCK);
|
||||||
queue.enqueue();
|
return queue.enqueue();
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean createRoadSouth(Plot plot) {
|
@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);
|
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),
|
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);
|
new Location(classicPlotWorld.worldname, ex - 1, classicPlotWorld.ROAD_HEIGHT, ez - 1), classicPlotWorld.ROAD_BLOCK);
|
||||||
queue.enqueue();
|
return queue.enqueue();
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean createRoadSouthEast(Plot plot) {
|
@Override public boolean createRoadSouthEast(Plot plot) {
|
||||||
@ -356,8 +337,7 @@ public class ClassicPlotManager extends SquarePlotManager {
|
|||||||
PlotBlock.get((short) 7, (byte) 0));
|
PlotBlock.get((short) 7, (byte) 0));
|
||||||
queue.setCuboid(new Location(classicPlotWorld.worldname, sx + 1, 1, sz + 1),
|
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);
|
new Location(classicPlotWorld.worldname, ex - 1, classicPlotWorld.ROAD_HEIGHT, ez - 1), classicPlotWorld.ROAD_BLOCK);
|
||||||
queue.enqueue();
|
return queue.enqueue();
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean removeRoadEast(Plot plot) {
|
@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);
|
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),
|
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);
|
new Location(classicPlotWorld.worldname, ex, classicPlotWorld.PLOT_HEIGHT, ez - 1), classicPlotWorld.TOP_BLOCK);
|
||||||
queue.enqueue();
|
return queue.enqueue();
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean removeRoadSouth(Plot plot) {
|
@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);
|
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),
|
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);
|
new Location(classicPlotWorld.worldname, ex - 1, classicPlotWorld.PLOT_HEIGHT, ez), classicPlotWorld.TOP_BLOCK);
|
||||||
queue.enqueue();
|
return queue.enqueue();
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean removeRoadSouthEast(Plot plot) {
|
@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);
|
new Location(classicPlotWorld.worldname, ex, classicPlotWorld.ROAD_HEIGHT - 1, ez), classicPlotWorld.MAIN_BLOCK);
|
||||||
queue.setCuboid(new Location(classicPlotWorld.worldname, sx, classicPlotWorld.ROAD_HEIGHT, sz),
|
queue.setCuboid(new Location(classicPlotWorld.worldname, sx, classicPlotWorld.ROAD_HEIGHT, sz),
|
||||||
new Location(classicPlotWorld.worldname, ex, classicPlotWorld.ROAD_HEIGHT, ez), classicPlotWorld.TOP_BLOCK);
|
new Location(classicPlotWorld.worldname, ex, classicPlotWorld.ROAD_HEIGHT, ez), classicPlotWorld.TOP_BLOCK);
|
||||||
queue.enqueue();
|
return queue.enqueue();
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finishing off plot merging by adding in the walls surrounding the plot (OPTIONAL)(UNFINISHED).
|
* 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) {
|
@Override public boolean finishPlotMerge(List<PlotId> plotIds) {
|
||||||
final BlockBucket block = classicPlotWorld.CLAIMED_WALL_BLOCK;
|
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) {
|
if (Settings.General.MERGE_REPLACE_WALL) {
|
||||||
final BlockBucket wallBlock = classicPlotWorld.WALL_FILLING;
|
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) {
|
@Override public boolean finishPlotUnlink(List<PlotId> plotIds) {
|
||||||
final BlockBucket block = classicPlotWorld.CLAIMED_WALL_BLOCK;
|
final BlockBucket block = classicPlotWorld.CLAIMED_WALL_BLOCK;
|
||||||
plotIds.forEach(id -> setWall(id, block));
|
boolean success = true;
|
||||||
return 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() {
|
@Override public boolean regenerateAllPlotWalls() {
|
||||||
|
boolean success = true;
|
||||||
for (Plot plot : classicPlotWorld.getPlots()) {
|
for (Plot plot : classicPlotWorld.getPlots()) {
|
||||||
if (plot.hasOwner()) {
|
if (plot.hasOwner()) {
|
||||||
setWall(plot.getId(), classicPlotWorld.CLAIMED_WALL_BLOCK);
|
success &= setWall(plot.getId(), classicPlotWorld.CLAIMED_WALL_BLOCK);
|
||||||
} else {
|
} 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) {
|
@Override public boolean startPlotMerge(List<PlotId> plotIds) {
|
||||||
@ -460,8 +453,7 @@ public class ClassicPlotManager extends SquarePlotManager {
|
|||||||
|
|
||||||
@Override public boolean claimPlot(Plot plot) {
|
@Override public boolean claimPlot(Plot plot) {
|
||||||
final BlockBucket claim = classicPlotWorld.CLAIMED_WALL_BLOCK;
|
final BlockBucket claim = classicPlotWorld.CLAIMED_WALL_BLOCK;
|
||||||
setWall(plot.getId(), claim);
|
return setWall(plot.getId(), claim);
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public String[] getPlotComponents(PlotId plotId) {
|
@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) {
|
@Override public Location getSignLoc(Plot plot) {
|
||||||
plot = plot.getBasePlot(false);
|
plot = plot.getBasePlot(false);
|
||||||
|
@ -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
|
* 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>
|
* world generation</p>
|
||||||
*/
|
*/
|
||||||
@Nonnull @Override public ConfigurationNode[] getSettingNodes() {
|
@NotNull @Override public ConfigurationNode[] getSettingNodes() {
|
||||||
return new ConfigurationNode[] {
|
return new ConfigurationNode[] {
|
||||||
new ConfigurationNode("plot.height", this.PLOT_HEIGHT, "Plot height",
|
new ConfigurationNode("plot.height", this.PLOT_HEIGHT, "Plot height",
|
||||||
Configuration.INTEGER),
|
Configuration.INTEGER),
|
||||||
|
@ -12,6 +12,7 @@ import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue;
|
|||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.sk89q.worldedit.world.block.BaseBlock;
|
import com.sk89q.worldedit.world.block.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
import com.sk89q.worldedit.world.block.BlockTypes;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
@ -34,13 +35,13 @@ public class HybridPlotManager extends ClassicPlotManager {
|
|||||||
String dir = "schematics" + File.separator + "GEN_ROAD_SCHEMATIC" + File.separator
|
String dir = "schematics" + File.separator + "GEN_ROAD_SCHEMATIC" + File.separator
|
||||||
+ hybridPlotWorld.worldname + File.separator;
|
+ hybridPlotWorld.worldname + File.separator;
|
||||||
try {
|
try {
|
||||||
File sideroad =
|
File sideRoad =
|
||||||
MainUtil.getFile(PlotSquared.get().IMP.getDirectory(), dir + "sideroad.schem");
|
MainUtil.getFile(PlotSquared.get().IMP.getDirectory(), dir + "sideroad.schem");
|
||||||
String newDir = "schematics" + File.separator + "GEN_ROAD_SCHEMATIC" + File.separator
|
String newDir = "schematics" + File.separator + "GEN_ROAD_SCHEMATIC" + File.separator
|
||||||
+ "__TEMP_DIR__" + File.separator;
|
+ "__TEMP_DIR__" + File.separator;
|
||||||
if (sideroad.exists()) {
|
if (sideRoad.exists()) {
|
||||||
files.add(new FileBytes(newDir + "sideroad.schem",
|
files.add(new FileBytes(newDir + "sideroad.schem",
|
||||||
Files.readAllBytes(sideroad.toPath())));
|
Files.readAllBytes(sideRoad.toPath())));
|
||||||
}
|
}
|
||||||
File intersection =
|
File intersection =
|
||||||
MainUtil.getFile(PlotSquared.get().IMP.getDirectory(), dir + "intersection.schem");
|
MainUtil.getFile(PlotSquared.get().IMP.getDirectory(), dir + "intersection.schem");
|
||||||
@ -146,8 +147,7 @@ public class HybridPlotManager extends ClassicPlotManager {
|
|||||||
if (hybridPlotWorld.ROAD_SCHEMATIC_ENABLED) {
|
if (hybridPlotWorld.ROAD_SCHEMATIC_ENABLED) {
|
||||||
createSchemAbs(queue, pos1, pos2);
|
createSchemAbs(queue, pos1, pos2);
|
||||||
}
|
}
|
||||||
queue.enqueue();
|
return queue.enqueue();
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -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) {
|
@Override public Location getSignLoc(Plot plot) {
|
||||||
return hybridPlotWorld.getSignLocation(plot);
|
return hybridPlotWorld.getSignLocation(plot);
|
||||||
|
@ -44,7 +44,7 @@ public class HybridPlotWorld extends ClassicPlotWorld {
|
|||||||
super(worldName, id, generator, min, max);
|
super(worldName, id, generator, min, max);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@NotNull @Override
|
||||||
protected PlotManager createManager() {
|
protected PlotManager createManager() {
|
||||||
return new HybridPlotManager(this);
|
return new HybridPlotManager(this);
|
||||||
}
|
}
|
||||||
|
@ -140,7 +140,7 @@ public abstract class HybridUtils {
|
|||||||
}
|
}
|
||||||
HybridUtils.UPDATE = true;
|
HybridUtils.UPDATE = true;
|
||||||
Set<ChunkLoc> regions = new HashSet<>();
|
Set<ChunkLoc> regions = new HashSet<>();
|
||||||
regions.add(ChunkManager.manager.getChunkChunk(plot.getCenter()));
|
regions.add(ChunkManager.getChunkChunk(plot.getCenter()));
|
||||||
return scheduleRoadUpdate(plot.getArea(), regions, extend);
|
return scheduleRoadUpdate(plot.getArea(), regions, extend);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ public class PlotListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Optional<Long> timeFlag = plot.getFlag(Flags.TIME);
|
Optional<Long> timeFlag = plot.getFlag(Flags.TIME);
|
||||||
if (timeFlag.isPresent()) {
|
if (timeFlag.isPresent() && !player.getAttribute("disabletime")) {
|
||||||
try {
|
try {
|
||||||
long time = timeFlag.get();
|
long time = timeFlag.get();
|
||||||
player.setTime(time);
|
player.setTime(time);
|
||||||
@ -138,18 +138,18 @@ public class PlotListener {
|
|||||||
final PlotBlock block = PlotBlock.get(id);
|
final PlotBlock block = PlotBlock.get(id);
|
||||||
final String rawId = block.getRawId().toString();
|
final String rawId = block.getRawId().toString();
|
||||||
if (rawId.contains("disc") || PlotBlock.isEverything(block) || block.isAir()) {
|
if (rawId.contains("disc") || PlotBlock.isEverything(block) || block.isAir()) {
|
||||||
Location loc = player.getLocation();
|
Location location = player.getLocation();
|
||||||
Location lastLoc = player.getMeta("music");
|
Location lastLocation = player.getMeta("music");
|
||||||
if (lastLoc != null) {
|
if (lastLocation != null) {
|
||||||
player.playMusic(lastLoc, PlotBlock.get("air"));
|
player.playMusic(lastLocation, PlotBlock.get("air"));
|
||||||
if (PlotBlock.isEverything(block) || block.isAir()) {
|
if (PlotBlock.isEverything(block) || block.isAir()) {
|
||||||
player.deleteMeta("music");
|
player.deleteMeta("music");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!(PlotBlock.isEverything(block) || block.isAir())) {
|
if (!(PlotBlock.isEverything(block) || block.isAir())) {
|
||||||
try {
|
try {
|
||||||
player.setMeta("music", loc);
|
player.setMeta("music", location);
|
||||||
player.playMusic(loc, block);
|
player.playMusic(location, block);
|
||||||
} catch (Exception ignored) {
|
} catch (Exception ignored) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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.database.DBFunc;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.PlotGameMode;
|
import com.github.intellectualsites.plotsquared.plot.util.PlotGameMode;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.PlotWeather;
|
import com.github.intellectualsites.plotsquared.plot.util.PlotWeather;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class ConsolePlayer extends PlotPlayer {
|
public class ConsolePlayer extends PlotPlayer {
|
||||||
@ -15,15 +15,15 @@ public class ConsolePlayer extends PlotPlayer {
|
|||||||
|
|
||||||
private ConsolePlayer() {
|
private ConsolePlayer() {
|
||||||
PlotArea area = PlotSquared.get().getFirstPlotArea();
|
PlotArea area = PlotSquared.get().getFirstPlotArea();
|
||||||
Location loc;
|
Location location;
|
||||||
if (area != null) {
|
if (area != null) {
|
||||||
RegionWrapper region = area.getRegion();
|
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);
|
region.minZ + region.maxZ / 2);
|
||||||
} else {
|
} 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() {
|
public static ConsolePlayer getConsole() {
|
||||||
@ -34,7 +34,7 @@ public class ConsolePlayer extends PlotPlayer {
|
|||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean canTeleport(@Nonnull Location loc) {
|
@Override public boolean canTeleport(@NotNull Location location) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ public class ConsolePlayer extends PlotPlayer {
|
|||||||
public void sendTitle(String title, String subtitle, int fadeIn, int stay, int fadeOut) {
|
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");
|
return this.getMeta("location");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,7 +50,7 @@ public class ConsolePlayer extends PlotPlayer {
|
|||||||
return getLocation();
|
return getLocation();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull @Override public UUID getUUID() {
|
@NotNull @Override public UUID getUUID() {
|
||||||
return DBFunc.EVERYONE;
|
return DBFunc.EVERYONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,14 +100,14 @@ public class ConsolePlayer extends PlotPlayer {
|
|||||||
return RequiredType.CONSOLE;
|
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;
|
return PlotGameMode.NOT_SET;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void setGameMode(@Nonnull PlotGameMode gameMode) {
|
@Override public void setGameMode(@NotNull PlotGameMode gameMode) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void setTime(long time) {
|
@Override public void setTime(long time) {
|
||||||
@ -120,7 +120,7 @@ public class ConsolePlayer extends PlotPlayer {
|
|||||||
@Override public void setFlight(boolean fly) {
|
@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) {
|
@Override public void kick(String message) {
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package com.github.intellectualsites.plotsquared.plot.object;
|
package com.github.intellectualsites.plotsquared.plot.object;
|
||||||
|
|
||||||
public enum Direction {
|
public enum Direction {
|
||||||
NORTH(0, "north"), EAST(1, "east"), SOUTH(2, "south"), WEST(3, "west"), NORTHEAST(4,
|
ALL(-1, "all"), NORTH(0, "north"), EAST(1, "east"), SOUTH(2, "south"), WEST(3,
|
||||||
"northeast"), SOUTHEAST(5, "southeast"), SOUTHWEST(6, "southwest"), NORTHWEST(7,
|
"west"), NORTHEAST(4, "northeast"), SOUTHEAST(5, "southeast"), SOUTHWEST(6,
|
||||||
"northwest"),
|
"southwest"), NORTHWEST(7, "northwest"),
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
@ -16,6 +16,15 @@ public enum Direction {
|
|||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Direction getFromIndex(int index) {
|
||||||
|
for (Direction value : values()) {
|
||||||
|
if (value.getIndex() == index) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NORTH;
|
||||||
|
}
|
||||||
|
|
||||||
public int getIndex() {
|
public int getIndex() {
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
@ -21,9 +21,9 @@ import com.google.common.collect.BiMap;
|
|||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.sk89q.jnbt.CompoundTag;
|
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.Area;
|
||||||
import java.awt.geom.PathIterator;
|
import java.awt.geom.PathIterator;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
@ -46,13 +46,14 @@ import java.util.stream.Collectors;
|
|||||||
public class Plot {
|
public class Plot {
|
||||||
|
|
||||||
private static final int MAX_HEIGHT = 256;
|
private static final int MAX_HEIGHT = 256;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated raw access is deprecated
|
* @deprecated raw access is deprecated
|
||||||
*/
|
*/
|
||||||
@Deprecated private static HashSet<Plot> connected_cache;
|
@Deprecated private static HashSet<Plot> connected_cache;
|
||||||
private static HashSet<RegionWrapper> regions_cache;
|
private static HashSet<RegionWrapper> regions_cache;
|
||||||
|
|
||||||
private final PlotId id;
|
@NotNull private final PlotId id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* plot owner
|
* plot owner
|
||||||
@ -62,10 +63,12 @@ public class Plot {
|
|||||||
* @deprecated
|
* @deprecated
|
||||||
*/
|
*/
|
||||||
@Deprecated public UUID owner;
|
@Deprecated public UUID owner;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Has the plot changed since the last save cycle?
|
* Has the plot changed since the last save cycle?
|
||||||
*/
|
*/
|
||||||
public boolean countsTowardsMax = true;
|
public boolean countsTowardsMax = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents whatever the database manager needs it to: <br>
|
* 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>
|
* - 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 magical
|
||||||
*/
|
*/
|
||||||
@Deprecated public int temp;
|
@Deprecated public int temp;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Plot creation timestamp (not accurate if the plot was created before this was implemented)<br>
|
* Plot creation timestamp (not accurate if the plot was created before this was implemented)<br>
|
||||||
* - Milliseconds since the epoch<br>
|
* - Milliseconds since the epoch<br>
|
||||||
*/
|
*/
|
||||||
private long timestamp;
|
private long timestamp;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List of trusted (with plot permissions).
|
* List of trusted (with plot permissions).
|
||||||
*/
|
*/
|
||||||
private HashSet<UUID> trusted;
|
private HashSet<UUID> trusted;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List of members users (with plot permissions).
|
* List of members users (with plot permissions).
|
||||||
*/
|
*/
|
||||||
private HashSet<UUID> members;
|
private HashSet<UUID> members;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List of denied players.
|
* List of denied players.
|
||||||
*/
|
*/
|
||||||
private HashSet<UUID> denied;
|
private HashSet<UUID> denied;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* External settings class.
|
* External settings class.
|
||||||
* - Please favor the methods over direct access to this class<br>
|
* - Please favor the methods over direct access to this class<br>
|
||||||
@ -99,6 +107,7 @@ public class Plot {
|
|||||||
private PlotSettings settings;
|
private PlotSettings settings;
|
||||||
|
|
||||||
private PlotArea area;
|
private PlotArea area;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Session only plot metadata (session is until the server stops)<br>
|
* Session only plot metadata (session is until the server stops)<br>
|
||||||
* <br>
|
* <br>
|
||||||
@ -107,6 +116,7 @@ public class Plot {
|
|||||||
* @see FlagManager
|
* @see FlagManager
|
||||||
*/
|
*/
|
||||||
private ConcurrentHashMap<String, Object> meta;
|
private ConcurrentHashMap<String, Object> meta;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The cached origin plot.
|
* The cached origin plot.
|
||||||
* - The origin plot is used for plot grouping and relational data
|
* - The origin plot is used for plot grouping and relational data
|
||||||
@ -122,7 +132,7 @@ public class Plot {
|
|||||||
* @param owner the plot owner
|
* @param owner the plot owner
|
||||||
* @see Plot#getPlot(Location) for existing plots
|
* @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.area = area;
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.owner = owner;
|
this.owner = owner;
|
||||||
@ -136,7 +146,7 @@ public class Plot {
|
|||||||
* @param id the plot id
|
* @param id the plot id
|
||||||
* @see Plot#getPlot(Location) for existing plots
|
* @see Plot#getPlot(Location) for existing plots
|
||||||
*/
|
*/
|
||||||
public Plot(PlotArea area, PlotId id) {
|
public Plot(PlotArea area, @NotNull PlotId id) {
|
||||||
this.area = area;
|
this.area = area;
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
@ -152,7 +162,7 @@ public class 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
|
* @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.area = area;
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.owner = owner;
|
this.owner = owner;
|
||||||
@ -166,10 +176,10 @@ public class Plot {
|
|||||||
* @param owner the plot owner
|
* @param owner the plot owner
|
||||||
* @param trusted the plot trusted players
|
* @param trusted the plot trusted players
|
||||||
* @param denied the plot denied players
|
* @param denied the plot denied players
|
||||||
* @param merged array giving merged plots
|
* @param merged an array giving merged plots
|
||||||
* @see Plot#getPlot(Location) for existing 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,
|
HashSet<UUID> denied, String alias, BlockLoc position, Collection<Flag> flags,
|
||||||
PlotArea area, boolean[] merged, long timestamp, int temp) {
|
PlotArea area, boolean[] merged, long timestamp, int temp) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
@ -194,7 +204,7 @@ public class Plot {
|
|||||||
/**
|
/**
|
||||||
* Gets a plot from a string e.g. [area];[id]
|
* Gets a plot from a string e.g. [area];[id]
|
||||||
*
|
*
|
||||||
* @param defaultArea If no area is specified
|
* @param defaultArea if no area is specified
|
||||||
* @param string plot id/area + id
|
* @param string plot id/area + id
|
||||||
* @return New or existing plot object
|
* @return New or existing plot object
|
||||||
*/
|
*/
|
||||||
@ -326,7 +336,7 @@ public class Plot {
|
|||||||
* @param uuid the player uuid
|
* @param uuid the player uuid
|
||||||
* @return if the provided uuid is the owner of the plot
|
* @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())) {
|
if (uuid.equals(this.getOwner())) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -452,7 +462,7 @@ public class Plot {
|
|||||||
*
|
*
|
||||||
* @return the PlotId for this plot
|
* @return the PlotId for this plot
|
||||||
*/
|
*/
|
||||||
public PlotId getId() {
|
@NotNull public PlotId getId() {
|
||||||
return this.id;
|
return this.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -864,8 +874,15 @@ public class Plot {
|
|||||||
}
|
}
|
||||||
Plot current = queue.poll();
|
Plot current = queue.poll();
|
||||||
if (Plot.this.area.TERRAIN != 0) {
|
if (Plot.this.area.TERRAIN != 0) {
|
||||||
|
try {
|
||||||
ChunkManager.manager
|
ChunkManager.manager
|
||||||
.regenerateRegion(current.getBottomAbs(), current.getTopAbs(), false, this);
|
.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;
|
return;
|
||||||
}
|
}
|
||||||
manager.clearPlot(current, this);
|
manager.clearPlot(current, this);
|
||||||
@ -919,8 +936,8 @@ public class Plot {
|
|||||||
/**
|
/**
|
||||||
* Unlink the plot and all connected plots.
|
* Unlink the plot and all connected plots.
|
||||||
*
|
*
|
||||||
* @param createSign whether to recreate signs
|
|
||||||
* @param createRoad whether to recreate road
|
* @param createRoad whether to recreate road
|
||||||
|
* @param createSign whether to recreate signs
|
||||||
* @return success/!cancelled
|
* @return success/!cancelled
|
||||||
*/
|
*/
|
||||||
public boolean unlinkPlot(boolean createRoad, boolean createSign) {
|
public boolean unlinkPlot(boolean createRoad, boolean createSign) {
|
||||||
@ -982,7 +999,7 @@ public class Plot {
|
|||||||
*
|
*
|
||||||
* @param name name
|
* @param name name
|
||||||
*/
|
*/
|
||||||
public void setSign(@Nonnull String name) {
|
public void setSign(@NotNull String name) {
|
||||||
if (!isLoaded()) {
|
if (!isLoaded()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -992,7 +1009,7 @@ public class Plot {
|
|||||||
}
|
}
|
||||||
PlotManager manager = this.area.getPlotManager();
|
PlotManager manager = this.area.getPlotManager();
|
||||||
if (this.area.ALLOW_SIGNS) {
|
if (this.area.ALLOW_SIGNS) {
|
||||||
Location loc = manager.getSignLoc(this);
|
Location location = manager.getSignLoc(this);
|
||||||
String id = this.id.x + ";" + this.id.y;
|
String id = this.id.x + ";" + this.id.y;
|
||||||
String[] lines =
|
String[] lines =
|
||||||
new String[] {Captions.OWNER_SIGN_LINE_1.formatted().replaceAll("%id%", id),
|
new String[] {Captions.OWNER_SIGN_LINE_1.formatted().replaceAll("%id%", id),
|
||||||
@ -1002,7 +1019,9 @@ public class Plot {
|
|||||||
"%plr%", name),
|
"%plr%", name),
|
||||||
Captions.OWNER_SIGN_LINE_4.formatted().replaceAll("%id%", id).replaceAll(
|
Captions.OWNER_SIGN_LINE_4.formatted().replaceAll("%id%", id).replaceAll(
|
||||||
"%plr%", name)};
|
"%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[] corners = getCorners();
|
||||||
Location top = corners[0];
|
Location top = corners[0];
|
||||||
Location bot = corners[1];
|
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()));
|
MathMan.average(bot.getY(), top.getY()), MathMan.average(bot.getZ(), top.getZ()));
|
||||||
if (!isLoaded()) {
|
if (!isLoaded()) {
|
||||||
return loc;
|
return location;
|
||||||
}
|
}
|
||||||
int y =
|
int y = WorldUtil.IMP.getHighestBlock(getWorldName(), location.getX(), location.getZ());
|
||||||
isLoaded() ? WorldUtil.IMP.getHighestBlock(getWorldName(), loc.getX(), loc.getZ()) : 62;
|
|
||||||
if (area.ALLOW_SIGNS) {
|
if (area.ALLOW_SIGNS) {
|
||||||
y = Math.max(y, getManager().getSignLoc(this).getY());
|
y = Math.max(y, getManager().getSignLoc(this).getY());
|
||||||
}
|
}
|
||||||
loc.setY(1 + y);
|
location.setY(1 + y);
|
||||||
return loc;
|
return location;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Location getSide() {
|
public Location getSide() {
|
||||||
@ -1235,18 +1254,19 @@ public class Plot {
|
|||||||
if (home == null || home.x == 0 && home.z == 0) {
|
if (home == null || home.x == 0 && home.z == 0) {
|
||||||
return this.getDefaultHome(true);
|
return this.getDefaultHome(true);
|
||||||
} else {
|
} else {
|
||||||
Location bot = this.getBottomAbs();
|
Location bottom = this.getBottomAbs();
|
||||||
Location loc = new Location(bot.getWorld(), bot.getX() + home.x, bot.getY() + home.y,
|
Location location =
|
||||||
bot.getZ() + home.z, home.yaw, home.pitch);
|
new Location(bottom.getWorld(), bottom.getX() + home.x, bottom.getY() + home.y,
|
||||||
|
bottom.getZ() + home.z, home.yaw, home.pitch);
|
||||||
if (!isLoaded()) {
|
if (!isLoaded()) {
|
||||||
return loc;
|
return location;
|
||||||
}
|
}
|
||||||
if (!WorldUtil.IMP.getBlock(loc).isAir()) {
|
if (!WorldUtil.IMP.getBlock(location).isAir()) {
|
||||||
loc.setY(Math.max(
|
location.setY(Math.max(1 + WorldUtil.IMP
|
||||||
1 + WorldUtil.IMP.getHighestBlock(this.getWorldName(), loc.getX(), loc.getZ()),
|
.getHighestBlock(this.getWorldName(), location.getX(), location.getZ()),
|
||||||
bot.getY()));
|
bottom.getY()));
|
||||||
}
|
}
|
||||||
return loc;
|
return location;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1413,9 +1433,9 @@ public class Plot {
|
|||||||
if (!this.area.ALLOW_SIGNS) {
|
if (!this.area.ALLOW_SIGNS) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Location loc = manager.getSignLoc(this);
|
Location location = manager.getSignLoc(this);
|
||||||
LocalBlockQueue queue = GlobalBlockQueue.IMP.getNewQueue(getWorldName(), false);
|
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();
|
queue.flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1510,7 +1530,7 @@ public class Plot {
|
|||||||
* @param notify notify
|
* @param notify notify
|
||||||
* @return true if plot was created successfully
|
* @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;
|
this.owner = uuid;
|
||||||
Plot existing = this.area.getOwnedPlotAbs(this.id);
|
Plot existing = this.area.getOwnedPlotAbs(this.id);
|
||||||
if (existing != null) {
|
if (existing != null) {
|
||||||
@ -1532,7 +1552,7 @@ public class Plot {
|
|||||||
DBFunc.createPlotAndSettings(this, () -> {
|
DBFunc.createPlotAndSettings(this, () -> {
|
||||||
PlotArea plotworld = Plot.this.area;
|
PlotArea plotworld = Plot.this.area;
|
||||||
if (notify && plotworld.AUTO_MERGE) {
|
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;
|
return true;
|
||||||
@ -1555,8 +1575,8 @@ public class Plot {
|
|||||||
* @return the name of the biome
|
* @return the name of the biome
|
||||||
*/
|
*/
|
||||||
public String getBiome() {
|
public String getBiome() {
|
||||||
Location loc = this.getCenter();
|
Location location = this.getCenter();
|
||||||
return WorldUtil.IMP.getBiome(loc.getWorld(), loc.getX(), loc.getZ());
|
return WorldUtil.IMP.getBiome(location.getWorld(), location.getX(), location.getZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO Better documentation needed.
|
//TODO Better documentation needed.
|
||||||
@ -1576,9 +1596,9 @@ public class Plot {
|
|||||||
* Returns the bottom location for the plot.
|
* Returns the bottom location for the plot.
|
||||||
*/
|
*/
|
||||||
public Location getBottomAbs() {
|
public Location getBottomAbs() {
|
||||||
Location loc = getManager().getPlotBottomLocAbs(this.id);
|
Location location = getManager().getPlotBottomLocAbs(this.id);
|
||||||
loc.setWorld(getWorldName());
|
location.setWorld(getWorldName());
|
||||||
return loc;
|
return location;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2009,17 +2029,11 @@ public class Plot {
|
|||||||
* Sets the raw merge data<br>
|
* Sets the raw merge data<br>
|
||||||
* - Updates DB<br>
|
* - Updates DB<br>
|
||||||
* - Does not modify terrain<br>
|
* - Does not modify terrain<br>
|
||||||
* ----------<br>
|
|
||||||
* 0 = north<br>
|
|
||||||
* 1 = east<br>
|
|
||||||
* 2 = south<br>
|
|
||||||
* 3 = west<br>
|
|
||||||
* ----------<br>
|
|
||||||
*
|
*
|
||||||
* @param direction
|
* @param direction
|
||||||
* @param value
|
* @param value
|
||||||
*/
|
*/
|
||||||
public void setMerged(int direction, boolean value) {
|
public void setMerged(Direction direction, boolean value) {
|
||||||
if (this.getSettings().setMerged(direction, value)) {
|
if (this.getSettings().setMerged(direction, value)) {
|
||||||
if (value) {
|
if (value) {
|
||||||
Plot other = this.getRelative(direction).getBasePlot(false);
|
Plot other = this.getRelative(direction).getBasePlot(false);
|
||||||
@ -2124,11 +2138,12 @@ public class Plot {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
final Location loc = this.getManager().getSignLoc(this);
|
final Location location = this.getManager().getSignLoc(this);
|
||||||
String[] lines = TaskManager.IMP.sync(new RunnableVal<String[]>() {
|
String[] lines = TaskManager.IMP.sync(new RunnableVal<String[]>() {
|
||||||
@Override public void run(String[] value) {
|
@Override public void run(String[] value) {
|
||||||
ChunkManager.manager.loadChunk(loc.getWorld(), loc.getChunkLoc(), false);
|
ChunkManager.manager
|
||||||
this.value = WorldUtil.IMP.getSign(loc);
|
.loadChunk(location.getWorld(), location.getChunkLoc(), false);
|
||||||
|
this.value = WorldUtil.IMP.getSign(location);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (lines == null) {
|
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>
|
* @param dir the direction to merge
|
||||||
* -1 = All directions<br>
|
* @param max the max number of merges to do
|
||||||
* 0 = north<br>
|
* @param uuid the UUID it is allowed to merge with
|
||||||
* 1 = east<br>
|
* @param removeRoads whether to remove roads
|
||||||
* 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
|
|
||||||
* @return true if a merge takes place
|
* @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) {
|
if (this.owner == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!EventUtil.manager.callMerge(this, dir, max)) {
|
//Call the merge event
|
||||||
|
if (!EventUtil.manager.callMerge(this, dir.getIndex(), max)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Set<Plot> connected = this.getConnectedPlots();
|
Set<Plot> connected = this.getConnectedPlots();
|
||||||
@ -2231,7 +2243,7 @@ public class Plot {
|
|||||||
}
|
}
|
||||||
visited.add(current);
|
visited.add(current);
|
||||||
Set<Plot> plots;
|
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);
|
Plot other = current.getRelative(Direction.NORTH);
|
||||||
if (other != null && other.isOwner(uuid) && (
|
if (other != null && other.isOwner(uuid) && (
|
||||||
other.getBasePlot(false).equals(current.getBasePlot(false))
|
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);
|
Plot other = current.getRelative(Direction.EAST);
|
||||||
if (other != null && other.isOwner(uuid) && (
|
if (other != null && other.isOwner(uuid) && (
|
||||||
other.getBasePlot(false).equals(current.getBasePlot(false))
|
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);
|
Plot other = current.getRelative(Direction.SOUTH);
|
||||||
if (other != null && other.isOwner(uuid) && (
|
if (other != null && other.isOwner(uuid) && (
|
||||||
other.getBasePlot(false).equals(current.getBasePlot(false))
|
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);
|
Plot other = current.getRelative(Direction.WEST);
|
||||||
if (other != null && other.isOwner(uuid) && (
|
if (other != null && other.isOwner(uuid) && (
|
||||||
other.getBasePlot(false).equals(current.getBasePlot(false))
|
other.getBasePlot(false).equals(current.getBasePlot(false))
|
||||||
@ -2403,20 +2418,16 @@ public class Plot {
|
|||||||
* @param direction
|
* @param direction
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public Plot getRelative(int direction) {
|
@Deprecated public Plot getRelative(int direction) {
|
||||||
return this.area.getPlotAbs(this.id.getRelative(direction));
|
return this.area.getPlotAbs(this.id.getRelative(direction));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the plot in a relative direction<br>
|
* Gets the plot in a relative direction
|
||||||
* 0 = north<br>
|
|
||||||
* 1 = east<br>
|
|
||||||
* 2 = south<br>
|
|
||||||
* 3 = west<br>
|
|
||||||
* Note: May be null if the partial plot area does not include the relative location
|
* Note: May be null if the partial plot area does not include the relative location
|
||||||
*
|
*
|
||||||
* @param direction
|
* @param direction
|
||||||
* @return
|
* @return the plot relative to this one
|
||||||
*/
|
*/
|
||||||
public Plot getRelative(Direction direction) {
|
public Plot getRelative(Direction direction) {
|
||||||
return this.area.getPlotAbs(this.id.getRelative(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>
|
* Gets a set of plots connected (and including) this plot<br>
|
||||||
* - This result is cached globally
|
* - This result is cached globally
|
||||||
*
|
*
|
||||||
* @return
|
* @return a Set of Plots connected to this Plot
|
||||||
*/
|
*/
|
||||||
public Set<Plot> getConnectedPlots() {
|
public Set<Plot> getConnectedPlots() {
|
||||||
if (this.settings == null) {
|
if (this.settings == null) {
|
||||||
@ -2451,10 +2462,10 @@ public class Plot {
|
|||||||
// invalid merge
|
// invalid merge
|
||||||
PlotSquared.debug("Fixing invalid merge: " + this);
|
PlotSquared.debug("Fixing invalid merge: " + this);
|
||||||
if (tmp.isOwnerAbs(this.owner)) {
|
if (tmp.isOwnerAbs(this.owner)) {
|
||||||
tmp.getSettings().setMerged(2, true);
|
tmp.getSettings().setMerged(Direction.SOUTH, true);
|
||||||
DBFunc.setMerged(tmp, tmp.getSettings().getMerged());
|
DBFunc.setMerged(tmp, tmp.getSettings().getMerged());
|
||||||
} else {
|
} else {
|
||||||
this.getSettings().setMerged(0, false);
|
this.getSettings().setMerged(Direction.NORTH, false);
|
||||||
DBFunc.setMerged(this, this.getSettings().getMerged());
|
DBFunc.setMerged(this, this.getSettings().getMerged());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2467,10 +2478,10 @@ public class Plot {
|
|||||||
// invalid merge
|
// invalid merge
|
||||||
PlotSquared.debug("Fixing invalid merge: " + this);
|
PlotSquared.debug("Fixing invalid merge: " + this);
|
||||||
if (tmp.isOwnerAbs(this.owner)) {
|
if (tmp.isOwnerAbs(this.owner)) {
|
||||||
tmp.getSettings().setMerged(3, true);
|
tmp.getSettings().setMerged(Direction.WEST, true);
|
||||||
DBFunc.setMerged(tmp, tmp.getSettings().getMerged());
|
DBFunc.setMerged(tmp, tmp.getSettings().getMerged());
|
||||||
} else {
|
} else {
|
||||||
this.getSettings().setMerged(1, false);
|
this.getSettings().setMerged(Direction.EAST, false);
|
||||||
DBFunc.setMerged(this, this.getSettings().getMerged());
|
DBFunc.setMerged(this, this.getSettings().getMerged());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2483,10 +2494,10 @@ public class Plot {
|
|||||||
// invalid merge
|
// invalid merge
|
||||||
PlotSquared.debug("Fixing invalid merge: " + this);
|
PlotSquared.debug("Fixing invalid merge: " + this);
|
||||||
if (tmp.isOwnerAbs(this.owner)) {
|
if (tmp.isOwnerAbs(this.owner)) {
|
||||||
tmp.getSettings().setMerged(0, true);
|
tmp.getSettings().setMerged(Direction.NORTH, true);
|
||||||
DBFunc.setMerged(tmp, tmp.getSettings().getMerged());
|
DBFunc.setMerged(tmp, tmp.getSettings().getMerged());
|
||||||
} else {
|
} else {
|
||||||
this.getSettings().setMerged(2, false);
|
this.getSettings().setMerged(Direction.SOUTH, false);
|
||||||
DBFunc.setMerged(this, this.getSettings().getMerged());
|
DBFunc.setMerged(this, this.getSettings().getMerged());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2499,10 +2510,10 @@ public class Plot {
|
|||||||
// invalid merge
|
// invalid merge
|
||||||
PlotSquared.debug("Fixing invalid merge: " + this);
|
PlotSquared.debug("Fixing invalid merge: " + this);
|
||||||
if (tmp.isOwnerAbs(this.owner)) {
|
if (tmp.isOwnerAbs(this.owner)) {
|
||||||
tmp.getSettings().setMerged(1, true);
|
tmp.getSettings().setMerged(Direction.EAST, true);
|
||||||
DBFunc.setMerged(tmp, tmp.getSettings().getMerged());
|
DBFunc.setMerged(tmp, tmp.getSettings().getMerged());
|
||||||
} else {
|
} else {
|
||||||
this.getSettings().setMerged(3, false);
|
this.getSettings().setMerged(Direction.WEST, false);
|
||||||
DBFunc.setMerged(this, this.getSettings().getMerged());
|
DBFunc.setMerged(this, this.getSettings().getMerged());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2560,7 +2571,7 @@ public class Plot {
|
|||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Nonnull public HashSet<RegionWrapper> getRegions() {
|
@NotNull public HashSet<RegionWrapper> getRegions() {
|
||||||
if (regions_cache != null && connected_cache != null && connected_cache.contains(this)) {
|
if (regions_cache != null && connected_cache != null && connected_cache.contains(this)) {
|
||||||
return regions_cache;
|
return regions_cache;
|
||||||
}
|
}
|
||||||
@ -2787,6 +2798,11 @@ public class Plot {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the owner of this Plot is online.
|
||||||
|
*
|
||||||
|
* @return true if the owner of the Plot is online
|
||||||
|
*/
|
||||||
public boolean isOnline() {
|
public boolean isOnline() {
|
||||||
if (this.owner == null) {
|
if (this.owner == null) {
|
||||||
return false;
|
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 lesserPlot
|
||||||
* @param removeRoads
|
* @param removeRoads
|
||||||
*/
|
*/
|
||||||
public void mergePlot(Plot lesserPlot, boolean removeRoads) {
|
public void mergePlot(Plot lesserPlot, boolean removeRoads) {
|
||||||
Plot greaterPlot = this;
|
Plot greaterPlot = this;
|
||||||
|
lesserPlot.removeSign();
|
||||||
if (lesserPlot.getId().x == greaterPlot.getId().x) {
|
if (lesserPlot.getId().x == greaterPlot.getId().x) {
|
||||||
if (lesserPlot.getId().y > greaterPlot.getId().y) {
|
if (lesserPlot.getId().y > greaterPlot.getId().y) {
|
||||||
Plot tmp = lesserPlot;
|
Plot tmp = lesserPlot;
|
||||||
@ -2857,10 +2874,11 @@ public class Plot {
|
|||||||
if (!lesserPlot.getMerged(Direction.SOUTH)) {
|
if (!lesserPlot.getMerged(Direction.SOUTH)) {
|
||||||
lesserPlot.clearRatings();
|
lesserPlot.clearRatings();
|
||||||
greaterPlot.clearRatings();
|
greaterPlot.clearRatings();
|
||||||
lesserPlot.setMerged(2, true);
|
lesserPlot.setMerged(Direction.SOUTH, true);
|
||||||
greaterPlot.setMerged(0, true);
|
greaterPlot.setMerged(Direction.NORTH, true);
|
||||||
lesserPlot.mergeData(greaterPlot);
|
lesserPlot.mergeData(greaterPlot);
|
||||||
if (removeRoads) {
|
if (removeRoads) {
|
||||||
|
//lesserPlot.removeSign();
|
||||||
lesserPlot.removeRoadSouth();
|
lesserPlot.removeRoadSouth();
|
||||||
Plot diagonal = greaterPlot.getRelative(Direction.EAST);
|
Plot diagonal = greaterPlot.getRelative(Direction.EAST);
|
||||||
if (diagonal.getMerged(Direction.NORTHWEST)) {
|
if (diagonal.getMerged(Direction.NORTHWEST)) {
|
||||||
@ -2881,10 +2899,11 @@ public class Plot {
|
|||||||
if (!lesserPlot.getMerged(Direction.EAST)) {
|
if (!lesserPlot.getMerged(Direction.EAST)) {
|
||||||
lesserPlot.clearRatings();
|
lesserPlot.clearRatings();
|
||||||
greaterPlot.clearRatings();
|
greaterPlot.clearRatings();
|
||||||
lesserPlot.setMerged(1, true);
|
lesserPlot.setMerged(Direction.EAST, true);
|
||||||
greaterPlot.setMerged(3, true);
|
greaterPlot.setMerged(Direction.WEST, true);
|
||||||
lesserPlot.mergeData(greaterPlot);
|
lesserPlot.mergeData(greaterPlot);
|
||||||
if (removeRoads) {
|
if (removeRoads) {
|
||||||
|
//lesserPlot.removeSign();
|
||||||
Plot diagonal = greaterPlot.getRelative(Direction.SOUTH);
|
Plot diagonal = greaterPlot.getRelative(Direction.SOUTH);
|
||||||
if (diagonal.getMerged(Direction.NORTHWEST)) {
|
if (diagonal.getMerged(Direction.NORTHWEST)) {
|
||||||
lesserPlot.removeRoadSouthEast();
|
lesserPlot.removeRoadSouthEast();
|
||||||
@ -2897,6 +2916,7 @@ public class Plot {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -3079,23 +3099,23 @@ public class Plot {
|
|||||||
return getFlags().containsKey(flag);
|
return getFlags().containsKey(flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation") public boolean removeComment(PlotComment comment) {
|
public boolean removeComment(PlotComment comment) {
|
||||||
return getSettings().removeComment(comment);
|
return getSettings().removeComment(comment);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation") public void removeComments(List<PlotComment> comments) {
|
public void removeComments(List<PlotComment> comments) {
|
||||||
getSettings().removeComments(comments);
|
getSettings().removeComments(comments);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation") public List<PlotComment> getComments(String inbox) {
|
public List<PlotComment> getComments(String inbox) {
|
||||||
return getSettings().getComments(inbox);
|
return getSettings().getComments(inbox);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation") public void addComment(PlotComment comment) {
|
public void addComment(PlotComment comment) {
|
||||||
getSettings().addComment(comment);
|
getSettings().addComment(comment);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation") public void setComments(List<PlotComment> list) {
|
public void setComments(List<PlotComment> list) {
|
||||||
getSettings().setComments(list);
|
getSettings().setComments(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,9 +22,8 @@ import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue;
|
|||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
@ -37,12 +36,12 @@ public abstract class PlotArea {
|
|||||||
|
|
||||||
public final String worldname;
|
public final String worldname;
|
||||||
public final String id;
|
public final String id;
|
||||||
public final PlotManager manager;
|
@NotNull public final PlotManager manager;
|
||||||
public final int worldhash;
|
public final int worldhash;
|
||||||
protected final ConcurrentHashMap<PlotId, Plot> plots = new ConcurrentHashMap<>();
|
protected final ConcurrentHashMap<PlotId, Plot> plots = new ConcurrentHashMap<>();
|
||||||
private final PlotId min;
|
private final PlotId min;
|
||||||
private final PlotId max;
|
private final PlotId max;
|
||||||
private final IndependentPlotGenerator generator;
|
@NotNull private final IndependentPlotGenerator generator;
|
||||||
private final BlockBucket[][] blockBucketChunk;
|
private final BlockBucket[][] blockBucketChunk;
|
||||||
public int MAX_PLOT_MEMBERS = 128;
|
public int MAX_PLOT_MEMBERS = 128;
|
||||||
public boolean AUTO_MERGE = false;
|
public boolean AUTO_MERGE = false;
|
||||||
@ -76,7 +75,7 @@ public abstract class PlotArea {
|
|||||||
private ConcurrentHashMap<String, Object> meta;
|
private ConcurrentHashMap<String, Object> meta;
|
||||||
private QuadMap<PlotCluster> clusters;
|
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,
|
@NotNull IndependentPlotGenerator generator, @Nullable final PlotId min,
|
||||||
@Nullable final PlotId max) {
|
@Nullable final PlotId max) {
|
||||||
this.worldname = worldName;
|
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) {
|
public LocalBlockQueue getQueue(final boolean autoQueue) {
|
||||||
return GlobalBlockQueue.IMP.getNewQueue(worldname, autoQueue);
|
return GlobalBlockQueue.IMP.getNewQueue(worldname, autoQueue);
|
||||||
@ -117,11 +116,8 @@ public abstract class PlotArea {
|
|||||||
if (blockBucketChunk != null) {
|
if (blockBucketChunk != null) {
|
||||||
return blockBucketChunk;
|
return blockBucketChunk;
|
||||||
}
|
}
|
||||||
if (generator != null) {
|
|
||||||
return generator.generateBlockBucketChunk(this);
|
return generator.generateBlockBucketChunk(this);
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the region for this PlotArea or a RegionWrapper encompassing
|
* Returns the region for this PlotArea or a RegionWrapper encompassing
|
||||||
@ -178,7 +174,7 @@ public abstract class PlotArea {
|
|||||||
*
|
*
|
||||||
* @return the {@link IndependentPlotGenerator}
|
* @return the {@link IndependentPlotGenerator}
|
||||||
*/
|
*/
|
||||||
public IndependentPlotGenerator getGenerator() {
|
@NotNull public IndependentPlotGenerator getGenerator() {
|
||||||
return this.generator;
|
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) {
|
if (this.id == null) {
|
||||||
return this.worldname;
|
return this.worldname;
|
||||||
} else {
|
} else {
|
||||||
@ -422,7 +418,7 @@ public abstract class PlotArea {
|
|||||||
* @param location the location
|
* @param location the location
|
||||||
* @return the {@code Plot} or null if none exists
|
* @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 =
|
final PlotId pid =
|
||||||
this.manager.getPlotId(location.getX(), location.getY(), location.getZ());
|
this.manager.getPlotId(location.getX(), location.getY(), location.getZ());
|
||||||
if (pid == null) {
|
if (pid == null) {
|
||||||
@ -437,7 +433,7 @@ public abstract class PlotArea {
|
|||||||
* @param location the location
|
* @param location the location
|
||||||
* @return base Plot
|
* @return base Plot
|
||||||
*/
|
*/
|
||||||
@Nullable public Plot getPlot(@Nonnull final Location location) {
|
@Nullable public Plot getPlot(@NotNull final Location location) {
|
||||||
final PlotId pid =
|
final PlotId pid =
|
||||||
this.manager.getPlotId(location.getX(), location.getY(), location.getZ());
|
this.manager.getPlotId(location.getX(), location.getY(), location.getZ());
|
||||||
if (pid == null) {
|
if (pid == null) {
|
||||||
@ -452,7 +448,7 @@ public abstract class PlotArea {
|
|||||||
* @param location the location
|
* @param location the location
|
||||||
* @return the base plot or null
|
* @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 =
|
final PlotId pid =
|
||||||
this.manager.getPlotId(location.getX(), location.getY(), location.getZ());
|
this.manager.getPlotId(location.getX(), location.getY(), location.getZ());
|
||||||
if (pid == null) {
|
if (pid == null) {
|
||||||
@ -468,7 +464,7 @@ public abstract class PlotArea {
|
|||||||
* @param location the location
|
* @param location the location
|
||||||
* @return Plot or null
|
* @return Plot or null
|
||||||
*/
|
*/
|
||||||
@Nullable public Plot getOwnedPlotAbs(@Nonnull final Location location) {
|
@Nullable public Plot getOwnedPlotAbs(@NotNull final Location location) {
|
||||||
final PlotId pid =
|
final PlotId pid =
|
||||||
this.manager.getPlotId(location.getX(), location.getY(), location.getZ());
|
this.manager.getPlotId(location.getX(), location.getY(), location.getZ());
|
||||||
if (pid == null) {
|
if (pid == null) {
|
||||||
@ -483,11 +479,11 @@ public abstract class PlotArea {
|
|||||||
* @param id the {@code PlotId}
|
* @param id the {@code PlotId}
|
||||||
* @return the plot or null
|
* @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);
|
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);
|
Plot plot = this.plots.get(id);
|
||||||
return plot == null ? null : plot.getBasePlot(false);
|
return plot == null ? null : plot.getBasePlot(false);
|
||||||
}
|
}
|
||||||
@ -496,17 +492,17 @@ public abstract class PlotArea {
|
|||||||
return this.TYPE != 2 || getRegionAbs().isIn(x, z);
|
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
|
return this.min == null || (id.x >= this.min.x && id.x <= this.max.x && id.y >= this.min.y
|
||||||
&& id.y <= this.max.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
|
return StringMan.isEqual(location.getWorld(), this.worldname) && (getRegionAbs() == null
|
||||||
|| this.region.isIn(location.getX(), location.getZ()));
|
|| this.region.isIn(location.getX(), location.getZ()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull Set<Plot> getPlotsAbs(final UUID uuid) {
|
@NotNull Set<Plot> getPlotsAbs(final UUID uuid) {
|
||||||
if (uuid == null) {
|
if (uuid == null) {
|
||||||
return Collections.emptySet();
|
return Collections.emptySet();
|
||||||
}
|
}
|
||||||
@ -519,7 +515,7 @@ public abstract class PlotArea {
|
|||||||
return myPlots;
|
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))
|
return getPlots().stream().filter(plot -> plot.isBasePlot() && plot.isOwner(uuid))
|
||||||
.collect(ImmutableSet.toImmutableSet());
|
.collect(ImmutableSet.toImmutableSet());
|
||||||
}
|
}
|
||||||
@ -533,7 +529,7 @@ public abstract class PlotArea {
|
|||||||
return this.plots.values();
|
return this.plots.values();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getPlotCount(@Nonnull final UUID uuid) {
|
public int getPlotCount(@NotNull final UUID uuid) {
|
||||||
if (!Settings.Done.COUNTS_TOWARDS_LIMIT) {
|
if (!Settings.Done.COUNTS_TOWARDS_LIMIT) {
|
||||||
return (int) getPlotsAbs(uuid).stream().filter(plot -> !plot.hasFlag(Flags.DONE))
|
return (int) getPlotsAbs(uuid).stream().filter(plot -> !plot.hasFlag(Flags.DONE))
|
||||||
.count();
|
.count();
|
||||||
@ -546,11 +542,11 @@ public abstract class PlotArea {
|
|||||||
*
|
*
|
||||||
* @deprecated Use {@link #getPlots(UUID)}
|
* @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());
|
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));
|
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;
|
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);
|
Plot plot = getOwnedPlotAbs(id);
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
if (this.min != null && (id.x < this.min.x || id.x > this.max.x || id.y < this.min.y
|
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;
|
return plot;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable public Plot getPlot(@Nonnull final PlotId id) {
|
@Nullable public Plot getPlot(@NotNull final PlotId id) {
|
||||||
final Plot plot = getOwnedPlotAbs(id);
|
final Plot plot = getOwnedPlotAbs(id);
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
if (this.min != null && (id.x < this.min.x || id.x > this.max.x || id.y < this.min.y
|
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();
|
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);
|
final Plot plot = getPlot(location);
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
return 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;
|
return this.clusters != null ? this.clusters.get(plot.getId().x, plot.getId().y) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable public PlotCluster getFirstIntersectingCluster(@Nonnull final PlotId pos1,
|
@Nullable public PlotCluster getFirstIntersectingCluster(@NotNull final PlotId pos1,
|
||||||
@Nonnull final PlotId pos2) {
|
@NotNull final PlotId pos2) {
|
||||||
if (this.clusters == null) {
|
if (this.clusters == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -613,11 +609,11 @@ public abstract class PlotArea {
|
|||||||
return null;
|
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;
|
return this.clusters != null ? this.clusters.get(id.x, id.y) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PlotManager getPlotManager() {
|
@NotNull public PlotManager getPlotManager() {
|
||||||
return this.manager;
|
return this.manager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -628,14 +624,14 @@ public abstract class PlotArea {
|
|||||||
*
|
*
|
||||||
* @see FlagManager
|
* @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) {
|
if (this.meta == null) {
|
||||||
this.meta = new ConcurrentHashMap<>();
|
this.meta = new ConcurrentHashMap<>();
|
||||||
}
|
}
|
||||||
this.meta.put(key, value);
|
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);
|
final Object v = getMeta(key);
|
||||||
return v == null ? def : (T) v;
|
return v == null ? def : (T) v;
|
||||||
}
|
}
|
||||||
@ -645,14 +641,14 @@ public abstract class PlotArea {
|
|||||||
* <br>
|
* <br>
|
||||||
* For persistent metadata use the flag system
|
* 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) {
|
if (this.meta != null) {
|
||||||
return this.meta.get(key);
|
return this.meta.get(key);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unused") @Nonnull public Set<Plot> getBasePlots() {
|
@SuppressWarnings("unused") @NotNull public Set<Plot> getBasePlots() {
|
||||||
final HashSet<Plot> myPlots = new HashSet<>(getPlots());
|
final HashSet<Plot> myPlots = new HashSet<>(getPlots());
|
||||||
myPlots.removeIf(plot -> !plot.isBasePlot());
|
myPlots.removeIf(plot -> !plot.isBasePlot());
|
||||||
return myPlots;
|
return myPlots;
|
||||||
@ -685,15 +681,15 @@ public abstract class PlotArea {
|
|||||||
* @deprecated Use {@link #getPlotsMap()}
|
* @deprecated Use {@link #getPlotsMap()}
|
||||||
*/
|
*/
|
||||||
//todo eventually remove
|
//todo eventually remove
|
||||||
@Deprecated @Nonnull public Map<PlotId, Plot> getPlotsRaw() {
|
@Deprecated @NotNull public Map<PlotId, Plot> getPlotsRaw() {
|
||||||
return ImmutableMap.copyOf(plots);
|
return ImmutableMap.copyOf(plots);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull public Set<Entry<PlotId, Plot>> getPlotEntries() {
|
@NotNull public Set<Entry<PlotId, Plot>> getPlotEntries() {
|
||||||
return this.plots.entrySet();
|
return this.plots.entrySet();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean addPlot(@Nonnull final Plot plot) {
|
public boolean addPlot(@NotNull final Plot plot) {
|
||||||
for (PlotPlayer pp : plot.getPlayersInPlot()) {
|
for (PlotPlayer pp : plot.getPlayersInPlot()) {
|
||||||
pp.setMeta(PlotPlayer.META_LAST_PLOT, plot);
|
pp.setMeta(PlotPlayer.META_LAST_PLOT, plot);
|
||||||
}
|
}
|
||||||
@ -731,7 +727,7 @@ public abstract class PlotArea {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean addPlotIfAbsent(@Nonnull final Plot plot) {
|
public boolean addPlotIfAbsent(@NotNull final Plot plot) {
|
||||||
if (this.plots.putIfAbsent(plot.getId(), plot) == null) {
|
if (this.plots.putIfAbsent(plot.getId(), plot) == null) {
|
||||||
for (PlotPlayer pp : plot.getPlayersInPlot()) {
|
for (PlotPlayer pp : plot.getPlayersInPlot()) {
|
||||||
pp.setMeta(PlotPlayer.META_LAST_PLOT, plot);
|
pp.setMeta(PlotPlayer.META_LAST_PLOT, plot);
|
||||||
@ -741,7 +737,7 @@ public abstract class PlotArea {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean addPlotAbs(@Nonnull final Plot plot) {
|
public boolean addPlotAbs(@NotNull final Plot plot) {
|
||||||
return this.plots.put(plot.getId(), plot) == null;
|
return this.plots.put(plot.getId(), plot) == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -786,14 +782,14 @@ public abstract class PlotArea {
|
|||||||
*
|
*
|
||||||
* @param key Meta data key
|
* @param key Meta data key
|
||||||
*/
|
*/
|
||||||
public void deleteMeta(@Nonnull final String key) {
|
public void deleteMeta(@NotNull final String key) {
|
||||||
if (this.meta != null) {
|
if (this.meta != null) {
|
||||||
this.meta.remove(key);
|
this.meta.remove(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canClaim(@Nullable final PlotPlayer player, @Nonnull final PlotId pos1,
|
public boolean canClaim(@Nullable final PlotPlayer player, @NotNull final PlotId pos1,
|
||||||
@Nonnull final PlotId pos2) {
|
@NotNull final PlotId pos2) {
|
||||||
if (pos1.x == pos2.x && pos1.y == pos2.y) {
|
if (pos1.x == pos2.x && pos1.y == pos2.y) {
|
||||||
if (getOwnedPlot(pos1) != null) {
|
if (getOwnedPlot(pos1) != null) {
|
||||||
return false;
|
return false;
|
||||||
@ -819,11 +815,11 @@ public abstract class PlotArea {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean removePlot(@Nonnull final PlotId id) {
|
public boolean removePlot(@NotNull final PlotId id) {
|
||||||
return this.plots.remove(id) != null;
|
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) {
|
if (plotIds.size() < 2) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -901,7 +897,7 @@ public abstract class PlotArea {
|
|||||||
* @param pos2 second corner of selection
|
* @param pos2 second corner of selection
|
||||||
* @return the plots in the selection which are owned
|
* @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 int size = (1 + pos2.x - pos1.x) * (1 + pos2.y - pos1.y);
|
||||||
final Set<Plot> result = new HashSet<>();
|
final Set<Plot> result = new HashSet<>();
|
||||||
if (size < 16 || size < getPlotCount()) {
|
if (size < 16 || size < getPlotCount()) {
|
||||||
|
@ -132,8 +132,8 @@ public class PlotCluster {
|
|||||||
toReturn = center.getHome();
|
toReturn = center.getHome();
|
||||||
if (toReturn.getY() == 0) {
|
if (toReturn.getY() == 0) {
|
||||||
PlotManager manager = this.area.getPlotManager();
|
PlotManager manager = this.area.getPlotManager();
|
||||||
Location loc = manager.getSignLoc(center);
|
Location location = manager.getSignLoc(center);
|
||||||
toReturn.setY(loc.getY());
|
toReturn.setY(location.getY());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
toReturn = getClusterBottom().add(home.x, home.y, home.z);
|
toReturn = getClusterBottom().add(home.x, home.y, home.z);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package com.github.intellectualsites.plotsquared.plot.object;
|
package com.github.intellectualsites.plotsquared.plot.object;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import javax.annotation.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class PlotId {
|
public class PlotId {
|
||||||
/**
|
/**
|
||||||
@ -32,14 +32,14 @@ public class PlotId {
|
|||||||
* @return the PlotId representation of the arguement
|
* @return the PlotId representation of the arguement
|
||||||
* @throws IllegalArgumentException if the string does not contain a valid PlotId
|
* @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);
|
PlotId plot = fromStringOrNull(string);
|
||||||
if (plot == null)
|
if (plot == null)
|
||||||
throw new IllegalArgumentException("Cannot create PlotID. String invalid.");
|
throw new IllegalArgumentException("Cannot create PlotID. String invalid.");
|
||||||
return plot;
|
return plot;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable public static PlotId fromStringOrNull(@Nonnull String string) {
|
@Nullable public static PlotId fromStringOrNull(@NotNull String string) {
|
||||||
String[] parts = string.split("[;|,]");
|
String[] parts = string.split("[;|,]");
|
||||||
if (parts.length < 2) {
|
if (parts.length < 2) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -39,6 +39,12 @@ public abstract class PlotManager {
|
|||||||
|
|
||||||
public abstract boolean unClaimPlot(Plot plot, Runnable whenDone);
|
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);
|
public abstract Location getSignLoc(Plot plot);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -47,8 +53,7 @@ public abstract class PlotManager {
|
|||||||
*/
|
*/
|
||||||
public abstract String[] getPlotComponents(PlotId plotId);
|
public abstract String[] getPlotComponents(PlotId plotId);
|
||||||
|
|
||||||
public abstract boolean setComponent(PlotId plotId, String component,
|
public abstract boolean setComponent(PlotId plotId, String component, BlockBucket blocks);
|
||||||
BlockBucket blocks);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* PLOT MERGING (return false if your generator does not support plot
|
* PLOT MERGING (return false if your generator does not support plot
|
||||||
|
@ -14,8 +14,8 @@ import com.github.intellectualsites.plotsquared.plot.util.*;
|
|||||||
import com.github.intellectualsites.plotsquared.plot.util.expiry.ExpireManager;
|
import com.github.intellectualsites.plotsquared.plot.util.expiry.ExpireManager;
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
import lombok.NonNull;
|
import lombok.NonNull;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@ -306,7 +306,7 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer {
|
|||||||
*
|
*
|
||||||
* @return The location
|
* @return The location
|
||||||
*/
|
*/
|
||||||
public Location getLocation() {
|
@NotNull public Location getLocation() {
|
||||||
Location location = getMeta("location");
|
Location location = getMeta("location");
|
||||||
if (location != null) {
|
if (location != null) {
|
||||||
return location;
|
return location;
|
||||||
@ -335,14 +335,14 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer {
|
|||||||
*
|
*
|
||||||
* @return UUID
|
* @return UUID
|
||||||
*/
|
*/
|
||||||
@Override @Nonnull public abstract UUID getUUID();
|
@Override @NotNull public abstract UUID getUUID();
|
||||||
|
|
||||||
public boolean canTeleport(@Nonnull final Location loc) {
|
public boolean canTeleport(@NotNull final Location location) {
|
||||||
Preconditions.checkNotNull(loc, "Specified location cannot be null");
|
Preconditions.checkNotNull(location, "Specified location cannot be null");
|
||||||
final Location current = getLocationFull();
|
final Location current = getLocationFull();
|
||||||
teleport(loc);
|
teleport(location);
|
||||||
boolean result = true;
|
boolean result = true;
|
||||||
if (!getLocation().equals(loc)) {
|
if (!getLocation().equals(location)) {
|
||||||
result = false;
|
result = false;
|
||||||
}
|
}
|
||||||
teleport(current);
|
teleport(current);
|
||||||
@ -421,21 +421,21 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer {
|
|||||||
*
|
*
|
||||||
* @param weather the weather visible to the player
|
* @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.
|
* Get this player's gamemode.
|
||||||
*
|
*
|
||||||
* @return the gamemode of the player.
|
* @return the gamemode of the player.
|
||||||
*/
|
*/
|
||||||
@Nonnull public abstract PlotGameMode getGameMode();
|
@NotNull public abstract PlotGameMode getGameMode();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set this player's gameMode.
|
* Set this player's gameMode.
|
||||||
*
|
*
|
||||||
* @param gameMode the gamemode to set
|
* @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).
|
* 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 location where to play the music
|
||||||
* @param id the record item id
|
* @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.
|
* Check if this player is banned.
|
||||||
@ -493,10 +493,10 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer {
|
|||||||
ByteBuffer buffer = ByteBuffer.allocate(13);
|
ByteBuffer buffer = ByteBuffer.allocate(13);
|
||||||
buffer.putShort((short) x);
|
buffer.putShort((short) x);
|
||||||
buffer.putShort((short) z);
|
buffer.putShort((short) z);
|
||||||
Location loc = getLocation();
|
Location location = getLocation();
|
||||||
buffer.putInt(loc.getX());
|
buffer.putInt(location.getX());
|
||||||
buffer.put((byte) loc.getY());
|
buffer.put((byte) location.getY());
|
||||||
buffer.putInt(loc.getZ());
|
buffer.putInt(location.getZ());
|
||||||
setPersistentMeta("quitLoc", buffer.array());
|
setPersistentMeta("quitLoc", buffer.array());
|
||||||
} else if (hasPersistentMeta("quitLoc")) {
|
} else if (hasPersistentMeta("quitLoc")) {
|
||||||
removePersistentMeta("quitLoc");
|
removePersistentMeta("quitLoc");
|
||||||
@ -596,11 +596,11 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Location loc = new Location(plot.getWorldName(), x, y, z);
|
final Location location = new Location(plot.getWorldName(), x, y, z);
|
||||||
if (plot.isLoaded()) {
|
if (plot.isLoaded()) {
|
||||||
TaskManager.runTask(() -> {
|
TaskManager.runTask(() -> {
|
||||||
if (getMeta("teleportOnLogin", true)) {
|
if (getMeta("teleportOnLogin", true)) {
|
||||||
teleport(loc);
|
teleport(location);
|
||||||
sendMessage(
|
sendMessage(
|
||||||
Captions.TELEPORTED_TO_PLOT.f() + " (quitLoc) (" + plotX
|
Captions.TELEPORTED_TO_PLOT.f() + " (quitLoc) (" + plotX
|
||||||
+ "," + plotZ + ")");
|
+ "," + plotZ + ")");
|
||||||
@ -612,7 +612,7 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer {
|
|||||||
TaskManager.runTask(() -> {
|
TaskManager.runTask(() -> {
|
||||||
if (getMeta("teleportOnLogin", true)) {
|
if (getMeta("teleportOnLogin", true)) {
|
||||||
if (plot.isLoaded()) {
|
if (plot.isLoaded()) {
|
||||||
teleport(loc);
|
teleport(location);
|
||||||
sendMessage(Captions.TELEPORTED_TO_PLOT.f()
|
sendMessage(Captions.TELEPORTED_TO_PLOT.f()
|
||||||
+ " (quitLoc-unloaded) (" + plotX + "," + plotZ
|
+ " (quitLoc-unloaded) (" + plotX + "," + plotZ
|
||||||
+ ")");
|
+ ")");
|
||||||
|
@ -5,7 +5,12 @@ import com.github.intellectualsites.plotsquared.plot.flag.Flags;
|
|||||||
import com.github.intellectualsites.plotsquared.plot.object.comment.PlotComment;
|
import com.github.intellectualsites.plotsquared.plot.object.comment.PlotComment;
|
||||||
import com.google.common.collect.ImmutableList;
|
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.
|
* Generic settings class.
|
||||||
@ -80,6 +85,17 @@ public class PlotSettings {
|
|||||||
return false;
|
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() {
|
public BlockLoc getPosition() {
|
||||||
if (this.position == null) {
|
if (this.position == null) {
|
||||||
return new BlockLoc(0, 0, 0);
|
return new BlockLoc(0, 0, 0);
|
||||||
|
@ -30,8 +30,8 @@ public class Schematic {
|
|||||||
|
|
||||||
public boolean setBlock(BlockVector3 position, BaseBlock block) throws WorldEditException {
|
public boolean setBlock(BlockVector3 position, BaseBlock block) throws WorldEditException {
|
||||||
if (clipboard.getRegion().contains(position)) {
|
if (clipboard.getRegion().contains(position)) {
|
||||||
BlockVector3 v = position.subtract(clipboard.getRegion().getMinimumPoint());
|
BlockVector3 vector3 = position.subtract(clipboard.getRegion().getMinimumPoint());
|
||||||
clipboard.setBlock(v, block);
|
clipboard.setBlock(vector3, block);
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
@ -39,9 +39,9 @@ public class Schematic {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void save(File file) throws IOException {
|
public void save(File file) throws IOException {
|
||||||
try (SpongeSchematicWriter ssw = new SpongeSchematicWriter(
|
try (SpongeSchematicWriter schematicWriter = new SpongeSchematicWriter(
|
||||||
new NBTOutputStream(new FileOutputStream(file)))) {
|
new NBTOutputStream(new FileOutputStream(file)))) {
|
||||||
ssw.write(clipboard);
|
schematicWriter.write(clipboard);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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.flag.Flag;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.*;
|
import com.github.intellectualsites.plotsquared.plot.object.*;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@ -60,7 +60,7 @@ public class SinglePlot extends Plot {
|
|||||||
return super.isLoaded();
|
return super.isLoaded();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull @Override public HashSet<RegionWrapper> getRegions() {
|
@NotNull @Override public HashSet<RegionWrapper> getRegions() {
|
||||||
return regions;
|
return regions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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.SetupUtils;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
|
import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.WorldUtil;
|
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.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
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);
|
this.DEFAULT_HOME = new PlotLoc(Integer.MAX_VALUE, Integer.MAX_VALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@NotNull @Override
|
||||||
protected PlotManager createManager() {
|
protected PlotManager createManager() {
|
||||||
return new SinglePlotManager(this);
|
return new SinglePlotManager(this);
|
||||||
}
|
}
|
||||||
@ -76,8 +76,8 @@ public class SinglePlotArea extends GridPlotWorld {
|
|||||||
new File(dataDest, file.getName()).toPath());
|
new File(dataDest, file.getName()).toPath());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (IOException ignore) {
|
} catch (IOException exception) {
|
||||||
ignore.printStackTrace();
|
exception.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -113,38 +113,38 @@ public class SinglePlotArea extends GridPlotWorld {
|
|||||||
new ConfigurationNode("void", this.VOID, "Void world", Configuration.BOOLEAN)};
|
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());
|
PlotId pid = PlotId.fromStringOrNull(location.getWorld());
|
||||||
Plot plot = pid == null ? null : this.plots.get(pid);
|
Plot plot = pid == null ? null : this.plots.get(pid);
|
||||||
return plot == null ? null : plot.getBasePlot(false);
|
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());
|
PlotId pid = PlotId.fromStringOrNull(location.getWorld());
|
||||||
return pid == null ? null : plots.get(pid);
|
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());
|
PlotId pid = PlotId.fromStringOrNull(location.getWorld());
|
||||||
return pid == null ? null : getPlot(pid);
|
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());
|
final PlotId pid = PlotId.fromStringOrNull(location.getWorld());
|
||||||
return pid == null ? null : getPlotAbs(pid);
|
return pid == null ? null : getPlotAbs(pid);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean addPlot(@Nonnull Plot plot) {
|
public boolean addPlot(@NotNull Plot plot) {
|
||||||
plot = adapt(plot);
|
plot = adapt(plot);
|
||||||
return super.addPlot(plot);
|
return super.addPlot(plot);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean addPlotAbs(@Nonnull Plot plot) {
|
@Override public boolean addPlotAbs(@NotNull Plot plot) {
|
||||||
plot = adapt(plot);
|
plot = adapt(plot);
|
||||||
return super.addPlotAbs(plot);
|
return super.addPlotAbs(plot);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean addPlotIfAbsent(@Nonnull Plot plot) {
|
@Override public boolean addPlotIfAbsent(@NotNull Plot plot) {
|
||||||
plot = adapt(plot);
|
plot = adapt(plot);
|
||||||
return super.addPlotIfAbsent(plot);
|
return super.addPlotIfAbsent(plot);
|
||||||
}
|
}
|
||||||
@ -160,7 +160,7 @@ public class SinglePlotArea extends GridPlotWorld {
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable public Plot getPlotAbs(@Nonnull final PlotId id) {
|
@Nullable public Plot getPlotAbs(@NotNull final PlotId id) {
|
||||||
Plot plot = getOwnedPlotAbs(id);
|
Plot plot = getOwnedPlotAbs(id);
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
return new SinglePlot(this, id);
|
return new SinglePlot(this, id);
|
||||||
@ -168,7 +168,7 @@ public class SinglePlotArea extends GridPlotWorld {
|
|||||||
return plot;
|
return plot;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable public Plot getPlot(@Nonnull PlotId id) {
|
@Nullable public Plot getPlot(@NotNull PlotId id) {
|
||||||
// TODO
|
// TODO
|
||||||
Plot plot = getOwnedPlotAbs(id);
|
Plot plot = getOwnedPlotAbs(id);
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
|
@ -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.object.worlds.SinglePlotArea;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.expiry.ExpireManager;
|
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.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
@ -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.*;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.stream.AbstractDelegateOutputStream;
|
import com.github.intellectualsites.plotsquared.plot.object.stream.AbstractDelegateOutputStream;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.expiry.ExpireManager;
|
import com.github.intellectualsites.plotsquared.plot.util.expiry.ExpireManager;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.net.HttpURLConnection;
|
import java.net.HttpURLConnection;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
@ -329,7 +329,7 @@ public class MainUtil {
|
|||||||
* @param owner
|
* @param owner
|
||||||
* @return The player's name, None, Everyone or Unknown
|
* @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) {
|
if (owner == null) {
|
||||||
return Captions.NONE.getTranslated();
|
return Captions.NONE.getTranslated();
|
||||||
}
|
}
|
||||||
@ -358,7 +358,7 @@ public class MainUtil {
|
|||||||
* @return
|
* @return
|
||||||
* @see Plot#getCorners()
|
* @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 min = null;
|
||||||
Location max = null;
|
Location max = null;
|
||||||
for (RegionWrapper region : regions) {
|
for (RegionWrapper region : regions) {
|
||||||
@ -560,11 +560,11 @@ public class MainUtil {
|
|||||||
* Send a message to the player.
|
* Send a message to the player.
|
||||||
*
|
*
|
||||||
* @param player Player to receive message
|
* @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(...))
|
* @return true Can be used in things such as commands (return PlayerFunctions.sendMessage(...))
|
||||||
*/
|
*/
|
||||||
public static boolean sendMessage(PlotPlayer player, String msg) {
|
public static boolean sendMessage(PlotPlayer player, String message) {
|
||||||
return sendMessage(player, msg, true);
|
return sendMessage(player, message, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -585,7 +585,7 @@ public class MainUtil {
|
|||||||
* @param prefix If the message should be prefixed with the configured prefix
|
* @param prefix If the message should be prefixed with the configured prefix
|
||||||
* @return
|
* @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 (!msg.isEmpty()) {
|
||||||
if (player == null) {
|
if (player == null) {
|
||||||
String message = (prefix ? Captions.PREFIX.getTranslated() : "") + msg;
|
String message = (prefix ? Captions.PREFIX.getTranslated() : "") + msg;
|
||||||
|
@ -327,9 +327,9 @@ public abstract class SchematicHandler {
|
|||||||
|
|
||||||
public Schematic getSchematic(@NotNull URL url) {
|
public Schematic getSchematic(@NotNull URL url) {
|
||||||
try {
|
try {
|
||||||
ReadableByteChannel rbc = Channels.newChannel(url.openStream());
|
ReadableByteChannel readableByteChannel = Channels.newChannel(url.openStream());
|
||||||
InputStream is = Channels.newInputStream(rbc);
|
InputStream inputStream = Channels.newInputStream(readableByteChannel);
|
||||||
return getSchematic(is);
|
return getSchematic(inputStream);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -338,15 +338,15 @@ public abstract class SchematicHandler {
|
|||||||
|
|
||||||
public Schematic getSchematic(@NotNull InputStream is) {
|
public Schematic getSchematic(@NotNull InputStream is) {
|
||||||
try {
|
try {
|
||||||
SpongeSchematicReader ssr =
|
SpongeSchematicReader schematicReader =
|
||||||
new SpongeSchematicReader(new NBTInputStream(new GZIPInputStream(is)));
|
new SpongeSchematicReader(new NBTInputStream(new GZIPInputStream(is)));
|
||||||
BlockArrayClipboard clip = (BlockArrayClipboard) ssr.read();
|
BlockArrayClipboard clip = (BlockArrayClipboard) schematicReader.read();
|
||||||
return new Schematic(clip);
|
return new Schematic(clip);
|
||||||
} catch (IOException ignored) {
|
} catch (IOException ignored) {
|
||||||
try {
|
try {
|
||||||
MCEditSchematicReader msr =
|
MCEditSchematicReader schematicReader =
|
||||||
new MCEditSchematicReader(new NBTInputStream(new GZIPInputStream(is)));
|
new MCEditSchematicReader(new NBTInputStream(new GZIPInputStream(is)));
|
||||||
BlockArrayClipboard clip = (BlockArrayClipboard) msr.read();
|
BlockArrayClipboard clip = (BlockArrayClipboard) schematicReader.read();
|
||||||
return new Schematic(clip);
|
return new Schematic(clip);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -11,7 +11,7 @@ import com.github.intellectualsites.plotsquared.plot.uuid.UUIDWrapper;
|
|||||||
import com.google.common.collect.BiMap;
|
import com.google.common.collect.BiMap;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -15,7 +15,7 @@ import com.google.common.collect.BiMap;
|
|||||||
import com.google.common.collect.HashBiMap;
|
import com.google.common.collect.HashBiMap;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -102,8 +102,7 @@ public abstract class BasicLocalBlockQueue extends LocalBlockQueue {
|
|||||||
lastWrappedChunk.setBlock(x & 15, y, z & 15, id);
|
lastWrappedChunk.setBlock(x & 15, y, z & 15, id);
|
||||||
LocalChunk previous = this.blockChunks.put(pair, lastWrappedChunk);
|
LocalChunk previous = this.blockChunks.put(pair, lastWrappedChunk);
|
||||||
if (previous == null) {
|
if (previous == null) {
|
||||||
chunks.add(lastWrappedChunk);
|
return chunks.add(lastWrappedChunk);
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
this.blockChunks.put(pair, previous);
|
this.blockChunks.put(pair, previous);
|
||||||
lastWrappedChunk = previous;
|
lastWrappedChunk = previous;
|
||||||
|
@ -102,9 +102,10 @@ public class DelegateLocalBlockQueue extends LocalBlockQueue {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void enqueue() {
|
@Override public boolean enqueue() {
|
||||||
if (parent != null) {
|
if (parent != null) {
|
||||||
parent.enqueue();
|
return parent.enqueue();
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,10 +45,10 @@ public class GlobalBlockQueue {
|
|||||||
|
|
||||||
public GlobalBlockQueue(QueueProvider provider, int threads) {
|
public GlobalBlockQueue(QueueProvider provider, int threads) {
|
||||||
this.provider = provider;
|
this.provider = provider;
|
||||||
activeQueues = new ConcurrentLinkedDeque<>();
|
this.activeQueues = new ConcurrentLinkedDeque<>();
|
||||||
inactiveQueues = new ConcurrentLinkedDeque<>();
|
this.inactiveQueues = new ConcurrentLinkedDeque<>();
|
||||||
runnables = new ConcurrentLinkedDeque<>();
|
this.runnables = new ConcurrentLinkedDeque<>();
|
||||||
running = new AtomicBoolean();
|
this.running = new AtomicBoolean();
|
||||||
this.PARALLEL_THREADS = threads;
|
this.PARALLEL_THREADS = threads;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,12 +151,20 @@ public class GlobalBlockQueue {
|
|||||||
return false;
|
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)) {
|
if (queue.size() > 0 && !activeQueues.contains(queue)) {
|
||||||
queue.optimize();
|
queue.optimize();
|
||||||
activeQueues.add(queue);
|
success = activeQueues.add(queue);
|
||||||
}
|
}
|
||||||
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void dequeue(LocalBlockQueue queue) {
|
public void dequeue(LocalBlockQueue queue) {
|
||||||
|
@ -16,8 +16,12 @@ import java.util.Map;
|
|||||||
|
|
||||||
public abstract class LocalBlockQueue {
|
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) {
|
public ScopedLocalBlockQueue getForChunk(int x, int z) {
|
||||||
@ -92,8 +96,8 @@ public abstract class LocalBlockQueue {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void enqueue() {
|
public boolean enqueue() {
|
||||||
GlobalBlockQueue.IMP.enqueue(this);
|
return GlobalBlockQueue.IMP.enqueue(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCuboid(Location pos1, Location pos2, PlotBlock block) {
|
public void setCuboid(Location pos1, Location pos2, PlotBlock block) {
|
||||||
|
@ -80,22 +80,22 @@ public class ScopedLocalBlockQueue extends DelegateLocalBlockQueue {
|
|||||||
int bx = minX;
|
int bx = minX;
|
||||||
int bz = minZ;
|
int bz = minZ;
|
||||||
PlotArea area = PlotSquared.get().getPlotArea(getWorld(), null);
|
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) {
|
if (area != null) {
|
||||||
PlotManager manager = area.getPlotManager();
|
PlotManager manager = area.getPlotManager();
|
||||||
for (int x = 0; x < 16; x++) {
|
for (int x = 0; x < 16; x++) {
|
||||||
loc.setX(bx + x);
|
location.setX(bx + x);
|
||||||
for (int z = 0; z < 16; z++) {
|
for (int z = 0; z < 16; z++) {
|
||||||
loc.setZ(bz + z);
|
location.setZ(bz + z);
|
||||||
task.run(area.getPlotAbs(loc), x, z);
|
task.run(area.getPlotAbs(location), x, z);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (int x = 0; x < 16; x++) {
|
for (int x = 0; x < 16; x++) {
|
||||||
loc.setX(bx + x);
|
location.setX(bx + x);
|
||||||
for (int z = 0; z < 16; z++) {
|
for (int z = 0; z < 16; z++) {
|
||||||
loc.setZ(bz + z);
|
location.setZ(bz + z);
|
||||||
task.run(loc.getPlotAbs(), x, z);
|
task.run(location.getPlotAbs(), x, z);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,19 @@
|
|||||||
package com.github.intellectualsites.plotsquared.plot.database;
|
package com.github.intellectualsites.plotsquared.plot.database;
|
||||||
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.flag.Flag;
|
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 com.github.intellectualsites.plotsquared.plot.object.comment.PlotComment;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import java.util.HashMap;
|
||||||
import java.util.*;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public class AbstractDBTest implements AbstractDB {
|
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 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) {
|
RunnableVal<List<PlotComment>> whenDone) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,6 +119,7 @@ permissions:
|
|||||||
plots.toggle: true
|
plots.toggle: true
|
||||||
plots.toggle.titles: true
|
plots.toggle.titles: true
|
||||||
plots.toggle.chat: true
|
plots.toggle.chat: true
|
||||||
|
plots.toggle.time: true
|
||||||
plots.set.biome: true
|
plots.set.biome: true
|
||||||
plots.set.home: true
|
plots.set.home: true
|
||||||
plots.set.alias: true
|
plots.set.alias: true
|
||||||
|
2
gradlew
vendored
2
gradlew
vendored
@ -7,7 +7,7 @@
|
|||||||
# you may not use this file except in compliance with the License.
|
# you may not use this file except in compliance with the License.
|
||||||
# You may obtain a copy of the License at
|
# 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
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
2
gradlew.bat
vendored
2
gradlew.bat
vendored
@ -5,7 +5,7 @@
|
|||||||
@rem you may not use this file except in compliance with the License.
|
@rem you may not use this file except in compliance with the License.
|
||||||
@rem You may obtain a copy of the License at
|
@rem You may obtain a copy of the License at
|
||||||
@rem
|
@rem
|
||||||
@rem https://www.apache.org/licenses/LICENSE-2.0
|
@rem http://www.apache.org/licenses/LICENSE-2.0
|
||||||
@rem
|
@rem
|
||||||
@rem Unless required by applicable law or agreed to in writing, software
|
@rem Unless required by applicable law or agreed to in writing, software
|
||||||
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
Loading…
Reference in New Issue
Block a user