Finished commands system on Bukkit - tested and working

This commit is contained in:
funkemunky
2021-06-17 12:27:22 -04:00
parent 86f886e2e7
commit 5d790ce56d
19 changed files with 119 additions and 40 deletions
@@ -3,15 +3,18 @@ package dev.brighten.antivpn.bukkit;
import dev.brighten.antivpn.AntiVPN;
import dev.brighten.antivpn.command.Command;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.ComponentBuilder;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.SimpleCommandMap;
import org.bukkit.plugin.SimplePluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import java.lang.reflect.Field;
import java.util.Arrays;
public class BukkitPlugin extends JavaPlugin {
public static BukkitPlugin pluginInstance;
private SimpleCommandMap commandMap;
public void onEnable() {
pluginInstance = this;
@@ -21,19 +24,34 @@ public class BukkitPlugin extends JavaPlugin {
AntiVPN.start(new BukkitConfig(), new BukkitListener(), new BukkitPlayerExecutor());
if (pluginInstance.getServer().getPluginManager() instanceof SimplePluginManager) {
SimplePluginManager manager = (SimplePluginManager) pluginInstance.getServer().getPluginManager();
try {
Field field = SimplePluginManager.class.getDeclaredField("commandMap");
field.setAccessible(true);
commandMap = (SimpleCommandMap) field.get(manager);
} catch (IllegalArgumentException | SecurityException | NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
}
for (Command command : AntiVPN.getInstance().getCommands()) {
getCommand(command.parent() + (command.parent().length() > 0 ? " " : "") + command.name())
.setExecutor((sender, cmd, key, args) -> {
commandMap.register("antivpn", new org.bukkit.command.Command(command.name(),
command.description(), command.usage(), Arrays.asList(command.aliases())) {
@Override
public boolean execute(CommandSender sender, String s, String[] args) {
if(!sender.hasPermission("antivpn.command.*")
&& !sender.hasPermission(command.permission())) {
sender.sendMessage(ChatColor.RED + "No permission.");
return true;
}
command.execute(new BukkitCommandExecutor(sender), args);
sender.sendMessage(ChatColor.translateAlternateColorCodes('&',
command.execute(new BukkitCommandExecutor(sender), args)));
return true;
});
return true;
}
});
}
}