Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.zodiacmc.tlm.commands;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.function.Consumer;
- import org.bukkit.event.Event;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.player.PlayerCommandPreprocessEvent;
- import org.bukkit.event.server.ServerCommandEvent;
- import com.zodiacmc.tlm.users.Rank;
- public class BukkitCommand implements Runnable, Listener {
- private boolean async = false;
- private List<CommandArgument> arguments;
- private String name, description;
- private boolean console, player, isChild;
- private Thread thread;
- private Rank rank;
- private Runnable runnable;
- private Consumer<BukkitCommand> consumer;
- private List<BukkitCommand> childCommands;
- private Event e;
- private static List<BukkitCommand> commands = new ArrayList<BukkitCommand>();
- private BukkitCommand(BukkitCommand.Builder builder) {
- this.arguments = new ArrayList<CommandArgument>();
- commands.add(this);
- }
- public static BukkitCommand.Builder builder(){
- return new BukkitCommand.Builder();
- }
- public boolean hasAnyArguments() {
- return arguments.size() > 1;
- }
- public List<CommandArgument> getArguments(){
- return arguments;
- }
- public String getName() {
- return name;
- }
- public void execute() {
- if (consumer == null && runnable == null) {
- new CommandException("Consumer & Runnable are null");
- return;
- }
- if (thread != null) {
- if (!Thread.currentThread().equals(thread)) {
- thread.start();
- return;
- }
- }
- if (consumer != null) {
- consumer.accept(this);
- } else {
- runnable.run();
- }
- }
- public static class Builder {
- public BukkitCommand.Builder builder;
- public String description;
- public boolean async;
- public Consumer<BukkitCommand> consumer;
- public Runnable runnable;
- public Rank rank;
- public List<BukkitCommand> childCommands = new ArrayList<BukkitCommand>();
- private Builder() {
- this.builder = this;
- }
- public BukkitCommand.Builder description(String s){
- this.description = s;
- return this;
- }
- public BukkitCommand.Builder async() {
- this.async = true;
- return this;
- }
- public BukkitCommand.Builder child(BukkitCommand command){
- childCommands.add(command);
- return this;
- }
- public BukkitCommand.Builder execute(Consumer<BukkitCommand> consumer) {
- this.consumer = consumer;
- return this;
- }
- public BukkitCommand.Builder execute(Runnable runnable) {
- this.runnable = runnable;
- return this;
- }
- public BukkitCommand.Builder rank(Rank rank){
- this.rank = rank;
- return this;
- }
- public BukkitCommand build() {
- return new BukkitCommand(this);
- }
- }
- @Override
- public void run() {
- execute();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement