mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-26 07:06:44 +01:00
Use PaperLib and make command task return completable futures
This commit is contained in:
parent
bd797b59fe
commit
1fbfc767c4
@ -3,6 +3,10 @@ repositories {
|
|||||||
maven { url = "https://oss.sonatype.org/content/repositories/snapshots/" }
|
maven { url = "https://oss.sonatype.org/content/repositories/snapshots/" }
|
||||||
maven { url "http://nexus.hc.to/content/repositories/pub_releases" }
|
maven { url "http://nexus.hc.to/content/repositories/pub_releases" }
|
||||||
maven { url = "https://repo.codemc.org/repository/maven-public" }
|
maven { url = "https://repo.codemc.org/repository/maven-public" }
|
||||||
|
maven {
|
||||||
|
name 'papermc'
|
||||||
|
url 'https://papermc.io/repo/repository/maven-public/'
|
||||||
|
}
|
||||||
mavenLocal()
|
mavenLocal()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -12,6 +16,7 @@ dependencies {
|
|||||||
compile 'org.spigotmc:spigot-api:1.13.2-R0.1-SNAPSHOT'
|
compile 'org.spigotmc:spigot-api:1.13.2-R0.1-SNAPSHOT'
|
||||||
compile(group: 'com.sk89q.worldedit', name: 'worldedit-bukkit', version: '7.0.0-SNAPSHOT')
|
compile(group: 'com.sk89q.worldedit', name: 'worldedit-bukkit', version: '7.0.0-SNAPSHOT')
|
||||||
compile(group: 'org.bstats', name: 'bstats-bukkit', version: '1.4')
|
compile(group: 'org.bstats', name: 'bstats-bukkit', version: '1.4')
|
||||||
|
compile "io.papermc:paperlib:1.0.1"
|
||||||
compile("net.milkbowl.vault:VaultAPI:1.7") {
|
compile("net.milkbowl.vault:VaultAPI:1.7") {
|
||||||
exclude module: 'bukkit'
|
exclude module: 'bukkit'
|
||||||
}
|
}
|
||||||
@ -37,7 +42,9 @@ shadowJar {
|
|||||||
dependencies {
|
dependencies {
|
||||||
include(dependency(':Core'))
|
include(dependency(':Core'))
|
||||||
include(dependency('org.bstats:bstats-bukkit:1.4'))
|
include(dependency('org.bstats:bstats-bukkit:1.4'))
|
||||||
|
include(dependency("io.papermc:paperlib:1.0.1"))
|
||||||
}
|
}
|
||||||
|
relocate 'io.papermc.lib', 'com.github.intellectualsites.plotsquared.bukkit.paperlib'
|
||||||
// relocate('org.mcstats', 'com.plotsquared.stats')
|
// relocate('org.mcstats', 'com.plotsquared.stats')
|
||||||
archiveName = "${parent.name}-${project.name}-${parent.version}.jar"
|
archiveName = "${parent.name}-${project.name}-${parent.version}.jar"
|
||||||
destinationDir = file '../target'
|
destinationDir = file '../target'
|
||||||
|
@ -1,36 +1,11 @@
|
|||||||
package com.github.intellectualsites.plotsquared.bukkit;
|
package com.github.intellectualsites.plotsquared.bukkit;
|
||||||
|
|
||||||
import static com.github.intellectualsites.plotsquared.plot.util.ReflectionUtils.getRefClass;
|
|
||||||
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.generator.BukkitPlotGenerator;
|
import com.github.intellectualsites.plotsquared.bukkit.generator.BukkitPlotGenerator;
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.listeners.ChunkListener;
|
import com.github.intellectualsites.plotsquared.bukkit.listeners.*;
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.listeners.EntitySpawnListener;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.listeners.PlayerEvents;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.listeners.PlotPlusListener;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.listeners.SingleWorldListener;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.listeners.WorldEvents;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.titles.DefaultTitle_111;
|
import com.github.intellectualsites.plotsquared.bukkit.titles.DefaultTitle_111;
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.util.BukkitBlockRegistry;
|
import com.github.intellectualsites.plotsquared.bukkit.util.*;
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.util.BukkitChatManager;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.util.BukkitChunkManager;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.util.BukkitCommand;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.util.BukkitEconHandler;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.util.BukkitEventUtil;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.util.BukkitHybridUtils;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.util.BukkitInventoryUtil;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.util.BukkitLegacyMappings;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.util.BukkitSchematicHandler;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.util.BukkitSetupUtils;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.util.BukkitTaskManager;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.util.BukkitUtil;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.util.SendChunk;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.util.SetGenCB;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.util.block.BukkitLocalQueue;
|
import com.github.intellectualsites.plotsquared.bukkit.util.block.BukkitLocalQueue;
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.uuid.DefaultUUIDWrapper;
|
import com.github.intellectualsites.plotsquared.bukkit.uuid.*;
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.uuid.FileUUIDHandler;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.uuid.LowerOfflineUUIDWrapper;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.uuid.OfflineUUIDWrapper;
|
|
||||||
import com.github.intellectualsites.plotsquared.bukkit.uuid.SQLUUIDHandler;
|
|
||||||
import com.github.intellectualsites.plotsquared.configuration.ConfigurationSection;
|
import com.github.intellectualsites.plotsquared.configuration.ConfigurationSection;
|
||||||
import com.github.intellectualsites.plotsquared.plot.IPlotMain;
|
import com.github.intellectualsites.plotsquared.plot.IPlotMain;
|
||||||
import com.github.intellectualsites.plotsquared.plot.PlotSquared;
|
import com.github.intellectualsites.plotsquared.plot.PlotSquared;
|
||||||
@ -41,57 +16,23 @@ import com.github.intellectualsites.plotsquared.plot.generator.GeneratorWrapper;
|
|||||||
import com.github.intellectualsites.plotsquared.plot.generator.HybridGen;
|
import com.github.intellectualsites.plotsquared.plot.generator.HybridGen;
|
||||||
import com.github.intellectualsites.plotsquared.plot.generator.HybridUtils;
|
import com.github.intellectualsites.plotsquared.plot.generator.HybridUtils;
|
||||||
import com.github.intellectualsites.plotsquared.plot.generator.IndependentPlotGenerator;
|
import com.github.intellectualsites.plotsquared.plot.generator.IndependentPlotGenerator;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.BlockRegistry;
|
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.object.SetupObject;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.chat.PlainChatManager;
|
import com.github.intellectualsites.plotsquared.plot.object.chat.PlainChatManager;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.worlds.PlotAreaManager;
|
import com.github.intellectualsites.plotsquared.plot.object.worlds.PlotAreaManager;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.worlds.SinglePlotArea;
|
import com.github.intellectualsites.plotsquared.plot.object.worlds.SinglePlotArea;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.worlds.SinglePlotAreaManager;
|
import com.github.intellectualsites.plotsquared.plot.object.worlds.SinglePlotAreaManager;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.worlds.SingleWorldGenerator;
|
import com.github.intellectualsites.plotsquared.plot.object.worlds.SingleWorldGenerator;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.AbstractTitle;
|
import com.github.intellectualsites.plotsquared.plot.util.*;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.ChatManager;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.ChunkManager;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.ConsoleColors;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.EconHandler;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.EventUtil;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.InventoryUtil;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.LegacyMappings;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.ReflectionUtils;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.SchematicHandler;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.SetupUtils;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.StringMan;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.UUIDHandler;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.UUIDHandlerImplementation;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.WorldUtil;
|
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.block.QueueProvider;
|
import com.github.intellectualsites.plotsquared.plot.util.block.QueueProvider;
|
||||||
import com.github.intellectualsites.plotsquared.plot.uuid.UUIDWrapper;
|
import com.github.intellectualsites.plotsquared.plot.uuid.UUIDWrapper;
|
||||||
import com.sk89q.worldedit.WorldEdit;
|
import com.sk89q.worldedit.WorldEdit;
|
||||||
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
|
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
|
||||||
import com.sk89q.worldedit.extension.platform.Capability;
|
import com.sk89q.worldedit.extension.platform.Capability;
|
||||||
import java.io.File;
|
import io.papermc.lib.PaperLib;
|
||||||
import java.lang.reflect.Method;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.UUID;
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NonNull;
|
import lombok.NonNull;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Chunk;
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.*;
|
||||||
import org.bukkit.OfflinePlayer;
|
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.command.PluginCommand;
|
import org.bukkit.command.PluginCommand;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
@ -104,6 +45,13 @@ import org.bukkit.plugin.Plugin;
|
|||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.io.File;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import static com.github.intellectualsites.plotsquared.plot.util.ReflectionUtils.getRefClass;
|
||||||
|
|
||||||
public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
|
public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
|
||||||
|
|
||||||
@Getter private static WorldEdit worldEdit;
|
@Getter private static WorldEdit worldEdit;
|
||||||
@ -170,23 +118,7 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain
|
|||||||
getServer().getName();
|
getServer().getName();
|
||||||
|
|
||||||
PlotPlayer.registerConverter(Player.class, BukkitUtil::getPlayer);
|
PlotPlayer.registerConverter(Player.class, BukkitUtil::getPlayer);
|
||||||
|
PaperLib.suggestPaper(this);
|
||||||
if (Bukkit.getVersion().contains("git-Spigot")) {
|
|
||||||
// Uses System.out.println because the logger isn't initialized yet
|
|
||||||
System.out
|
|
||||||
.println("[P2] ========================== USE PAPER ==========================");
|
|
||||||
System.out.println("[P2] Paper offers a more complete API for us to work with");
|
|
||||||
System.out.println("[P2] and we may come to rely on it in the future.");
|
|
||||||
System.out.println("[P2] It is also recommended out of a performance standpoint as");
|
|
||||||
System.out
|
|
||||||
.println("[P2] it contains many improvements missing from Spigot and Bukkit.");
|
|
||||||
System.out.println("[P2] DOWNLOAD: https://papermc.io/downloads");
|
|
||||||
System.out.println("[P2] GUIDE: https://www.spigotmc.org/threads/21726/");
|
|
||||||
System.out.println("[P2] NOTE: This is only a recommendation");
|
|
||||||
System.out.println("[P2] both Spigot and CraftBukkit are still supported.");
|
|
||||||
System.out
|
|
||||||
.println("[P2] ===============================================================");
|
|
||||||
}
|
|
||||||
|
|
||||||
new PlotSquared(this, "Bukkit");
|
new PlotSquared(this, "Bukkit");
|
||||||
if (Settings.Enabled_Components.METRICS) {
|
if (Settings.Enabled_Components.METRICS) {
|
||||||
|
@ -6,10 +6,6 @@ import org.bukkit.event.HandlerList;
|
|||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
|
||||||
|
|
||||||
|
|
||||||
*/
|
|
||||||
public class PlayerPlotTrustedEvent extends PlotEvent {
|
public class PlayerPlotTrustedEvent extends PlotEvent {
|
||||||
|
|
||||||
private static final HandlerList handlers = new HandlerList();
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
@ -7,15 +7,20 @@ import com.github.intellectualsites.plotsquared.plot.object.Location;
|
|||||||
import com.github.intellectualsites.plotsquared.plot.object.PlotBlock;
|
import com.github.intellectualsites.plotsquared.plot.object.PlotBlock;
|
||||||
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.*;
|
||||||
import org.bukkit.*;
|
import com.google.common.base.Preconditions;
|
||||||
|
import io.papermc.lib.PaperLib;
|
||||||
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.WeatherType;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.Event;
|
import org.bukkit.event.Event;
|
||||||
import org.bukkit.event.EventException;
|
import org.bukkit.event.EventException;
|
||||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||||
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
|
||||||
import org.bukkit.permissions.PermissionAttachmentInfo;
|
import org.bukkit.permissions.PermissionAttachmentInfo;
|
||||||
import org.bukkit.plugin.RegisteredListener;
|
import org.bukkit.plugin.RegisteredListener;
|
||||||
|
|
||||||
|
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;
|
||||||
@ -24,7 +29,7 @@ import java.util.stream.Collectors;
|
|||||||
public class BukkitPlayer extends PlotPlayer {
|
public class BukkitPlayer extends PlotPlayer {
|
||||||
|
|
||||||
public final Player player;
|
public final Player player;
|
||||||
public boolean offline;
|
private boolean offline;
|
||||||
private UUID uuid;
|
private UUID uuid;
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
@ -32,21 +37,23 @@ public class BukkitPlayer extends PlotPlayer {
|
|||||||
* <p>Please do not use this method. Instead use
|
* <p>Please do not use this method. Instead use
|
||||||
* BukkitUtil.getPlayer(Player), as it caches player objects.</p>
|
* BukkitUtil.getPlayer(Player), as it caches player objects.</p>
|
||||||
*
|
*
|
||||||
* @param player
|
* @param player Bukkit player instance
|
||||||
*/
|
*/
|
||||||
public BukkitPlayer(Player player) {
|
public BukkitPlayer(@Nonnull final Player player) {
|
||||||
|
Preconditions.checkNotNull(player, "Bukkit player instance cannot be null");
|
||||||
this.player = player;
|
this.player = player;
|
||||||
super.populatePersistentMetaMap();
|
super.populatePersistentMetaMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
public BukkitPlayer(Player player, boolean offline) {
|
public BukkitPlayer(@Nonnull final Player player, final boolean offline) {
|
||||||
|
Preconditions.checkNotNull(player, "Bukkit player instance cannot be null");
|
||||||
this.player = player;
|
this.player = player;
|
||||||
this.offline = offline;
|
this.offline = offline;
|
||||||
super.populatePersistentMetaMap();
|
super.populatePersistentMetaMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public Location getLocation() {
|
@Override public Location getLocation() {
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,9 +68,10 @@ public class BukkitPlayer extends PlotPlayer {
|
|||||||
return this.player.getLastPlayed();
|
return this.player.getLastPlayed();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean canTeleport(Location loc) {
|
@Override public boolean canTeleport(@Nonnull final Location loc) {
|
||||||
org.bukkit.Location to = BukkitUtil.getLocation(loc);
|
Preconditions.checkNotNull(loc, "Bukkit location cannot be null");
|
||||||
org.bukkit.Location from = player.getLocation();
|
final org.bukkit.Location to = BukkitUtil.getLocation(loc);
|
||||||
|
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);
|
||||||
if (event.isCancelled() || !event.getTo().equals(to)) {
|
if (event.isCancelled() || !event.getTo().equals(to)) {
|
||||||
@ -75,32 +83,34 @@ public class BukkitPlayer extends PlotPlayer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void callEvent(final Event event) {
|
private void callEvent(final Event event) {
|
||||||
RegisteredListener[] listeners = event.getHandlers().getRegisteredListeners();
|
Preconditions.checkNotNull(event, "Event cannot be null");
|
||||||
for (RegisteredListener listener : listeners) {
|
|
||||||
|
final RegisteredListener[] listeners = event.getHandlers().getRegisteredListeners();
|
||||||
|
for (final RegisteredListener listener : listeners) {
|
||||||
if (listener.getPlugin().getName().equals(PlotSquared.imp().getPluginName())) {
|
if (listener.getPlugin().getName().equals(PlotSquared.imp().getPluginName())) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
listener.callEvent(event);
|
listener.callEvent(event);
|
||||||
} catch (EventException e) {
|
} catch (final EventException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean hasPermission(String permission) {
|
@Override public boolean hasPermission(final String permission) {
|
||||||
if (this.offline && EconHandler.manager != null) {
|
if (this.offline && EconHandler.manager != null) {
|
||||||
return EconHandler.manager.hasPermission(getName(), permission);
|
return EconHandler.manager.hasPermission(getName(), permission);
|
||||||
}
|
}
|
||||||
return this.player.hasPermission(permission);
|
return this.player.hasPermission(permission);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public int hasPermissionRange(String stub, int range) {
|
@Override public int hasPermissionRange(final String stub, final int range) {
|
||||||
if (hasPermission(C.PERMISSION_ADMIN.s())) {
|
if (hasPermission(C.PERMISSION_ADMIN.s())) {
|
||||||
return Integer.MAX_VALUE;
|
return Integer.MAX_VALUE;
|
||||||
}
|
}
|
||||||
String[] nodes = stub.split("\\.");
|
final String[] nodes = stub.split("\\.");
|
||||||
StringBuilder n = new StringBuilder();
|
final StringBuilder n = new StringBuilder();
|
||||||
for (int i = 0; i < (nodes.length - 1); i++) {
|
for (int i = 0; i < (nodes.length - 1); i++) {
|
||||||
n.append(nodes[i]).append(".");
|
n.append(nodes[i]).append(".");
|
||||||
if (!stub.equals(n + C.PERMISSION_STAR.s())) {
|
if (!stub.equals(n + C.PERMISSION_STAR.s())) {
|
||||||
@ -114,7 +124,7 @@ public class BukkitPlayer extends PlotPlayer {
|
|||||||
}
|
}
|
||||||
int max = 0;
|
int max = 0;
|
||||||
String stubPlus = stub + ".";
|
String stubPlus = stub + ".";
|
||||||
Set<PermissionAttachmentInfo> effective = player.getEffectivePermissions();
|
final Set<PermissionAttachmentInfo> effective = player.getEffectivePermissions();
|
||||||
if (!effective.isEmpty()) {
|
if (!effective.isEmpty()) {
|
||||||
for (PermissionAttachmentInfo attach : effective) {
|
for (PermissionAttachmentInfo attach : effective) {
|
||||||
String perm = attach.getPermission();
|
String perm = attach.getPermission();
|
||||||
@ -139,12 +149,12 @@ public class BukkitPlayer extends PlotPlayer {
|
|||||||
return max;
|
return max;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean isPermissionSet(String permission) {
|
@Override public boolean isPermissionSet(final String permission) {
|
||||||
return this.player.isPermissionSet(permission);
|
return this.player.isPermissionSet(permission);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void sendMessage(String message) {
|
@Override public void sendMessage(final String message) {
|
||||||
if (!StringMan.isEqual(this.<String>getMeta("lastMessage"), message) || (
|
if (!StringMan.isEqual(this.getMeta("lastMessage"), message) || (
|
||||||
System.currentTimeMillis() - this.<Long>getMeta("lastMessageTime") > 5000)) {
|
System.currentTimeMillis() - this.<Long>getMeta("lastMessageTime") > 5000)) {
|
||||||
setMeta("lastMessage", message);
|
setMeta("lastMessage", message);
|
||||||
setMeta("lastMessageTime", System.currentTimeMillis());
|
setMeta("lastMessageTime", System.currentTimeMillis());
|
||||||
@ -152,14 +162,13 @@ public class BukkitPlayer extends PlotPlayer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void teleport(Location location) {
|
@Override public void teleport(@Nonnull 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;
|
||||||
}
|
}
|
||||||
this.player.teleport(
|
final org.bukkit.Location bukkitLocation = new org.bukkit.Location(BukkitUtil.getWorld(location.getWorld()), location.getX() + 0.5,
|
||||||
new org.bukkit.Location(BukkitUtil.getWorld(location.getWorld()), location.getX() + 0.5,
|
location.getY(), location.getZ() + 0.5, location.getYaw(), location.getPitch());
|
||||||
location.getY(), location.getZ() + 0.5, location.getYaw(), location.getPitch()),
|
PaperLib.teleportAsync(player, bukkitLocation);
|
||||||
TeleportCause.COMMAND);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public String getName() {
|
@Override public String getName() {
|
||||||
@ -177,14 +186,14 @@ public class BukkitPlayer extends PlotPlayer {
|
|||||||
this.player.setCompassTarget(
|
this.player.setCompassTarget(
|
||||||
new org.bukkit.Location(BukkitUtil.getWorld(location.getWorld()), location.getX(),
|
new org.bukkit.Location(BukkitUtil.getWorld(location.getWorld()), location.getX(),
|
||||||
location.getY(), location.getZ()));
|
location.getY(), location.getZ()));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public Location getLocationFull() {
|
@Override public Location getLocationFull() {
|
||||||
return BukkitUtil.getLocationFull(this.player);
|
return BukkitUtil.getLocationFull(this.player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void setWeather(PlotWeather weather) {
|
@Override public void setWeather(@Nonnull final PlotWeather weather) {
|
||||||
|
Preconditions.checkNotNull(weather, "Specified weather cannot be null");
|
||||||
switch (weather) {
|
switch (weather) {
|
||||||
case CLEAR:
|
case CLEAR:
|
||||||
this.player.setPlayerWeather(WeatherType.CLEAR);
|
this.player.setPlayerWeather(WeatherType.CLEAR);
|
||||||
@ -201,7 +210,7 @@ public class BukkitPlayer extends PlotPlayer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public PlotGameMode getGameMode() {
|
@Nonnull @Override public PlotGameMode getGameMode() {
|
||||||
switch (this.player.getGameMode()) {
|
switch (this.player.getGameMode()) {
|
||||||
case ADVENTURE:
|
case ADVENTURE:
|
||||||
return PlotGameMode.ADVENTURE;
|
return PlotGameMode.ADVENTURE;
|
||||||
@ -216,7 +225,8 @@ public class BukkitPlayer extends PlotPlayer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void setGameMode(PlotGameMode gameMode) {
|
@Override public void setGameMode(@Nonnull final PlotGameMode gameMode) {
|
||||||
|
Preconditions.checkNotNull(gameMode, "Specified gamemode cannot be null");
|
||||||
switch (gameMode) {
|
switch (gameMode) {
|
||||||
case ADVENTURE:
|
case ADVENTURE:
|
||||||
this.player.setGameMode(GameMode.ADVENTURE);
|
this.player.setGameMode(GameMode.ADVENTURE);
|
||||||
@ -236,7 +246,7 @@ public class BukkitPlayer extends PlotPlayer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void setTime(long time) {
|
@Override public void setTime(final long time) {
|
||||||
if (time != Long.MAX_VALUE) {
|
if (time != Long.MAX_VALUE) {
|
||||||
this.player.setPlayerTime(time, false);
|
this.player.setPlayerTime(time, false);
|
||||||
} else {
|
} else {
|
||||||
@ -252,7 +262,9 @@ public class BukkitPlayer extends PlotPlayer {
|
|||||||
this.player.setAllowFlight(fly);
|
this.player.setAllowFlight(fly);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void playMusic(Location location, PlotBlock id) {
|
@Override public void playMusic(@Nonnull final Location location, @Nonnull final PlotBlock id) {
|
||||||
|
Preconditions.checkNotNull(location, "Specified location cannot be null");
|
||||||
|
Preconditions.checkNotNull(id, "Specified block cannot be null");
|
||||||
if (PlotBlock.isEverything(id) || id.isAir()) {
|
if (PlotBlock.isEverything(id) || id.isAir()) {
|
||||||
// Let's just stop all the discs because why not?
|
// Let's just stop all the discs because why not?
|
||||||
for (final Sound sound : Arrays.stream(Sound.values()).filter(sound -> sound.name().contains("DISC")).collect(
|
for (final Sound sound : Arrays.stream(Sound.values()).filter(sound -> sound.name().contains("DISC")).collect(
|
||||||
@ -266,7 +278,7 @@ public class BukkitPlayer extends PlotPlayer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void kick(String message) {
|
@Override public void kick(final String message) {
|
||||||
this.player.kickPlayer(message);
|
this.player.kickPlayer(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,10 +13,10 @@ import com.github.intellectualsites.plotsquared.plot.object.RunnableVal3;
|
|||||||
import com.github.intellectualsites.plotsquared.plot.util.*;
|
import com.github.intellectualsites.plotsquared.plot.util.*;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.annotation.Annotation;
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
public abstract class Command {
|
public abstract class Command {
|
||||||
|
|
||||||
@ -56,10 +56,9 @@ public abstract class Command {
|
|||||||
public Command(Command parent, boolean isStatic) {
|
public Command(Command parent, boolean isStatic) {
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
this.isStatic = isStatic;
|
this.isStatic = isStatic;
|
||||||
Annotation cdAnnotation = getClass().getAnnotation(CommandDeclaration.class);
|
CommandDeclaration cdAnnotation = getClass().getAnnotation(CommandDeclaration.class);
|
||||||
if (cdAnnotation != null) {
|
if (cdAnnotation != null) {
|
||||||
CommandDeclaration declaration = (CommandDeclaration) cdAnnotation;
|
init(cdAnnotation);
|
||||||
init(declaration);
|
|
||||||
}
|
}
|
||||||
for (final Method method : getClass().getDeclaredMethods()) {
|
for (final Method method : getClass().getDeclaredMethods()) {
|
||||||
if (method.isAnnotationPresent(CommandDeclaration.class)) {
|
if (method.isAnnotationPresent(CommandDeclaration.class)) {
|
||||||
@ -70,14 +69,16 @@ public abstract class Command {
|
|||||||
&& types[2] == String[].class && types[3] == RunnableVal3.class
|
&& types[2] == String[].class && types[3] == RunnableVal3.class
|
||||||
&& types[4] == RunnableVal2.class) {
|
&& types[4] == RunnableVal2.class) {
|
||||||
Command tmp = new Command(this, true) {
|
Command tmp = new Command(this, true) {
|
||||||
@Override public void execute(PlotPlayer player, String[] args,
|
@Override public CompletableFuture<Boolean> execute(PlotPlayer player, String[] args,
|
||||||
RunnableVal3<Command, Runnable, Runnable> confirm,
|
RunnableVal3<Command, Runnable, Runnable> confirm,
|
||||||
RunnableVal2<Command, CommandResult> whenDone) {
|
RunnableVal2<Command, CommandResult> whenDone) {
|
||||||
try {
|
try {
|
||||||
method.invoke(Command.this, this, player, args, confirm, whenDone);
|
method.invoke(Command.this, this, player, args, confirm, whenDone);
|
||||||
|
return CompletableFuture.completedFuture(true);
|
||||||
} catch (IllegalAccessException | InvocationTargetException e) {
|
} catch (IllegalAccessException | InvocationTargetException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
tmp.init(method.getAnnotation(CommandDeclaration.class));
|
tmp.init(method.getAnnotation(CommandDeclaration.class));
|
||||||
@ -263,9 +264,10 @@ public abstract class Command {
|
|||||||
* @param player Caller
|
* @param player Caller
|
||||||
* @param args Arguments
|
* @param args Arguments
|
||||||
* @param confirm Instance, Success, Failure
|
* @param confirm Instance, Success, Failure
|
||||||
* @return
|
* @return CompletableFuture true if the command executed fully, false in
|
||||||
|
* any other case
|
||||||
*/
|
*/
|
||||||
public void execute(PlotPlayer player, String[] args,
|
public CompletableFuture<Boolean> execute(PlotPlayer player, String[] args,
|
||||||
RunnableVal3<Command, Runnable, Runnable> confirm,
|
RunnableVal3<Command, Runnable, Runnable> confirm,
|
||||||
RunnableVal2<Command, CommandResult> whenDone) throws CommandException {
|
RunnableVal2<Command, CommandResult> whenDone) throws CommandException {
|
||||||
if (args.length == 0 || args[0] == null) {
|
if (args.length == 0 || args[0] == null) {
|
||||||
@ -274,28 +276,28 @@ public abstract class Command {
|
|||||||
} else {
|
} else {
|
||||||
C.COMMAND_SYNTAX.send(player, getUsage());
|
C.COMMAND_SYNTAX.send(player, getUsage());
|
||||||
}
|
}
|
||||||
return;
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
if (this.allCommands == null || this.allCommands.isEmpty()) {
|
if (this.allCommands.isEmpty()) {
|
||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
"Not Implemented: https://github.com/IntellectualSites/PlotSquared/issues/new");
|
"Not Implemented: https://github.com/IntellectualSites/PlotSquared/issues/new");
|
||||||
return;
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
Command cmd = getCommand(args[0]);
|
Command cmd = getCommand(args[0]);
|
||||||
if (cmd == null) {
|
if (cmd == null) {
|
||||||
if (this.parent != null) {
|
if (this.parent != null) {
|
||||||
C.COMMAND_SYNTAX.send(player, getUsage());
|
C.COMMAND_SYNTAX.send(player, getUsage());
|
||||||
return;
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
// Help command
|
// Help command
|
||||||
try {
|
try {
|
||||||
if (args.length == 0 || MathMan.isInteger(args[0])
|
if (!MathMan.isInteger(args[0])) {
|
||||||
|| CommandCategory.valueOf(args[0].toUpperCase()) != null) {
|
CommandCategory.valueOf(args[0].toUpperCase());
|
||||||
// This will default certain syntax to the help command
|
|
||||||
// e.g. /plot, /plot 1, /plot claiming
|
|
||||||
MainCommand.getInstance().help.execute(player, args, null, null);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
// This will default certain syntax to the help command
|
||||||
|
// e.g. /plot, /plot 1, /plot claiming
|
||||||
|
MainCommand.getInstance().help.execute(player, args, null, null);
|
||||||
|
return CompletableFuture.completedFuture(false);
|
||||||
} catch (IllegalArgumentException ignored) {
|
} catch (IllegalArgumentException ignored) {
|
||||||
}
|
}
|
||||||
// Command recommendation
|
// Command recommendation
|
||||||
@ -304,16 +306,16 @@ public abstract class Command {
|
|||||||
if (commands.isEmpty()) {
|
if (commands.isEmpty()) {
|
||||||
MainUtil
|
MainUtil
|
||||||
.sendMessage(player, C.DID_YOU_MEAN, MainCommand.getInstance().help.getUsage());
|
.sendMessage(player, C.DID_YOU_MEAN, MainCommand.getInstance().help.getUsage());
|
||||||
return;
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
HashSet<String> setargs = new HashSet<>(args.length);
|
HashSet<String> setArgs = new HashSet<>(args.length);
|
||||||
for (String arg : args) {
|
for (String arg : args) {
|
||||||
setargs.add(arg.toLowerCase());
|
setArgs.add(arg.toLowerCase());
|
||||||
}
|
}
|
||||||
String[] allargs = setargs.toArray(new String[setargs.size()]);
|
String[] allArgs = setArgs.toArray(new String[0]);
|
||||||
int best = 0;
|
int best = 0;
|
||||||
for (Command current : commands) {
|
for (Command current : commands) {
|
||||||
int match = getMatch(allargs, current);
|
int match = getMatch(allArgs, current);
|
||||||
if (match > best) {
|
if (match > best) {
|
||||||
cmd = current;
|
cmd = current;
|
||||||
}
|
}
|
||||||
@ -322,17 +324,18 @@ public abstract class Command {
|
|||||||
cmd = new StringComparison<>(args[0], this.allCommands).getMatchObject();
|
cmd = new StringComparison<>(args[0], this.allCommands).getMatchObject();
|
||||||
}
|
}
|
||||||
MainUtil.sendMessage(player, C.DID_YOU_MEAN, cmd.getUsage());
|
MainUtil.sendMessage(player, C.DID_YOU_MEAN, cmd.getUsage());
|
||||||
return;
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
String[] newArgs = Arrays.copyOfRange(args, 1, args.length);
|
String[] newArgs = Arrays.copyOfRange(args, 1, args.length);
|
||||||
if (!cmd.checkArgs(player, newArgs) || !cmd.canExecute(player, true)) {
|
if (!cmd.checkArgs(player, newArgs) || !cmd.canExecute(player, true)) {
|
||||||
return;
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
cmd.execute(player, newArgs, confirm, whenDone);
|
cmd.execute(player, newArgs, confirm, whenDone);
|
||||||
} catch (CommandException e) {
|
} catch (CommandException e) {
|
||||||
e.perform(player);
|
e.perform(player);
|
||||||
}
|
}
|
||||||
|
return CompletableFuture.completedFuture(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean checkArgs(PlotPlayer player, String[] args) {
|
public boolean checkArgs(PlotPlayer player, String[] args) {
|
||||||
|
@ -15,6 +15,7 @@ import com.github.intellectualsites.plotsquared.plot.util.Permissions;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
@CommandDeclaration(command = "add",
|
@CommandDeclaration(command = "add",
|
||||||
description = "Allow a user to build in a plot while you are online",
|
description = "Allow a user to build in a plot while you are online",
|
||||||
@ -25,7 +26,7 @@ import java.util.UUID;
|
|||||||
super(MainCommand.getInstance(), true);
|
super(MainCommand.getInstance(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void execute(final PlotPlayer player, String[] args,
|
@Override public CompletableFuture<Boolean> execute(final PlotPlayer player, String[] args,
|
||||||
RunnableVal3<Command, Runnable, Runnable> confirm,
|
RunnableVal3<Command, Runnable, Runnable> confirm,
|
||||||
RunnableVal2<Command, CommandResult> whenDone) throws CommandException {
|
RunnableVal2<Command, CommandResult> whenDone) throws CommandException {
|
||||||
final Plot plot = check(player.getCurrentPlot(), C.NOT_IN_PLOT);
|
final Plot plot = check(player.getCurrentPlot(), C.NOT_IN_PLOT);
|
||||||
@ -61,22 +62,22 @@ import java.util.UUID;
|
|||||||
checkTrue(!uuids.isEmpty(), null);
|
checkTrue(!uuids.isEmpty(), null);
|
||||||
checkTrue(size <= plot.getArea().MAX_PLOT_MEMBERS || Permissions
|
checkTrue(size <= plot.getArea().MAX_PLOT_MEMBERS || Permissions
|
||||||
.hasPermission(player, C.PERMISSION_ADMIN_COMMAND_TRUST), C.PLOT_MAX_MEMBERS);
|
.hasPermission(player, C.PERMISSION_ADMIN_COMMAND_TRUST), C.PLOT_MAX_MEMBERS);
|
||||||
confirm.run(this, new Runnable() {
|
// Success
|
||||||
@Override // Success
|
confirm.run(this, () -> {
|
||||||
public void run() {
|
for (UUID uuid : uuids) {
|
||||||
for (UUID uuid : uuids) {
|
if (uuid != DBFunc.EVERYONE) {
|
||||||
if (uuid != DBFunc.EVERYONE) {
|
if (!plot.removeTrusted(uuid)) {
|
||||||
if (!plot.removeTrusted(uuid)) {
|
if (plot.getDenied().contains(uuid)) {
|
||||||
if (plot.getDenied().contains(uuid)) {
|
plot.removeDenied(uuid);
|
||||||
plot.removeDenied(uuid);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
plot.addMember(uuid);
|
|
||||||
EventUtil.manager.callMember(player, plot, uuid, true);
|
|
||||||
MainUtil.sendMessage(player, C.MEMBER_ADDED);
|
|
||||||
}
|
}
|
||||||
|
plot.addMember(uuid);
|
||||||
|
EventUtil.manager.callMember(player, plot, uuid, true);
|
||||||
|
MainUtil.sendMessage(player, C.MEMBER_ADDED);
|
||||||
}
|
}
|
||||||
}, null);
|
}, null);
|
||||||
|
|
||||||
|
return CompletableFuture.completedFuture(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ import com.github.intellectualsites.plotsquared.plot.util.UUIDHandler;
|
|||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
@CommandDeclaration(command = "buy", description = "Buy the plot you are standing on",
|
@CommandDeclaration(command = "buy", description = "Buy the plot you are standing on",
|
||||||
usage = "/plot buy", permission = "plots.buy", category = CommandCategory.CLAIMING,
|
usage = "/plot buy", permission = "plots.buy", category = CommandCategory.CLAIMING,
|
||||||
@ -23,7 +24,7 @@ import java.util.Set;
|
|||||||
super(MainCommand.getInstance(), true);
|
super(MainCommand.getInstance(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void execute(final PlotPlayer player, String[] args,
|
@Override public CompletableFuture<Boolean> execute(final PlotPlayer player, String[] args,
|
||||||
RunnableVal3<Command, Runnable, Runnable> confirm,
|
RunnableVal3<Command, Runnable, Runnable> confirm,
|
||||||
final RunnableVal2<Command, CommandResult> whenDone) {
|
final RunnableVal2<Command, CommandResult> whenDone) {
|
||||||
check(EconHandler.manager, C.ECON_DISABLED);
|
check(EconHandler.manager, C.ECON_DISABLED);
|
||||||
@ -46,27 +47,24 @@ import java.util.Set;
|
|||||||
final double price = flag.get();
|
final double price = flag.get();
|
||||||
checkTrue(player.getMoney() >= price, C.CANNOT_AFFORD_PLOT);
|
checkTrue(player.getMoney() >= price, C.CANNOT_AFFORD_PLOT);
|
||||||
player.withdraw(price);
|
player.withdraw(price);
|
||||||
confirm.run(this, new Runnable() {
|
// Failure
|
||||||
@Override // Success
|
// Success
|
||||||
public void run() {
|
confirm.run(this, () -> {
|
||||||
C.REMOVED_BALANCE.send(player, price);
|
C.REMOVED_BALANCE.send(player, price);
|
||||||
EconHandler.manager
|
EconHandler.manager
|
||||||
.depositMoney(UUIDHandler.getUUIDWrapper().getOfflinePlayer(plot.owner), price);
|
.depositMoney(UUIDHandler.getUUIDWrapper().getOfflinePlayer(plot.owner), price);
|
||||||
PlotPlayer owner = UUIDHandler.getPlayer(plot.owner);
|
PlotPlayer owner = UUIDHandler.getPlayer(plot.owner);
|
||||||
if (owner != null) {
|
if (owner != null) {
|
||||||
C.PLOT_SOLD.send(owner, plot.getId(), player.getName(), price);
|
C.PLOT_SOLD.send(owner, plot.getId(), player.getName(), price);
|
||||||
}
|
|
||||||
plot.removeFlag(Flags.PRICE);
|
|
||||||
plot.setOwner(player.getUUID());
|
|
||||||
C.CLAIMED.send(player);
|
|
||||||
whenDone.run(Buy.this, CommandResult.SUCCESS);
|
|
||||||
}
|
|
||||||
}, new Runnable() {
|
|
||||||
@Override // Failure
|
|
||||||
public void run() {
|
|
||||||
player.deposit(price);
|
|
||||||
whenDone.run(Buy.this, CommandResult.FAILURE);
|
|
||||||
}
|
}
|
||||||
|
plot.removeFlag(Flags.PRICE);
|
||||||
|
plot.setOwner(player.getUUID());
|
||||||
|
C.CLAIMED.send(player);
|
||||||
|
whenDone.run(Buy.this, CommandResult.SUCCESS);
|
||||||
|
}, () -> {
|
||||||
|
player.deposit(price);
|
||||||
|
whenDone.run(Buy.this, CommandResult.FAILURE);
|
||||||
});
|
});
|
||||||
|
return CompletableFuture.completedFuture(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,8 @@ 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.block.GlobalBlockQueue;
|
import com.github.intellectualsites.plotsquared.plot.util.block.GlobalBlockQueue;
|
||||||
|
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
@CommandDeclaration(command = "clear", description = "Clear the plot you stand on",
|
@CommandDeclaration(command = "clear", description = "Clear the plot you stand on",
|
||||||
permission = "plots.clear", category = CommandCategory.APPEARANCE, usage = "/plot clear",
|
permission = "plots.clear", category = CommandCategory.APPEARANCE, usage = "/plot clear",
|
||||||
aliases = "reset", confirmation = true) public class Clear extends Command {
|
aliases = "reset", confirmation = true) public class Clear extends Command {
|
||||||
@ -25,7 +27,7 @@ import com.github.intellectualsites.plotsquared.plot.util.block.GlobalBlockQueue
|
|||||||
super(MainCommand.getInstance(), true);
|
super(MainCommand.getInstance(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void execute(final PlotPlayer player, String[] args,
|
@Override public CompletableFuture<Boolean> execute(final PlotPlayer player, String[] args,
|
||||||
RunnableVal3<Command, Runnable, Runnable> confirm,
|
RunnableVal3<Command, Runnable, Runnable> confirm,
|
||||||
RunnableVal2<Command, CommandResult> whenDone) throws CommandException {
|
RunnableVal2<Command, CommandResult> whenDone) throws CommandException {
|
||||||
checkTrue(args.length == 0, C.COMMAND_SYNTAX, getUsage());
|
checkTrue(args.length == 0, C.COMMAND_SYNTAX, getUsage());
|
||||||
@ -35,34 +37,29 @@ import com.github.intellectualsites.plotsquared.plot.util.block.GlobalBlockQueue
|
|||||||
checkTrue(plot.getRunning() == 0, C.WAIT_FOR_TIMER);
|
checkTrue(plot.getRunning() == 0, C.WAIT_FOR_TIMER);
|
||||||
checkTrue(!Settings.Done.RESTRICT_BUILDING || !Flags.DONE.isSet(plot) || Permissions
|
checkTrue(!Settings.Done.RESTRICT_BUILDING || !Flags.DONE.isSet(plot) || Permissions
|
||||||
.hasPermission(player, C.PERMISSION_CONTINUE), C.DONE_ALREADY_DONE);
|
.hasPermission(player, C.PERMISSION_CONTINUE), C.DONE_ALREADY_DONE);
|
||||||
confirm.run(this, new Runnable() {
|
confirm.run(this, () -> {
|
||||||
@Override public void run() {
|
final long start = System.currentTimeMillis();
|
||||||
final long start = System.currentTimeMillis();
|
boolean result = plot.clear(true, false, () -> {
|
||||||
boolean result = plot.clear(true, false, new Runnable() {
|
plot.unlink();
|
||||||
@Override public void run() {
|
GlobalBlockQueue.IMP.addTask(() -> {
|
||||||
plot.unlink();
|
plot.removeRunning();
|
||||||
GlobalBlockQueue.IMP.addTask(new Runnable() {
|
// If the state changes, then mark it as no longer done
|
||||||
@Override public void run() {
|
if (plot.getFlag(Flags.DONE).isPresent()) {
|
||||||
plot.removeRunning();
|
FlagManager.removePlotFlag(plot, Flags.DONE);
|
||||||
// If the state changes, then mark it as no longer done
|
|
||||||
if (plot.getFlag(Flags.DONE).isPresent()) {
|
|
||||||
FlagManager.removePlotFlag(plot, Flags.DONE);
|
|
||||||
}
|
|
||||||
if (plot.getFlag(Flags.ANALYSIS).isPresent()) {
|
|
||||||
FlagManager.removePlotFlag(plot, Flags.ANALYSIS);
|
|
||||||
}
|
|
||||||
MainUtil.sendMessage(player, C.CLEARING_DONE,
|
|
||||||
"" + (System.currentTimeMillis() - start));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
if (plot.getFlag(Flags.ANALYSIS).isPresent()) {
|
||||||
|
FlagManager.removePlotFlag(plot, Flags.ANALYSIS);
|
||||||
|
}
|
||||||
|
MainUtil.sendMessage(player, C.CLEARING_DONE,
|
||||||
|
"" + (System.currentTimeMillis() - start));
|
||||||
});
|
});
|
||||||
if (!result) {
|
});
|
||||||
MainUtil.sendMessage(player, C.WAIT_FOR_TIMER);
|
if (!result) {
|
||||||
} else {
|
MainUtil.sendMessage(player, C.WAIT_FOR_TIMER);
|
||||||
plot.addRunning();
|
} else {
|
||||||
}
|
plot.addRunning();
|
||||||
}
|
}
|
||||||
}, null);
|
}, null);
|
||||||
|
return CompletableFuture.completedFuture(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ import java.io.IOException;
|
|||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
@CommandDeclaration(command = "debugexec", permission = "plots.admin",
|
@CommandDeclaration(command = "debugexec", permission = "plots.admin",
|
||||||
description = "Mutli-purpose debug command", aliases = {"exec", "$"},
|
description = "Mutli-purpose debug command", aliases = {"exec", "$"},
|
||||||
@ -265,7 +266,7 @@ import java.util.*;
|
|||||||
System.getProperty("line.separator"));
|
System.getProperty("line.separator"));
|
||||||
new Command(MainCommand.getInstance(), true, args[1].split("\\.")[0], null,
|
new Command(MainCommand.getInstance(), true, args[1].split("\\.")[0], null,
|
||||||
RequiredType.NONE, CommandCategory.DEBUG) {
|
RequiredType.NONE, CommandCategory.DEBUG) {
|
||||||
@Override public void execute(PlotPlayer player, String[] args,
|
@Override public CompletableFuture<Boolean> execute(PlotPlayer player, String[] args,
|
||||||
RunnableVal3<Command, Runnable, Runnable> confirm,
|
RunnableVal3<Command, Runnable, Runnable> confirm,
|
||||||
RunnableVal2<Command, CommandResult> whenDone) {
|
RunnableVal2<Command, CommandResult> whenDone) {
|
||||||
try {
|
try {
|
||||||
@ -276,6 +277,7 @@ import java.util.*;
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
MainUtil.sendMessage(player, C.COMMAND_WENT_WRONG);
|
MainUtil.sendMessage(player, C.COMMAND_WENT_WRONG);
|
||||||
}
|
}
|
||||||
|
return CompletableFuture.completedFuture(true);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return true;
|
return true;
|
||||||
|
@ -16,6 +16,7 @@ import com.google.common.base.Charsets;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
@CommandDeclaration(command = "debugimportworlds", permission = "plots.admin",
|
@CommandDeclaration(command = "debugimportworlds", permission = "plots.admin",
|
||||||
description = "Import worlds by player name", requiredType = RequiredType.CONSOLE,
|
description = "Import worlds by player name", requiredType = RequiredType.CONSOLE,
|
||||||
@ -24,14 +25,14 @@ import java.util.UUID;
|
|||||||
super(MainCommand.getInstance(), true);
|
super(MainCommand.getInstance(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void execute(PlotPlayer player, String[] args,
|
@Override public CompletableFuture<Boolean> execute(PlotPlayer player, String[] args,
|
||||||
RunnableVal3<Command, Runnable, Runnable> confirm,
|
RunnableVal3<Command, Runnable, Runnable> confirm,
|
||||||
RunnableVal2<Command, CommandResult> whenDone) throws CommandException {
|
RunnableVal2<Command, CommandResult> whenDone) throws CommandException {
|
||||||
// UUID.nameUUIDFromBytes(("OfflinePlayer:" + player.getName()).getBytes(Charsets.UTF_8))
|
// UUID.nameUUIDFromBytes(("OfflinePlayer:" + player.getName()).getBytes(Charsets.UTF_8))
|
||||||
PlotAreaManager pam = PlotSquared.get().getPlotAreaManager();
|
PlotAreaManager pam = PlotSquared.get().getPlotAreaManager();
|
||||||
if (!(pam instanceof SinglePlotAreaManager)) {
|
if (!(pam instanceof SinglePlotAreaManager)) {
|
||||||
player.sendMessage("Must be a single plot area!");
|
player.sendMessage("Must be a single plot area!");
|
||||||
return;
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
SinglePlotArea area = ((SinglePlotAreaManager) pam).getArea();
|
SinglePlotArea area = ((SinglePlotAreaManager) pam).getArea();
|
||||||
PlotId id = new PlotId(0, 0);
|
PlotId id = new PlotId(0, 0);
|
||||||
@ -54,5 +55,6 @@ import java.util.UUID;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
player.sendMessage("Done!");
|
player.sendMessage("Done!");
|
||||||
|
return CompletableFuture.completedFuture(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ import com.github.intellectualsites.plotsquared.plot.util.Permissions;
|
|||||||
import com.github.intellectualsites.plotsquared.plot.util.UUIDHandler;
|
import com.github.intellectualsites.plotsquared.plot.util.UUIDHandler;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
@CommandDeclaration(command = "grant", category = CommandCategory.CLAIMING,
|
@CommandDeclaration(command = "grant", category = CommandCategory.CLAIMING,
|
||||||
usage = "/plot grant <check|add> [player]", permission = "plots.grant",
|
usage = "/plot grant <check|add> [player]", permission = "plots.grant",
|
||||||
@ -23,7 +24,7 @@ import java.util.UUID;
|
|||||||
super(MainCommand.getInstance(), true);
|
super(MainCommand.getInstance(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void execute(final PlotPlayer player, String[] args,
|
@Override public CompletableFuture<Boolean> execute(final PlotPlayer player, String[] args,
|
||||||
RunnableVal3<Command, Runnable, Runnable> confirm,
|
RunnableVal3<Command, Runnable, Runnable> confirm,
|
||||||
RunnableVal2<Command, CommandResult> whenDone) throws CommandException {
|
RunnableVal2<Command, CommandResult> whenDone) throws CommandException {
|
||||||
checkTrue(args.length >= 1 && args.length <= 2, C.COMMAND_SYNTAX, getUsage());
|
checkTrue(args.length >= 1 && args.length <= 2, C.COMMAND_SYNTAX, getUsage());
|
||||||
@ -33,7 +34,7 @@ import java.util.UUID;
|
|||||||
case "check":
|
case "check":
|
||||||
if (!Permissions.hasPermission(player, C.PERMISSION_GRANT.f(arg0))) {
|
if (!Permissions.hasPermission(player, C.PERMISSION_GRANT.f(arg0))) {
|
||||||
C.NO_PERMISSION.send(player, C.PERMISSION_GRANT.f(arg0));
|
C.NO_PERMISSION.send(player, C.PERMISSION_GRANT.f(arg0));
|
||||||
return;
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
if (args.length > 2) {
|
if (args.length > 2) {
|
||||||
break;
|
break;
|
||||||
@ -42,7 +43,7 @@ import java.util.UUID;
|
|||||||
args.length == 2 ? UUIDHandler.getUUIDFromString(args[1]) : player.getUUID();
|
args.length == 2 ? UUIDHandler.getUUIDFromString(args[1]) : player.getUUID();
|
||||||
if (uuid == null) {
|
if (uuid == null) {
|
||||||
C.INVALID_PLAYER.send(player, args[1]);
|
C.INVALID_PLAYER.send(player, args[1]);
|
||||||
return;
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
MainUtil.getPersistentMeta(uuid, "grantedPlots", new RunnableVal<byte[]>() {
|
MainUtil.getPersistentMeta(uuid, "grantedPlots", new RunnableVal<byte[]>() {
|
||||||
@Override public void run(byte[] array) {
|
@Override public void run(byte[] array) {
|
||||||
@ -65,7 +66,9 @@ import java.util.UUID;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
return CompletableFuture.completedFuture(true);
|
||||||
}
|
}
|
||||||
C.COMMAND_SYNTAX.send(player, getUsage());
|
C.COMMAND_SYNTAX.send(player, getUsage());
|
||||||
|
return CompletableFuture.completedFuture(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,8 @@ import com.github.intellectualsites.plotsquared.plot.util.MathMan;
|
|||||||
import com.github.intellectualsites.plotsquared.plot.util.StringMan;
|
import com.github.intellectualsites.plotsquared.plot.util.StringMan;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.helpmenu.HelpMenu;
|
import com.github.intellectualsites.plotsquared.plot.util.helpmenu.HelpMenu;
|
||||||
|
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
@CommandDeclaration(command = "help", description = "Get this help menu", aliases = {"he", "?"},
|
@CommandDeclaration(command = "help", description = "Get this help menu", aliases = {"he", "?"},
|
||||||
category = CommandCategory.INFO, usage = "help [category|#]", permission = "plots.use")
|
category = CommandCategory.INFO, usage = "help [category|#]", permission = "plots.use")
|
||||||
public class Help extends Command {
|
public class Help extends Command {
|
||||||
@ -22,72 +24,73 @@ public class Help extends Command {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void execute(PlotPlayer player, String[] args,
|
@Override public CompletableFuture<Boolean> execute(PlotPlayer player, String[] args,
|
||||||
RunnableVal3<Command, Runnable, Runnable> confirm,
|
RunnableVal3<Command, Runnable, Runnable> confirm,
|
||||||
RunnableVal2<Command, CommandResult> whenDone) {
|
RunnableVal2<Command, CommandResult> whenDone) {
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 0:
|
case 0:
|
||||||
displayHelp(player, null, 0);
|
return displayHelp(player, null, 0);
|
||||||
return;
|
|
||||||
case 1:
|
case 1:
|
||||||
if (MathMan.isInteger(args[0])) {
|
if (MathMan.isInteger(args[0])) {
|
||||||
try {
|
try {
|
||||||
displayHelp(player, null, Integer.parseInt(args[0]));
|
return displayHelp(player, null, Integer.parseInt(args[0]));
|
||||||
} catch (NumberFormatException ignored) {
|
} catch (NumberFormatException ignored) {
|
||||||
displayHelp(player, null, 1);
|
return displayHelp(player, null, 1);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
displayHelp(player, args[0], 1);
|
return displayHelp(player, args[0], 1);
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
case 2:
|
case 2:
|
||||||
if (MathMan.isInteger(args[1])) {
|
if (MathMan.isInteger(args[1])) {
|
||||||
try {
|
try {
|
||||||
displayHelp(player, args[0], Integer.parseInt(args[1]));
|
return displayHelp(player, args[0], Integer.parseInt(args[1]));
|
||||||
} catch (NumberFormatException ignored) {
|
} catch (NumberFormatException ignored) {
|
||||||
displayHelp(player, args[0], 1);
|
return displayHelp(player, args[0], 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return CompletableFuture.completedFuture(false);
|
||||||
default:
|
default:
|
||||||
C.COMMAND_SYNTAX.send(player, getUsage());
|
C.COMMAND_SYNTAX.send(player, getUsage());
|
||||||
}
|
}
|
||||||
|
return CompletableFuture.completedFuture(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void displayHelp(PlotPlayer player, String cat, int page) {
|
public CompletableFuture<Boolean> displayHelp(final PlotPlayer player, final String catRaw, final int page) {
|
||||||
CommandCategory catEnum = null;
|
return CompletableFuture.supplyAsync(() -> {
|
||||||
if (cat != null) {
|
String cat = catRaw;
|
||||||
if (StringMan.isEqualIgnoreCase(cat, "all")) {
|
|
||||||
catEnum = null;
|
CommandCategory catEnum = null;
|
||||||
} else {
|
if (cat != null) {
|
||||||
for (CommandCategory c : CommandCategory.values()) {
|
if (!StringMan.isEqualIgnoreCase(cat, "all")) {
|
||||||
if (StringMan.isEqualIgnoreCaseToAny(cat, c.name(), c.toString())) {
|
for (CommandCategory c : CommandCategory.values()) {
|
||||||
catEnum = c;
|
if (StringMan.isEqualIgnoreCaseToAny(cat, c.name(), c.toString())) {
|
||||||
cat = c.name();
|
catEnum = c;
|
||||||
break;
|
cat = c.name();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (catEnum == null) {
|
||||||
|
cat = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (catEnum == null) {
|
}
|
||||||
cat = null;
|
if (cat == null && page == 0) {
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
builder.append(C.HELP_HEADER.s());
|
||||||
|
for (CommandCategory c : CommandCategory.values()) {
|
||||||
|
builder.append("\n").append(StringMan
|
||||||
|
.replaceAll(C.HELP_INFO_ITEM.s(), "%category%", c.toString().toLowerCase(),
|
||||||
|
"%category_desc%", c.toString()));
|
||||||
}
|
}
|
||||||
|
builder.append("\n").append(C.HELP_INFO_ITEM.s().replaceAll("%category%", "all")
|
||||||
|
.replaceAll("%category_desc%", "Display all commands"));
|
||||||
|
builder.append("\n").append(C.HELP_FOOTER.s());
|
||||||
|
MainUtil.sendMessage(player, builder.toString(), false);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
new HelpMenu(player).setCategory(catEnum).getCommands().generateMaxPages()
|
||||||
if (cat == null && page == 0) {
|
.generatePage(page - 1, getParent().toString()).render();
|
||||||
StringBuilder builder = new StringBuilder();
|
return true;
|
||||||
builder.append(C.HELP_HEADER.s());
|
});
|
||||||
for (CommandCategory c : CommandCategory.values()) {
|
|
||||||
builder.append("\n" + StringMan
|
|
||||||
.replaceAll(C.HELP_INFO_ITEM.s(), "%category%", c.toString().toLowerCase(),
|
|
||||||
"%category_desc%", c.toString()));
|
|
||||||
}
|
|
||||||
builder.append("\n").append(C.HELP_INFO_ITEM.s().replaceAll("%category%", "all")
|
|
||||||
.replaceAll("%category_desc%", "Display all commands"));
|
|
||||||
builder.append("\n" + C.HELP_FOOTER.s());
|
|
||||||
MainUtil.sendMessage(player, builder.toString(), false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
page--;
|
|
||||||
new HelpMenu(player).setCategory(catEnum).getCommands().generateMaxPages()
|
|
||||||
.generatePage(page, getParent().toString()).render();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ import com.github.intellectualsites.plotsquared.plot.util.EventUtil;
|
|||||||
import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
|
import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
@CommandDeclaration(command = "leave",
|
@CommandDeclaration(command = "leave",
|
||||||
description = "Removes self from being trusted or a member of the plot",
|
description = "Removes self from being trusted or a member of the plot",
|
||||||
@ -20,7 +21,7 @@ import java.util.UUID;
|
|||||||
super(MainCommand.getInstance(), true);
|
super(MainCommand.getInstance(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void execute(PlotPlayer player, String[] args,
|
@Override public CompletableFuture<Boolean> execute(PlotPlayer player, String[] args,
|
||||||
RunnableVal3<Command, Runnable, Runnable> confirm,
|
RunnableVal3<Command, Runnable, Runnable> confirm,
|
||||||
RunnableVal2<Command, CommandResult> whenDone) throws CommandException {
|
RunnableVal2<Command, CommandResult> whenDone) throws CommandException {
|
||||||
final Plot plot = check(player.getCurrentPlot(), C.NOT_IN_PLOT);
|
final Plot plot = check(player.getCurrentPlot(), C.NOT_IN_PLOT);
|
||||||
@ -44,5 +45,6 @@ import java.util.UUID;
|
|||||||
MainUtil.sendMessage(player, C.REMOVED_PLAYERS, 1);
|
MainUtil.sendMessage(player, C.REMOVED_PLAYERS, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return CompletableFuture.completedFuture(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import com.github.intellectualsites.plotsquared.plot.util.EconHandler;
|
|||||||
import com.github.intellectualsites.plotsquared.plot.util.Permissions;
|
import com.github.intellectualsites.plotsquared.plot.util.Permissions;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PlotSquared command class.
|
* PlotSquared command class.
|
||||||
@ -126,27 +127,25 @@ public class MainCommand extends Command {
|
|||||||
@Override
|
@Override
|
||||||
public void run(final Command cmd, final Runnable success, final Runnable failure) {
|
public void run(final Command cmd, final Runnable success, final Runnable failure) {
|
||||||
if (cmd.hasConfirmation(player)) {
|
if (cmd.hasConfirmation(player)) {
|
||||||
CmdConfirm.addPending(player, cmd.getUsage(), new Runnable() {
|
CmdConfirm.addPending(player, cmd.getUsage(), () -> {
|
||||||
@Override public void run() {
|
if (EconHandler.manager != null) {
|
||||||
if (EconHandler.manager != null) {
|
PlotArea area = player.getApplicablePlotArea();
|
||||||
PlotArea area = player.getApplicablePlotArea();
|
if (area != null) {
|
||||||
if (area != null) {
|
Expression<Double> priceEval =
|
||||||
Expression<Double> priceEval =
|
area.PRICES.get(cmd.getFullId());
|
||||||
area.PRICES.get(cmd.getFullId());
|
Double price =
|
||||||
Double price =
|
priceEval != null ? priceEval.evaluate(0d) : 0d;
|
||||||
priceEval != null ? priceEval.evaluate(0d) : 0d;
|
if (price != null
|
||||||
if (price != null
|
&& EconHandler.manager.getMoney(player) < price) {
|
||||||
&& EconHandler.manager.getMoney(player) < price) {
|
if (failure != null) {
|
||||||
if (failure != null) {
|
failure.run();
|
||||||
failure.run();
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (success != null) {
|
}
|
||||||
success.run();
|
if (success != null) {
|
||||||
}
|
success.run();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
@ -172,6 +171,8 @@ public class MainCommand extends Command {
|
|||||||
@Override public void run(Command cmd, CommandResult result) {
|
@Override public void run(Command cmd, CommandResult result) {
|
||||||
// Post command stuff!?
|
// Post command stuff!?
|
||||||
}
|
}
|
||||||
|
}).thenAccept(result -> {
|
||||||
|
// TODO: Something with the command result
|
||||||
});
|
});
|
||||||
} catch (CommandException e) {
|
} catch (CommandException e) {
|
||||||
e.perform(player);
|
e.perform(player);
|
||||||
@ -187,7 +188,7 @@ public class MainCommand extends Command {
|
|||||||
PlotSquared.debug("Command registration is now done during instantiation");
|
PlotSquared.debug("Command registration is now done during instantiation");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void execute(final PlotPlayer player, String[] args,
|
@Override public CompletableFuture<Boolean> execute(final PlotPlayer player, String[] args,
|
||||||
RunnableVal3<Command, Runnable, Runnable> confirm,
|
RunnableVal3<Command, Runnable, Runnable> confirm,
|
||||||
RunnableVal2<Command, CommandResult> whenDone) {
|
RunnableVal2<Command, CommandResult> whenDone) {
|
||||||
// Clear perm caching //
|
// Clear perm caching //
|
||||||
@ -218,37 +219,32 @@ public class MainCommand extends Command {
|
|||||||
args = Arrays.copyOfRange(args, 1, args.length);
|
args = Arrays.copyOfRange(args, 1, args.length);
|
||||||
}
|
}
|
||||||
if (args.length >= 2 && !args[0].isEmpty() && args[0].charAt(0) == '-') {
|
if (args.length >= 2 && !args[0].isEmpty() && args[0].charAt(0) == '-') {
|
||||||
switch (args[0].substring(1)) {
|
if ("f".equals(args[0].substring(1))) {
|
||||||
case "f":
|
confirm = new RunnableVal3<Command, Runnable, Runnable>() {
|
||||||
confirm = new RunnableVal3<Command, Runnable, Runnable>() {
|
@Override public void run(Command cmd, Runnable success, Runnable failure) {
|
||||||
@Override
|
if (EconHandler.manager != null) {
|
||||||
public void run(Command cmd, Runnable success, Runnable failure) {
|
PlotArea area = player.getApplicablePlotArea();
|
||||||
if (EconHandler.manager != null) {
|
if (area != null) {
|
||||||
PlotArea area = player.getApplicablePlotArea();
|
Expression<Double> priceEval = area.PRICES.get(cmd.getFullId());
|
||||||
if (area != null) {
|
Double price = priceEval != null ? priceEval.evaluate(0d) : 0d;
|
||||||
Expression<Double> priceEval =
|
if (price != 0d
|
||||||
area.PRICES.get(cmd.getFullId());
|
&& EconHandler.manager.getMoney(player) < price) {
|
||||||
Double price =
|
if (failure != null) {
|
||||||
priceEval != null ? priceEval.evaluate(0d) : 0d;
|
failure.run();
|
||||||
if (price != 0d
|
|
||||||
&& EconHandler.manager.getMoney(player) < price) {
|
|
||||||
if (failure != null) {
|
|
||||||
failure.run();
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (success != null) {
|
|
||||||
success.run();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
if (success != null) {
|
||||||
args = Arrays.copyOfRange(args, 1, args.length);
|
success.run();
|
||||||
break;
|
}
|
||||||
default:
|
}
|
||||||
C.INVALID_COMMAND_FLAG.send(player);
|
};
|
||||||
return;
|
args = Arrays.copyOfRange(args, 1, args.length);
|
||||||
|
} else {
|
||||||
|
C.INVALID_COMMAND_FLAG.send(player);
|
||||||
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -278,6 +274,7 @@ public class MainCommand extends Command {
|
|||||||
player.setMeta(PlotPlayer.META_LAST_PLOT, plot);
|
player.setMeta(PlotPlayer.META_LAST_PLOT, plot);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return CompletableFuture.completedFuture(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean canExecute(PlotPlayer player, boolean message) {
|
@Override public boolean canExecute(PlotPlayer player, boolean message) {
|
||||||
|
@ -9,16 +9,19 @@ import com.github.intellectualsites.plotsquared.plot.object.RunnableVal2;
|
|||||||
import com.github.intellectualsites.plotsquared.plot.object.RunnableVal3;
|
import com.github.intellectualsites.plotsquared.plot.object.RunnableVal3;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.StringMan;
|
import com.github.intellectualsites.plotsquared.plot.util.StringMan;
|
||||||
|
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
@CommandDeclaration(command = "near", aliases = "n", description = "Display nearby players",
|
@CommandDeclaration(command = "near", aliases = "n", description = "Display nearby players",
|
||||||
usage = "/plot near", category = CommandCategory.INFO) public class Near extends Command {
|
usage = "/plot near", category = CommandCategory.INFO) public class Near extends Command {
|
||||||
public Near() {
|
public Near() {
|
||||||
super(MainCommand.getInstance(), true);
|
super(MainCommand.getInstance(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void execute(PlotPlayer player, String[] args,
|
@Override public CompletableFuture<Boolean> execute(PlotPlayer player, String[] args,
|
||||||
RunnableVal3<Command, Runnable, Runnable> confirm,
|
RunnableVal3<Command, Runnable, Runnable> confirm,
|
||||||
RunnableVal2<Command, CommandResult> whenDone) throws CommandException {
|
RunnableVal2<Command, CommandResult> whenDone) throws CommandException {
|
||||||
final Plot plot = check(player.getCurrentPlot(), C.NOT_IN_PLOT);
|
final Plot plot = check(player.getCurrentPlot(), C.NOT_IN_PLOT);
|
||||||
C.PLOT_NEAR.send(player, StringMan.join(plot.getPlayersInPlot(), ", "));
|
C.PLOT_NEAR.send(player, StringMan.join(plot.getPlayersInPlot(), ", "));
|
||||||
|
return CompletableFuture.completedFuture(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ import com.github.intellectualsites.plotsquared.plot.object.*;
|
|||||||
import com.github.intellectualsites.plotsquared.plot.util.ChunkManager;
|
import com.github.intellectualsites.plotsquared.plot.util.ChunkManager;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue;
|
import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
@CommandDeclaration(command = "relight", description = "Relight your plot", usage = "/plot relight",
|
@CommandDeclaration(command = "relight", description = "Relight your plot", usage = "/plot relight",
|
||||||
category = CommandCategory.DEBUG) public class Relight extends Command {
|
category = CommandCategory.DEBUG) public class Relight extends Command {
|
||||||
@ -15,25 +15,24 @@ import java.util.HashSet;
|
|||||||
super(MainCommand.getInstance(), true);
|
super(MainCommand.getInstance(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void execute(final PlotPlayer player, String[] args,
|
@Override public CompletableFuture<Boolean> execute(final PlotPlayer player, String[] args,
|
||||||
RunnableVal3<Command, Runnable, Runnable> confirm,
|
RunnableVal3<Command, Runnable, Runnable> confirm,
|
||||||
RunnableVal2<Command, CommandResult> whenDone) {
|
RunnableVal2<Command, CommandResult> whenDone) {
|
||||||
final Plot plot = player.getCurrentPlot();
|
final Plot plot = player.getCurrentPlot();
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
C.NOT_IN_PLOT.send(player);
|
C.NOT_IN_PLOT.send(player);
|
||||||
return;
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
HashSet<RegionWrapper> regions = plot.getRegions();
|
|
||||||
final LocalBlockQueue queue = plot.getArea().getQueue(false);
|
final LocalBlockQueue queue = plot.getArea().getQueue(false);
|
||||||
ChunkManager.chunkTask(plot, new RunnableVal<int[]>() {
|
ChunkManager.chunkTask(plot, new RunnableVal<int[]>() {
|
||||||
@Override public void run(int[] value) {
|
@Override public void run(int[] value) {
|
||||||
queue.fixChunkLighting(value[0], value[1]);
|
queue.fixChunkLighting(value[0], value[1]);
|
||||||
}
|
}
|
||||||
}, new Runnable() {
|
}, () -> {
|
||||||
@Override public void run() {
|
plot.refreshChunks();
|
||||||
plot.refreshChunks();
|
C.SET_BLOCK_ACTION_FINISHED.send(player);
|
||||||
C.SET_BLOCK_ACTION_FINISHED.send(player);
|
|
||||||
}
|
|
||||||
}, 5);
|
}, 5);
|
||||||
|
|
||||||
|
return CompletableFuture.completedFuture(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,8 @@ import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
|
|||||||
import com.github.intellectualsites.plotsquared.plot.object.RunnableVal2;
|
import com.github.intellectualsites.plotsquared.plot.object.RunnableVal2;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.RunnableVal3;
|
import com.github.intellectualsites.plotsquared.plot.object.RunnableVal3;
|
||||||
|
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SubCommand class
|
* SubCommand class
|
||||||
*
|
*
|
||||||
@ -23,13 +25,12 @@ public abstract class SubCommand extends Command {
|
|||||||
setRequiredArguments(arguments);
|
setRequiredArguments(arguments);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void execute(PlotPlayer player, String[] args,
|
@Override public CompletableFuture<Boolean> execute(PlotPlayer player, String[] args,
|
||||||
RunnableVal3<Command, Runnable, Runnable> confirm,
|
RunnableVal3<Command, Runnable, Runnable> confirm,
|
||||||
RunnableVal2<Command, CommandResult> whenDone) {
|
RunnableVal2<Command, CommandResult> whenDone) {
|
||||||
onCommand(player, args);
|
return CompletableFuture.completedFuture(onCommand(player, args));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public abstract boolean onCommand(PlotPlayer player, String[] args);
|
public abstract boolean onCommand(PlotPlayer player, String[] args);
|
||||||
|
|
||||||
public boolean sendMessage(PlotPlayer player, C message, Object... args) {
|
public boolean sendMessage(PlotPlayer player, C message, Object... args) {
|
||||||
|
@ -15,6 +15,7 @@ import com.github.intellectualsites.plotsquared.plot.util.Permissions;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
@CommandDeclaration(command = "trust", aliases = {"t"}, requiredType = RequiredType.NONE,
|
@CommandDeclaration(command = "trust", aliases = {"t"}, requiredType = RequiredType.NONE,
|
||||||
usage = "/plot trust <player>",
|
usage = "/plot trust <player>",
|
||||||
@ -25,7 +26,7 @@ import java.util.UUID;
|
|||||||
super(MainCommand.getInstance(), true);
|
super(MainCommand.getInstance(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void execute(final PlotPlayer player, String[] args,
|
@Override public CompletableFuture<Boolean> execute(final PlotPlayer player, String[] args,
|
||||||
RunnableVal3<Command, Runnable, Runnable> confirm,
|
RunnableVal3<Command, Runnable, Runnable> confirm,
|
||||||
RunnableVal2<Command, CommandResult> whenDone) throws CommandException {
|
RunnableVal2<Command, CommandResult> whenDone) throws CommandException {
|
||||||
final Plot plot = check(player.getCurrentPlot(), C.NOT_IN_PLOT);
|
final Plot plot = check(player.getCurrentPlot(), C.NOT_IN_PLOT);
|
||||||
@ -61,22 +62,22 @@ import java.util.UUID;
|
|||||||
checkTrue(!uuids.isEmpty(), null);
|
checkTrue(!uuids.isEmpty(), null);
|
||||||
checkTrue(size <= plot.getArea().MAX_PLOT_MEMBERS || Permissions
|
checkTrue(size <= plot.getArea().MAX_PLOT_MEMBERS || Permissions
|
||||||
.hasPermission(player, C.PERMISSION_ADMIN_COMMAND_TRUST), C.PLOT_MAX_MEMBERS);
|
.hasPermission(player, C.PERMISSION_ADMIN_COMMAND_TRUST), C.PLOT_MAX_MEMBERS);
|
||||||
confirm.run(this, new Runnable() {
|
// Success
|
||||||
@Override // Success
|
confirm.run(this, () -> {
|
||||||
public void run() {
|
for (UUID uuid : uuids) {
|
||||||
for (UUID uuid : uuids) {
|
if (uuid != DBFunc.EVERYONE) {
|
||||||
if (uuid != DBFunc.EVERYONE) {
|
if (!plot.removeMember(uuid)) {
|
||||||
if (!plot.removeMember(uuid)) {
|
if (plot.getDenied().contains(uuid)) {
|
||||||
if (plot.getDenied().contains(uuid)) {
|
plot.removeDenied(uuid);
|
||||||
plot.removeDenied(uuid);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
plot.addTrusted(uuid);
|
|
||||||
EventUtil.manager.callTrusted(player, plot, uuid, true);
|
|
||||||
MainUtil.sendMessage(player, C.TRUSTED_ADDED);
|
|
||||||
}
|
}
|
||||||
|
plot.addTrusted(uuid);
|
||||||
|
EventUtil.manager.callTrusted(player, plot, uuid, true);
|
||||||
|
MainUtil.sendMessage(player, C.TRUSTED_ADDED);
|
||||||
}
|
}
|
||||||
}, null);
|
}, null);
|
||||||
|
|
||||||
|
return CompletableFuture.completedFuture(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ import com.github.intellectualsites.plotsquared.plot.util.Permissions;
|
|||||||
import com.github.intellectualsites.plotsquared.plot.util.UUIDHandler;
|
import com.github.intellectualsites.plotsquared.plot.util.UUIDHandler;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
@CommandDeclaration(command = "visit", permission = "plots.visit",
|
@CommandDeclaration(command = "visit", permission = "plots.visit",
|
||||||
description = "Visit someones plot", usage = "/plot visit [<player>|<alias>|<world>|<id>] [#]",
|
description = "Visit someones plot", usage = "/plot visit [<player>|<alias>|<world>|<id>] [#]",
|
||||||
@ -26,7 +27,7 @@ import java.util.*;
|
|||||||
return tabOf(player, args, space, getUsage());
|
return tabOf(player, args, space, getUsage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void execute(final PlotPlayer player, String[] args,
|
@Override public CompletableFuture<Boolean> execute(final PlotPlayer player, String[] args,
|
||||||
RunnableVal3<Command, Runnable, Runnable> confirm,
|
RunnableVal3<Command, Runnable, Runnable> confirm,
|
||||||
final RunnableVal2<Command, CommandResult> whenDone) throws CommandException {
|
final RunnableVal2<Command, CommandResult> whenDone) throws CommandException {
|
||||||
if (args.length == 1 && args[0].contains(":")) {
|
if (args.length == 1 && args[0].contains(":")) {
|
||||||
@ -41,7 +42,7 @@ import java.util.*;
|
|||||||
if (!MathMan.isInteger(args[1])) {
|
if (!MathMan.isInteger(args[1])) {
|
||||||
C.NOT_VALID_NUMBER.send(player, "(1, ∞)");
|
C.NOT_VALID_NUMBER.send(player, "(1, ∞)");
|
||||||
C.COMMAND_SYNTAX.send(player, getUsage());
|
C.COMMAND_SYNTAX.send(player, getUsage());
|
||||||
return;
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
page = Integer.parseInt(args[2]);
|
page = Integer.parseInt(args[2]);
|
||||||
case 2:
|
case 2:
|
||||||
@ -50,12 +51,12 @@ import java.util.*;
|
|||||||
if (sortByArea == null) {
|
if (sortByArea == null) {
|
||||||
C.NOT_VALID_NUMBER.send(player, "(1, ∞)");
|
C.NOT_VALID_NUMBER.send(player, "(1, ∞)");
|
||||||
C.COMMAND_SYNTAX.send(player, getUsage());
|
C.COMMAND_SYNTAX.send(player, getUsage());
|
||||||
return;
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
UUID user = UUIDHandler.getUUIDFromString(args[0]);
|
UUID user = UUIDHandler.getUUIDFromString(args[0]);
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
C.COMMAND_SYNTAX.send(player, getUsage());
|
C.COMMAND_SYNTAX.send(player, getUsage());
|
||||||
return;
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
unsorted = PlotSquared.get().getBasePlots(user);
|
unsorted = PlotSquared.get().getBasePlots(user);
|
||||||
shouldSortByArea = true;
|
shouldSortByArea = true;
|
||||||
@ -92,13 +93,13 @@ import java.util.*;
|
|||||||
}
|
}
|
||||||
if (unsorted == null || unsorted.isEmpty()) {
|
if (unsorted == null || unsorted.isEmpty()) {
|
||||||
C.FOUND_NO_PLOTS.send(player);
|
C.FOUND_NO_PLOTS.send(player);
|
||||||
return;
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
unsorted = new ArrayList<>(unsorted);
|
unsorted = new ArrayList<>(unsorted);
|
||||||
unsorted.removeIf(plot -> !plot.isBasePlot());
|
unsorted.removeIf(plot -> !plot.isBasePlot());
|
||||||
if (page < 1 || page > unsorted.size()) {
|
if (page < 1 || page > unsorted.size()) {
|
||||||
C.NOT_VALID_NUMBER.send(player, "(1, " + unsorted.size() + ")");
|
C.NOT_VALID_NUMBER.send(player, "(1, " + unsorted.size() + ")");
|
||||||
return;
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
List<Plot> plots;
|
List<Plot> plots;
|
||||||
if (shouldSortByArea) {
|
if (shouldSortByArea) {
|
||||||
@ -111,23 +112,23 @@ import java.util.*;
|
|||||||
if (!plot.hasOwner()) {
|
if (!plot.hasOwner()) {
|
||||||
if (!Permissions.hasPermission(player, C.PERMISSION_VISIT_UNOWNED)) {
|
if (!Permissions.hasPermission(player, C.PERMISSION_VISIT_UNOWNED)) {
|
||||||
C.NO_PERMISSION.send(player, C.PERMISSION_VISIT_UNOWNED);
|
C.NO_PERMISSION.send(player, C.PERMISSION_VISIT_UNOWNED);
|
||||||
return;
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
} else if (plot.isOwner(player.getUUID())) {
|
} else if (plot.isOwner(player.getUUID())) {
|
||||||
if (!Permissions.hasPermission(player, C.PERMISSION_VISIT_OWNED) && !Permissions
|
if (!Permissions.hasPermission(player, C.PERMISSION_VISIT_OWNED) && !Permissions
|
||||||
.hasPermission(player, C.PERMISSION_HOME)) {
|
.hasPermission(player, C.PERMISSION_HOME)) {
|
||||||
C.NO_PERMISSION.send(player, C.PERMISSION_VISIT_OWNED);
|
C.NO_PERMISSION.send(player, C.PERMISSION_VISIT_OWNED);
|
||||||
return;
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
} else if (plot.isAdded(player.getUUID())) {
|
} else if (plot.isAdded(player.getUUID())) {
|
||||||
if (!Permissions.hasPermission(player, C.PERMISSION_SHARED)) {
|
if (!Permissions.hasPermission(player, C.PERMISSION_SHARED)) {
|
||||||
C.NO_PERMISSION.send(player, C.PERMISSION_SHARED);
|
C.NO_PERMISSION.send(player, C.PERMISSION_SHARED);
|
||||||
return;
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!Permissions.hasPermission(player, C.PERMISSION_VISIT_OTHER)) {
|
if (!Permissions.hasPermission(player, C.PERMISSION_VISIT_OTHER)) {
|
||||||
C.NO_PERMISSION.send(player, C.PERMISSION_VISIT_OTHER);
|
C.NO_PERMISSION.send(player, C.PERMISSION_VISIT_OTHER);
|
||||||
return;
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
confirm.run(this, () -> {
|
confirm.run(this, () -> {
|
||||||
@ -137,6 +138,8 @@ import java.util.*;
|
|||||||
whenDone.run(Visit.this, CommandResult.FAILURE);
|
whenDone.run(Visit.this, CommandResult.FAILURE);
|
||||||
}
|
}
|
||||||
}, () -> whenDone.run(Visit.this, CommandResult.FAILURE));
|
}, () -> whenDone.run(Visit.this, CommandResult.FAILURE));
|
||||||
|
|
||||||
|
return CompletableFuture.completedFuture(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ 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 javax.annotation.Nonnull;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class ConsolePlayer extends PlotPlayer {
|
public class ConsolePlayer extends PlotPlayer {
|
||||||
@ -33,7 +34,7 @@ public class ConsolePlayer extends PlotPlayer {
|
|||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean canTeleport(Location loc) {
|
@Override public boolean canTeleport(@Nonnull Location loc) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,14 +96,14 @@ public class ConsolePlayer extends PlotPlayer {
|
|||||||
return RequiredType.CONSOLE;
|
return RequiredType.CONSOLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void setWeather(PlotWeather weather) {
|
@Override public void setWeather(@Nonnull PlotWeather weather) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public PlotGameMode getGameMode() {
|
@Nonnull @Override public PlotGameMode getGameMode() {
|
||||||
return PlotGameMode.NOT_SET;
|
return PlotGameMode.NOT_SET;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void setGameMode(PlotGameMode gameMode) {
|
@Override public void setGameMode(@Nonnull PlotGameMode gameMode) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void setTime(long time) {
|
@Override public void setTime(long time) {
|
||||||
@ -115,7 +116,7 @@ public class ConsolePlayer extends PlotPlayer {
|
|||||||
@Override public void setFlight(boolean fly) {
|
@Override public void setFlight(boolean fly) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void playMusic(Location location, PlotBlock id) {
|
@Override public void playMusic(@Nonnull Location location, @Nonnull PlotBlock id) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void kick(String message) {
|
@Override public void kick(String message) {
|
||||||
|
@ -12,8 +12,10 @@ import com.github.intellectualsites.plotsquared.plot.object.worlds.SinglePlotAre
|
|||||||
import com.github.intellectualsites.plotsquared.plot.object.worlds.SinglePlotAreaManager;
|
import com.github.intellectualsites.plotsquared.plot.object.worlds.SinglePlotAreaManager;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.*;
|
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 lombok.NonNull;
|
import lombok.NonNull;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
@ -335,8 +337,9 @@ public abstract class PlotPlayer implements CommandCaller, OfflinePlotPlayer {
|
|||||||
*/
|
*/
|
||||||
@Override public abstract UUID getUUID();
|
@Override public abstract UUID getUUID();
|
||||||
|
|
||||||
public boolean canTeleport(Location loc) {
|
public boolean canTeleport(@Nonnull final Location loc) {
|
||||||
Location current = getLocationFull();
|
Preconditions.checkNotNull(loc, "Specified location cannot be null");
|
||||||
|
final Location current = getLocationFull();
|
||||||
teleport(loc);
|
teleport(loc);
|
||||||
boolean result = true;
|
boolean result = true;
|
||||||
if (!getLocation().equals(loc)) {
|
if (!getLocation().equals(loc)) {
|
||||||
@ -409,21 +412,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(PlotWeather weather);
|
public abstract void setWeather(@Nonnull PlotWeather weather);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get this player's gamemode.
|
* Get this player's gamemode.
|
||||||
*
|
*
|
||||||
* @return the gamemode of the player.
|
* @return the gamemode of the player.
|
||||||
*/
|
*/
|
||||||
public abstract PlotGameMode getGameMode();
|
@Nonnull 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(PlotGameMode gameMode);
|
public abstract void setGameMode(@Nonnull PlotGameMode gameMode);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set this player's local time (ticks).
|
* Set this player's local time (ticks).
|
||||||
@ -447,7 +450,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(Location location, PlotBlock id);
|
public abstract void playMusic(@Nonnull Location location, @Nonnull PlotBlock id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if this player is banned.
|
* Check if this player is banned.
|
||||||
|
Loading…
Reference in New Issue
Block a user