mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2025-12-31 12:56:29 +00:00
Update Configurable unknown command message patch to follow the vanilla
* Add <message> to be more configurable * Fix for custom brigadier exception message #319
This commit is contained in:
@@ -5,7 +5,7 @@ Subject: [PATCH] Configurable unknown command message
|
||||
|
||||
|
||||
diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java
|
||||
index fb18f69cb26132fc8c53b185454c6aadb8a5f7e5..eff6d524c8acfc62d1fcf6b5552754e794a22735 100644
|
||||
index 8b9374ee6df71228bb8ea22661622a15cf3bc350..59e5f93df54abc56329b38340882dade7d7104a3 100644
|
||||
--- a/net/minecraft/commands/Commands.java
|
||||
+++ b/net/minecraft/commands/Commands.java
|
||||
@@ -404,31 +404,9 @@ public class Commands {
|
||||
@@ -13,7 +13,7 @@ index fb18f69cb26132fc8c53b185454c6aadb8a5f7e5..eff6d524c8acfc62d1fcf6b5552754e7
|
||||
final net.kyori.adventure.text.TextComponent.Builder builder = net.kyori.adventure.text.Component.text();
|
||||
// source.sendFailure(ComponentUtils.fromMessage(var7.getRawMessage()));
|
||||
- builder.color(net.kyori.adventure.text.format.NamedTextColor.RED).append(io.papermc.paper.command.brigadier.MessageComponentSerializer.message().deserialize(var7.getRawMessage()));
|
||||
+ final net.kyori.adventure.text.TextComponent message = getUnknownCommandMessage(builder, var7, label); // Leaf - Configurable unknown command message
|
||||
+ final net.kyori.adventure.text.Component message = getUnknownCommandMessage(builder, var7, label); // Leaf - Configurable unknown command message
|
||||
// Paper end - Add UnknownCommandEvent
|
||||
- if (var7.getInput() != null && var7.getCursor() >= 0) {
|
||||
- int min = Math.min(var7.getInput().length(), var7.getCursor());
|
||||
@@ -42,59 +42,65 @@ index fb18f69cb26132fc8c53b185454c6aadb8a5f7e5..eff6d524c8acfc62d1fcf6b5552754e7
|
||||
org.bukkit.Bukkit.getServer().getPluginManager().callEvent(event);
|
||||
if (event.message() != null) {
|
||||
source.sendFailure(io.papermc.paper.adventure.PaperAdventure.asVanilla(event.message()), false);
|
||||
@@ -680,6 +658,86 @@ public class Commands {
|
||||
@@ -680,6 +658,92 @@ public class Commands {
|
||||
};
|
||||
}
|
||||
|
||||
+ // Leaf start - Configurable unknown command message
|
||||
+ private static net.kyori.adventure.text.TextComponent getUnknownCommandMessage(
|
||||
+ private static net.kyori.adventure.text.Component getUnknownCommandMessage(
|
||||
+ net.kyori.adventure.text.TextComponent.Builder builder, CommandSyntaxException commandSyntaxException, String label
|
||||
+ ) {
|
||||
+ String rawMessage = org.dreeam.leaf.config.modules.misc.UnknownCommandMessage.unknownCommandMessage;
|
||||
+
|
||||
+ if (!"default".equals(rawMessage)) {
|
||||
+ final String input = commandSyntaxException.getInput();
|
||||
+ final int cursor = commandSyntaxException.getCursor();
|
||||
+
|
||||
+ if (rawMessage.contains("<detail>") && input != null && cursor >= 0) {
|
||||
+ final int min = Math.min(input.length(), cursor);
|
||||
+ final net.kyori.adventure.text.TextComponent.Builder detail = net.kyori.adventure.text.Component.text();
|
||||
+ final net.kyori.adventure.text.Component context = net.kyori.adventure.text.Component.translatable("command.context.here")
|
||||
+ .color(net.kyori.adventure.text.format.NamedTextColor.RED)
|
||||
+ .decorate(net.kyori.adventure.text.format.TextDecoration.ITALIC);
|
||||
+ final net.kyori.adventure.text.event.ClickEvent event = net.kyori.adventure.text.event.ClickEvent.suggestCommand("/" + label);
|
||||
+
|
||||
+ detail.color(net.kyori.adventure.text.format.NamedTextColor.GRAY);
|
||||
+
|
||||
+ if (min > 10) {
|
||||
+ detail.append(net.kyori.adventure.text.Component.text("..."));
|
||||
+ }
|
||||
+
|
||||
+ detail.append(net.kyori.adventure.text.Component.text(input.substring(Math.max(0, min - 10), min)));
|
||||
+ if (min < input.length()) {
|
||||
+ net.kyori.adventure.text.Component commandInput = net.kyori.adventure.text.Component.text(input.substring(min))
|
||||
+ .color(net.kyori.adventure.text.format.NamedTextColor.RED)
|
||||
+ .decorate(net.kyori.adventure.text.format.TextDecoration.UNDERLINED);
|
||||
+
|
||||
+ detail.append(commandInput);
|
||||
+ }
|
||||
+
|
||||
+ detail.append(context);
|
||||
+ detail.clickEvent(event);
|
||||
+
|
||||
+ builder.append(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(rawMessage, net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.component("detail", detail.build())));
|
||||
+ } else {
|
||||
+ rawMessage = rawMessage.replace("<detail>", "");
|
||||
+ builder.append(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(rawMessage));
|
||||
+ }
|
||||
+
|
||||
+ return builder.build();
|
||||
+ if ("default".equals(rawMessage)) {
|
||||
+ return getVanillaUnknownCommandMessage(builder, commandSyntaxException, label);
|
||||
+ }
|
||||
+
|
||||
+ return getVanillaUnknownCommandMessage(builder, commandSyntaxException, label);
|
||||
+ net.kyori.adventure.text.Component messageComponent = null;
|
||||
+ net.kyori.adventure.text.Component detailComponent = null;
|
||||
+
|
||||
+ if (rawMessage.contains("<message>")) {
|
||||
+ messageComponent = io.papermc.paper.command.brigadier.MessageComponentSerializer.message().deserialize(commandSyntaxException.getRawMessage());
|
||||
+ }
|
||||
+
|
||||
+ final String input = commandSyntaxException.getInput();
|
||||
+ final int cursor = commandSyntaxException.getCursor();
|
||||
+
|
||||
+ if (rawMessage.contains("<detail>") && input != null && cursor >= 0) {
|
||||
+ final int min = Math.min(input.length(), cursor);
|
||||
+ final net.kyori.adventure.text.TextComponent.Builder detail = net.kyori.adventure.text.Component.text();
|
||||
+ final net.kyori.adventure.text.Component context = net.kyori.adventure.text.Component.translatable("command.context.here")
|
||||
+ .color(net.kyori.adventure.text.format.NamedTextColor.RED)
|
||||
+ .decorate(net.kyori.adventure.text.format.TextDecoration.ITALIC);
|
||||
+ final net.kyori.adventure.text.event.ClickEvent event = net.kyori.adventure.text.event.ClickEvent.suggestCommand("/" + label);
|
||||
+
|
||||
+ detail.color(net.kyori.adventure.text.format.NamedTextColor.GRAY);
|
||||
+
|
||||
+ if (min > 10) {
|
||||
+ detail.append(net.kyori.adventure.text.Component.text("..."));
|
||||
+ }
|
||||
+
|
||||
+ detail.append(net.kyori.adventure.text.Component.text(input.substring(Math.max(0, min - 10), min)));
|
||||
+ if (min < input.length()) {
|
||||
+ net.kyori.adventure.text.Component commandInput = net.kyori.adventure.text.Component.text(input.substring(min))
|
||||
+ .color(net.kyori.adventure.text.format.NamedTextColor.RED)
|
||||
+ .decorate(net.kyori.adventure.text.format.TextDecoration.UNDERLINED);
|
||||
+
|
||||
+ detail.append(commandInput);
|
||||
+ }
|
||||
+
|
||||
+ detail.append(context);
|
||||
+ detail.clickEvent(event);
|
||||
+
|
||||
+ detailComponent = detail.build();
|
||||
+ }
|
||||
+
|
||||
+ return builder.append(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(rawMessage)).build()
|
||||
+ .replaceText(net.kyori.adventure.text.TextReplacementConfig.builder().matchLiteral("<message>").replacement(messageComponent).build())
|
||||
+ .replaceText(net.kyori.adventure.text.TextReplacementConfig.builder().matchLiteral("<detail>").replacement(detailComponent).build());
|
||||
+ }
|
||||
+
|
||||
+ private static net.kyori.adventure.text.TextComponent getVanillaUnknownCommandMessage(
|
||||
+ private static net.kyori.adventure.text.Component getVanillaUnknownCommandMessage(
|
||||
+ net.kyori.adventure.text.TextComponent.Builder builder, CommandSyntaxException var7, String label
|
||||
+ ) {
|
||||
+ builder.color(net.kyori.adventure.text.format.NamedTextColor.RED).append(io.papermc.paper.command.brigadier.MessageComponentSerializer.message().deserialize(var7.getRawMessage()));
|
||||
|
||||
Reference in New Issue
Block a user