Compare commits

...

8 Commits

14 changed files with 157 additions and 93 deletions
+5 -5
View File
@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>eu.endermite.commandwhitelist</groupId> <groupId>eu.endermite.commandwhitelist</groupId>
<artifactId>CommandWhitelist</artifactId> <artifactId>CommandWhitelist</artifactId>
<version>2.3.2</version> <version>2.5.0</version>
</parent> </parent>
<artifactId>Bukkit</artifactId> <artifactId>Bukkit</artifactId>
@@ -86,19 +86,19 @@
<dependency> <dependency>
<groupId>io.papermc.paper</groupId> <groupId>io.papermc.paper</groupId>
<artifactId>paper-api</artifactId> <artifactId>paper-api</artifactId>
<version>1.17.1-R0.1-SNAPSHOT</version> <version>1.19-R0.1-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>net.kyori</groupId> <groupId>net.kyori</groupId>
<artifactId>adventure-platform-bukkit</artifactId> <artifactId>adventure-platform-bukkit</artifactId>
<version>4.1.0</version> <version>4.1.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>net.kyori</groupId> <groupId>net.kyori</groupId>
<artifactId>adventure-text-minimessage</artifactId> <artifactId>adventure-text-minimessage</artifactId>
<version>4.10.1</version> <version>4.11.0</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
@@ -110,7 +110,7 @@
<dependency> <dependency>
<groupId>com.comphenix.protocol</groupId> <groupId>com.comphenix.protocol</groupId>
<artifactId>ProtocolLib</artifactId> <artifactId>ProtocolLib</artifactId>
<version>4.6.0</version> <version>5.0.0-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
@@ -1,29 +1,26 @@
package eu.endermite.commandwhitelist.bukkit; package eu.endermite.commandwhitelist.bukkit;
import eu.endermite.commandwhitelist.bukkit.command.MainCommandExecutor; import eu.endermite.commandwhitelist.bukkit.command.BukkitCommandExecutor;
import eu.endermite.commandwhitelist.bukkit.listeners.AsyncTabCompleteBlockerListener; import eu.endermite.commandwhitelist.bukkit.listeners.AsyncTabCompleteBlockerListener;
import eu.endermite.commandwhitelist.bukkit.listeners.PlayerCommandPreProcessListener; import eu.endermite.commandwhitelist.bukkit.listeners.PlayerCommandPreProcessListener;
import eu.endermite.commandwhitelist.bukkit.listeners.PlayerCommandSendListener; import eu.endermite.commandwhitelist.bukkit.listeners.PlayerCommandSendListener;
import eu.endermite.commandwhitelist.bukkit.listeners.TabCompleteBlockerListener; import eu.endermite.commandwhitelist.bukkit.listeners.TabCompleteBlockerListener;
import eu.endermite.commandwhitelist.bukkit.listeners.protocollib.PacketCommandPreProcessListener; import eu.endermite.commandwhitelist.bukkit.listeners.protocollib.PacketCommandPreProcessListener;
import eu.endermite.commandwhitelist.bukkit.listeners.protocollib.PacketCommandSendListener;
import eu.endermite.commandwhitelist.common.CWGroup; import eu.endermite.commandwhitelist.common.CWGroup;
import eu.endermite.commandwhitelist.common.ConfigCache; import eu.endermite.commandwhitelist.common.ConfigCache;
import eu.endermite.commandwhitelist.common.commands.CWCommand; import eu.endermite.commandwhitelist.common.commands.CWCommand;
import net.kyori.adventure.platform.bukkit.BukkitAudiences; import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import org.bstats.bukkit.Metrics; import org.bstats.bukkit.Metrics;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.PluginCommand; import org.bukkit.command.PluginCommand;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.help.HelpTopic;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import java.io.File; import java.io.File;
import java.util.HashMap; import java.util.*;
import java.util.HashSet;
import java.util.Map;
public class CommandWhitelistBukkit extends JavaPlugin { public class CommandWhitelistBukkit extends JavaPlugin {
@@ -43,11 +40,10 @@ public class CommandWhitelistBukkit extends JavaPlugin {
if (!getConfigCache().useProtocolLib || protocollib == null || !protocollib.isEnabled()) { if (!getConfigCache().useProtocolLib || protocollib == null || !protocollib.isEnabled()) {
getServer().getPluginManager().registerEvents(new PlayerCommandPreProcessListener(), this); getServer().getPluginManager().registerEvents(new PlayerCommandPreProcessListener(), this);
getServer().getPluginManager().registerEvents(new PlayerCommandSendListener(), this);
} else { } else {
PacketCommandPreProcessListener.protocol(this); PacketCommandPreProcessListener.protocol(this);
PacketCommandSendListener.protocol(this); getLogger().warning("Using ProtocolLib for command filter!");
getLogger().info(ChatColor.AQUA + "Using ProtocolLib for command filter!"); getLogger().warning("Please make sure you actually need this. This is not a \"better way to do it\".");
} }
try { try {
// Use paper's async tab completions if possible // Use paper's async tab completions if possible
@@ -56,10 +52,11 @@ public class CommandWhitelistBukkit extends JavaPlugin {
} catch (ClassNotFoundException ignored) { } catch (ClassNotFoundException ignored) {
} }
getServer().getPluginManager().registerEvents(new TabCompleteBlockerListener(), this); getServer().getPluginManager().registerEvents(new TabCompleteBlockerListener(), this);
getServer().getPluginManager().registerEvents(new PlayerCommandSendListener(), this);
PluginCommand command = getCommand("commandwhitelist"); PluginCommand command = getCommand("commandwhitelist");
if (command != null) { if (command != null) {
MainCommandExecutor executor = new MainCommandExecutor(); BukkitCommandExecutor executor = new BukkitCommandExecutor();
command.setExecutor(executor); command.setExecutor(executor);
command.setTabCompleter(executor); command.setTabCompleter(executor);
} }
@@ -75,9 +72,9 @@ public class CommandWhitelistBukkit extends JavaPlugin {
} catch (NoSuchMethodError e) { } catch (NoSuchMethodError e) {
configCache = new ConfigCache(configFile, true, null); configCache = new ConfigCache(configFile, true, null);
} }
return;
} }
else configCache.reloadConfig();
configCache.reloadConfig();
} }
public void reloadPluginConfig(CommandSender sender) { public void reloadPluginConfig(CommandSender sender) {
@@ -151,4 +148,18 @@ public class CommandWhitelistBukkit extends JavaPlugin {
} }
return commandDeniedMessage; return commandDeniedMessage;
} }
public static ArrayList<String> getServerCommands() {
try {
return new ArrayList<>(Bukkit.getCommandMap().getKnownCommands().keySet());
} catch (NoSuchMethodError error) {
HashSet<String> commands = new HashSet<>();
for (HelpTopic topic : Bukkit.getHelpMap().getHelpTopics()) {
String cmd = topic.getName();
if (Character.isUpperCase(cmd.charAt(0))) continue;
commands.add(topic.getName());
}
return new ArrayList<>(commands);
}
}
} }
@@ -2,20 +2,18 @@ package eu.endermite.commandwhitelist.bukkit.command;
import eu.endermite.commandwhitelist.bukkit.CommandWhitelistBukkit; import eu.endermite.commandwhitelist.bukkit.CommandWhitelistBukkit;
import eu.endermite.commandwhitelist.common.CWPermission; import eu.endermite.commandwhitelist.common.CWPermission;
import eu.endermite.commandwhitelist.common.CommandUtil;
import eu.endermite.commandwhitelist.common.commands.CWCommand; import eu.endermite.commandwhitelist.common.commands.CWCommand;
import net.kyori.adventure.platform.bukkit.BukkitAudiences; import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor; import org.bukkit.command.TabExecutor;
import org.bukkit.help.HelpTopic;
import java.util.ArrayList; import java.io.File;
import java.util.HashSet;
import java.util.List; import java.util.List;
public class MainCommandExecutor implements TabExecutor { public class BukkitCommandExecutor implements TabExecutor {
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
@@ -62,6 +60,18 @@ public class MainCommandExecutor implements TabExecutor {
} else } else
audiences.sender(sender).sendMessage(Component.text("/" + label + " remove <group> <command>")); audiences.sender(sender).sendMessage(Component.text("/" + label + " remove <group> <command>"));
return true; return true;
case DUMP:
if (!sender.hasPermission(CWPermission.ADMIN.permission())) {
audiences.sender(sender).sendMessage(CWCommand.miniMessage.deserialize(CommandWhitelistBukkit.getConfigCache().prefix + CommandWhitelistBukkit.getConfigCache().no_permission));
return true;
}
audiences.sender(sender).sendMessage(Component.text("Dumping all available commands to a file..."));
if (CommandUtil.dumpAllBukkitCommands(CommandWhitelistBukkit.getServerCommands(), new File("plugins/CommandWhitelist/command_dump.yml"))) {
audiences.sender(sender).sendMessage(Component.text("Commands dumped to command_dump.yml"));
} else {
audiences.sender(sender).sendMessage(Component.text("Failed to save the file."));
}
return true;
case HELP: case HELP:
default: default:
audiences.sender(sender).sendMessage(CWCommand.helpComponent(label, sender.hasPermission(CWPermission.RELOAD.permission()), sender.hasPermission(CWPermission.ADMIN.permission()))); audiences.sender(sender).sendMessage(CWCommand.helpComponent(label, sender.hasPermission(CWPermission.RELOAD.permission()), sender.hasPermission(CWPermission.ADMIN.permission())));
@@ -74,18 +84,13 @@ public class MainCommandExecutor implements TabExecutor {
@Override @Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) { public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
List<String> serverCommands; return CWCommand.commandSuggestions(
try { CommandWhitelistBukkit.getConfigCache(),
serverCommands = new ArrayList<>(Bukkit.getCommandMap().getKnownCommands().keySet()); CommandWhitelistBukkit.getServerCommands(),
} catch (NoSuchMethodError error) { args,
HashSet<String> commands = new HashSet<>(); sender.hasPermission(CWPermission.RELOAD.permission()),
for (HelpTopic topic : Bukkit.getHelpMap().getHelpTopics()) { sender.hasPermission(CWPermission.ADMIN.permission()),
String cmd = topic.getName(); CWCommand.ImplementationType.BUKKIT
if (Character.isUpperCase(cmd.charAt(0))) continue; );
commands.add(topic.getName());
}
serverCommands = new ArrayList<>(commands);
}
return CWCommand.commandSuggestions(CommandWhitelistBukkit.getConfigCache(), serverCommands, args, sender.hasPermission(CWPermission.RELOAD.permission()), sender.hasPermission(CWPermission.ADMIN.permission()), CWCommand.ImplementationType.BUKKIT);
} }
} }
@@ -1,40 +0,0 @@
package eu.endermite.commandwhitelist.bukkit.listeners.protocollib;
import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.ProtocolManager;
import com.comphenix.protocol.events.ListenerPriority;
import com.comphenix.protocol.events.PacketAdapter;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.events.PacketEvent;
import com.mojang.brigadier.tree.RootCommandNode;
import eu.endermite.commandwhitelist.bukkit.CommandWhitelistBukkit;
import eu.endermite.commandwhitelist.common.CWPermission;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import java.util.HashSet;
public class PacketCommandSendListener {
public static void protocol(CommandWhitelistBukkit plugin) {
ProtocolManager protocolManager = ProtocolLibrary.getProtocolManager();
commandSendListener(protocolManager, plugin);
}
public static void commandSendListener(ProtocolManager protocolManager, Plugin plugin) {
protocolManager.addPacketListener(new PacketAdapter(plugin, ListenerPriority.HIGHEST, PacketType.Play.Server.COMMANDS) {
@Override
public void onPacketSending(PacketEvent event) {
Player player = event.getPlayer();
if (event.isPlayerTemporary()) return;
if (player.hasPermission(CWPermission.BYPASS.permission())) return;
HashSet<String> commandList = CommandWhitelistBukkit.getCommands(player);
PacketContainer packet = event.getPacket();
RootCommandNode<?> node = (RootCommandNode<?>) packet.getModifier().getValues().get(0);
node.getChildren().removeIf((cmd) -> !commandList.contains(cmd.getName()));
}
});
}
}
+3 -3
View File
@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>eu.endermite.commandwhitelist</groupId> <groupId>eu.endermite.commandwhitelist</groupId>
<artifactId>CommandWhitelist</artifactId> <artifactId>CommandWhitelist</artifactId>
<version>2.3.2</version> <version>2.5.0</version>
</parent> </parent>
<artifactId>Common</artifactId> <artifactId>Common</artifactId>
@@ -88,13 +88,13 @@
<dependency> <dependency>
<groupId>net.kyori</groupId> <groupId>net.kyori</groupId>
<artifactId>adventure-text-minimessage</artifactId> <artifactId>adventure-text-minimessage</artifactId>
<version>4.10.1</version> <version>4.11.0</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.papermc.paper</groupId> <groupId>io.papermc.paper</groupId>
<artifactId>paper-api</artifactId> <artifactId>paper-api</artifactId>
<version>1.17.1-R0.1-SNAPSHOT</version> <version>1.19-R0.1-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
@@ -1,5 +1,9 @@
package eu.endermite.commandwhitelist.common; package eu.endermite.commandwhitelist.common;
import io.github.thatsmusic99.configurationmaster.api.ConfigFile;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@@ -63,4 +67,31 @@ public class CommandUtil {
return parts[0]; return parts[0];
} }
/**
* Dumps command list to a file
*
* @param serverCommands Commands to dump
* @return True on successful file save
*/
public static boolean dumpAllBukkitCommands(ArrayList<String> serverCommands, File file) {
try {
File parent = new File(file.getParent());
if (!parent.exists())
parent.mkdir();
if (!file.exists())
file.createNewFile();
} catch (IOException e) {
return false;
}
ConfigFile dumpFile = ConfigFile.loadConfig(file);
dumpFile.set("commands", serverCommands);
try {
dumpFile.save();
} catch (IOException e) {
return false;
}
return true;
}
} }
@@ -63,7 +63,7 @@ public class CWCommand {
} }
public enum CommandType { public enum CommandType {
ADD, REMOVE, HELP, RELOAD ADD, REMOVE, HELP, RELOAD, DUMP
} }
public enum ImplementationType { public enum ImplementationType {
@@ -88,6 +88,7 @@ public class CWCommand {
if (adminPerm) { if (adminPerm) {
list.add("add"); list.add("add");
list.add("remove"); list.add("remove");
list.add("dump");
} }
} }
return list; return list;
@@ -100,6 +101,8 @@ public class CWCommand {
list.add("add"); list.add("add");
if ("remove".startsWith(args[0]) && adminPerm) if ("remove".startsWith(args[0]) && adminPerm)
list.add("remove"); list.add("remove");
if ("dump".startsWith(args[0]) && adminPerm)
list.add("dump");
return list; return list;
case 2: case 2:
if (args[0].equalsIgnoreCase("add") || args[0].equalsIgnoreCase("remove")) { if (args[0].equalsIgnoreCase("add") || args[0].equalsIgnoreCase("remove")) {
+1 -1
View File
@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>eu.endermite.commandwhitelist</groupId> <groupId>eu.endermite.commandwhitelist</groupId>
<artifactId>CommandWhitelist</artifactId> <artifactId>CommandWhitelist</artifactId>
<version>2.3.2</version> <version>2.5.0</version>
</parent> </parent>
<artifactId>Velocity</artifactId> <artifactId>Velocity</artifactId>
@@ -22,6 +22,7 @@ import org.slf4j.Logger;
import javax.inject.Inject; import javax.inject.Inject;
import java.io.File; import java.io.File;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.Map; import java.util.Map;
@@ -97,6 +98,10 @@ public class CommandWhitelistVelocity {
return configCache; return configCache;
} }
public static Path getConfigPath() {
return folder;
}
/** /**
* @param player Velocity Player * @param player Velocity Player
* @return commands available to the player * @return commands available to the player
@@ -129,4 +134,8 @@ public class CommandWhitelistVelocity {
return suggestionList; return suggestionList;
} }
public static ArrayList<String> getServerCommands() {
return new ArrayList<>(server.getCommandManager().getAliases());
}
} }
@@ -3,10 +3,12 @@ package eu.endermite.commandwhitelist.velocity.command;
import com.velocitypowered.api.command.CommandSource; import com.velocitypowered.api.command.CommandSource;
import com.velocitypowered.api.command.SimpleCommand; import com.velocitypowered.api.command.SimpleCommand;
import eu.endermite.commandwhitelist.common.CWPermission; import eu.endermite.commandwhitelist.common.CWPermission;
import eu.endermite.commandwhitelist.common.CommandUtil;
import eu.endermite.commandwhitelist.common.commands.CWCommand; import eu.endermite.commandwhitelist.common.commands.CWCommand;
import eu.endermite.commandwhitelist.velocity.CommandWhitelistVelocity; import eu.endermite.commandwhitelist.velocity.CommandWhitelistVelocity;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
@@ -60,6 +62,18 @@ public class VelocityMainCommand implements SimpleCommand {
} else } else
sender.sendMessage(Component.text("/" + label + " remove <group> <command>")); sender.sendMessage(Component.text("/" + label + " remove <group> <command>"));
return; return;
case DUMP:
if (!sender.hasPermission(CWPermission.ADMIN.permission())) {
sender.sendMessage(CWCommand.miniMessage.deserialize(CommandWhitelistVelocity.getConfigCache().prefix + CommandWhitelistVelocity.getConfigCache().no_permission));
return;
}
sender.sendMessage(Component.text("Dumping all available commands to a file..."));
if (CommandUtil.dumpAllBukkitCommands(CommandWhitelistVelocity.getServerCommands(), new File(String.valueOf(CommandWhitelistVelocity.getConfigPath()), "command_dump.yml"))) {
sender.sendMessage(Component.text("Commands dumped to command_dump.yml"));
} else {
sender.sendMessage(Component.text("Failed to save the file."));
}
return;
case HELP: case HELP:
default: default:
sender.sendMessage(CWCommand.helpComponent(label, sender.hasPermission(CWPermission.RELOAD.permission()), sender.hasPermission(CWPermission.ADMIN.permission()))); sender.sendMessage(CWCommand.helpComponent(label, sender.hasPermission(CWPermission.RELOAD.permission()), sender.hasPermission(CWPermission.ADMIN.permission())));
@@ -76,8 +90,15 @@ public class VelocityMainCommand implements SimpleCommand {
CommandSource source = invocation.source(); CommandSource source = invocation.source();
String[] args = invocation.arguments(); String[] args = invocation.arguments();
return CompletableFuture.supplyAsync(() -> { return CompletableFuture.supplyAsync(() -> {
List<String> serverCommands = new ArrayList<>(); List<String> serverCommands = CommandWhitelistVelocity.getServerCommands();
return CWCommand.commandSuggestions(CommandWhitelistVelocity.getConfigCache(), serverCommands, args, source.hasPermission(CWPermission.RELOAD.permission()), source.hasPermission(CWPermission.ADMIN.permission()), CWCommand.ImplementationType.VELOCITY); return CWCommand.commandSuggestions(
CommandWhitelistVelocity.getConfigCache(),
serverCommands,
args,
source.hasPermission(CWPermission.RELOAD.permission()),
source.hasPermission(CWPermission.ADMIN.permission()),
CWCommand.ImplementationType.VELOCITY
);
}); });
} }
} }
+1 -1
View File
@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>eu.endermite.commandwhitelist</groupId> <groupId>eu.endermite.commandwhitelist</groupId>
<artifactId>CommandWhitelist</artifactId> <artifactId>CommandWhitelist</artifactId>
<version>2.3.2</version> <version>2.5.0</version>
</parent> </parent>
<artifactId>Waterfall</artifactId> <artifactId>Waterfall</artifactId>
@@ -11,14 +11,13 @@ import net.kyori.adventure.platform.bungeecord.BungeeAudiences;
import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.plugin.Plugin; import net.md_5.bungee.api.plugin.Plugin;
import org.bstats.bungeecord.Metrics; import org.bstats.bungeecord.Metrics;
import org.bstats.charts.SimplePie; import org.bstats.charts.SimplePie;
import java.io.File; import java.io.File;
import java.util.HashMap; import java.util.*;
import java.util.HashSet;
import java.util.Map;
public final class CommandWhitelistWaterfall extends Plugin { public final class CommandWhitelistWaterfall extends Plugin {
@@ -122,4 +121,12 @@ public final class CommandWhitelistWaterfall extends Plugin {
} }
return commandDeniedMessage; return commandDeniedMessage;
} }
public static ArrayList<String> getServerCommands() {
ArrayList<String> serverCommands = new ArrayList<>();
for (Map.Entry<String, Command> command : CommandWhitelistWaterfall.getPlugin().getProxy().getPluginManager().getCommands()) {
serverCommands.add(command.getValue().getName());
}
return serverCommands;
}
} }
@@ -1,6 +1,7 @@
package eu.endermite.commandwhitelist.waterfall.command; package eu.endermite.commandwhitelist.waterfall.command;
import eu.endermite.commandwhitelist.common.CWPermission; import eu.endermite.commandwhitelist.common.CWPermission;
import eu.endermite.commandwhitelist.common.CommandUtil;
import eu.endermite.commandwhitelist.common.ConfigCache; import eu.endermite.commandwhitelist.common.ConfigCache;
import eu.endermite.commandwhitelist.common.commands.CWCommand; import eu.endermite.commandwhitelist.common.commands.CWCommand;
import eu.endermite.commandwhitelist.waterfall.CommandWhitelistWaterfall; import eu.endermite.commandwhitelist.waterfall.CommandWhitelistWaterfall;
@@ -10,6 +11,7 @@ import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.plugin.Command; import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.plugin.TabExecutor; import net.md_5.bungee.api.plugin.TabExecutor;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -67,6 +69,18 @@ public class BungeeMainCommand extends Command implements TabExecutor {
} else } else
audiences.sender(sender).sendMessage(Component.text("/" + label + " remove <group> <command>")); audiences.sender(sender).sendMessage(Component.text("/" + label + " remove <group> <command>"));
return; return;
case DUMP:
if (!sender.hasPermission(CWPermission.ADMIN.permission())) {
audiences.sender(sender).sendMessage(CWCommand.miniMessage.deserialize(CommandWhitelistWaterfall.getConfigCache().prefix + CommandWhitelistWaterfall.getConfigCache().no_permission));
return;
}
audiences.sender(sender).sendMessage(Component.text("Dumping all available commands to a file..."));
if (CommandUtil.dumpAllBukkitCommands(CommandWhitelistWaterfall.getServerCommands(), new File("plugins/CommandWhitelist/command_dump.yml"))) {
audiences.sender(sender).sendMessage(Component.text("Commands dumped to command_dump.yml"));
} else {
audiences.sender(sender).sendMessage(Component.text("Failed to save the file."));
}
return;
case HELP: case HELP:
default: default:
audiences.sender(sender).sendMessage(CWCommand.helpComponent(label, sender.hasPermission(CWPermission.RELOAD.permission()), sender.hasPermission(CWPermission.ADMIN.permission()))); audiences.sender(sender).sendMessage(CWCommand.helpComponent(label, sender.hasPermission(CWPermission.RELOAD.permission()), sender.hasPermission(CWPermission.ADMIN.permission())));
@@ -80,10 +94,13 @@ public class BungeeMainCommand extends Command implements TabExecutor {
@Override @Override
public Iterable<String> onTabComplete(CommandSender sender, String[] args) { public Iterable<String> onTabComplete(CommandSender sender, String[] args) {
List<String> serverCommands = new ArrayList<>(); return CWCommand.commandSuggestions(
for (Map.Entry<String, Command> command : CommandWhitelistWaterfall.getPlugin().getProxy().getPluginManager().getCommands()) { CommandWhitelistWaterfall.getConfigCache(),
serverCommands.add(command.getValue().getName()); CommandWhitelistWaterfall.getServerCommands(),
} args,
return CWCommand.commandSuggestions(CommandWhitelistWaterfall.getConfigCache(), serverCommands, args, sender.hasPermission(CWPermission.RELOAD.permission()), sender.hasPermission(CWPermission.ADMIN.permission()), CWCommand.ImplementationType.WATERFALL); sender.hasPermission(CWPermission.RELOAD.permission()),
sender.hasPermission(CWPermission.ADMIN.permission()),
CWCommand.ImplementationType.WATERFALL
);
} }
} }
+2 -2
View File
@@ -6,7 +6,7 @@
<groupId>eu.endermite.commandwhitelist</groupId> <groupId>eu.endermite.commandwhitelist</groupId>
<artifactId>CommandWhitelist</artifactId> <artifactId>CommandWhitelist</artifactId>
<version>2.3.2</version> <version>2.5.0</version>
<modules> <modules>
<module>CommandWhitelistCommon</module> <module>CommandWhitelistCommon</module>
<module>CommandWhitelistBukkit</module> <module>CommandWhitelistBukkit</module>
@@ -71,7 +71,7 @@
<dependency> <dependency>
<groupId>net.kyori</groupId> <groupId>net.kyori</groupId>
<artifactId>adventure-api</artifactId> <artifactId>adventure-api</artifactId>
<version>4.10.1</version> <version>4.11.0</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
</dependencies> </dependencies>