diff --git a/.gitignore b/.gitignore index 744289d..46270ec 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ # Project exclude paths -/target/ \ No newline at end of file +/target/ +/.idea/ \ No newline at end of file diff --git a/commandapi.iml b/commandapi.iml new file mode 100644 index 0000000..8483f43 --- /dev/null +++ b/commandapi.iml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index f17e0a7..9a44dc4 100644 --- a/pom.xml +++ b/pom.xml @@ -5,45 +5,12 @@ 4.0.0 - 1.8 - 1.8 + 11 + 11 + UTF-8 nl.iobyte commandapi - 1.1 - - - - sk89q-repo - https://maven.enginehub.org/repo/ - - - - - - org.spigotmc - spigot-api - 1.12.2-R0.1-SNAPSHOT - provided - - - com.sk89q.worldguard - worldguard-legacy - 6.2 - provided - - - com.sk89q.worldedit - worldedit-bukkit - 6.1.5 - provided - - - com.sk89q.worldedit - worldedit-core - 6.1.4-SNAPSHOT - provided - - + 1.2 \ No newline at end of file diff --git a/src/main/java/nl/iobyte/commandapi/CommandFactory.java b/src/main/java/nl/iobyte/commandapi/CommandFactory.java index 5fde1fa..2cde2c4 100644 --- a/src/main/java/nl/iobyte/commandapi/CommandFactory.java +++ b/src/main/java/nl/iobyte/commandapi/CommandFactory.java @@ -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 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 */ - public List getApplicableSubCommands(CommandSender sender) { + public List getApplicableSubCommands(ICommandExecutor sender) { List 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 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); - } - } diff --git a/src/main/java/nl/iobyte/commandapi/arguments/BooleanArgument.java b/src/main/java/nl/iobyte/commandapi/arguments/BooleanArgument.java index c886de4..a6c90bd 100644 --- a/src/main/java/nl/iobyte/commandapi/arguments/BooleanArgument.java +++ b/src/main/java/nl/iobyte/commandapi/arguments/BooleanArgument.java @@ -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 { @@ -13,17 +12,17 @@ public class BooleanArgument implements ICommandArgument { * @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 previousArguments) { + public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List previousArguments) { switch (args[0].toLowerCase()) { case "true": case "false": @@ -35,12 +34,12 @@ public class BooleanArgument implements ICommandArgument { /** * 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 previousArguments) { + public Boolean getArgument(ICommandExecutor sender, String[] args, List previousArguments) { return "true".equals(args[0].toLowerCase()); } diff --git a/src/main/java/nl/iobyte/commandapi/arguments/EnumArgument.java b/src/main/java/nl/iobyte/commandapi/arguments/EnumArgument.java index 4aca067..ebf6df5 100644 --- a/src/main/java/nl/iobyte/commandapi/arguments/EnumArgument.java +++ b/src/main/java/nl/iobyte/commandapi/arguments/EnumArgument.java @@ -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> { * @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 previousArguments) { + public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List 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 previousArguments) { + public Enum getArgument(ICommandExecutor sender, String[] args, List previousArguments) { return Arrays.stream(validArgumentHolders).filter(enumVariable -> enumVariable.toString().equalsIgnoreCase(args[0])).findFirst().orElse(null); } diff --git a/src/main/java/nl/iobyte/commandapi/arguments/MaterialArgument.java b/src/main/java/nl/iobyte/commandapi/arguments/MaterialArgument.java deleted file mode 100644 index 62b35cd..0000000 --- a/src/main/java/nl/iobyte/commandapi/arguments/MaterialArgument.java +++ /dev/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> { - - 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 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 previousArguments) { - return Material.getMaterial(args[0]); - } - -} diff --git a/src/main/java/nl/iobyte/commandapi/arguments/MessageArgument.java b/src/main/java/nl/iobyte/commandapi/arguments/MessageArgument.java index bb9df1e..c304945 100644 --- a/src/main/java/nl/iobyte/commandapi/arguments/MessageArgument.java +++ b/src/main/java/nl/iobyte/commandapi/arguments/MessageArgument.java @@ -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 { @@ -17,12 +17,12 @@ public class MessageArgument implements ICommandArgument { /** * 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 previousArguments) { + public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List previousArguments) { if(!args[0].startsWith("\"")) return new ArgumentCheck(true, 1); @@ -35,12 +35,12 @@ public class MessageArgument implements ICommandArgument { /** * 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 previousArguments) { + public String getArgument(ICommandExecutor sender, String[] args, List previousArguments) { return String.join(" ", args).replace("\"", ""); } diff --git a/src/main/java/nl/iobyte/commandapi/arguments/PlayerArgument.java b/src/main/java/nl/iobyte/commandapi/arguments/PlayerArgument.java deleted file mode 100644 index 0805896..0000000 --- a/src/main/java/nl/iobyte/commandapi/arguments/PlayerArgument.java +++ /dev/null @@ -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 { - - /** - * 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 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 previousArguments) { - return Bukkit.getPlayer(args[0]); - } - -} diff --git a/src/main/java/nl/iobyte/commandapi/arguments/PlayersArgument.java b/src/main/java/nl/iobyte/commandapi/arguments/PlayersArgument.java deleted file mode 100644 index 3e20dfc..0000000 --- a/src/main/java/nl/iobyte/commandapi/arguments/PlayersArgument.java +++ /dev/null @@ -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> { - - /** - * 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 previousArguments) { - List 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 getArgument(CommandSender sender, String[] args, List previousArguments) { - return new SpigotPlayerSelector(args[0]).getPlayers(sender); - } - -} diff --git a/src/main/java/nl/iobyte/commandapi/arguments/StringArgument.java b/src/main/java/nl/iobyte/commandapi/arguments/StringArgument.java index 8219472..037865a 100644 --- a/src/main/java/nl/iobyte/commandapi/arguments/StringArgument.java +++ b/src/main/java/nl/iobyte/commandapi/arguments/StringArgument.java @@ -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 { * @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 previousArguments) { + public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List previousArguments) { if(validArguments == null || validArguments.length == 0) return new ArgumentCheck(true, 1); @@ -39,12 +38,12 @@ public class StringArgument implements ICommandArgument { /** * 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 previousArguments) { + public String getArgument(ICommandExecutor sender, String[] args, List previousArguments) { return args[0]; } diff --git a/src/main/java/nl/iobyte/commandapi/arguments/array/IntegerArrayArgument.java b/src/main/java/nl/iobyte/commandapi/arguments/array/IntegerArrayArgument.java index 3c1bed9..0087a63 100644 --- a/src/main/java/nl/iobyte/commandapi/arguments/array/IntegerArrayArgument.java +++ b/src/main/java/nl/iobyte/commandapi/arguments/array/IntegerArrayArgument.java @@ -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 { @@ -13,11 +12,11 @@ public class IntegerArrayArgument implements ICommandArgument { * @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 previousArguments) { + public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List previousArguments) { String[] items = args[0].replace("[", "").replace("]", "").split(","); try { for(String item : items) @@ -30,7 +29,7 @@ public class IntegerArrayArgument implements ICommandArgument { } @Override - public Integer[] getArgument(CommandSender sender, String[] args, List previousArguments) { + public Integer[] getArgument(ICommandExecutor sender, String[] args, List previousArguments) { String[] items = args[0].replace("[", "").replace("]", "").split(","); Integer[] results = new Integer[items.length]; for(int i = 0; i < items.length; i++) diff --git a/src/main/java/nl/iobyte/commandapi/arguments/array/StringArrayArgument.java b/src/main/java/nl/iobyte/commandapi/arguments/array/StringArrayArgument.java index cb79b82..cb34701 100644 --- a/src/main/java/nl/iobyte/commandapi/arguments/array/StringArrayArgument.java +++ b/src/main/java/nl/iobyte/commandapi/arguments/array/StringArrayArgument.java @@ -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 { @@ -13,11 +12,11 @@ public class StringArrayArgument implements ICommandArgument { * @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 previousArguments) { + public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List previousArguments) { if(!args[0].startsWith("[\"") || !args[0].endsWith("\"]")) return new ArgumentCheck(false, 0); @@ -25,7 +24,7 @@ public class StringArrayArgument implements ICommandArgument { } @Override - public String[] getArgument(CommandSender sender, String[] args, List previousArguments) { + public String[] getArgument(ICommandExecutor sender, String[] args, List previousArguments) { return args[0].replace("[", "").replace("]", "").replaceAll("\"", "").split(","); } diff --git a/src/main/java/nl/iobyte/commandapi/arguments/number/DoubleArgument.java b/src/main/java/nl/iobyte/commandapi/arguments/number/DoubleArgument.java index 84ad511..389bd21 100644 --- a/src/main/java/nl/iobyte/commandapi/arguments/number/DoubleArgument.java +++ b/src/main/java/nl/iobyte/commandapi/arguments/number/DoubleArgument.java @@ -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 { @@ -13,17 +12,17 @@ public class DoubleArgument implements ICommandArgument { * @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 previousArguments) { + public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List previousArguments) { try { Double.parseDouble(args[0]); return new ArgumentCheck(true, 1); @@ -34,12 +33,12 @@ public class DoubleArgument implements ICommandArgument { /** * 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 previousArguments) { + public Double getArgument(ICommandExecutor sender, String[] args, List previousArguments) { try { return Double.parseDouble(args[0]); } catch (Exception e) { diff --git a/src/main/java/nl/iobyte/commandapi/arguments/number/FloatArgument.java b/src/main/java/nl/iobyte/commandapi/arguments/number/FloatArgument.java index 7f3e600..77fcece 100644 --- a/src/main/java/nl/iobyte/commandapi/arguments/number/FloatArgument.java +++ b/src/main/java/nl/iobyte/commandapi/arguments/number/FloatArgument.java @@ -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 { @@ -13,17 +12,17 @@ public class FloatArgument implements ICommandArgument { * @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 previousArguments) { + public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List previousArguments) { try { Float.parseFloat(args[0]); return new ArgumentCheck(true, 1); @@ -34,12 +33,12 @@ public class FloatArgument implements ICommandArgument { /** * 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 previousArguments) { + public Float getArgument(ICommandExecutor sender, String[] args, List previousArguments) { try { return Float.parseFloat(args[0]); } catch (Exception e) { diff --git a/src/main/java/nl/iobyte/commandapi/arguments/number/IntegerArgument.java b/src/main/java/nl/iobyte/commandapi/arguments/number/IntegerArgument.java index da6935d..10bb372 100644 --- a/src/main/java/nl/iobyte/commandapi/arguments/number/IntegerArgument.java +++ b/src/main/java/nl/iobyte/commandapi/arguments/number/IntegerArgument.java @@ -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 { @@ -13,17 +12,17 @@ public class IntegerArgument implements ICommandArgument { * @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 previousArguments) { + public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List previousArguments) { try { Integer.parseInt(args[0]); return new ArgumentCheck(true, 1); @@ -34,12 +33,12 @@ public class IntegerArgument implements ICommandArgument { /** * 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 previousArguments) { + public Integer getArgument(ICommandExecutor sender, String[] args, List previousArguments) { try { return Integer.parseInt(args[0]); } catch (Exception e) { diff --git a/src/main/java/nl/iobyte/commandapi/arguments/number/LongArgument.java b/src/main/java/nl/iobyte/commandapi/arguments/number/LongArgument.java index 0f3e9f0..3cfa084 100644 --- a/src/main/java/nl/iobyte/commandapi/arguments/number/LongArgument.java +++ b/src/main/java/nl/iobyte/commandapi/arguments/number/LongArgument.java @@ -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 { @@ -13,17 +12,17 @@ public class LongArgument implements ICommandArgument { * @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 previousArguments) { + public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List previousArguments) { try { Long.parseLong(args[0]); return new ArgumentCheck(true, 1); @@ -34,12 +33,12 @@ public class LongArgument implements ICommandArgument { /** * 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 previousArguments) { + public Long getArgument(ICommandExecutor sender, String[] args, List previousArguments) { try { return Long.parseLong(args[0]); } catch (Exception e) { diff --git a/src/main/java/nl/iobyte/commandapi/arguments/number/ShortArgument.java b/src/main/java/nl/iobyte/commandapi/arguments/number/ShortArgument.java index 079f2d2..fea8658 100644 --- a/src/main/java/nl/iobyte/commandapi/arguments/number/ShortArgument.java +++ b/src/main/java/nl/iobyte/commandapi/arguments/number/ShortArgument.java @@ -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 { @@ -13,17 +12,17 @@ public class ShortArgument implements ICommandArgument { * @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 previousArguments) { + public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List previousArguments) { try { Short.parseShort(args[0]); return new ArgumentCheck(true, 1); @@ -34,12 +33,12 @@ public class ShortArgument implements ICommandArgument { /** * 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 previousArguments) { + public Short getArgument(ICommandExecutor sender, String[] args, List previousArguments) { try { return Short.parseShort(args[0]); } catch (Exception e) { diff --git a/src/main/java/nl/iobyte/commandapi/interfaces/ICommandArgument.java b/src/main/java/nl/iobyte/commandapi/interfaces/ICommandArgument.java index b0fd7e8..b02583d 100644 --- a/src/main/java/nl/iobyte/commandapi/interfaces/ICommandArgument.java +++ b/src/main/java/nl/iobyte/commandapi/interfaces/ICommandArgument.java @@ -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 { @@ -14,20 +14,20 @@ public interface ICommandArgument { /** * 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 previousArguments); + ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List 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 previousArguments); + T getArgument(ICommandExecutor sender, String[] args, List previousArguments); } diff --git a/src/main/java/nl/iobyte/commandapi/interfaces/ICommandExecutor.java b/src/main/java/nl/iobyte/commandapi/interfaces/ICommandExecutor.java new file mode 100644 index 0000000..b9dc2b6 --- /dev/null +++ b/src/main/java/nl/iobyte/commandapi/interfaces/ICommandExecutor.java @@ -0,0 +1,13 @@ +package nl.iobyte.commandapi.interfaces; + +public interface ICommandExecutor { + + boolean isPlayer(); + + boolean hasPermission(String str); + + void sendMessage(String str); + + Object getOriginal(); + +} diff --git a/src/main/java/nl/iobyte/commandapi/interfaces/ICommandMiddleware.java b/src/main/java/nl/iobyte/commandapi/interfaces/ICommandMiddleware.java index 9edfc90..bf3662e 100644 --- a/src/main/java/nl/iobyte/commandapi/interfaces/ICommandMiddleware.java +++ b/src/main/java/nl/iobyte/commandapi/interfaces/ICommandMiddleware.java @@ -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); } diff --git a/src/main/java/nl/iobyte/commandapi/middlewares/NoPlayerMiddleware.java b/src/main/java/nl/iobyte/commandapi/middlewares/NoPlayerMiddleware.java deleted file mode 100644 index 27ec69f..0000000 --- a/src/main/java/nl/iobyte/commandapi/middlewares/NoPlayerMiddleware.java +++ /dev/null @@ -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); - } - -} diff --git a/src/main/java/nl/iobyte/commandapi/middlewares/PermissionMiddleware.java b/src/main/java/nl/iobyte/commandapi/middlewares/PermissionMiddleware.java index 21ead8e..4634484 100644 --- a/src/main/java/nl/iobyte/commandapi/middlewares/PermissionMiddleware.java +++ b/src/main/java/nl/iobyte/commandapi/middlewares/PermissionMiddleware.java @@ -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; } } diff --git a/src/main/java/nl/iobyte/commandapi/middlewares/PlayerMiddleware.java b/src/main/java/nl/iobyte/commandapi/middlewares/PlayerMiddleware.java deleted file mode 100644 index 5cd1f01..0000000 --- a/src/main/java/nl/iobyte/commandapi/middlewares/PlayerMiddleware.java +++ /dev/null @@ -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; - } - -} diff --git a/src/main/java/nl/iobyte/commandapi/objects/CommandMap.java b/src/main/java/nl/iobyte/commandapi/objects/CommandMap.java index 3230231..3bbb829 100644 --- a/src/main/java/nl/iobyte/commandapi/objects/CommandMap.java +++ b/src/main/java/nl/iobyte/commandapi/objects/CommandMap.java @@ -1,6 +1,5 @@ package nl.iobyte.commandapi.objects; -import nl.iobyte.commandapi.interfaces.SubCommand; import java.util.*; public class CommandMap { diff --git a/src/main/java/nl/iobyte/commandapi/objects/SpigotPlayerSelector.java b/src/main/java/nl/iobyte/commandapi/objects/SpigotPlayerSelector.java deleted file mode 100644 index bf462f9..0000000 --- a/src/main/java/nl/iobyte/commandapi/objects/SpigotPlayerSelector.java +++ /dev/null @@ -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 getPlayers(CommandSender commandSender) { - List 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(); - } - -} diff --git a/src/main/java/nl/iobyte/commandapi/interfaces/SubCommand.java b/src/main/java/nl/iobyte/commandapi/objects/SubCommand.java similarity index 71% rename from src/main/java/nl/iobyte/commandapi/interfaces/SubCommand.java rename to src/main/java/nl/iobyte/commandapi/objects/SubCommand.java index 76b833e..7ae30e2 100644 --- a/src/main/java/nl/iobyte/commandapi/interfaces/SubCommand.java +++ b/src/main/java/nl/iobyte/commandapi/objects/SubCommand.java @@ -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 */ - public List getApplicableSyntaxList(CommandSender sender) { + public List getApplicableSyntaxList(ICommandExecutor sender) { List 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 args, int syntaxUsed); - - /** - * When console executes command - * @param sender CommandSender - * @param args Object[] - * @param syntaxUsed Integer - */ - public abstract void onConsoleCommand(CommandSender sender, List args, int syntaxUsed); + public abstract void onCommand(ICommandExecutor executor, List args, int syntaxUsed); } diff --git a/src/main/java/nl/iobyte/commandapi/worldguard/Reflection.java b/src/main/java/nl/iobyte/commandapi/worldguard/Reflection.java deleted file mode 100644 index 3dbd878..0000000 --- a/src/main/java/nl/iobyte/commandapi/worldguard/Reflection.java +++ /dev/null @@ -1,35 +0,0 @@ -package nl.iobyte.commandapi.worldguard; - -import org.bukkit.Bukkit; -import java.util.HashMap; - -public class Reflection { - - private static final HashMap> 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; - } - } - -} - diff --git a/src/main/java/nl/iobyte/commandapi/worldguard/WGManager.java b/src/main/java/nl/iobyte/commandapi/worldguard/WGManager.java deleted file mode 100644 index 3773d37..0000000 --- a/src/main/java/nl/iobyte/commandapi/worldguard/WGManager.java +++ /dev/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 getRegions(Location loc) { - ArrayList 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) 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; - } - -} \ No newline at end of file diff --git a/src/main/java/nl/iobyte/commandapi/worldguard/WGRegionCompare.java b/src/main/java/nl/iobyte/commandapi/worldguard/WGRegionCompare.java deleted file mode 100644 index 865082d..0000000 --- a/src/main/java/nl/iobyte/commandapi/worldguard/WGRegionCompare.java +++ /dev/null @@ -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 { - - @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; - } - -} \ No newline at end of file