bungee tabcomplete blocker for waterfall

This commit is contained in:
youhavetrouble
2020-08-01 01:14:29 +02:00
parent 6d2eb27ef3
commit 55ec366804
12 changed files with 85 additions and 34 deletions
@@ -1,35 +1,42 @@
package eu.endermite.commandwhitelist;
package eu.endermite.commandwhitelist.bungee;
import com.google.common.io.ByteStreams;
import eu.endermite.commandwhitelist.config.BungeeConfigCache;
import eu.endermite.commandwhitelist.listeners.BungeeChatEventListener;
import eu.endermite.commandwhitelist.bungee.config.BungeeConfigCache;
import eu.endermite.commandwhitelist.bungee.listeners.BungeeChatEventListener;
import eu.endermite.commandwhitelist.bungee.listeners.BungeeTabCompleteListener;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.config.Configuration;
import net.md_5.bungee.config.ConfigurationProvider;
import net.md_5.bungee.config.YamlConfiguration;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
public final class CommandWhitelistBungee extends Plugin {
private static eu.endermite.commandwhitelist.CommandWhitelistBungee plugin;
private static CommandWhitelistBungee plugin;
private static BungeeConfigCache configCache;
@Override
public void onEnable() {
plugin = this;
getLogger().info("Running on "+ ChatColor.DARK_AQUA+getProxy().getName());
loadConfig();
this.getProxy().getPluginManager().registerListener(this, new BungeeChatEventListener());
if (this.getProxy().getName().contains("Waterfall") || getProxy().getName().contains("FlameCord")) {
this.getProxy().getPluginManager().registerListener(this, new BungeeTabCompleteListener());
} else {
getLogger().info("Bungee tab completion requires Waterfall, FlameCord or other Waterfall fork.");
}
}
public static eu.endermite.commandwhitelist.CommandWhitelistBungee getPlugin() {
public static CommandWhitelistBungee getPlugin() {
return plugin;
}
@@ -1,4 +1,4 @@
package eu.endermite.commandwhitelist.config;
package eu.endermite.commandwhitelist.bungee.config;
import net.md_5.bungee.config.Configuration;
@@ -1,17 +1,15 @@
package eu.endermite.commandwhitelist.listeners;
package eu.endermite.commandwhitelist.bungee.listeners;
import eu.endermite.commandwhitelist.CommandWhitelistBungee;
import eu.endermite.commandwhitelist.bungee.CommandWhitelistBungee;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.event.EventHandler;
import java.util.List;
import java.util.Map;
public class BungeeChatEventListener implements Listener {
@EventHandler
public void onChatEvent(net.md_5.bungee.api.event.ChatEvent event) {
@@ -42,13 +40,7 @@ public class BungeeChatEventListener implements Listener {
event.setCancelled(true);
player.sendMessage(ChatColor.translateAlternateColorCodes('&', CommandWhitelistBungee.getConfigCache().getPrefix() + CommandWhitelistBungee.getConfigCache().getCommandDenied()));
}
}
}
}
}
@@ -0,0 +1,41 @@
package eu.endermite.commandwhitelist.bungee.listeners;
import eu.endermite.commandwhitelist.bungee.CommandWhitelistBungee;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.event.EventHandler;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BungeeTabCompleteListener implements Listener {
@EventHandler
public void onProxyDefineCommandsEvent(io.github.waterfallmc.waterfall.event.ProxyDefineCommandsEvent event) {
if (event.getReceiver() instanceof ProxiedPlayer) {
ProxiedPlayer player = (ProxiedPlayer) event.getReceiver();
List<String> commandList = new ArrayList<>();
for (Map.Entry<String, List<String>> entry : CommandWhitelistBungee.getConfigCache().getPermList().entrySet()) {
if (player.hasPermission("commandwhitelist.commands."+entry.getKey())) {
commandList.addAll(entry.getValue());
}
}
HashMap<String, Command> commandHashMap = new HashMap<>();
for (String s : commandList) {
for (Map.Entry<String, Command> command : CommandWhitelistBungee.getPlugin().getProxy().getPluginManager().getCommands()) {
if (s.equalsIgnoreCase(command.getValue().getName())) {
commandHashMap.put(command.getKey(), command.getValue());
}
}
}
event.getCommands().values().removeIf((cmd) -> !commandHashMap.containsValue(cmd));
}
}
}
@@ -1,9 +1,9 @@
package eu.endermite.commandwhitelist;
package eu.endermite.commandwhitelist.spigot;
import eu.endermite.commandwhitelist.command.MainCommand;
import eu.endermite.commandwhitelist.config.ConfigCache;
import eu.endermite.commandwhitelist.listeners.PlayerCommandPreProcessListener;
import eu.endermite.commandwhitelist.listeners.PlayerCommandSendListener;
import eu.endermite.commandwhitelist.spigot.command.MainCommand;
import eu.endermite.commandwhitelist.spigot.config.ConfigCache;
import eu.endermite.commandwhitelist.spigot.listeners.PlayerCommandPreProcessListener;
import eu.endermite.commandwhitelist.spigot.listeners.PlayerCommandSendListener;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
@@ -1,6 +1,6 @@
package eu.endermite.commandwhitelist.command;
package eu.endermite.commandwhitelist.spigot.command;
import eu.endermite.commandwhitelist.CommandWhitelist;
import eu.endermite.commandwhitelist.spigot.CommandWhitelist;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@@ -1,6 +1,6 @@
package eu.endermite.commandwhitelist.config;
package eu.endermite.commandwhitelist.spigot.config;
import eu.endermite.commandwhitelist.CommandWhitelist;
import eu.endermite.commandwhitelist.spigot.CommandWhitelist;
import org.bukkit.configuration.Configuration;
import java.util.HashMap;
@@ -1,6 +1,6 @@
package eu.endermite.commandwhitelist.listeners;
package eu.endermite.commandwhitelist.spigot.listeners;
import eu.endermite.commandwhitelist.CommandWhitelist;
import eu.endermite.commandwhitelist.spigot.CommandWhitelist;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@@ -1,6 +1,6 @@
package eu.endermite.commandwhitelist.listeners;
package eu.endermite.commandwhitelist.spigot.listeners;
import eu.endermite.commandwhitelist.CommandWhitelist;
import eu.endermite.commandwhitelist.spigot.CommandWhitelist;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
+1 -1
View File
@@ -1,4 +1,4 @@
name: CommandWhitelistBungee
version: ${project.version}
main: eu.endermite.commandwhitelist.CommandWhitelistBungee
main: eu.endermite.commandwhitelist.bungee.CommandWhitelistBungee
author: YouHaveTrouble
+1 -1
View File
@@ -1,6 +1,6 @@
name: CommandWhitelist
version: ${project.version}
main: eu.endermite.commandwhitelist.CommandWhitelist
main: eu.endermite.commandwhitelist.spigot.CommandWhitelist
api-version: 1.13
authors: [YouHaveTrouble]
description: Control what commands players can use