more reorganizing and making things work

This commit is contained in:
YouHaveTrouble
2021-04-26 02:17:39 +02:00
parent 60260106a9
commit 862fa193e6
11 changed files with 233 additions and 185 deletions
-4
View File
@@ -55,10 +55,6 @@
</build>
<repositories>
<repository>
<id>papermc-repo</id>
<url>https://papermc.io/repo/repository/maven-public/</url>
</repository>
<repository>
<id>sonatype</id>
<url>https://oss.sonatype.org/content/groups/public/</url>
@@ -6,13 +6,14 @@ import eu.endermite.commandwhitelist.bukkit.listeners.PlayerCommandSendListener;
import eu.endermite.commandwhitelist.bukkit.listeners.TabCompleteBlockerListener;
import eu.endermite.commandwhitelist.common.CWGroup;
import eu.endermite.commandwhitelist.common.ConfigCache;
import eu.endermite.commandwhitelist.bukkit.command.MainCommand;
import eu.endermite.commandwhitelist.bukkit.command.MainCommandExecutor;
import eu.endermite.commandwhitelist.bukkit.metrics.BukkitMetrics;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.PluginCommand;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
@@ -47,7 +48,12 @@ public class CommandWhitelistBukkit extends JavaPlugin {
}
getServer().getPluginManager().registerEvents(new TabCompleteBlockerListener(), this);
getCommand("commandwhitelist").setExecutor(new MainCommand());
PluginCommand command = getCommand("commandwhitelist");
if (command != null) {
MainCommandExecutor executor = new MainCommandExecutor();
command.setExecutor(executor);
command.setTabCompleter(executor);
}
int pluginId = 8705;
new BukkitMetrics(this, pluginId);
@@ -1,42 +0,0 @@
package eu.endermite.commandwhitelist.bukkit.command;
import eu.endermite.commandwhitelist.common.CWGroup;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
public class BukkitCommandHandler {
/**
* @param player Bukkit Player
* @return commands available to the player
*/
public static HashSet<String> getCommands(org.bukkit.entity.Player player, HashMap<String, CWGroup> groups) {
HashSet<String> commandList = new HashSet<>();
for (Map.Entry<String, CWGroup> s : groups.entrySet()) {
if (s.getKey().equalsIgnoreCase("default"))
commandList.addAll(s.getValue().getCommands());
else if (player.hasPermission("commandwhitelist.group." + s.getKey()))
commandList.addAll(s.getValue().getCommands());
}
return commandList;
}
/**
* @param player Bukkit Player
* @return subcommands unavailable for the player
*/
public static HashSet<String> getSuggestions(org.bukkit.entity.Player player, HashMap<String, CWGroup> groups) {
HashSet<String> suggestionList = new HashSet<>();
for (Map.Entry<String, CWGroup> s : groups.entrySet()) {
if (s.getKey().equalsIgnoreCase("default"))
suggestionList.addAll(s.getValue().getSubCommands());
if (player.hasPermission("commandwhitelist.group." + s.getKey()))
continue;
suggestionList.addAll(s.getValue().getSubCommands());
}
return suggestionList;
}
}
@@ -1,66 +0,0 @@
package eu.endermite.commandwhitelist.bukkit.command;
import eu.endermite.commandwhitelist.common.commands.CWCommand;
import eu.endermite.commandwhitelist.bukkit.CommandWhitelistBukkit;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
public class MainCommand implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (args.length == 0) {
// send help
return true;
}
try {
CWCommand.CommandType commandType = CWCommand.CommandType.valueOf(args[0]);
switch (commandType) {
case RELOAD:
if (!sender.hasPermission("commandwhitelist.reload")) {
CommandWhitelistBukkit.getAudiences().sender(sender).sendMessage(MiniMessage.markdown().parse(CommandWhitelistBukkit.getConfigCache().prefix + CommandWhitelistBukkit.getConfigCache().no_permission));
return true;
}
CommandWhitelistBukkit.getPlugin().reloadPluginConfig(sender);
return true;
case ADD:
if (!sender.hasPermission("commandwhitelist.admin")) {
CommandWhitelistBukkit.getAudiences().sender(sender).sendMessage(MiniMessage.markdown().parse(CommandWhitelistBukkit.getConfigCache().prefix + CommandWhitelistBukkit.getConfigCache().no_permission));
return true;
}
if (args.length == 3) {
if (CWCommand.addToWhitelist(CommandWhitelistBukkit.getConfigCache(), args[2], args[1]))
CommandWhitelistBukkit.getAudiences().sender(sender).sendMessage(MiniMessage.markdown().parse(CommandWhitelistBukkit.getConfigCache().prefix + CommandWhitelistBukkit.getConfigCache().added_to_whitelist));
else
CommandWhitelistBukkit.getAudiences().sender(sender).sendMessage(MiniMessage.markdown().parse(CommandWhitelistBukkit.getConfigCache().prefix + CommandWhitelistBukkit.getConfigCache().group_doesnt_exist));
} else
CommandWhitelistBukkit.getAudiences().sender(sender).sendMessage(Component.text("/cw add <group> <command>"));
return true;
case REMOVE:
if (!sender.hasPermission("commandwhitelist.admin")) {
CommandWhitelistBukkit.getAudiences().sender(sender).sendMessage(MiniMessage.markdown().parse(CommandWhitelistBukkit.getConfigCache().prefix + CommandWhitelistBukkit.getConfigCache().no_permission));
return true;
}
if (args.length == 3) {
if (CWCommand.removeFromWhitelist(CommandWhitelistBukkit.getConfigCache(), args[2], args[1]))
CommandWhitelistBukkit.getAudiences().sender(sender).sendMessage(MiniMessage.markdown().parse(CommandWhitelistBukkit.getConfigCache().prefix + CommandWhitelistBukkit.getConfigCache().removed_from_whitelist));
else
CommandWhitelistBukkit.getAudiences().sender(sender).sendMessage(MiniMessage.markdown().parse(CommandWhitelistBukkit.getConfigCache().prefix + CommandWhitelistBukkit.getConfigCache().group_doesnt_exist));
} else
CommandWhitelistBukkit.getAudiences().sender(sender).sendMessage(Component.text("/cw remove <group> <command>"));
return true;
case HELP:
default:
// send help
}
} catch (IllegalArgumentException e) {
// send help
}
return true;
}
}
@@ -0,0 +1,141 @@
package eu.endermite.commandwhitelist.bukkit.command;
import eu.endermite.commandwhitelist.common.ConfigCache;
import eu.endermite.commandwhitelist.common.commands.CWCommand;
import eu.endermite.commandwhitelist.bukkit.CommandWhitelistBukkit;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import org.bukkit.help.HelpTopic;
import java.util.ArrayList;
import java.util.List;
public class MainCommandExecutor implements TabExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
BukkitAudiences audiences = CommandWhitelistBukkit.getAudiences();
if (args.length == 0) {
audiences.sender(sender).sendMessage(CWCommand.helpComponent(label, sender.hasPermission("commandwhitelist.reload"), sender.hasPermission("commandwhitelist.admin")));
return true;
}
try {
CWCommand.CommandType commandType = CWCommand.CommandType.valueOf(args[0].toUpperCase());
switch (commandType) {
case RELOAD:
if (!sender.hasPermission("commandwhitelist.reload")) {
audiences.sender(sender).sendMessage(MiniMessage.markdown().parse(CommandWhitelistBukkit.getConfigCache().prefix + CommandWhitelistBukkit.getConfigCache().no_permission));
return true;
}
CommandWhitelistBukkit.getPlugin().reloadPluginConfig(sender);
return true;
case ADD:
if (!sender.hasPermission("commandwhitelist.admin")) {
audiences.sender(sender).sendMessage(MiniMessage.markdown().parse(CommandWhitelistBukkit.getConfigCache().prefix + CommandWhitelistBukkit.getConfigCache().no_permission));
return true;
}
if (args.length == 3) {
if (CWCommand.addToWhitelist(CommandWhitelistBukkit.getConfigCache(), args[2], args[1]))
audiences.sender(sender).sendMessage(MiniMessage.markdown().parse(CommandWhitelistBukkit.getConfigCache().prefix + CommandWhitelistBukkit.getConfigCache().added_to_whitelist));
else
audiences.sender(sender).sendMessage(MiniMessage.markdown().parse(CommandWhitelistBukkit.getConfigCache().prefix + CommandWhitelistBukkit.getConfigCache().group_doesnt_exist));
} else
audiences.sender(sender).sendMessage(Component.text("/" + label + " add <group> <command>"));
return true;
case REMOVE:
if (!sender.hasPermission("commandwhitelist.admin")) {
audiences.sender(sender).sendMessage(MiniMessage.markdown().parse(CommandWhitelistBukkit.getConfigCache().prefix + CommandWhitelistBukkit.getConfigCache().no_permission));
return true;
}
if (args.length == 3) {
if (CWCommand.removeFromWhitelist(CommandWhitelistBukkit.getConfigCache(), args[2], args[1]))
audiences.sender(sender).sendMessage(MiniMessage.markdown().parse(CommandWhitelistBukkit.getConfigCache().prefix + CommandWhitelistBukkit.getConfigCache().removed_from_whitelist));
else
audiences.sender(sender).sendMessage(MiniMessage.markdown().parse(CommandWhitelistBukkit.getConfigCache().prefix + CommandWhitelistBukkit.getConfigCache().group_doesnt_exist));
} else
audiences.sender(sender).sendMessage(Component.text("/" + label + " remove <group> <command>"));
return true;
case HELP:
default:
audiences.sender(sender).sendMessage(CWCommand.helpComponent(label, sender.hasPermission("commandwhitelist.reload"), sender.hasPermission("commandwhitelist.admin")));
}
} catch (IllegalArgumentException e) {
audiences.sender(sender).sendMessage(CWCommand.helpComponent(label, sender.hasPermission("commandwhitelist.reload"), sender.hasPermission("commandwhitelist.admin")));
}
return true;
}
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
List<String> list = new ArrayList<>();
ConfigCache config = CommandWhitelistBukkit.getConfigCache();
if (args.length == 1) {
if ("reload".startsWith(args[0]) && sender.hasPermission("commandwhitelist.reload")) {
list.add("reload");
}
if ("add".startsWith(args[0]) && sender.hasPermission("commandwhitelist.admin")) {
list.add("add");
}
if ("remove".startsWith(args[0]) && sender.hasPermission("commandwhitelist.admin")) {
list.add("remove");
}
} else if (args.length == 2) {
if (args[0].equalsIgnoreCase("add") || args[0].equalsIgnoreCase("remove")) {
if (!sender.hasPermission("commandwhitelist.admin"))
return list;
for (String s : config.getGroupList().keySet()) {
if (s.startsWith(args[1])) {
list.add(s);
}
}
}
} else if (args.length == 3) {
if (args[0].equalsIgnoreCase("remove")) {
if (!sender.hasPermission("commandwhitelist.admin"))
return list;
try {
for (String s : config.getGroupList().get(args[1]).getCommands()) {
if (s.startsWith(args[2])) {
list.add(s);
}
}
} catch (NullPointerException ignored) {}
return list;
}
if (args[0].equalsIgnoreCase("add")) {
if (!sender.hasPermission("commandwhitelist.admin"))
return list;
for (HelpTopic s : CommandWhitelistBukkit.getPlugin().getServer().getHelpMap().getHelpTopics()) {
String cmd = s.getName();
if (!cmd.startsWith("/"))
continue;
try {
if (cmd.contains(":")) {
cmd = cmd.split(":")[1];
}
} catch (Exception e) {
continue;
}
cmd = cmd.replace("/", "");
if (config.getGroupList().get(args[1]).getCommands().contains(cmd))
continue;
if (cmd.startsWith(args[2])) {
list.add(cmd);
}
}
return list;
}
}
return list;
}
}