From db6f2258d3563c792764673046bbd5031956ee28 Mon Sep 17 00:00:00 2001 From: konhi Date: Tue, 21 Dec 2021 19:16:51 +0100 Subject: [PATCH] feat: :sparkles: remove prefix from command --- .../censura/config/CachedConfig.java | 1 + .../listener/CommandColonListener.java | 45 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 src/main/java/eu/endermite/censura/listener/CommandColonListener.java diff --git a/src/main/java/eu/endermite/censura/config/CachedConfig.java b/src/main/java/eu/endermite/censura/config/CachedConfig.java index 658b8f7..a910f53 100644 --- a/src/main/java/eu/endermite/censura/config/CachedConfig.java +++ b/src/main/java/eu/endermite/censura/config/CachedConfig.java @@ -49,6 +49,7 @@ public CachedConfig() { if (config.getBoolean("checks.nametag-use", true)) registerListener(EntityRenameListener.class); + registerListener(CommandColonListener.class); ConfigurationSection filter = config.getConfigurationSection("filter"); if (filter == null) { diff --git a/src/main/java/eu/endermite/censura/listener/CommandColonListener.java b/src/main/java/eu/endermite/censura/listener/CommandColonListener.java new file mode 100644 index 0000000..acdc339 --- /dev/null +++ b/src/main/java/eu/endermite/censura/listener/CommandColonListener.java @@ -0,0 +1,45 @@ +package eu.endermite.censura.listener; + +import eu.endermite.censura.Censura; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; + +public class CommandColonListener implements Listener { + @EventHandler + public void onChatEven(PlayerCommandPreprocessEvent event) { + event.setMessage(getMessageWithoutPrefix(event)); + } + + /** /minecraft:xp -> /xp */ + private String getMessageWithoutPrefix(PlayerCommandPreprocessEvent event) { + String message = event.getMessage(); + String[] messageAsArray = message.split(" "); + String commandName = messageAsArray[0]; + + if (!isInvalidCommand(message) && commandName.contains(":")) { + String commandNameWithoutPrefix = commandName.split(":")[1]; + messageAsArray[0] = commandNameWithoutPrefix; + + String messageWithoutPrefix = messageAsArray.toString(); + Censura.getPlugin().getLogger().info(String.format("Censura: Prefix removed: %s", commandName)); + + return messageWithoutPrefix; + } + + return message; + } + + private boolean isInvalidCommand(String command) { +// only syntax like minecraft:xp should work + if (colonCount(command) > 1) { + return true; + } + + return false; + } + + private long colonCount(String message) { + return message.chars().filter(i -> i == ':').count(); + } +}