TabooMan!

This commit is contained in:
坏黑
2018-05-07 23:48:22 +08:00
24 changed files with 951 additions and 22 deletions

View File

@@ -0,0 +1,9 @@
package me.skymc.taboolib.commands.internal;
/**
* @Author sky
* @Since 2018-05-07 21:36
*/
public class InternalMainCommand {
}

View File

@@ -0,0 +1,9 @@
package me.skymc.taboolib.commands.internal;
/**
* @Author sky
* @Since 2018-05-07 21:38
*/
public class InternalCommandExecutor {
}

View File

@@ -0,0 +1,20 @@
package me.skymc.taboolib.commands.internal;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
/**
* @author Bkm016
* @since 2018-04-17
*/
public interface InternalCommand {
String getLabel();
String getDescription();
InternalCommandArgument[] getArguments();
void onCommand(CommandSender sender, Command command, String label, String[] args);
}

View File

@@ -0,0 +1,51 @@
package me.skymc.taboolib.commands.internal;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
/**
* @author Bkm016
* @since 2018-04-17
*/
public abstract class InternalCommandExecutor implements InternalCommand {
public InternalCommandType getType() {
return InternalCommandType.ALL;
}
public boolean requiredPlayer() {
return false;
}
public boolean isParameterConform(String[] args) {
return IntStream.range(0, getArguments().length).noneMatch(i -> getArguments()[i].isRequired() && (args == null || args.length <= i));
}
public boolean isConfirmType(CommandSender sender, InternalCommandType commandType) {
return commandType == InternalCommandType.ALL || sender instanceof ConsoleCommandSender && commandType == InternalCommandType.CONSOLE;
}
public List<String> getTabCompleter(List<InternalCommandExecutor> internalCommandExecutors, String[] args) {
return args.length == 1 ? internalCommandExecutors.stream().filter(internalCommandExecutor -> internalCommandExecutor != null && (args[0].isEmpty() || internalCommandExecutor.getLabel().startsWith(args[0]))).map(InternalCommand::getLabel).collect(Collectors.toList()) : null;
}
public String getCommandString(String label) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("§f /");
stringBuilder.append(label);
stringBuilder.append(" ");
stringBuilder.append(getLabel());
stringBuilder.append(" ");
for (InternalCommandArgument parameter : getArguments()) {
stringBuilder.append(parameter.toString());
stringBuilder.append(" ");
}
stringBuilder.append("§6- §e");
stringBuilder.append(getDescription());
return stringBuilder.toString();
}
}

View File

@@ -0,0 +1,11 @@
package me.skymc.taboolib.commands.internal;
/**
* @author Bkm016
* @since 2018-04-17
*/
public enum InternalCommandType {
CONSOLE, PLAYER, ALL
}

View File

@@ -0,0 +1,9 @@
package me.skymc.taboolib.commands.plugin;
/**
* @Author sky
* @Since 2018-05-07 20:14
*/
public class TabooLibPluginCommand {
}