From 6f7741e82c1e6e1354763976c23a477c34b697be Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 17 Sep 2025 21:33:27 +0200 Subject: [PATCH] fancynpcs: Check if value contains blocked commands before adding action --- plugins/fancynpcs/CHANGELOG.md | 2 +- plugins/fancynpcs/VERSION | 2 +- .../fancynpcs/commands/npc/ActionCMD.java | 20 +++++++++++++++++++ .../commands/npc/DisplayNameCMD.java | 14 ++++++------- 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/plugins/fancynpcs/CHANGELOG.md b/plugins/fancynpcs/CHANGELOG.md index e34daf46..e8aadb2f 100644 --- a/plugins/fancynpcs/CHANGELOG.md +++ b/plugins/fancynpcs/CHANGELOG.md @@ -3,4 +3,4 @@ - Improved logging - Fixed various bugs for the player-npcs fflag - Added an optional flag to disable arm swinging in Npc#update -- Added HologramManager#isLoaded method \ No newline at end of file +- Added NpcManager#isLoaded method \ No newline at end of file diff --git a/plugins/fancynpcs/VERSION b/plugins/fancynpcs/VERSION index 12c34e91..f8d47a6c 100644 --- a/plugins/fancynpcs/VERSION +++ b/plugins/fancynpcs/VERSION @@ -1 +1 @@ -2.7.1.295 \ No newline at end of file +2.7.1.296 \ No newline at end of file diff --git a/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/commands/npc/ActionCMD.java b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/commands/npc/ActionCMD.java index db7cef1d..d59f83f1 100644 --- a/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/commands/npc/ActionCMD.java +++ b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/commands/npc/ActionCMD.java @@ -38,6 +38,11 @@ public enum ActionCMD { return; } + if (value != null && DisplayNameCMD.INSTANCE.hasBlockedCommands(value)) { + translator.translate("command_input_contains_blocked_command").send(sender); + return; + } + if (actionType.requiresValue() && (value == null || value.isEmpty())) { translator .translate("npc_action_requires_value") @@ -73,6 +78,11 @@ public enum ActionCMD { return; } + if (value != null && DisplayNameCMD.INSTANCE.hasBlockedCommands(value)) { + translator.translate("command_input_contains_blocked_command").send(sender); + return; + } + if (actionType.requiresValue() && (value == null || value.isEmpty())) { translator .translate("npc_action_requires_value") @@ -110,6 +120,11 @@ public enum ActionCMD { return; } + if (value != null && DisplayNameCMD.INSTANCE.hasBlockedCommands(value)) { + translator.translate("command_input_contains_blocked_command").send(sender); + return; + } + if (actionType.requiresValue() && (value == null || value.isEmpty())) { translator .translate("npc_action_requires_value") @@ -147,6 +162,11 @@ public enum ActionCMD { return; } + if (value != null && DisplayNameCMD.INSTANCE.hasBlockedCommands(value)) { + translator.translate("command_input_contains_blocked_command").send(sender); + return; + } + if (actionType.requiresValue() && (value == null || value.isEmpty())) { translator .translate("npc_action_requires_value") diff --git a/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/commands/npc/DisplayNameCMD.java b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/commands/npc/DisplayNameCMD.java index 20e896ae..2cc326e7 100644 --- a/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/commands/npc/DisplayNameCMD.java +++ b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/commands/npc/DisplayNameCMD.java @@ -4,7 +4,6 @@ import de.oliver.fancylib.translations.Translator; import de.oliver.fancynpcs.FancyNpcs; import de.oliver.fancynpcs.api.Npc; import de.oliver.fancynpcs.api.events.NpcModifyEvent; -import org.lushplugins.chatcolorhandler.ModernChatColorHandler; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.ComponentIteratorType; import net.kyori.adventure.text.event.ClickEvent; @@ -16,19 +15,18 @@ import org.incendo.cloud.annotations.Permission; import org.incendo.cloud.annotations.suggestion.Suggestions; import org.incendo.cloud.context.CommandContext; import org.incendo.cloud.context.CommandInput; +import org.jetbrains.annotations.NotNull; +import org.lushplugins.chatcolorhandler.ModernChatColorHandler; import java.util.List; import java.util.stream.StreamSupport; -import org.jetbrains.annotations.NotNull; - public enum DisplayNameCMD { INSTANCE; // SINGLETON - private final Translator translator = FancyNpcs.getInstance().getTranslator(); - // Storing in a static variable to avoid re-creating the array each time suggestion is requested. private static final List NONE_SUGGESTIONS = List.of("@none"); + private final Translator translator = FancyNpcs.getInstance().getTranslator(); @Command("npc displayname ") @Permission("fancynpcs.command.npc.displayname") @@ -66,8 +64,10 @@ public enum DisplayNameCMD { /* UTILITY METHODS */ - /** Returns {@code true} if specified component contains blocked command, {@code false} otherwise. */ - private boolean hasBlockedCommands(final @NotNull String message) { + /** + * Returns {@code true} if specified component contains blocked command, {@code false} otherwise. + */ + public boolean hasBlockedCommands(final @NotNull String message) { // Converting message to a Component. final Component component = ModernChatColorHandler.translate(message); // Getting the list of all blocked commands.