NullValkyrie

Minecraft 1.19 multipurpose plugin for spigot servers with a lot of features where most modern servers have.
git clone https://codeberg.org/night0721/NullValkyrie
Log | Files | Refs | README | LICENSE

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 }