diff --git a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/AbstractCommand.java b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/AbstractCommand.java
index 870d8bae..a5577265 100644
--- a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/AbstractCommand.java
+++ b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/AbstractCommand.java
@@ -12,7 +12,9 @@ import java.util.Set;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
+import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.command.TabExecutor;
+import org.bukkit.entity.Player;
/**
* Base command class, featuring some features.
@@ -50,6 +52,34 @@ public abstract class AbstractCommand implements TabExecutor{
return b.toString();
}
+ /**
+ *
+ * @param sender
+ * @return True if sender is a Player, otherwise false is returned and a message sent.
+ */
+ public static boolean demandPlayer(CommandSender sender) {
+ if (sender instanceof Player) {
+ return true;
+ } else {
+ sender.sendMessage("[NoCheatPlus] A player is required to run this command.");
+ return false;
+ }
+ }
+
+ /**
+ *
+ * @param sender
+ * @return True if sender is a Player, otherwise false is returned and a message sent.
+ */
+ public static boolean demandConsoleCommandSender(CommandSender sender) {
+ if (sender instanceof ConsoleCommandSender) {
+ return true;
+ } else {
+ sender.sendMessage("[NoCheatPlus] This command can only be run from the console.");
+ return false;
+ }
+ }
+
////////////////
// Not static.
////////////////
diff --git a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/actions/BanCommand.java b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/actions/BanCommand.java
index 62032056..f0f0edba 100644
--- a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/actions/BanCommand.java
+++ b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/actions/BanCommand.java
@@ -25,7 +25,9 @@ public class BanCommand extends BaseCommand {
@Override
public boolean onCommand(final CommandSender sender, Command command, String label, String[] args) {
-
+ if (!demandConsoleCommandSender(sender)) {
+ return true;
+ }
// TODO: Consider supporting vanilla syntax or removing this command :p.
// Args contains "ban" as first arg.
diff --git a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/actions/KickCommand.java b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/actions/KickCommand.java
index 55a3c99f..18c27e08 100644
--- a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/actions/KickCommand.java
+++ b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/actions/KickCommand.java
@@ -21,6 +21,9 @@ public class KickCommand extends BaseCommand {
@Override
public boolean onCommand(final CommandSender sender, Command command, String label, String[] args) {
+ if (!demandConsoleCommandSender(sender)) {
+ return true;
+ }
// Args contains "kick" as first arg.
if (args.length < 2) return false;
final String name = args[1];
diff --git a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/actions/TellCommand.java b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/actions/TellCommand.java
index b847e55e..d94dbf56 100644
--- a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/actions/TellCommand.java
+++ b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/actions/TellCommand.java
@@ -26,7 +26,12 @@ public class TellCommand extends BaseCommand {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, final String[] args) {
- if (args.length < 3) return false;
+ if (!demandConsoleCommandSender(sender)) {
+ return true;
+ }
+ if (args.length < 3) {
+ return false;
+ }
final String name = args[1].trim();
final String message = AbstractCommand.join(args, 2);
tell(name, message);
@@ -39,7 +44,7 @@ public class TellCommand extends BaseCommand {
}
/* (non-Javadoc)
- * @see fr.neatmonster.nocheatplus.command.actions.delay.DelayableCommand#onTabComplete(org.bukkit.command.CommandSender, org.bukkit.command.Command, java.lang.String, java.lang.String[])
+ * @see fr.neatmonster.nocheatplus.command.BaseCommand#onTabComplete(org.bukkit.command.CommandSender, org.bukkit.command.Command, java.lang.String, java.lang.String[])
*/
@Override
public List onTabComplete(CommandSender sender, Command command,
diff --git a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/actions/delay/DelayCommand.java b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/actions/delay/DelayCommand.java
index 9ca67438..529dfca4 100644
--- a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/actions/delay/DelayCommand.java
+++ b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/actions/delay/DelayCommand.java
@@ -4,6 +4,7 @@ import org.bukkit.Bukkit;
import org.bukkit.Server;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
+import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.plugin.java.JavaPlugin;
import fr.neatmonster.nocheatplus.command.AbstractCommand;
@@ -18,12 +19,14 @@ public class DelayCommand extends DelayableCommand {
public DelayCommand(JavaPlugin plugin){
super(plugin, "delay", Permissions.COMMAND_DELAY, 1, 0, true);
+ demandConsoleCommandSender = true;
}
@Override
- public boolean execute(CommandSender sender, Command command, String label,
- String[] alteredArgs, long delay) {
- if (alteredArgs.length < 2) return false;
+ public boolean execute(CommandSender sender, Command command, String label, String[] alteredArgs, long delay) {
+ if (alteredArgs.length < 2) {
+ return false;
+ }
final String cmd = AbstractCommand.join(alteredArgs, 1);
schedule(new Runnable() {
@Override
diff --git a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/actions/delay/DelayableCommand.java b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/actions/delay/DelayableCommand.java
index 3ba0103b..e9965449 100644
--- a/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/actions/delay/DelayableCommand.java
+++ b/NCPCore/src/main/java/fr/neatmonster/nocheatplus/command/actions/delay/DelayableCommand.java
@@ -52,6 +52,7 @@ public abstract class DelayableCommand extends BaseCommand {
protected final int delayIndex;
protected final boolean mustHaveDelay;
protected final int delayPreset;
+ protected boolean demandConsoleCommandSender = false;
/**
* (Delay is not obligatory, inserted after the first argument.)
@@ -115,6 +116,9 @@ public abstract class DelayableCommand extends BaseCommand {
@Override
public boolean onCommand(final CommandSender sender, final Command command,
final String label, final String[] args ) {
+ if (demandConsoleCommandSender && !demandConsoleCommandSender(sender)) {
+ return true;
+ }
// Parse the delay and alter the args accordingly.
long delay = parseDelay(args, delayIndex, delayPreset);
String[] alteredArgs;