mirror of
https://github.com/Freezy-Studios/BlazeSMP.git
synced 2025-04-22 04:44:04 +02:00
Blocked tabcomplete for some commands!
Fixed message bug!
This commit is contained in:
parent
45aaed9112
commit
8fe081424f
2 changed files with 212 additions and 182 deletions
|
@ -1,5 +1,6 @@
|
||||||
package me.freezy.plugins.papermc.blazesmp.listener;
|
package me.freezy.plugins.papermc.blazesmp.listener;
|
||||||
|
|
||||||
|
import com.destroystokyo.paper.event.server.AsyncTabCompleteEvent;
|
||||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
@ -8,193 +9,219 @@ import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.LinkedHashSet;
|
import java.util.LinkedHashSet;
|
||||||
import java.util.List;
|
import java.util.Set;
|
||||||
|
|
||||||
public class PlayerCommandBlockerListener implements Listener {
|
public class PlayerCommandBlockerListener implements Listener {
|
||||||
private final LinkedHashSet<String> blockedCommands = new LinkedHashSet<>(Arrays.asList(
|
private final Set<String> blockedCommands = new LinkedHashSet<>(Arrays.asList(
|
||||||
"/bukkit:?",
|
"/bukkit:?",
|
||||||
"/?",
|
"/?",
|
||||||
"/bukkit:about",
|
"/bukkit:about",
|
||||||
"/about",
|
"/about",
|
||||||
"/bukkit:help",
|
"/bukkit:help",
|
||||||
"/help",
|
"/help",
|
||||||
"/bukkit:pl",
|
"/bukkit:pl",
|
||||||
"/pl",
|
"/pl",
|
||||||
"/bukkit:plugins",
|
"/bukkit:plugins",
|
||||||
"/plugins",
|
"/plugins",
|
||||||
"/bukkit:reload",
|
"/bukkit:reload",
|
||||||
"/reload",
|
"/reload",
|
||||||
"/bukkit:rl",
|
"/bukkit:rl",
|
||||||
"/rl",
|
"/rl",
|
||||||
"/bukkit:timings",
|
"/bukkit:timings",
|
||||||
"/timings",
|
"/timings",
|
||||||
"/bukkit:ver",
|
"/bukkit:ver",
|
||||||
"/ver",
|
"/ver",
|
||||||
"/bukkit:version",
|
"/bukkit:version",
|
||||||
"/version",
|
"/version",
|
||||||
"/paper:callback",
|
"/paper:callback",
|
||||||
"/callback",
|
"/callback",
|
||||||
"/paper:mspt",
|
"/paper:mspt",
|
||||||
"/mspt",
|
"/mspt",
|
||||||
"/paper:paper",
|
"/paper:paper",
|
||||||
"/paper",
|
"/paper",
|
||||||
"/paper:spark",
|
"/paper:spark",
|
||||||
"/spark",
|
"/spark",
|
||||||
"/minecraft:advancement",
|
"/minecraft:advancement",
|
||||||
"/advancement",
|
"/advancement",
|
||||||
"/minecraft:attribute",
|
"/minecraft:attribute",
|
||||||
"/attribute",
|
"/attribute",
|
||||||
"/minecraft:ban",
|
"/minecraft:ban",
|
||||||
"/ban",
|
"/ban",
|
||||||
"/minecraft:ban-ip",
|
"/minecraft:ban-ip",
|
||||||
"/ban-ip",
|
"/ban-ip",
|
||||||
"/minecraft:banlist",
|
"/minecraft:banlist",
|
||||||
"/banlist",
|
"/banlist",
|
||||||
"/minecraft:bossbar",
|
"/minecraft:bossbar",
|
||||||
"/bossbar",
|
"/bossbar",
|
||||||
"/minecraft:clear",
|
"/minecraft:clear",
|
||||||
"/clear",
|
"/clear",
|
||||||
"/minecraft:clone",
|
"/minecraft:clone",
|
||||||
"/clone",
|
"/clone",
|
||||||
"/minecraft:damage",
|
"/minecraft:damage",
|
||||||
"/damage",
|
"/damage",
|
||||||
"/minecraft:data",
|
"/minecraft:data",
|
||||||
"/data",
|
"/data",
|
||||||
"/minecraft:datapack",
|
"/minecraft:datapack",
|
||||||
"/datapack",
|
"/datapack",
|
||||||
"/minecraft:difficulty",
|
"/minecraft:difficulty",
|
||||||
"/difficulty",
|
"/difficulty",
|
||||||
"/minecraft:effect",
|
"/minecraft:effect",
|
||||||
"/effect",
|
"/effect",
|
||||||
"/minecraft:enchant",
|
"/minecraft:enchant",
|
||||||
"/enchant",
|
"/enchant",
|
||||||
"/minecraft:execute",
|
"/minecraft:execute",
|
||||||
"/execute",
|
"/execute",
|
||||||
"/minecraft:experience",
|
"/minecraft:experience",
|
||||||
"/experience",
|
"/experience",
|
||||||
"/minecraft:fill",
|
"/minecraft:fill",
|
||||||
"/fill",
|
"/fill",
|
||||||
"/minecraft:fillbiome",
|
"/minecraft:fillbiome",
|
||||||
"/fillbiome",
|
"/fillbiome",
|
||||||
"/minecraft:foreload",
|
"/minecraft:foreload",
|
||||||
"/foreload",
|
"/foreload",
|
||||||
"/minecraft:gamerule",
|
"/minecraft:gamerule",
|
||||||
"/gamerule",
|
"/gamerule",
|
||||||
"/minecraft:give",
|
"/minecraft:give",
|
||||||
"/give",
|
"/give",
|
||||||
"/minecraft:help",
|
"/minecraft:help",
|
||||||
"/help",
|
"/help",
|
||||||
"/minecraft:item",
|
"/minecraft:item",
|
||||||
"/item",
|
"/item",
|
||||||
"/minecraft:jfr",
|
"/minecraft:jfr",
|
||||||
"/jfr",
|
"/jfr",
|
||||||
"/minecraft:kick",
|
"/minecraft:kick",
|
||||||
"/kick",
|
"/kick",
|
||||||
"/minecraft:kill",
|
"/minecraft:kill",
|
||||||
"/kill",
|
"/kill",
|
||||||
"/minecraft:list",
|
"/minecraft:list",
|
||||||
"/list",
|
"/list",
|
||||||
"/minecraft:locate",
|
"/minecraft:locate",
|
||||||
"/locate",
|
"/locate",
|
||||||
"/minecraft:loot",
|
"/minecraft:loot",
|
||||||
"/loot",
|
"/loot",
|
||||||
"/minecraft:me",
|
"/minecraft:me",
|
||||||
"/me",
|
"/me",
|
||||||
"/minecraft:op",
|
"/minecraft:op",
|
||||||
"/op",
|
"/op",
|
||||||
"/minecraft:pardon",
|
"/minecraft:pardon",
|
||||||
"/pardon",
|
"/pardon",
|
||||||
"/minecraft:pardon-ip",
|
"/minecraft:pardon-ip",
|
||||||
"/pardon-ip",
|
"/pardon-ip",
|
||||||
"/minecraft:particle",
|
"/minecraft:particle",
|
||||||
"/particle",
|
"/particle",
|
||||||
"/minecraft:perf",
|
"/minecraft:perf",
|
||||||
"/perf",
|
"/perf",
|
||||||
"/minecraft:place",
|
"/minecraft:place",
|
||||||
"/place",
|
"/place",
|
||||||
"/minecraft:playsound",
|
"/minecraft:playsound",
|
||||||
"/playsound",
|
"/playsound",
|
||||||
"/minecraft:random",
|
"/minecraft:random",
|
||||||
"/random",
|
"/random",
|
||||||
"/minecraft:recipe",
|
"/minecraft:recipe",
|
||||||
"/recipe",
|
"/recipe",
|
||||||
"/minecraft:reload",
|
"/minecraft:reload",
|
||||||
"/reload",
|
"/reload",
|
||||||
"/minecraft:ride",
|
"/minecraft:ride",
|
||||||
"/ride",
|
"/ride",
|
||||||
"/minecraft:rotate",
|
"/minecraft:rotate",
|
||||||
"/rotate",
|
"/rotate",
|
||||||
"/minecraft:save-all",
|
"/minecraft:save-all",
|
||||||
"/save-all",
|
"/save-all",
|
||||||
"/minecraft:save-off",
|
"/minecraft:save-off",
|
||||||
"/save-off",
|
"/save-off",
|
||||||
"/minecraft:save-on",
|
"/minecraft:save-on",
|
||||||
"/save-on",
|
"/save-on",
|
||||||
"/minecraft:say",
|
"/minecraft:say",
|
||||||
"/say",
|
"/say",
|
||||||
"/minecraft:schedule",
|
"/minecraft:schedule",
|
||||||
"/schedule",
|
"/schedule",
|
||||||
"/minecraft:scoreboard",
|
"/minecraft:scoreboard",
|
||||||
"/scoreboard",
|
"/scoreboard",
|
||||||
"/minecraft:seed",
|
"/minecraft:seed",
|
||||||
"/seed",
|
"/seed",
|
||||||
"/minecraft:setblock",
|
"/minecraft:setblock",
|
||||||
"/setblock",
|
"/setblock",
|
||||||
"/minecraft:setidletimeout",
|
"/minecraft:setidletimeout",
|
||||||
"/setidletimeout",
|
"/setidletimeout",
|
||||||
"/minecraft:setworldspawn",
|
"/minecraft:setworldspawn",
|
||||||
"/setworldspawn",
|
"/setworldspawn",
|
||||||
"/minecraft:spawnpoint",
|
"/minecraft:spawnpoint",
|
||||||
"/spawnpoint",
|
"/spawnpoint",
|
||||||
"/minecraft:spectate",
|
"/minecraft:spectate",
|
||||||
"/spectate",
|
"/spectate",
|
||||||
"/minecraft:tag",
|
"/minecraft:tag",
|
||||||
"/tag",
|
"/tag",
|
||||||
"/minecraft:team",
|
"/minecraft:team",
|
||||||
"/team",
|
"/team",
|
||||||
"/minecraft:teammsg",
|
"/minecraft:teammsg",
|
||||||
"/teammsg",
|
"/teammsg",
|
||||||
"/minecraft:teleport",
|
"/minecraft:teleport",
|
||||||
"/teleport",
|
"/teleport",
|
||||||
"/minecraft:tellraw",
|
"/minecraft:tellraw",
|
||||||
"/tellraw",
|
"/tellraw",
|
||||||
"/minecraft:tick",
|
"/minecraft:tick",
|
||||||
"/tick",
|
"/tick",
|
||||||
"/minecraft:time",
|
"/minecraft:time",
|
||||||
"/time",
|
"/time",
|
||||||
"/minecraft:title",
|
"/minecraft:title",
|
||||||
"/title",
|
"/title",
|
||||||
"/minecraft:tm",
|
"/minecraft:tm",
|
||||||
"/tm",
|
"/tm",
|
||||||
"/minecraft:tp",
|
"/minecraft:tp",
|
||||||
"/tp",
|
"/tp",
|
||||||
"/minecraft:transfer",
|
"/minecraft:transfer",
|
||||||
"/transfer",
|
"/transfer",
|
||||||
"/minecraft:trigger",
|
"/minecraft:trigger",
|
||||||
"/trigger",
|
"/trigger",
|
||||||
"/minecraft:weather",
|
"/minecraft:weather",
|
||||||
"/weather",
|
"/weather",
|
||||||
"/minecraft:whitelist",
|
"/minecraft:whitelist",
|
||||||
"/whitelist",
|
"/whitelist",
|
||||||
"/minecraft:worldborder",
|
"/minecraft:worldborder",
|
||||||
"/worldborder",
|
"/worldborder",
|
||||||
"/minecraft:xp",
|
"/minecraft:xp",
|
||||||
"/xp",
|
"/xp",
|
||||||
"/icanhasbukkit"
|
"/icanhasbukkit"
|
||||||
));
|
));
|
||||||
@EventHandler
|
|
||||||
public void onPlayerCommandPreproccess(PlayerCommandPreprocessEvent event) {
|
|
||||||
Player player = event.getPlayer();
|
|
||||||
String message = event.getMessage();
|
|
||||||
|
|
||||||
if (!player.isOp()) {
|
private boolean isBlocked(String input) {
|
||||||
for (String blockedCommand : blockedCommands) {
|
String normalized = input.toLowerCase().trim();
|
||||||
if (message.matches(blockedCommand)) {
|
for (String blocked : blockedCommands) {
|
||||||
event.setCancelled(true);
|
blocked = blocked.toLowerCase().trim();
|
||||||
player.sendMessage(MiniMessage.miniMessage().deserialize("<red>Unkown or incomplete command, see below for error\n<u>%s</u><i><--[HERE]</i>".formatted(blockedCommand)));
|
if (normalized.equals(blocked) || normalized.startsWith(blocked + " ")) {
|
||||||
return;
|
return true;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
if (player.isOp()) return; // OPs werden nicht blockiert
|
||||||
|
|
||||||
|
String message = event.getMessage();
|
||||||
|
if (isBlocked(message)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
// Zeige den blockierten Befehl als Hinweis (hier der erste Teil der Nachricht)
|
||||||
|
String blockedPart = message.split(" ")[0];
|
||||||
|
player.sendMessage(MiniMessage.miniMessage().deserialize(
|
||||||
|
"<red>Unknown or incomplete command, see below for error\n<u>" + blockedPart + "</u><i> <--[HERE]</i>"
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onTabComplete(AsyncTabCompleteEvent event) {
|
||||||
|
Player player = (Player) event.getSender();
|
||||||
|
if (player.isOp()) return; // OPs erhalten weiterhin Tab-Vorschläge
|
||||||
|
|
||||||
|
String buffer = event.getBuffer();
|
||||||
|
if (isBlocked(buffer)) {
|
||||||
|
// Alle Tab-Vorschläge entfernen und das Event abbrechen,
|
||||||
|
// wenn der eingegebene Befehl blockiert ist.
|
||||||
|
event.getCompletions().clear();
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package me.freezy.plugins.papermc.blazesmp.listener;
|
package me.freezy.plugins.papermc.blazesmp.listener;
|
||||||
|
|
||||||
import me.freezy.plugins.papermc.blazesmp.manager.PlayerManager;
|
import me.freezy.plugins.papermc.blazesmp.manager.PlayerManager;
|
||||||
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
@ -11,5 +12,7 @@ public class PlayerJoinListener implements Listener {
|
||||||
public void onJoin(PlayerJoinEvent event) {
|
public void onJoin(PlayerJoinEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
new PlayerManager().setPlayerTeam(player);
|
new PlayerManager().setPlayerTeam(player);
|
||||||
|
|
||||||
|
event.joinMessage(MiniMessage.miniMessage().deserialize("<gray>[<green>+</green>]</gray> <reset>").append(player.teamDisplayName()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue