Add config for plugins command hijack

This commit is contained in:
Frank van der Heijden 2020-06-02 23:44:04 +02:00
parent 97f1c1e6b8
commit 1afa28f67c
No known key found for this signature in database
GPG key ID: 26DA56488D314D11
2 changed files with 25 additions and 5 deletions

View file

@ -7,11 +7,12 @@ import net.frankheijden.serverutils.config.Messenger;
import net.frankheijden.serverutils.reflection.*;
import org.bukkit.Bukkit;
import org.bukkit.command.*;
import org.bukkit.command.defaults.PluginsCommand;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
import java.util.Map;
import java.util.stream.Collectors;
@ -20,6 +21,7 @@ public class ServerUtils extends JavaPlugin implements CommandExecutor {
private static ServerUtils instance;
private PaperCommandManager commandManager;
private CommandPlugins commandPlugins;
public static ServerUtils getInstance() {
return instance;
@ -30,11 +32,10 @@ public class ServerUtils extends JavaPlugin implements CommandExecutor {
super.onEnable();
instance = this;
this.removeCommands("pl", "plugins");
commandManager = new PaperCommandManager(this);
this.commandManager = new PaperCommandManager(this);
commandManager.registerCommand(new CommandServerUtils());
commandManager.registerCommand(new CommandPlugins());
this.commandPlugins = null;
commandManager.getCommandCompletions().registerAsyncCompletion("plugins", context -> Arrays.stream(Bukkit.getPluginManager().getPlugins())
.map(Plugin::getName)
.collect(Collectors.toList()));
@ -48,6 +49,7 @@ public class ServerUtils extends JavaPlugin implements CommandExecutor {
@Override
public void onDisable() {
super.onDisable();
restoreBukkitPluginCommand();
}
private void removeCommands(String... commands) {
@ -64,8 +66,24 @@ public class ServerUtils extends JavaPlugin implements CommandExecutor {
}
}
public void restoreBukkitPluginCommand() {
RCraftServer.getCommandMap().register("bukkit", new PluginsCommand("plugins"));
}
public void reload() {
if (commandPlugins != null) {
commandManager.unregisterCommand(commandPlugins);
restoreBukkitPluginCommand();
}
new Messenger(copyResourceIfNotExists("messages.yml"));
YamlConfiguration config = YamlConfiguration.loadConfiguration(copyResourceIfNotExists("config.yml"));
if (!config.getBoolean("settings.disable-plugins-command", false)) {
this.removeCommands("pl", "plugins");
this.commandPlugins = new CommandPlugins();
commandManager.registerCommand(commandPlugins);
}
}
public PaperCommandManager getCommandManager() {

View file

@ -0,0 +1,2 @@
settings:
disable-plugins-command: false