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
+11
View File
@@ -62,6 +62,10 @@
<id>sonatype</id> <id>sonatype</id>
<url>https://oss.sonatype.org/content/groups/public/</url> <url>https://oss.sonatype.org/content/groups/public/</url>
</repository> </repository>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories> </repositories>
<dependencies> <dependencies>
@@ -77,5 +81,12 @@
<version>1.15-SNAPSHOT</version> <version>1.15-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency>
<groupId>com.github.PaperMC</groupId>
<artifactId>Waterfall</artifactId>
<version>1.16</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/waterfall-366.jar</systemPath>
</dependency>
</dependencies> </dependencies>
</project> </project>
@@ -1,35 +1,42 @@
package eu.endermite.commandwhitelist; package eu.endermite.commandwhitelist.bungee;
import com.google.common.io.ByteStreams; import com.google.common.io.ByteStreams;
import eu.endermite.commandwhitelist.config.BungeeConfigCache; import eu.endermite.commandwhitelist.bungee.config.BungeeConfigCache;
import eu.endermite.commandwhitelist.listeners.BungeeChatEventListener; 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.api.plugin.Plugin;
import net.md_5.bungee.config.Configuration; import net.md_5.bungee.config.Configuration;
import net.md_5.bungee.config.ConfigurationProvider; import net.md_5.bungee.config.ConfigurationProvider;
import net.md_5.bungee.config.YamlConfiguration; import net.md_5.bungee.config.YamlConfiguration;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
public final class CommandWhitelistBungee extends Plugin { public final class CommandWhitelistBungee extends Plugin {
private static eu.endermite.commandwhitelist.CommandWhitelistBungee plugin; private static CommandWhitelistBungee plugin;
private static BungeeConfigCache configCache; private static BungeeConfigCache configCache;
@Override @Override
public void onEnable() { public void onEnable() {
plugin = this; plugin = this;
getLogger().info("Running on "+ ChatColor.DARK_AQUA+getProxy().getName());
loadConfig(); loadConfig();
this.getProxy().getPluginManager().registerListener(this, new BungeeChatEventListener()); 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; return plugin;
} }
@@ -1,4 +1,4 @@
package eu.endermite.commandwhitelist.config; package eu.endermite.commandwhitelist.bungee.config;
import net.md_5.bungee.config.Configuration; 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.ChatColor;
import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.event.EventHandler; import net.md_5.bungee.event.EventHandler;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
public class BungeeChatEventListener implements Listener { public class BungeeChatEventListener implements Listener {
@EventHandler @EventHandler
public void onChatEvent(net.md_5.bungee.api.event.ChatEvent event) { public void onChatEvent(net.md_5.bungee.api.event.ChatEvent event) {
@@ -42,13 +40,7 @@ public class BungeeChatEventListener implements Listener {
event.setCancelled(true); event.setCancelled(true);
player.sendMessage(ChatColor.translateAlternateColorCodes('&', CommandWhitelistBungee.getConfigCache().getPrefix() + CommandWhitelistBungee.getConfigCache().getCommandDenied())); 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.spigot.command.MainCommand;
import eu.endermite.commandwhitelist.config.ConfigCache; import eu.endermite.commandwhitelist.spigot.config.ConfigCache;
import eu.endermite.commandwhitelist.listeners.PlayerCommandPreProcessListener; import eu.endermite.commandwhitelist.spigot.listeners.PlayerCommandPreProcessListener;
import eu.endermite.commandwhitelist.listeners.PlayerCommandSendListener; import eu.endermite.commandwhitelist.spigot.listeners.PlayerCommandSendListener;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender; 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.ChatColor;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; 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 org.bukkit.configuration.Configuration;
import java.util.HashMap; 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.ChatColor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; 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.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
+1 -1
View File
@@ -1,4 +1,4 @@
name: CommandWhitelistBungee name: CommandWhitelistBungee
version: ${project.version} version: ${project.version}
main: eu.endermite.commandwhitelist.CommandWhitelistBungee main: eu.endermite.commandwhitelist.bungee.CommandWhitelistBungee
author: YouHaveTrouble author: YouHaveTrouble
+1 -1
View File
@@ -1,6 +1,6 @@
name: CommandWhitelist name: CommandWhitelist
version: ${project.version} version: ${project.version}
main: eu.endermite.commandwhitelist.CommandWhitelist main: eu.endermite.commandwhitelist.spigot.CommandWhitelist
api-version: 1.13 api-version: 1.13
authors: [YouHaveTrouble] authors: [YouHaveTrouble]
description: Control what commands players can use description: Control what commands players can use