mirror of
https://github.com/YouHaveTrouble/CommandWhitelist.git
synced 2026-08-28 00:56:45 +00:00
Validate tab completion requests before exposing command suggestions (#113)
* validate the requested command before exposing argument completions * fix waterfall tab completion filtering * some formatting basic idea formatting wont be bad
This commit is contained in:
+6
-2
@@ -20,7 +20,10 @@ import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public class CommandWhitelistBukkit extends JavaPlugin {
|
||||
@@ -85,7 +88,8 @@ public class CommandWhitelistBukkit extends JavaPlugin {
|
||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||
p.updateCommands();
|
||||
}
|
||||
} catch (Exception ignored) {}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
audiences.sender(sender).sendMessage(CWCommand.miniMessage.deserialize(configCache.prefix + configCache.config_reloaded));
|
||||
});
|
||||
}
|
||||
|
||||
+5
-4
@@ -13,12 +13,13 @@ public class AsyncTabCompleteBlockerListener implements Listener {
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onCommandTabComplete(AsyncTabCompleteEvent event) {
|
||||
if (!(event.getSender() instanceof Player)) return;
|
||||
Player player = (Player) event.getSender();
|
||||
if (!(event.getSender() instanceof Player player)) return;
|
||||
if (player.hasPermission(CWPermission.BYPASS.permission())) return;
|
||||
String buffer = event.getBuffer();
|
||||
if ((buffer.split(" ").length == 1 && !buffer.endsWith(" ")) || !buffer.startsWith("/")) {
|
||||
CommandWhitelistBukkit.getConfigCache().debug("Actively prevented "+event.getSender().getName()+"'s tab completion (sus packet)");
|
||||
int commandEnd = buffer.indexOf(' ');
|
||||
if (commandEnd < 0 || buffer.charAt(0) != '/' || !CommandWhitelistBukkit.getCommands(player)
|
||||
.contains(buffer.substring(1, commandEnd).toLowerCase())) {
|
||||
CommandWhitelistBukkit.getConfigCache().debug("Actively prevented " + event.getSender().getName() + "'s tab completion (sus packet)");
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
+5
-4
@@ -13,12 +13,13 @@ public class TabCompleteBlockerListener implements Listener {
|
||||
|
||||
@EventHandler(priority = EventPriority.NORMAL)
|
||||
public void onCommandTabComplete(TabCompleteEvent event) {
|
||||
if (!(event.getSender() instanceof Player)) return;
|
||||
Player player = (Player) event.getSender();
|
||||
if (!(event.getSender() instanceof Player player)) return;
|
||||
if (player.hasPermission(CWPermission.BYPASS.permission())) return;
|
||||
String buffer = event.getBuffer();
|
||||
if ((buffer.split(" ").length == 1 && !buffer.endsWith(" ")) || !buffer.startsWith("/")) {
|
||||
CommandWhitelistBukkit.getConfigCache().debug("Actively prevented "+event.getSender().getName()+"'s tab completion (sus packet)");
|
||||
int commandEnd = buffer.indexOf(' ');
|
||||
if (commandEnd < 0 || buffer.charAt(0) != '/' || !CommandWhitelistBukkit.getCommands(player)
|
||||
.contains(buffer.substring(1, commandEnd).toLowerCase())) {
|
||||
CommandWhitelistBukkit.getConfigCache().debug("Actively prevented " + event.getSender().getName() + "'s tab completion (sus packet)");
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user