mirror of
https://github.com/BentoBoxWorld/BentoBox.git
synced 2024-12-19 15:47:48 +01:00
Made help argument optionable (to support the NotSetup)
This commit is contained in:
parent
bafff8cdee
commit
0980ab8358
@ -7,7 +7,7 @@ import us.tastybento.bskyblock.BSkyBlock;
|
|||||||
public class AdminCommand extends BSBCommand{
|
public class AdminCommand extends BSBCommand{
|
||||||
|
|
||||||
public AdminCommand(BSkyBlock plugin) {
|
public AdminCommand(BSkyBlock plugin) {
|
||||||
super(plugin);
|
super(plugin, true);
|
||||||
// TODO Auto-generated constructor stub
|
// TODO Auto-generated constructor stub
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,7 +13,6 @@ import org.bukkit.command.CommandSender;
|
|||||||
import org.bukkit.command.TabCompleter;
|
import org.bukkit.command.TabCompleter;
|
||||||
|
|
||||||
import us.tastybento.bskyblock.BSkyBlock;
|
import us.tastybento.bskyblock.BSkyBlock;
|
||||||
import us.tastybento.bskyblock.util.Util;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract class that handles commands and tabs. It makes the commands code modular
|
* Abstract class that handles commands and tabs. It makes the commands code modular
|
||||||
@ -23,56 +22,48 @@ import us.tastybento.bskyblock.util.Util;
|
|||||||
*/
|
*/
|
||||||
public abstract class BSBCommand implements CommandExecutor, TabCompleter{
|
public abstract class BSBCommand implements CommandExecutor, TabCompleter{
|
||||||
private Map<String, CommandArgumentHandler> arguments;
|
private Map<String, CommandArgumentHandler> arguments;
|
||||||
|
private boolean help;
|
||||||
protected BSBCommand(BSkyBlock plugin){
|
|
||||||
|
protected BSBCommand(BSkyBlock plugin, boolean help){
|
||||||
arguments = new HashMap<String, CommandArgumentHandler>();
|
arguments = new HashMap<String, CommandArgumentHandler>();
|
||||||
|
this.help = help;
|
||||||
// Automatically register the help argument
|
|
||||||
registerArgument(new String[] {"help", "?"}, new CommandArgumentHandler() {
|
// Register a help argument if needed
|
||||||
|
if(help){
|
||||||
@Override
|
registerArgument(new String[] {"help", "?"}, new CommandArgumentHandler() {
|
||||||
public boolean canExecute(CommandSender sender, String label, String[] args) {
|
|
||||||
return true; // If the player can execute the command, he can receive help
|
@Override
|
||||||
}
|
public boolean canExecute(CommandSender sender, String label, String[] args) {
|
||||||
|
return true; // If the player can execute the command, he can receive help
|
||||||
@Override
|
|
||||||
public void onExecute(CommandSender sender, String label, String[] args) {
|
|
||||||
// Generate help
|
|
||||||
String help = plugin.getLocale(sender).get("help.header") + "\n";
|
|
||||||
|
|
||||||
for(String argument : arguments.keySet()){
|
|
||||||
CommandArgumentHandler cah = getArgumentHandler(argument);
|
|
||||||
if(cah.canExecute(sender, label, args) && cah.getHelp(sender, label) != null) {
|
|
||||||
help += getHelpMessage(sender, label, argument, cah.getHelp(sender, label)) + "\n";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: multiple pages
|
@Override
|
||||||
|
public void onExecute(CommandSender sender, String label, String[] args) {
|
||||||
Util.sendMessage(sender, help);
|
// TODO send help
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> onTabComplete(CommandSender sender, String label, String[] args) {
|
public List<String> onTabComplete(CommandSender sender, String label, String[] args) {
|
||||||
return null; // Doesn't have options for tab-completion
|
return null; // Doesn't have options for tab-completion
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getHelp(CommandSender sender, String label) {
|
public String[] getHelp(CommandSender sender, String label) {
|
||||||
return null; // Obviously, don't send any help message.
|
return null; // Obviously, don't send any help message.
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Register other arguments
|
// Register other arguments
|
||||||
setup();
|
setup();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setup the command arguments
|
* Setup the command arguments
|
||||||
*/
|
*/
|
||||||
public abstract void setup();
|
public abstract void setup();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if the sender can use the command
|
* Check if the sender can use the command
|
||||||
* @param sender
|
* @param sender
|
||||||
@ -80,7 +71,7 @@ public abstract class BSBCommand implements CommandExecutor, TabCompleter{
|
|||||||
* @return if the sender can use the command
|
* @return if the sender can use the command
|
||||||
*/
|
*/
|
||||||
public abstract boolean canExecute(CommandSender sender, String label);
|
public abstract boolean canExecute(CommandSender sender, String label);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This code is executed when no arguments is specified for the command
|
* This code is executed when no arguments is specified for the command
|
||||||
* @param sender
|
* @param sender
|
||||||
@ -88,17 +79,17 @@ public abstract class BSBCommand implements CommandExecutor, TabCompleter{
|
|||||||
* @param args
|
* @param args
|
||||||
*/
|
*/
|
||||||
public abstract void onExecuteDefault(CommandSender sender, String label, String[] args);
|
public abstract void onExecuteDefault(CommandSender sender, String label, String[] args);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args){
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args){
|
||||||
if(this.canExecute(sender, label)){
|
if(this.canExecute(sender, label)){
|
||||||
if(args.length >= 1){
|
if(args.length >= 1){
|
||||||
if(arguments.get(args[0]) != null){
|
if(arguments.containsKey(args[0]) && arguments.get(args[0]).canExecute(sender, label, args)){
|
||||||
if(arguments.get(args[0]).canExecute(sender, label, args)){
|
arguments.get(args[0]).onExecute(sender, label, args);
|
||||||
arguments.get(args[0]).onExecute(sender, label, args);
|
} else if(help) {
|
||||||
}
|
arguments.get("?").onExecute(sender, label, args);
|
||||||
} else {
|
} else {
|
||||||
arguments.get("help").onExecute(sender, label, args);
|
this.onExecuteDefault(sender, label, args);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.onExecuteDefault(sender, label, args);
|
this.onExecuteDefault(sender, label, args);
|
||||||
@ -106,7 +97,7 @@ public abstract class BSBCommand implements CommandExecutor, TabCompleter{
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args){
|
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args){
|
||||||
List<String> options = new ArrayList<String>();
|
List<String> options = new ArrayList<String>();
|
||||||
@ -128,7 +119,7 @@ public abstract class BSBCommand implements CommandExecutor, TabCompleter{
|
|||||||
}
|
}
|
||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract class CommandArgumentHandler{
|
public abstract class CommandArgumentHandler{
|
||||||
/**
|
/**
|
||||||
* Check if the sender can use the argument
|
* Check if the sender can use the argument
|
||||||
@ -138,7 +129,7 @@ public abstract class BSBCommand implements CommandExecutor, TabCompleter{
|
|||||||
* @return if the sender can use the argument
|
* @return if the sender can use the argument
|
||||||
*/
|
*/
|
||||||
public abstract boolean canExecute(CommandSender sender, String label, String[] args);
|
public abstract boolean canExecute(CommandSender sender, String label, String[] args);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Code to execute for this argument
|
* Code to execute for this argument
|
||||||
* @param sender
|
* @param sender
|
||||||
@ -146,7 +137,7 @@ public abstract class BSBCommand implements CommandExecutor, TabCompleter{
|
|||||||
* @param args
|
* @param args
|
||||||
*/
|
*/
|
||||||
public abstract void onExecute(CommandSender sender, String label, String[] args);
|
public abstract void onExecute(CommandSender sender, String label, String[] args);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Request a list of tab-completion options with the argument
|
* Request a list of tab-completion options with the argument
|
||||||
* @param sender
|
* @param sender
|
||||||
@ -155,7 +146,7 @@ public abstract class BSBCommand implements CommandExecutor, TabCompleter{
|
|||||||
* @return the list of options
|
* @return the list of options
|
||||||
*/
|
*/
|
||||||
public abstract List<String> onTabComplete(CommandSender sender, String label, String[] args);
|
public abstract List<String> onTabComplete(CommandSender sender, String label, String[] args);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get help information
|
* Get help information
|
||||||
* <code>new String[] {arguments, description};</code>
|
* <code>new String[] {arguments, description};</code>
|
||||||
@ -165,20 +156,16 @@ public abstract class BSBCommand implements CommandExecutor, TabCompleter{
|
|||||||
*/
|
*/
|
||||||
public abstract String[] getHelp(CommandSender sender, String label);
|
public abstract String[] getHelp(CommandSender sender, String label);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void registerArgument(String[] args, CommandArgumentHandler handler){
|
public void registerArgument(String[] args, CommandArgumentHandler handler){
|
||||||
Arrays.asList(args).forEach(arg -> arguments.put(arg, handler));
|
Arrays.asList(args).forEach(arg -> arguments.put(arg, handler));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, CommandArgumentHandler> getArguments(){
|
public Map<String, CommandArgumentHandler> getArguments(){
|
||||||
return arguments;
|
return arguments;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CommandArgumentHandler getArgumentHandler(String argument){
|
public CommandArgumentHandler getArgumentHandler(String argument){
|
||||||
return arguments.get(argument);
|
return arguments.get(argument);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getHelpMessage(CommandSender sender, String label, String argument, String[] helpData){
|
|
||||||
return ""; //TODO help
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ public class IslandCommand extends BSBCommand{
|
|||||||
private BSkyBlock plugin;
|
private BSkyBlock plugin;
|
||||||
|
|
||||||
public IslandCommand(BSkyBlock plugin) {
|
public IslandCommand(BSkyBlock plugin) {
|
||||||
super(plugin);
|
super(plugin, true);
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -310,7 +310,7 @@ public class IslandCommand extends BSBCommand{
|
|||||||
|
|
||||||
// Explain command
|
// Explain command
|
||||||
if(args.length == 1){
|
if(args.length == 1){
|
||||||
Util.sendMessage(player, getHelpMessage(player, label, args[0], getHelp(sender, label)));
|
//TODO Util.sendMessage(player, getHelpMessage(player, label, args[0], getHelp(sender, label)));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user