improved modularity
This commit is contained in:
parent
6060cbb995
commit
d3dd37ebac
30 changed files with 124 additions and 755 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,2 +1,3 @@
|
||||||
# Project exclude paths
|
# Project exclude paths
|
||||||
/target/
|
/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>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<maven.compiler.source>1.8</maven.compiler.source>
|
<maven.compiler.source>11</maven.compiler.source>
|
||||||
<maven.compiler.target>1.8</maven.compiler.target>
|
<maven.compiler.target>11</maven.compiler.target>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<groupId>nl.iobyte</groupId>
|
<groupId>nl.iobyte</groupId>
|
||||||
<artifactId>commandapi</artifactId>
|
<artifactId>commandapi</artifactId>
|
||||||
<version>1.1</version>
|
<version>1.2</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>
|
|
||||||
</project>
|
</project>
|
|
@ -1,28 +1,19 @@
|
||||||
package nl.iobyte.commandapi;
|
package nl.iobyte.commandapi;
|
||||||
|
|
||||||
import javafx.util.Pair;
|
|
||||||
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
||||||
import nl.iobyte.commandapi.interfaces.ICommandMiddleware;
|
import nl.iobyte.commandapi.interfaces.ICommandMiddleware;
|
||||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||||
import nl.iobyte.commandapi.objects.CommandMap;
|
import nl.iobyte.commandapi.objects.CommandMap;
|
||||||
import nl.iobyte.commandapi.objects.CommandSyntax;
|
import nl.iobyte.commandapi.objects.CommandSyntax;
|
||||||
import nl.iobyte.commandapi.interfaces.SubCommand;
|
import nl.iobyte.commandapi.objects.SubCommand;
|
||||||
import org.bukkit.Bukkit;
|
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||||
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 java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class CommandFactory implements CommandExecutor {
|
public class CommandFactory {
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
private final List<ICommandMiddleware> middlewares = new ArrayList<>();
|
private final List<ICommandMiddleware> middlewares = new ArrayList<>();
|
||||||
private final CommandMap commandMap = new CommandMap();
|
private final CommandMap commandMap = new CommandMap();
|
||||||
private Plugin plugin;
|
|
||||||
|
|
||||||
public CommandFactory(String name) {
|
public CommandFactory(String name) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
@ -65,11 +56,11 @@ public class CommandFactory implements CommandExecutor {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get SubCommand's available to CommandSender
|
* Get SubCommand's available to ICommandExecutor
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @return List<SubCommand>
|
* @return List<SubCommand>
|
||||||
*/
|
*/
|
||||||
public List<SubCommand> getApplicableSubCommands(CommandSender sender) {
|
public List<SubCommand> getApplicableSubCommands(ICommandExecutor sender) {
|
||||||
List<SubCommand> list = new ArrayList<>();
|
List<SubCommand> list = new ArrayList<>();
|
||||||
for(SubCommand subCommand : commandMap.getSubCommands()) {
|
for(SubCommand subCommand : commandMap.getSubCommands()) {
|
||||||
if (subCommand.hasPermission() && !sender.hasPermission(subCommand.getPermission()))
|
if (subCommand.hasPermission() && !sender.hasPermission(subCommand.getPermission()))
|
||||||
|
@ -86,13 +77,11 @@ public class CommandFactory implements CommandExecutor {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When a command gets fired
|
* When a command gets fired
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @param cmd Command
|
|
||||||
* @param s String
|
|
||||||
* @param args []String
|
* @param args []String
|
||||||
* @return Boolean
|
* @return Boolean
|
||||||
*/
|
*/
|
||||||
public boolean onCommand(CommandSender sender, Command cmd, String s, String[] args) {
|
public boolean onCommand(ICommandExecutor sender, String[] args) {
|
||||||
if(args.length == 0)
|
if(args.length == 0)
|
||||||
args = new String[]{"help"};
|
args = new String[]{"help"};
|
||||||
|
|
||||||
|
@ -147,33 +136,17 @@ public class CommandFactory implements CommandExecutor {
|
||||||
|
|
||||||
int i = subCommand.getSyntaxList().indexOf(syntax);
|
int i = subCommand.getSyntaxList().indexOf(syntax);
|
||||||
List<Object> finalParsedArguments = parsedArguments;
|
List<Object> finalParsedArguments = parsedArguments;
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
|
subCommand.onCommand(sender, finalParsedArguments, i);
|
||||||
if (sender instanceof Player) {
|
|
||||||
subCommand.onPlayerCommand((Player) sender, finalParsedArguments, i);
|
|
||||||
} else {
|
|
||||||
subCommand.onConsoleCommand(sender, finalParsedArguments, i);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(str != null) {
|
if(str != null) {
|
||||||
sender.sendMessage(ChatColor.RED +str);
|
sender.sendMessage("§4" +str);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
sender.sendMessage(ChatColor.RED + "Usage: " + ChatColor.WHITE + syntaxList.get(0).getUsage());
|
sender.sendMessage("§4" + "Usage: " + "§f" + syntaxList.get(0).getUsage());
|
||||||
return true;
|
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.interfaces.ICommandArgument;
|
||||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||||
import org.bukkit.ChatColor;
|
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class BooleanArgument implements ICommandArgument<Boolean> {
|
public class BooleanArgument implements ICommandArgument<Boolean> {
|
||||||
|
@ -13,17 +12,17 @@ public class BooleanArgument implements ICommandArgument<Boolean> {
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
public String getMessage(String[] args) {
|
public String getMessage(String[] args) {
|
||||||
return "Invalid boolean "+ ChatColor.WHITE+args[0];
|
return "Invalid boolean "+ "§f" + args[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if argument is valid Boolean
|
* Check if argument is valid Boolean
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @param args Arguments passed by Command
|
* @param args Arguments passed by Command
|
||||||
* @param previousArguments Previous arguments
|
* @param previousArguments Previous arguments
|
||||||
* @return Boolean
|
* @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()) {
|
switch (args[0].toLowerCase()) {
|
||||||
case "true":
|
case "true":
|
||||||
case "false":
|
case "false":
|
||||||
|
@ -35,12 +34,12 @@ public class BooleanArgument implements ICommandArgument<Boolean> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Boolean passed by command
|
* Get Boolean passed by command
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @param args Arguments passed by Command
|
* @param args Arguments passed by Command
|
||||||
* @param previousArguments Previous arguments
|
* @param previousArguments Previous arguments
|
||||||
* @return Boolean
|
* @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());
|
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.interfaces.ICommandArgument;
|
||||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||||
import org.bukkit.ChatColor;
|
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -20,28 +19,28 @@ public class EnumArgument implements ICommandArgument<Enum<?>> {
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
public String getMessage(String[] args) {
|
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
|
* Check if argument is valid Enum
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @param args Arguments passed by Command
|
* @param args Arguments passed by Command
|
||||||
* @param previousArguments Previous arguments
|
* @param previousArguments Previous arguments
|
||||||
* @return Boolean
|
* @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);
|
return new ArgumentCheck(Arrays.stream(validArgumentHolders).map(Enum::toString).anyMatch(args[0]::equalsIgnoreCase), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Enum passed by command
|
* Get Enum passed by command
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @param args Arguments passed by Command
|
* @param args Arguments passed by Command
|
||||||
* @param previousArguments Previous arguments
|
* @param previousArguments Previous arguments
|
||||||
* @return Enum
|
* @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);
|
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.interfaces.ICommandArgument;
|
||||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||||
import org.bukkit.command.CommandSender;
|
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class MessageArgument implements ICommandArgument<String> {
|
public class MessageArgument implements ICommandArgument<String> {
|
||||||
|
@ -17,12 +17,12 @@ public class MessageArgument implements ICommandArgument<String> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if argument is valid String
|
* Check if argument is valid String
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @param args Arguments passed by Command
|
* @param args Arguments passed by Command
|
||||||
* @param previousArguments Previous arguments
|
* @param previousArguments Previous arguments
|
||||||
* @return Boolean
|
* @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("\""))
|
if(!args[0].startsWith("\""))
|
||||||
return new ArgumentCheck(true, 1);
|
return new ArgumentCheck(true, 1);
|
||||||
|
|
||||||
|
@ -35,12 +35,12 @@ public class MessageArgument implements ICommandArgument<String> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get String passed by command
|
* Get String passed by command
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @param args Arguments passed by Command
|
* @param args Arguments passed by Command
|
||||||
* @param previousArguments Previous arguments
|
* @param previousArguments Previous arguments
|
||||||
* @return String
|
* @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("\"", "");
|
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.interfaces.ICommandArgument;
|
||||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||||
import org.bukkit.ChatColor;
|
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -20,17 +19,17 @@ public class StringArgument implements ICommandArgument<String> {
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
public String getMessage(String[] args) {
|
public String getMessage(String[] args) {
|
||||||
return "Invalid string: "+ ChatColor.WHITE+args[0];
|
return "Invalid string: "+ "§f"+args[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if argument is valid String
|
* Check if argument is valid String
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @param args Arguments passed by Command
|
* @param args Arguments passed by Command
|
||||||
* @param previousArguments Previous arguments
|
* @param previousArguments Previous arguments
|
||||||
* @return Boolean
|
* @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)
|
if(validArguments == null || validArguments.length == 0)
|
||||||
return new ArgumentCheck(true, 1);
|
return new ArgumentCheck(true, 1);
|
||||||
|
|
||||||
|
@ -39,12 +38,12 @@ public class StringArgument implements ICommandArgument<String> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get String passed by command
|
* Get String passed by command
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @param args Arguments passed by Command
|
* @param args Arguments passed by Command
|
||||||
* @param previousArguments Previous arguments
|
* @param previousArguments Previous arguments
|
||||||
* @return String
|
* @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];
|
return args[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,7 @@ package nl.iobyte.commandapi.arguments.array;
|
||||||
|
|
||||||
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
||||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||||
import org.bukkit.ChatColor;
|
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class IntegerArrayArgument implements ICommandArgument<Integer[]> {
|
public class IntegerArrayArgument implements ICommandArgument<Integer[]> {
|
||||||
|
@ -13,11 +12,11 @@ public class IntegerArrayArgument implements ICommandArgument<Integer[]> {
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
public String getMessage(String[] args) {
|
public String getMessage(String[] args) {
|
||||||
return "Invalid integer array: "+ ChatColor.WHITE+args[0];
|
return "Invalid integer array: "+ "§f"+args[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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(",");
|
String[] items = args[0].replace("[", "").replace("]", "").split(",");
|
||||||
try {
|
try {
|
||||||
for(String item : items)
|
for(String item : items)
|
||||||
|
@ -30,7 +29,7 @@ public class IntegerArrayArgument implements ICommandArgument<Integer[]> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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(",");
|
String[] items = args[0].replace("[", "").replace("]", "").split(",");
|
||||||
Integer[] results = new Integer[items.length];
|
Integer[] results = new Integer[items.length];
|
||||||
for(int i = 0; i < items.length; i++)
|
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.interfaces.ICommandArgument;
|
||||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||||
import org.bukkit.ChatColor;
|
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class StringArrayArgument implements ICommandArgument<String[]> {
|
public class StringArrayArgument implements ICommandArgument<String[]> {
|
||||||
|
@ -13,11 +12,11 @@ public class StringArrayArgument implements ICommandArgument<String[]> {
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
public String getMessage(String[] args) {
|
public String getMessage(String[] args) {
|
||||||
return "Invalid string array: "+ ChatColor.WHITE+args[0];
|
return "Invalid string array: "+ "§f"+args[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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("\"]"))
|
if(!args[0].startsWith("[\"") || !args[0].endsWith("\"]"))
|
||||||
return new ArgumentCheck(false, 0);
|
return new ArgumentCheck(false, 0);
|
||||||
|
|
||||||
|
@ -25,7 +24,7 @@ public class StringArrayArgument implements ICommandArgument<String[]> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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(",");
|
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.interfaces.ICommandArgument;
|
||||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||||
import org.bukkit.ChatColor;
|
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class DoubleArgument implements ICommandArgument<Double> {
|
public class DoubleArgument implements ICommandArgument<Double> {
|
||||||
|
@ -13,17 +12,17 @@ public class DoubleArgument implements ICommandArgument<Double> {
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
public String getMessage(String[] args) {
|
public String getMessage(String[] args) {
|
||||||
return "Invalid double: "+ ChatColor.WHITE+args[0];
|
return "Invalid double: "+ "§f"+args[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if argument is valid Double
|
* Check if argument is valid Double
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @param args Arguments passed by Command
|
* @param args Arguments passed by Command
|
||||||
* @param previousArguments Previous arguments
|
* @param previousArguments Previous arguments
|
||||||
* @return Boolean
|
* @return Boolean
|
||||||
*/
|
*/
|
||||||
public ArgumentCheck checkArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||||
try {
|
try {
|
||||||
Double.parseDouble(args[0]);
|
Double.parseDouble(args[0]);
|
||||||
return new ArgumentCheck(true, 1);
|
return new ArgumentCheck(true, 1);
|
||||||
|
@ -34,12 +33,12 @@ public class DoubleArgument implements ICommandArgument<Double> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Double passed by command
|
* Get Double passed by command
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @param args Arguments passed by Command
|
* @param args Arguments passed by Command
|
||||||
* @param previousArguments Previous arguments
|
* @param previousArguments Previous arguments
|
||||||
* @return Double
|
* @return Double
|
||||||
*/
|
*/
|
||||||
public Double getArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
public Double getArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||||
try {
|
try {
|
||||||
return Double.parseDouble(args[0]);
|
return Double.parseDouble(args[0]);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
|
@ -2,8 +2,7 @@ package nl.iobyte.commandapi.arguments.number;
|
||||||
|
|
||||||
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
||||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||||
import org.bukkit.ChatColor;
|
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class FloatArgument implements ICommandArgument<Float> {
|
public class FloatArgument implements ICommandArgument<Float> {
|
||||||
|
@ -13,17 +12,17 @@ public class FloatArgument implements ICommandArgument<Float> {
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
public String getMessage(String[] args) {
|
public String getMessage(String[] args) {
|
||||||
return "Invalid float: "+ ChatColor.WHITE+args[0];
|
return "Invalid float: "+ "§f"+args[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if argument is valid Float
|
* Check if argument is valid Float
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @param args Arguments passed by Command
|
* @param args Arguments passed by Command
|
||||||
* @param previousArguments Previous arguments
|
* @param previousArguments Previous arguments
|
||||||
* @return Boolean
|
* @return Boolean
|
||||||
*/
|
*/
|
||||||
public ArgumentCheck checkArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||||
try {
|
try {
|
||||||
Float.parseFloat(args[0]);
|
Float.parseFloat(args[0]);
|
||||||
return new ArgumentCheck(true, 1);
|
return new ArgumentCheck(true, 1);
|
||||||
|
@ -34,12 +33,12 @@ public class FloatArgument implements ICommandArgument<Float> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Float passed by command
|
* Get Float passed by command
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @param args Arguments passed by Command
|
* @param args Arguments passed by Command
|
||||||
* @param previousArguments Previous arguments
|
* @param previousArguments Previous arguments
|
||||||
* @return Float
|
* @return Float
|
||||||
*/
|
*/
|
||||||
public Float getArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
public Float getArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||||
try {
|
try {
|
||||||
return Float.parseFloat(args[0]);
|
return Float.parseFloat(args[0]);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
|
@ -2,8 +2,7 @@ package nl.iobyte.commandapi.arguments.number;
|
||||||
|
|
||||||
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
||||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||||
import org.bukkit.ChatColor;
|
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class IntegerArgument implements ICommandArgument<Integer> {
|
public class IntegerArgument implements ICommandArgument<Integer> {
|
||||||
|
@ -13,17 +12,17 @@ public class IntegerArgument implements ICommandArgument<Integer> {
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
public String getMessage(String[] args) {
|
public String getMessage(String[] args) {
|
||||||
return "Invalid integer: "+ ChatColor.WHITE+args[0];
|
return "Invalid integer: "+ "§f"+args[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if argument is valid Integer
|
* Check if argument is valid Integer
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @param args Arguments passed by Command
|
* @param args Arguments passed by Command
|
||||||
* @param previousArguments Previous arguments
|
* @param previousArguments Previous arguments
|
||||||
* @return Boolean
|
* @return Boolean
|
||||||
*/
|
*/
|
||||||
public ArgumentCheck checkArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||||
try {
|
try {
|
||||||
Integer.parseInt(args[0]);
|
Integer.parseInt(args[0]);
|
||||||
return new ArgumentCheck(true, 1);
|
return new ArgumentCheck(true, 1);
|
||||||
|
@ -34,12 +33,12 @@ public class IntegerArgument implements ICommandArgument<Integer> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Integer passed by command
|
* Get Integer passed by command
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @param args Arguments passed by Command
|
* @param args Arguments passed by Command
|
||||||
* @param previousArguments Previous arguments
|
* @param previousArguments Previous arguments
|
||||||
* @return Integer
|
* @return Integer
|
||||||
*/
|
*/
|
||||||
public Integer getArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
public Integer getArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||||
try {
|
try {
|
||||||
return Integer.parseInt(args[0]);
|
return Integer.parseInt(args[0]);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
|
@ -2,8 +2,7 @@ package nl.iobyte.commandapi.arguments.number;
|
||||||
|
|
||||||
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
||||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||||
import org.bukkit.ChatColor;
|
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class LongArgument implements ICommandArgument<Long> {
|
public class LongArgument implements ICommandArgument<Long> {
|
||||||
|
@ -13,17 +12,17 @@ public class LongArgument implements ICommandArgument<Long> {
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
public String getMessage(String[] args) {
|
public String getMessage(String[] args) {
|
||||||
return "Invalid long: "+ ChatColor.WHITE+args[0];
|
return "Invalid long: "+ "§f"+args[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if argument is valid Long
|
* Check if argument is valid Long
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @param args Arguments passed by Command
|
* @param args Arguments passed by Command
|
||||||
* @param previousArguments Previous arguments
|
* @param previousArguments Previous arguments
|
||||||
* @return Boolean
|
* @return Boolean
|
||||||
*/
|
*/
|
||||||
public ArgumentCheck checkArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||||
try {
|
try {
|
||||||
Long.parseLong(args[0]);
|
Long.parseLong(args[0]);
|
||||||
return new ArgumentCheck(true, 1);
|
return new ArgumentCheck(true, 1);
|
||||||
|
@ -34,12 +33,12 @@ public class LongArgument implements ICommandArgument<Long> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Long passed by command
|
* Get Long passed by command
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @param args Arguments passed by Command
|
* @param args Arguments passed by Command
|
||||||
* @param previousArguments Previous arguments
|
* @param previousArguments Previous arguments
|
||||||
* @return Long
|
* @return Long
|
||||||
*/
|
*/
|
||||||
public Long getArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
public Long getArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||||
try {
|
try {
|
||||||
return Long.parseLong(args[0]);
|
return Long.parseLong(args[0]);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
|
@ -2,8 +2,7 @@ package nl.iobyte.commandapi.arguments.number;
|
||||||
|
|
||||||
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
import nl.iobyte.commandapi.interfaces.ICommandArgument;
|
||||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||||
import org.bukkit.ChatColor;
|
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ShortArgument implements ICommandArgument<Short> {
|
public class ShortArgument implements ICommandArgument<Short> {
|
||||||
|
@ -13,17 +12,17 @@ public class ShortArgument implements ICommandArgument<Short> {
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
public String getMessage(String[] args) {
|
public String getMessage(String[] args) {
|
||||||
return "Invalid short: "+ ChatColor.WHITE+args[0];
|
return "Invalid short: "+ "§f"+args[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if argument is valid Short
|
* Check if argument is valid Short
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @param args Arguments passed by Command
|
* @param args Arguments passed by Command
|
||||||
* @param previousArguments Previous arguments
|
* @param previousArguments Previous arguments
|
||||||
* @return Boolean
|
* @return Boolean
|
||||||
*/
|
*/
|
||||||
public ArgumentCheck checkArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
public ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||||
try {
|
try {
|
||||||
Short.parseShort(args[0]);
|
Short.parseShort(args[0]);
|
||||||
return new ArgumentCheck(true, 1);
|
return new ArgumentCheck(true, 1);
|
||||||
|
@ -34,12 +33,12 @@ public class ShortArgument implements ICommandArgument<Short> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Short passed by command
|
* Get Short passed by command
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @param args Arguments passed by Command
|
* @param args Arguments passed by Command
|
||||||
* @param previousArguments Previous arguments
|
* @param previousArguments Previous arguments
|
||||||
* @return Short
|
* @return Short
|
||||||
*/
|
*/
|
||||||
public Short getArgument(CommandSender sender, String[] args, List<Object> previousArguments) {
|
public Short getArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments) {
|
||||||
try {
|
try {
|
||||||
return Short.parseShort(args[0]);
|
return Short.parseShort(args[0]);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package nl.iobyte.commandapi.interfaces;
|
package nl.iobyte.commandapi.interfaces;
|
||||||
|
|
||||||
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
import nl.iobyte.commandapi.objects.ArgumentCheck;
|
||||||
import org.bukkit.command.CommandSender;
|
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface ICommandArgument<T> {
|
public interface ICommandArgument<T> {
|
||||||
|
@ -14,20 +14,20 @@ public interface ICommandArgument<T> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if valid argument
|
* Check if valid argument
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @param args Arguments passed by Command
|
* @param args Arguments passed by Command
|
||||||
* @param previousArguments Previous arguments
|
* @param previousArguments Previous arguments
|
||||||
* @return ArgumentCheck
|
* @return ArgumentCheck
|
||||||
*/
|
*/
|
||||||
ArgumentCheck checkArgument(CommandSender sender, String[] args, List<Object> previousArguments);
|
ArgumentCheck checkArgument(ICommandExecutor sender, String[] args, List<Object> previousArguments);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get object of argument
|
* Get object of argument
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @param args Arguments passed by Command
|
* @param args Arguments passed by Command
|
||||||
* @param previousArguments Previous arguments
|
* @param previousArguments Previous arguments
|
||||||
* @return Object of type T
|
* @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;
|
package nl.iobyte.commandapi.interfaces;
|
||||||
|
|
||||||
import org.bukkit.command.CommandSender;
|
import nl.iobyte.commandapi.objects.SubCommand;
|
||||||
|
|
||||||
public interface ICommandMiddleware {
|
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;
|
package nl.iobyte.commandapi.middlewares;
|
||||||
|
|
||||||
|
import nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||||
import nl.iobyte.commandapi.interfaces.ICommandMiddleware;
|
import nl.iobyte.commandapi.interfaces.ICommandMiddleware;
|
||||||
import nl.iobyte.commandapi.interfaces.SubCommand;
|
import nl.iobyte.commandapi.objects.SubCommand;
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
|
|
||||||
public class PermissionMiddleware implements ICommandMiddleware {
|
public class PermissionMiddleware implements ICommandMiddleware {
|
||||||
|
|
||||||
|
@ -18,16 +17,16 @@ public class PermissionMiddleware implements ICommandMiddleware {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean continueCommand(CommandSender sender, SubCommand command) {
|
public boolean continueCommand(ICommandExecutor sender, SubCommand command) {
|
||||||
if(command.hasPermission() && !sender.hasPermission(command.getPermission())) {
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(permissions != null && permissions.length != 0) {
|
if(permissions != null && permissions.length != 0) {
|
||||||
for (String permission : permissions) {
|
for (String permission : permissions) {
|
||||||
if (!sender.hasPermission(permission)) {
|
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;
|
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;
|
package nl.iobyte.commandapi.objects;
|
||||||
|
|
||||||
import nl.iobyte.commandapi.interfaces.SubCommand;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class CommandMap {
|
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 nl.iobyte.commandapi.interfaces.ICommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -56,13 +54,13 @@ public abstract class SubCommand {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all Syntax's sender can use
|
* Get all Syntax's sender can use
|
||||||
* @param sender CommandSender
|
* @param sender ICommandExecutor
|
||||||
* @return List<CommandSyntax>
|
* @return List<CommandSyntax>
|
||||||
*/
|
*/
|
||||||
public List<CommandSyntax> getApplicableSyntaxList(CommandSender sender) {
|
public List<CommandSyntax> getApplicableSyntaxList(ICommandExecutor sender) {
|
||||||
List<CommandSyntax> list = new ArrayList<>();
|
List<CommandSyntax> list = new ArrayList<>();
|
||||||
for(CommandSyntax syntax : syntaxList) {
|
for(CommandSyntax syntax : syntaxList) {
|
||||||
if(!syntax.isConsoleAllowed() && !(sender instanceof Player))
|
if(!syntax.isConsoleAllowed() && !sender.isPlayer())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
list.add(syntax);
|
list.add(syntax);
|
||||||
|
@ -91,19 +89,11 @@ public abstract class SubCommand {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When player executes command
|
* When executing command
|
||||||
* @param player Player
|
* @param executor ICommandExecutor
|
||||||
* @param args Object[]
|
* @param args Object[]
|
||||||
* @param syntaxUsed Integer
|
* @param syntaxUsed Integer
|
||||||
*/
|
*/
|
||||||
public abstract void onPlayerCommand(Player player, List<Object> args, int syntaxUsed);
|
public abstract void onCommand(ICommandExecutor executor, 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);
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -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