improved modularity
This commit is contained in:
parent
6060cbb995
commit
d3dd37ebac
30 changed files with 124 additions and 755 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,2 +1,3 @@
|
|||
# Project exclude paths
|
||||
/target/
|
||||
/.idea/
|
13
commandapi.iml
Normal file
13
commandapi.iml
Normal file
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_11">
|
||||
<output url="file://$MODULE_DIR$/target/classes" />
|
||||
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
41
pom.xml
41
pom.xml
|
@ -5,45 +5,12 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
<maven.compiler.source>11</maven.compiler.source>
|
||||
<maven.compiler.target>11</maven.compiler.target>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
||||
<groupId>nl.iobyte</groupId>
|
||||
<artifactId>commandapi</artifactId>
|
||||
<version>1.1</version>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>sk89q-repo</id>
|
||||
<url>https://maven.enginehub.org/repo/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<version>1.12.2-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sk89q.worldguard</groupId>
|
||||
<artifactId>worldguard-legacy</artifactId>
|
||||
<version>6.2</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sk89q.worldedit</groupId>
|
||||
<artifactId>worldedit-bukkit</artifactId>
|
||||
<version>6.1.5</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sk89q.worldedit</groupId>
|
||||
<artifactId>worldedit-core</artifactId>
|
||||
<version>6.1.4-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<version>1.2</version>
|
||||
</project>
|
|
@ -1,28 +1,19 @@
|
|||
package nl.iobyte.commandapi;
|
||||
|
||||
import javafx.util.Pair;
|
||||
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
||||
import nl.iobyte.commandapi.interfaces.ICommandMiddleware;
|
||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||
import nl.iobyte.commandapi.objects.CommandMap;
|
||||
import nl.iobyte.commandapi.objects.CommandSyntax;
|
||||
import nl.iobyte.commandapi.interfaces.SubCommand;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import nl.iobyte.commandapi.objects.SubCommand;
|
||||
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||
import java.util.*;
|
||||
|
||||
public class CommandFactory implements CommandExecutor {
|
||||
public class CommandFactory {
|
||||
|
||||
private final String name;
|
||||
private final List<ICommandMiddleware> middlewares = new ArrayList<>();
|
||||
private final CommandMap commandMap = new CommandMap();
|
||||
private Plugin plugin;
|
||||
|
||||
public CommandFactory(String name) {
|
||||
this.name = name;
|
||||
|
@ -65,11 +56,11 @@ public class CommandFactory implements CommandExecutor {
|
|||
}
|
||||
|
||||
/**
|
||||
* Get SubCommand's available to CommandSender
|
||||
* @param sender CommandSender
|
||||
* Get SubCommand's available to ICommandExecutor
|
||||
* @param sender ICommandExecutor
|
||||
* @return List<SubCommand>
|
||||
*/
|
||||
public List<SubCommand> getApplicableSubCommands(CommandSender sender) {
|
||||
public List<SubCommand> getApplicableSubCommands(ICommandExecutor sender) {
|
||||
List<SubCommand> list = new ArrayList<>();
|
||||
for(SubCommand subCommand : commandMap.getSubCommands()) {
|
||||
if (subCommand.hasPermission() && !sender.hasPermission(subCommand.getPermission()))
|
||||
|
@ -86,13 +77,11 @@ public class CommandFactory implements CommandExecutor {
|
|||
|
||||
/**
|
||||
* When a command gets fired
|
||||
* @param sender CommandSender
|
||||
* @param cmd Command
|
||||
* @param s String
|
||||
* @param sender ICommandExecutor
|
||||
* @param args []String
|
||||
* @return Boolean
|
||||
*/
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String s, String[] args) {
|
||||
public boolean onCommand(ICommandExecutor sender, String[] args) {
|
||||
if(args.length == 0)
|
||||
args = new String[]{"help"};
|
||||
|
||||
|
@ -147,33 +136,17 @@ public class CommandFactory implements CommandExecutor {
|
|||
|
||||
int i = subCommand.getSyntaxList().indexOf(syntax);
|
||||
List<Object> finalParsedArguments = parsedArguments;
|
||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
|
||||
if (sender instanceof Player) {
|
||||
subCommand.onPlayerCommand((Player) sender, finalParsedArguments, i);
|
||||
} else {
|
||||
subCommand.onConsoleCommand(sender, finalParsedArguments, i);
|
||||
}
|
||||
});
|
||||
|
||||
subCommand.onCommand(sender, finalParsedArguments, i);
|
||||
return true;
|
||||
}
|
||||
|
||||
if(str != null) {
|
||||
sender.sendMessage(ChatColor.RED +str);
|
||||
sender.sendMessage("§4" +str);
|
||||
return true;
|
||||
}
|
||||
|
||||
sender.sendMessage(ChatColor.RED + "Usage: " + ChatColor.WHITE + syntaxList.get(0).getUsage());
|
||||
sender.sendMessage("§4" + "Usage: " + "§f" + syntaxList.get(0).getUsage());
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Register command
|
||||
* @param plugin JavaPlugin
|
||||
*/
|
||||
public void registerCommand(JavaPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
plugin.getCommand(name).setExecutor(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,8 +2,7 @@ package nl.iobyte.commandapi.arguments;
|
|||
|
||||
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||
import java.util.List;
|
||||
|
||||
public class BooleanArgument implements ICommandArgument<Boolean> {
|
||||
|
@ -13,17 +12,17 @@ public class BooleanArgument implements ICommandArgument<Boolean> {
|
|||
* @return String
|
||||
*/
|
||||
public String getMessage(String[] args) {
|
||||
return "Invalid boolean "+ ChatColor.WHITE+args[0];
|
||||
return "Invalid boolean "+ "§f" + args[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if argument is valid Boolean
|
||||
* @param sender CommandSender
|
||||
* @param sender ICommandExecutor
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Boolean
|
||||
*/
|
||||
public ArgumentCheck checkArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
switch (args[0].toLowerCase()) {
|
||||
case "true":
|
||||
case "false":
|
||||
|
@ -35,12 +34,12 @@ public class BooleanArgument implements ICommandArgument<Boolean> {
|
|||
|
||||
/**
|
||||
* Get Boolean passed by command
|
||||
* @param sender CommandSender
|
||||
* @param sender ICommandExecutor
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Boolean
|
||||
*/
|
||||
public Boolean getArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public Boolean getArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
return "true".equals(args[0].toLowerCase());
|
||||
}
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@ package nl.iobyte.commandapi.arguments;
|
|||
|
||||
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -20,28 +19,28 @@ public class EnumArgument implements ICommandArgument<Enum<?>> {
|
|||
* @return String
|
||||
*/
|
||||
public String getMessage(String[] args) {
|
||||
return "Invalid value "+ChatColor.WHITE+args[0]+ChatColor.RED+" for "+validArgumentHolders[0].name();
|
||||
return "Invalid value "+"§f"+args[0]+"§4"+" for "+validArgumentHolders[0].name();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if argument is valid Enum
|
||||
* @param sender CommandSender
|
||||
* @param sender ICommandExecutor
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Boolean
|
||||
*/
|
||||
public ArgumentCheck checkArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
return new ArgumentCheck(Arrays.stream(validArgumentHolders).map(Enum::toString).anyMatch(args[0]::equalsIgnoreCase), 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Enum passed by command
|
||||
* @param sender CommandSender
|
||||
* @param sender ICommandExecutor
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Enum
|
||||
*/
|
||||
public Enum<?> getArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public Enum<?> getArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
return Arrays.stream(validArgumentHolders).filter(enumVariable -> enumVariable.toString().equalsIgnoreCase(args[0])).findFirst().orElse(null);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,55 +0,0 @@
|
|||
package nl.iobyte.commandapi.arguments;
|
||||
|
||||
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class MaterialArgument implements ICommandArgument<Enum<?>> {
|
||||
|
||||
private final Material[] validArgumentHolders;
|
||||
|
||||
public MaterialArgument(Material... validArgumentHolders) {
|
||||
this.validArgumentHolders = validArgumentHolders;
|
||||
}
|
||||
|
||||
/**
|
||||
* Message to display when giving an error
|
||||
* @return String
|
||||
*/
|
||||
public String getMessage(String[] args) {
|
||||
return "No material with name: "+args[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if argument is valid Material
|
||||
* @param sender CommandSender
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Boolean
|
||||
*/
|
||||
public ArgumentCheck checkArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
Material material = Material.getMaterial(args[0]);
|
||||
if(material == null)
|
||||
return new ArgumentCheck(false, 0);
|
||||
|
||||
if(validArgumentHolders == null || validArgumentHolders.length == 0)
|
||||
return new ArgumentCheck(true, 1);
|
||||
|
||||
return new ArgumentCheck(Arrays.stream(validArgumentHolders).anyMatch(m -> m == material), 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Material passed by command
|
||||
* @param sender CommandSender
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Material
|
||||
*/
|
||||
public Material getArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
return Material.getMaterial(args[0]);
|
||||
}
|
||||
|
||||
}
|
|
@ -2,7 +2,7 @@ package nl.iobyte.commandapi.arguments;
|
|||
|
||||
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||
import java.util.List;
|
||||
|
||||
public class MessageArgument implements ICommandArgument<String> {
|
||||
|
@ -17,12 +17,12 @@ public class MessageArgument implements ICommandArgument<String> {
|
|||
|
||||
/**
|
||||
* Check if argument is valid String
|
||||
* @param sender CommandSender
|
||||
* @param sender ICommandExecutor
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Boolean
|
||||
*/
|
||||
public ArgumentCheck checkArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
if(!args[0].startsWith("\""))
|
||||
return new ArgumentCheck(true, 1);
|
||||
|
||||
|
@ -35,12 +35,12 @@ public class MessageArgument implements ICommandArgument<String> {
|
|||
|
||||
/**
|
||||
* Get String passed by command
|
||||
* @param sender CommandSender
|
||||
* @param sender ICommandExecutor
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return String
|
||||
*/
|
||||
public String getArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public String getArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
return String.join(" ", args).replace("\"", "");
|
||||
}
|
||||
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
package nl.iobyte.commandapi.arguments;
|
||||
|
||||
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import java.util.List;
|
||||
|
||||
public class PlayerArgument implements ICommandArgument<Player> {
|
||||
|
||||
/**
|
||||
* Message to display when giving an error
|
||||
* @return String
|
||||
*/
|
||||
public String getMessage(String[] args) {
|
||||
return "No player found with name: "+ ChatColor.WHITE+args[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if argument is valid Player
|
||||
* @param sender CommandSender
|
||||
* @param args Argument passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Boolean
|
||||
*/
|
||||
public ArgumentCheck checkArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
return new ArgumentCheck(Bukkit.getPlayer(args[0]) != null, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Player passed by command
|
||||
* @param sender CommandSender
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Player
|
||||
*/
|
||||
public Player getArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
return Bukkit.getPlayer(args[0]);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,44 +0,0 @@
|
|||
package nl.iobyte.commandapi.arguments;
|
||||
|
||||
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||
import nl.iobyte.commandapi.objects.SpigotPlayerSelector;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import java.util.List;
|
||||
|
||||
public class PlayersArgument implements ICommandArgument<List<Player>> {
|
||||
|
||||
/**
|
||||
* Message to display when giving an error
|
||||
* @return String
|
||||
*/
|
||||
public String getMessage(String[] args) {
|
||||
return "No player(s) found for: "+ ChatColor.WHITE+args[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if argument is valid Player
|
||||
* @param sender CommandSender
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Boolean
|
||||
*/
|
||||
public ArgumentCheck checkArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
List<Player> players = new SpigotPlayerSelector(args[0]).getPlayers(sender);
|
||||
return new ArgumentCheck(players != null && !players.isEmpty(), 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Player passed by command
|
||||
* @param sender CommandSender
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Player
|
||||
*/
|
||||
public List<Player> getArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
return new SpigotPlayerSelector(args[0]).getPlayers(sender);
|
||||
}
|
||||
|
||||
}
|
|
@ -2,8 +2,7 @@ package nl.iobyte.commandapi.arguments;
|
|||
|
||||
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -20,17 +19,17 @@ public class StringArgument implements ICommandArgument<String> {
|
|||
* @return String
|
||||
*/
|
||||
public String getMessage(String[] args) {
|
||||
return "Invalid string: "+ ChatColor.WHITE+args[0];
|
||||
return "Invalid string: "+ "§f"+args[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if argument is valid String
|
||||
* @param sender CommandSender
|
||||
* @param sender ICommandExecutor
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Boolean
|
||||
*/
|
||||
public ArgumentCheck checkArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
if(validArguments == null || validArguments.length == 0)
|
||||
return new ArgumentCheck(true, 1);
|
||||
|
||||
|
@ -39,12 +38,12 @@ public class StringArgument implements ICommandArgument<String> {
|
|||
|
||||
/**
|
||||
* Get String passed by command
|
||||
* @param sender CommandSender
|
||||
* @param sender ICommandExecutor
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return String
|
||||
*/
|
||||
public String getArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public String getArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
return args[0];
|
||||
}
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@ package nl.iobyte.commandapi.arguments.array;
|
|||
|
||||
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||
import java.util.List;
|
||||
|
||||
public class IntegerArrayArgument implements ICommandArgument<Integer[]> {
|
||||
|
@ -13,11 +12,11 @@ public class IntegerArrayArgument implements ICommandArgument<Integer[]> {
|
|||
* @return String
|
||||
*/
|
||||
public String getMessage(String[] args) {
|
||||
return "Invalid integer array: "+ ChatColor.WHITE+args[0];
|
||||
return "Invalid integer array: "+ "§f"+args[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public ArgumentCheck checkArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
String[] items = args[0].replace("[", "").replace("]", "").split(",");
|
||||
try {
|
||||
for(String item : items)
|
||||
|
@ -30,7 +29,7 @@ public class IntegerArrayArgument implements ICommandArgument<Integer[]> {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Integer[] getArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public Integer[] getArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
String[] items = args[0].replace("[", "").replace("]", "").split(",");
|
||||
Integer[] results = new Integer[items.length];
|
||||
for(int i = 0; i < items.length; i++)
|
||||
|
|
|
@ -2,8 +2,7 @@ package nl.iobyte.commandapi.arguments.array;
|
|||
|
||||
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||
import java.util.List;
|
||||
|
||||
public class StringArrayArgument implements ICommandArgument<String[]> {
|
||||
|
@ -13,11 +12,11 @@ public class StringArrayArgument implements ICommandArgument<String[]> {
|
|||
* @return String
|
||||
*/
|
||||
public String getMessage(String[] args) {
|
||||
return "Invalid string array: "+ ChatColor.WHITE+args[0];
|
||||
return "Invalid string array: "+ "§f"+args[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public ArgumentCheck checkArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
if(!args[0].startsWith("[\"") || !args[0].endsWith("\"]"))
|
||||
return new ArgumentCheck(false, 0);
|
||||
|
||||
|
@ -25,7 +24,7 @@ public class StringArrayArgument implements ICommandArgument<String[]> {
|
|||
}
|
||||
|
||||
@Override
|
||||
public String[] getArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public String[] getArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
return args[0].replace("[", "").replace("]", "").replaceAll("\"", "").split(",");
|
||||
}
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@ package nl.iobyte.commandapi.arguments.number;
|
|||
|
||||
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||
import java.util.List;
|
||||
|
||||
public class DoubleArgument implements ICommandArgument<Double> {
|
||||
|
@ -13,17 +12,17 @@ public class DoubleArgument implements ICommandArgument<Double> {
|
|||
* @return String
|
||||
*/
|
||||
public String getMessage(String[] args) {
|
||||
return "Invalid double: "+ ChatColor.WHITE+args[0];
|
||||
return "Invalid double: "+ "§f"+args[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if argument is valid Double
|
||||
* @param sender CommandSender
|
||||
* @param sender ICommandExecutor
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Boolean
|
||||
*/
|
||||
public ArgumentCheck checkArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
try {
|
||||
Double.parseDouble(args[0]);
|
||||
return new ArgumentCheck(true, 1);
|
||||
|
@ -34,12 +33,12 @@ public class DoubleArgument implements ICommandArgument<Double> {
|
|||
|
||||
/**
|
||||
* Get Double passed by command
|
||||
* @param sender CommandSender
|
||||
* @param sender ICommandExecutor
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Double
|
||||
*/
|
||||
public Double getArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public Double getArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
try {
|
||||
return Double.parseDouble(args[0]);
|
||||
} catch (Exception e) {
|
||||
|
|
|
@ -2,8 +2,7 @@ package nl.iobyte.commandapi.arguments.number;
|
|||
|
||||
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||
import java.util.List;
|
||||
|
||||
public class FloatArgument implements ICommandArgument<Float> {
|
||||
|
@ -13,17 +12,17 @@ public class FloatArgument implements ICommandArgument<Float> {
|
|||
* @return String
|
||||
*/
|
||||
public String getMessage(String[] args) {
|
||||
return "Invalid float: "+ ChatColor.WHITE+args[0];
|
||||
return "Invalid float: "+ "§f"+args[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if argument is valid Float
|
||||
* @param sender CommandSender
|
||||
* @param sender ICommandExecutor
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Boolean
|
||||
*/
|
||||
public ArgumentCheck checkArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
try {
|
||||
Float.parseFloat(args[0]);
|
||||
return new ArgumentCheck(true, 1);
|
||||
|
@ -34,12 +33,12 @@ public class FloatArgument implements ICommandArgument<Float> {
|
|||
|
||||
/**
|
||||
* Get Float passed by command
|
||||
* @param sender CommandSender
|
||||
* @param sender ICommandExecutor
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Float
|
||||
*/
|
||||
public Float getArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public Float getArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
try {
|
||||
return Float.parseFloat(args[0]);
|
||||
} catch (Exception e) {
|
||||
|
|
|
@ -2,8 +2,7 @@ package nl.iobyte.commandapi.arguments.number;
|
|||
|
||||
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||
import java.util.List;
|
||||
|
||||
public class IntegerArgument implements ICommandArgument<Integer> {
|
||||
|
@ -13,17 +12,17 @@ public class IntegerArgument implements ICommandArgument<Integer> {
|
|||
* @return String
|
||||
*/
|
||||
public String getMessage(String[] args) {
|
||||
return "Invalid integer: "+ ChatColor.WHITE+args[0];
|
||||
return "Invalid integer: "+ "§f"+args[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if argument is valid Integer
|
||||
* @param sender CommandSender
|
||||
* @param sender ICommandExecutor
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Boolean
|
||||
*/
|
||||
public ArgumentCheck checkArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
try {
|
||||
Integer.parseInt(args[0]);
|
||||
return new ArgumentCheck(true, 1);
|
||||
|
@ -34,12 +33,12 @@ public class IntegerArgument implements ICommandArgument<Integer> {
|
|||
|
||||
/**
|
||||
* Get Integer passed by command
|
||||
* @param sender CommandSender
|
||||
* @param sender ICommandExecutor
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Integer
|
||||
*/
|
||||
public Integer getArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public Integer getArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
try {
|
||||
return Integer.parseInt(args[0]);
|
||||
} catch (Exception e) {
|
||||
|
|
|
@ -2,8 +2,7 @@ package nl.iobyte.commandapi.arguments.number;
|
|||
|
||||
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||
import java.util.List;
|
||||
|
||||
public class LongArgument implements ICommandArgument<Long> {
|
||||
|
@ -13,17 +12,17 @@ public class LongArgument implements ICommandArgument<Long> {
|
|||
* @return String
|
||||
*/
|
||||
public String getMessage(String[] args) {
|
||||
return "Invalid long: "+ ChatColor.WHITE+args[0];
|
||||
return "Invalid long: "+ "§f"+args[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if argument is valid Long
|
||||
* @param sender CommandSender
|
||||
* @param sender ICommandExecutor
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Boolean
|
||||
*/
|
||||
public ArgumentCheck checkArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
try {
|
||||
Long.parseLong(args[0]);
|
||||
return new ArgumentCheck(true, 1);
|
||||
|
@ -34,12 +33,12 @@ public class LongArgument implements ICommandArgument<Long> {
|
|||
|
||||
/**
|
||||
* Get Long passed by command
|
||||
* @param sender CommandSender
|
||||
* @param sender ICommandExecutor
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Long
|
||||
*/
|
||||
public Long getArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public Long getArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
try {
|
||||
return Long.parseLong(args[0]);
|
||||
} catch (Exception e) {
|
||||
|
|
|
@ -2,8 +2,7 @@ package nl.iobyte.commandapi.arguments.number;
|
|||
|
||||
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||
import java.util.List;
|
||||
|
||||
public class ShortArgument implements ICommandArgument<Short> {
|
||||
|
@ -13,17 +12,17 @@ public class ShortArgument implements ICommandArgument<Short> {
|
|||
* @return String
|
||||
*/
|
||||
public String getMessage(String[] args) {
|
||||
return "Invalid short: "+ ChatColor.WHITE+args[0];
|
||||
return "Invalid short: "+ "§f"+args[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if argument is valid Short
|
||||
* @param sender CommandSender
|
||||
* @param sender ICommandExecutor
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Boolean
|
||||
*/
|
||||
public ArgumentCheck checkArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
try {
|
||||
Short.parseShort(args[0]);
|
||||
return new ArgumentCheck(true, 1);
|
||||
|
@ -34,12 +33,12 @@ public class ShortArgument implements ICommandArgument<Short> {
|
|||
|
||||
/**
|
||||
* Get Short passed by command
|
||||
* @param sender CommandSender
|
||||
* @param sender ICommandExecutor
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Short
|
||||
*/
|
||||
public Short getArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
||||
public Short getArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||
try {
|
||||
return Short.parseShort(args[0]);
|
||||
} catch (Exception e) {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package nl.iobyte.commandapi.interfaces;
|
||||
|
||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||
import java.util.List;
|
||||
|
||||
public interface ICommandArgument<T> {
|
||||
|
@ -14,20 +14,20 @@ public interface ICommandArgument<T> {
|
|||
|
||||
/**
|
||||
* Check if valid argument
|
||||
* @param sender CommandSender
|
||||
* @param sender ICommandExecutor
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return ArgumentCheck
|
||||
*/
|
||||
ArgumentCheck checkArgument(CommandSender sender, String[] args, List<Object> previousArguments);
|
||||
ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments);
|
||||
|
||||
/**
|
||||
* Get object of argument
|
||||
* @param sender CommandSender
|
||||
* @param sender ICommandExecutor
|
||||
* @param args Arguments passed by Command
|
||||
* @param previousArguments Previous arguments
|
||||
* @return Object of type T
|
||||
*/
|
||||
T getArgument(CommandSender sender, String[] args, List<Object> previousArguments);
|
||||
T getArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments);
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
package nl.iobyte.commandapi.interfaces;
|
||||
|
||||
public interface ICommandExecutor {
|
||||
|
||||
boolean isPlayer();
|
||||
|
||||
boolean hasPermission(String str);
|
||||
|
||||
void sendMessage(String str);
|
||||
|
||||
Object getOriginal();
|
||||
|
||||
}
|
|
@ -1,9 +1,9 @@
|
|||
package nl.iobyte.commandapi.interfaces;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
import nl.iobyte.commandapi.objects.SubCommand;
|
||||
|
||||
public interface ICommandMiddleware {
|
||||
|
||||
boolean continueCommand(CommandSender sender, SubCommand command);
|
||||
boolean continueCommand(ICommandExecutor sender, SubCommand command);
|
||||
|
||||
}
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
package nl.iobyte.commandapi.middlewares;
|
||||
|
||||
import nl.iobyte.commandapi.interfaces.ICommandMiddleware;
|
||||
import nl.iobyte.commandapi.interfaces.SubCommand;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class NoPlayerMiddleware implements ICommandMiddleware {
|
||||
|
||||
@Override
|
||||
public boolean continueCommand(CommandSender sender, SubCommand command) {
|
||||
return !(sender instanceof Player);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,9 +1,8 @@
|
|||
package nl.iobyte.commandapi.middlewares;
|
||||
|
||||
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||
import nl.iobyte.commandapi.interfaces.ICommandMiddleware;
|
||||
import nl.iobyte.commandapi.interfaces.SubCommand;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import nl.iobyte.commandapi.objects.SubCommand;
|
||||
|
||||
public class PermissionMiddleware implements ICommandMiddleware {
|
||||
|
||||
|
@ -18,16 +17,16 @@ public class PermissionMiddleware implements ICommandMiddleware {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean continueCommand(CommandSender sender, SubCommand command) {
|
||||
public boolean continueCommand(ICommandExecutor sender, SubCommand command) {
|
||||
if(command.hasPermission() && !sender.hasPermission(command.getPermission())) {
|
||||
sender.sendMessage(ChatColor.RED + "You don't have permission to use this command");
|
||||
sender.sendMessage("§4" + "You don't have permission to use this command");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(permissions != null && permissions.length != 0) {
|
||||
for (String permission : permissions) {
|
||||
if (!sender.hasPermission(permission)) {
|
||||
sender.sendMessage(ChatColor.RED + "You don't have permission to use this command");
|
||||
sender.sendMessage("§4" + "You don't have permission to use this command");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
package nl.iobyte.commandapi.middlewares;
|
||||
|
||||
import nl.iobyte.commandapi.interfaces.ICommandMiddleware;
|
||||
import nl.iobyte.commandapi.interfaces.SubCommand;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class PlayerMiddleware implements ICommandMiddleware {
|
||||
|
||||
@Override
|
||||
public boolean continueCommand(CommandSender sender, SubCommand command) {
|
||||
return sender instanceof Player;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,6 +1,5 @@
|
|||
package nl.iobyte.commandapi.objects;
|
||||
|
||||
import nl.iobyte.commandapi.interfaces.SubCommand;
|
||||
import java.util.*;
|
||||
|
||||
public class CommandMap {
|
||||
|
|
|
@ -1,153 +0,0 @@
|
|||
package nl.iobyte.commandapi.objects;
|
||||
|
||||
import nl.iobyte.commandapi.worldguard.WGManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.command.BlockCommandSender;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Use selectors in commands!
|
||||
*
|
||||
* @author Mindgamesnl
|
||||
*
|
||||
* Code from
|
||||
* https://github.com/Mindgamesnl/OpenAudioMc/blob/master/plugin/src/main/java/com/craftmend/openaudiomc/spigot/modules/players/objects/SpigotPlayerSelector.java
|
||||
*/
|
||||
public class SpigotPlayerSelector {
|
||||
|
||||
private final String selector;
|
||||
|
||||
public SpigotPlayerSelector(String selector) {
|
||||
this.selector = selector;
|
||||
}
|
||||
|
||||
/**
|
||||
* this turns selectors like @a[r=5] into a usable list, since
|
||||
* 1.13 spigot removed this feature, FOR SOME REASON.. thanks guys..
|
||||
*
|
||||
* @param commandSender the sender
|
||||
* @return players following the selector
|
||||
*/
|
||||
public List<Player> getPlayers(CommandSender commandSender) {
|
||||
List<Player> players = new ArrayList<>();
|
||||
|
||||
if (selector.startsWith("@p")) {
|
||||
//get Location
|
||||
Location standPoint = getLocation(commandSender);
|
||||
|
||||
if (getArgument("r").length() != 0) {
|
||||
int radius = Integer.parseInt(getArgument("r"));
|
||||
Player nearest = Bukkit.getOnlinePlayers().stream()
|
||||
.filter(player -> player.getLocation().getWorld().getName().equals(standPoint.getWorld().getName()))
|
||||
.min(Comparator.comparing(player -> player.getLocation().distance(standPoint)))
|
||||
.filter(player -> radius > player.getLocation().distance(standPoint))
|
||||
.get();
|
||||
players.add(nearest);
|
||||
}
|
||||
|
||||
if (getArgument("distance").length() != 0) {
|
||||
int distance = Integer.parseInt(getArgument("distance"));
|
||||
Player nearest = Bukkit.getOnlinePlayers().stream()
|
||||
.filter(player -> player.getLocation().getWorld().getName().equals(standPoint.getWorld().getName()))
|
||||
.min(Comparator.comparing(player -> player.getLocation().distance(standPoint)))
|
||||
.filter(player -> distance > player.getLocation().distance(standPoint))
|
||||
.get();
|
||||
players.add(nearest);
|
||||
} else {
|
||||
Bukkit.getOnlinePlayers().stream()
|
||||
.filter(player -> player.getLocation().getWorld().getName().equals(standPoint.getWorld().getName()))
|
||||
.min(Comparator.comparing(player -> player.getLocation().distance(standPoint)))
|
||||
.ifPresent(players::add);
|
||||
}
|
||||
} else if (selector.startsWith("@a")) {
|
||||
//everyone
|
||||
Location standPoint = getLocation(commandSender);
|
||||
|
||||
if(getArgument("region").length() != 0) {
|
||||
WGManager manager = WGManager.getInstance();
|
||||
String targetRegion = getArgument("region");
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
manager.getApplicableRegionSet(player.getLocation(standPoint)).forEach(region -> {
|
||||
if (region.getId().equalsIgnoreCase(targetRegion))
|
||||
players.add(player);
|
||||
});
|
||||
}
|
||||
} else if (getArgument("r").length() != 0) {
|
||||
int radius = Integer.parseInt(getArgument("r"));
|
||||
players.addAll(Bukkit.getOnlinePlayers().stream()
|
||||
.filter(player -> player.getLocation().getWorld().getName().equals(standPoint.getWorld().getName()))
|
||||
.filter(player -> radius > player.getLocation().distance(standPoint))
|
||||
.collect(Collectors.toList()));
|
||||
} else if (getArgument("distance").length() != 0) {
|
||||
int distance = Integer.parseInt(getArgument("distance"));
|
||||
players.addAll(Bukkit.getOnlinePlayers().stream()
|
||||
.filter(player -> player.getLocation().getWorld().getName().equals(standPoint.getWorld().getName()))
|
||||
.filter(player -> distance > player.getLocation().distance(standPoint))
|
||||
.collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
else {
|
||||
players.addAll(Bukkit.getOnlinePlayers().stream()
|
||||
.filter(player -> player.getLocation().getWorld().getName().equals(standPoint.getWorld().getName()))
|
||||
.collect(Collectors.toList()));
|
||||
}
|
||||
} else if (selector.length() <= 16) {
|
||||
//player
|
||||
Player player = Bukkit.getPlayer(selector);
|
||||
if (player != null)
|
||||
players.add(player);
|
||||
}
|
||||
|
||||
return players;
|
||||
}
|
||||
|
||||
/**
|
||||
* attempt to parse the location
|
||||
*
|
||||
* @param commandSender the sender
|
||||
* @return the location or null
|
||||
*/
|
||||
private Location getLocation(CommandSender commandSender) {
|
||||
Location initialLocation = new Location(Bukkit.getWorlds().get(0), 0, 0, 0);
|
||||
if (commandSender instanceof Player) {
|
||||
initialLocation = ((Player) commandSender).getLocation();
|
||||
} else if (commandSender instanceof BlockCommandSender) {
|
||||
initialLocation = ((BlockCommandSender) commandSender).getBlock().getLocation();
|
||||
}
|
||||
|
||||
if (!getArgument("x").equals("") && !getArgument("y").equals("") && !getArgument("z").equals("")) {
|
||||
try {
|
||||
int x = Integer.parseInt(getArgument("x"));
|
||||
int y = Integer.parseInt(getArgument("y"));
|
||||
int z = Integer.parseInt(getArgument("z"));
|
||||
return new Location(initialLocation.getWorld(), x, y, z);
|
||||
} catch (Exception e) {
|
||||
return initialLocation;
|
||||
}
|
||||
}
|
||||
|
||||
return initialLocation;
|
||||
}
|
||||
|
||||
private String getArgument(String key) {
|
||||
StringBuilder result = new StringBuilder();
|
||||
String[] arguments = selector.split(key + "=");
|
||||
if (arguments.length == 1) return "";
|
||||
for (byte type : arguments[1].getBytes()) {
|
||||
char element = (char) type;
|
||||
if (element == ',' || element == ']') {
|
||||
return result.toString();
|
||||
} else {
|
||||
result.append(element);
|
||||
}
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,8 +1,6 @@
|
|||
package nl.iobyte.commandapi.interfaces;
|
||||
package nl.iobyte.commandapi.objects;
|
||||
|
||||
import nl.iobyte.commandapi.objects.CommandSyntax;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -56,13 +54,13 @@ public abstract class SubCommand {
|
|||
|
||||
/**
|
||||
* Get all Syntax's sender can use
|
||||
* @param sender CommandSender
|
||||
* @param sender ICommandExecutor
|
||||
* @return List<CommandSyntax>
|
||||
*/
|
||||
public List<CommandSyntax> getApplicableSyntaxList(CommandSender sender) {
|
||||
public List<CommandSyntax> getApplicableSyntaxList(ICommandExecutor sender) {
|
||||
List<CommandSyntax> list = new ArrayList<>();
|
||||
for(CommandSyntax syntax : syntaxList) {
|
||||
if(!syntax.isConsoleAllowed() && !(sender instanceof Player))
|
||||
if(!syntax.isConsoleAllowed() && !sender.isPlayer())
|
||||
continue;
|
||||
|
||||
list.add(syntax);
|
||||
|
@ -91,19 +89,11 @@ public abstract class SubCommand {
|
|||
}
|
||||
|
||||
/**
|
||||
* When player executes command
|
||||
* @param player Player
|
||||
* When executing command
|
||||
* @param executor ICommandExecutor
|
||||
* @param args Object[]
|
||||
* @param syntaxUsed Integer
|
||||
*/
|
||||
public abstract void onPlayerCommand(Player player, List<Object> args, int syntaxUsed);
|
||||
|
||||
/**
|
||||
* When console executes command
|
||||
* @param sender CommandSender
|
||||
* @param args Object[]
|
||||
* @param syntaxUsed Integer
|
||||
*/
|
||||
public abstract void onConsoleCommand(CommandSender sender, List<Object> args, int syntaxUsed);
|
||||
public abstract void onCommand(ICommandExecutor executor, List<Object> args, int syntaxUsed);
|
||||
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
package nl.iobyte.commandapi.worldguard;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class Reflection {
|
||||
|
||||
private static final HashMap<String, Class<?>> classes = new HashMap<>();
|
||||
private static final String version = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
|
||||
|
||||
public static Class<?> getCraftBukkitClass(String name) {
|
||||
return getClass("org.bukkit.craftbukkit." + version + "." + name);
|
||||
}
|
||||
|
||||
public static Class<?> getNMSClass(String name) {
|
||||
return getClass("net.minecraft.server." + version + "." + name);
|
||||
}
|
||||
|
||||
public static Class<?> getClass(String path) {
|
||||
if(classes.containsKey(path))
|
||||
return classes.get(path);
|
||||
|
||||
try {
|
||||
Class<?> clazz = Class.forName(path);
|
||||
classes.put(path, clazz);
|
||||
return clazz;
|
||||
} catch (ClassNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
classes.put(path, null);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,197 +0,0 @@
|
|||
package nl.iobyte.commandapi.worldguard;
|
||||
|
||||
import com.sk89q.worldedit.BlockVector;
|
||||
import com.sk89q.worldedit.Vector;
|
||||
import com.sk89q.worldedit.bukkit.BukkitWorld;
|
||||
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
|
||||
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
|
||||
import com.sk89q.worldguard.protection.ApplicableRegionSet;
|
||||
import com.sk89q.worldguard.protection.flags.registry.FlagRegistry;
|
||||
import com.sk89q.worldguard.protection.managers.RegionManager;
|
||||
import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion;
|
||||
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
public class WGManager {
|
||||
|
||||
private static String wgVerStr = null;
|
||||
private static WGManager instance = null;
|
||||
|
||||
public static WGManager getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new WGManager();
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
public WorldGuardPlugin getWorldGuard() {
|
||||
Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("WorldGuard");
|
||||
if ((!(plugin instanceof WorldGuardPlugin)))
|
||||
return null;
|
||||
|
||||
return (WorldGuardPlugin) plugin;
|
||||
}
|
||||
|
||||
public WorldEditPlugin getWorldEdit() {
|
||||
Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("WorldEdit");
|
||||
if ((!(plugin instanceof WorldEditPlugin)))
|
||||
return null;
|
||||
|
||||
return (WorldEditPlugin) plugin;
|
||||
}
|
||||
|
||||
public ProtectedRegion getLowerCasePlot(World w, String regionname) {
|
||||
for (ProtectedRegion pr : getRegionManager(w).getRegions().values())
|
||||
if (pr.getId().toLowerCase().equalsIgnoreCase(regionname))
|
||||
return pr;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public RegionManager getRegionManager(World w) {
|
||||
if (getWgVer().contains("7.")) {
|
||||
try {
|
||||
Class<?> wgClass = Reflection.getClass("com.sk89q.worldguard.WorldGuard");
|
||||
|
||||
Object instance = wgClass.getDeclaredMethod("getInstance").invoke(null);
|
||||
Class<?> wgInstanceClass = instance.getClass();
|
||||
|
||||
Object platform = wgInstanceClass.getDeclaredMethod("getPlatform").invoke(instance);
|
||||
Class<?> wgPlatformClass = platform.getClass();
|
||||
|
||||
Object regionContainer = wgPlatformClass.getDeclaredMethod("getRegionContainer").invoke(platform);
|
||||
Class<?> wgRegionContainer = regionContainer.getClass();
|
||||
|
||||
return (RegionManager) wgRegionContainer.getSuperclass()
|
||||
.getMethod("get", com.sk89q.worldedit.world.World.class)
|
||||
.invoke(regionContainer, new BukkitWorld(w));
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
return getWorldGuard().getRegionManager(w);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public List<ProtectedRegion> getRegions(Location loc) {
|
||||
ArrayList<ProtectedRegion> regions = new ArrayList<>();
|
||||
if (getWgVer().contains("7.")) {
|
||||
try {
|
||||
RegionManager mngr = getRegionManager(loc.getWorld());
|
||||
|
||||
Class<?> blockVector3 = Reflection.getClass("com.sk89q.worldedit.math.BlockVector3");
|
||||
|
||||
Method applicableRegions = mngr.getClass().getDeclaredMethod("getApplicableRegions", blockVector3);
|
||||
|
||||
Method blockVectorAt = blockVector3.getDeclaredMethod("at", double.class, double.class, double.class);
|
||||
Object blockVector = blockVectorAt.invoke(null, loc.getX(), loc.getY(), loc.getZ());
|
||||
|
||||
Object regionSet = applicableRegions.invoke(mngr, blockVector);
|
||||
|
||||
Method getregions = regionSet.getClass().getMethod("getRegions");
|
||||
|
||||
regions = new ArrayList<>(((HashSet<ProtectedRegion>) getregions.invoke(regionSet)));
|
||||
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
regions = new ArrayList<>(getRegionManager(loc.getWorld())
|
||||
.getApplicableRegions(new Vector(loc.getX(), loc.getY(), loc.getZ())).getRegions());
|
||||
}
|
||||
|
||||
regions.sort(new WGRegionCompare());
|
||||
return regions;
|
||||
}
|
||||
|
||||
public ProtectedCuboidRegion getProtectedCubiodRegion(String regionname, Location loc1, Location loc2) {
|
||||
if (getWgVer().contains("7.")) {
|
||||
try {
|
||||
|
||||
Object bvloc1 = getBlockVectorV3(loc1);
|
||||
Object bvloc2 = getBlockVectorV3(loc2);
|
||||
|
||||
Class<?> prCbRg = Reflection.getClass("com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion");
|
||||
|
||||
return (ProtectedCuboidRegion) prCbRg.getConstructor(String.class, bvloc1.getClass(), bvloc2.getClass())
|
||||
.newInstance(regionname, bvloc1, bvloc2);
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
return new ProtectedCuboidRegion(regionname,
|
||||
new BlockVector(loc1.getX(), loc1.getY(), loc1.getZ()),
|
||||
new BlockVector(loc2.getX(), loc2.getY(), loc2.getZ()));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Object getBlockVectorV3(Location loc) throws Exception {
|
||||
Class<?> blockVector3 = Reflection.getClass("com.sk89q.worldedit.math.BlockVector3");
|
||||
|
||||
Method blockVectorAt = blockVector3.getDeclaredMethod("at", double.class, double.class, double.class);
|
||||
return blockVectorAt.invoke(null, loc.getX(), loc.getY(), loc.getZ());
|
||||
}
|
||||
|
||||
public FlagRegistry getFlagRegistry() {
|
||||
if (getWgVer().contains("7.")) {
|
||||
try {
|
||||
Class<?> wgClass = Reflection.getClass("com.sk89q.worldguard.WorldGuard");
|
||||
|
||||
Object instance = wgClass.getDeclaredMethod("getInstance").invoke(null);
|
||||
Class<?> wgInstanceClass = instance.getClass();
|
||||
Method declaredMethod = wgInstanceClass.getDeclaredMethod("getFlagRegistry");
|
||||
return (FlagRegistry) declaredMethod.invoke(instance);
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return getWorldGuard().getFlagRegistry();
|
||||
}
|
||||
}
|
||||
|
||||
public ApplicableRegionSet getApplicableRegionSet(Location loc) {
|
||||
if (getWgVer().contains("7.")) {
|
||||
try {
|
||||
RegionManager mngr = getRegionManager(loc.getWorld());
|
||||
|
||||
Class<?> blockVector3 = Reflection.getClass("com.sk89q.worldedit.math.BlockVector3");
|
||||
|
||||
Method applicableRegions = mngr.getClass().getDeclaredMethod("getApplicableRegions", blockVector3);
|
||||
|
||||
Method blockVectorAt = blockVector3.getDeclaredMethod("at", double.class, double.class, double.class);
|
||||
Object blockVector = blockVectorAt.invoke(null, loc.getX(), loc.getY(), loc.getZ());
|
||||
|
||||
Object regionSet = applicableRegions.invoke(mngr, blockVector);
|
||||
|
||||
return (ApplicableRegionSet) regionSet;
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return getRegionManager(loc.getWorld()).getApplicableRegions(new Vector(loc.getX(), loc.getY(), loc.getZ()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public String getWgVer() {
|
||||
if (wgVerStr == null)
|
||||
wgVerStr = Bukkit.getPluginManager().getPlugin("WorldGuard").getDescription().getVersion();
|
||||
|
||||
return wgVerStr;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
package nl.iobyte.commandapi.worldguard;
|
||||
|
||||
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
|
||||
import java.util.Comparator;
|
||||
|
||||
public class WGRegionCompare implements Comparator<ProtectedRegion> {
|
||||
|
||||
@Override
|
||||
public int compare(ProtectedRegion o1, ProtectedRegion o2) {
|
||||
if (o1.getPriority() == o2.getPriority()) {
|
||||
return 0;
|
||||
} else if (o1.getPriority() < o2.getPriority()) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Reference in a new issue