Command.java (1600B)
1 package me.night.nullvalkyrie.commands; 2 3 import org.bukkit.Bukkit; 4 import org.bukkit.command.CommandMap; 5 import org.bukkit.command.CommandSender; 6 import org.bukkit.command.defaults.BukkitCommand; 7 import org.jetbrains.annotations.NotNull; 8 9 import java.lang.reflect.Field; 10 import java.util.Arrays; 11 import java.util.List; 12 13 public abstract class Command extends BukkitCommand { 14 15 public Command(String command, String[] aliases, String description, String permission) { 16 super(command); 17 this.setAliases(Arrays.asList(aliases)); 18 this.setDescription(description); 19 this.setPermission(permission); 20 21 try { 22 Field field = Bukkit.getServer().getClass().getDeclaredField("commandMap"); 23 field.setAccessible(true); 24 CommandMap map = (CommandMap) field.get(Bukkit.getServer()); 25 map.register(command, this); 26 } catch (NoSuchFieldException | IllegalAccessException e) { 27 e.printStackTrace(); 28 } 29 30 } 31 32 @Override 33 public boolean execute(@NotNull CommandSender sender, @NotNull String commandLabel, String[] args) { 34 onCommand(sender, args); 35 return false; 36 } 37 38 @Override 39 public @NotNull List<String> tabComplete(@NotNull CommandSender sender, @NotNull String alias, String[] args) throws IllegalArgumentException { 40 return onTabComplete(sender, args); 41 } 42 43 public abstract void onCommand(CommandSender sender, String[] args); 44 45 public abstract List<String> onTabComplete(CommandSender sender, String[] args); 46 }