9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-22 16:39:22 +00:00
Files
Leaf/leaf-server/minecraft-patches/features/0054-Configurable-unknown-command-message.patch
Dreeam 17ea36ff6b Updated Upstream (Paper/Gale/Purpur)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@13c80a5e [ci/skip] Fix PlayerShearBlockEvent javadoc typos (#12101)
PaperMC/Paper@db2aa180 [ci/skip] Fix incomplete example in javadocs for PreFlattenTagRegistrar (#12102)
PaperMC/Paper@cf7c6c74 [ci/skip] Fix incomplete example in javadocs for PostFlattenTagRegistrar (#12103)
PaperMC/Paper@072a8317 Add proper attached blocks API to AbstractArrow (#12099)
PaperMC/Paper@1be2e5f3 Fix vanilla map decorations sending when not dirty (#12098)
PaperMC/Paper@a06179a0 Update entity effect (#12104)
PaperMC/Paper@e616498e Add Vault block API (#12068)
PaperMC/Paper@0a04c3fe Fix some NPEs (#12105)
PaperMC/Paper@06804850 Expand TrialSpawner API (#12025)
PaperMC/Paper@46f4fdaa Add support for rotation argument handling (#12090)
PaperMC/Paper@6cfa2f7f [ci/skip] Add missing nullability annotation to sendEquipmentChange method (#12112)
PaperMC/Paper@9b9de827 Update Alternate Current patch to v1.9.1 (#12115)
PaperMC/Paper@c62252e1 Add lore content guard (#12116)
PaperMC/Paper@40416784 [ci/skip] Mention missing World#regenerateChunk implementation in jd (#12109)
PaperMC/Paper@a6e82d90 [ci/skip] Clarify getChunkAtAsyncUrgently javadocs (#12125)
PaperMC/Paper@cb25c0cf [ci/skip] Fix annotation fields used in NMS getBukkitEntity (#12120)
PaperMC/Paper@00701267 [ci/skip] improvement example in javadoc for DatapackRegistrar (#12122)
PaperMC/Paper@608f004a add method on ItemStack to edit pdc (#12022)
PaperMC/Paper@7bee9971 Cleanup damage source a bit (#12106)
PaperMC/Paper@b9023b5d Add EntityAttemptSmashAttackEvent (#12113)
PaperMC/Paper@a3781ff3 Separate tick count to ensure vanilla parity (#12077)
PaperMC/Paper@2a4a1154 Add EntityEquipmentChangedEvent (#12011)
PaperMC/Paper@06f96dd6 Improvement in /plugins command (#12121)
PaperMC/Paper@28d07dc5 use correct spigot plugin count
PaperMC/Paper@60394c5b Fix PlayerReadyArrowEvent cancellation desync (#12111)
PaperMC/Paper@b27e11cc Fix bad world to chunk coordinate example in javadocs (#12131)
PaperMC/Paper@88cdd220 Fixup luck and random implementation in CB loot-tables (#11926)
PaperMC/Paper@84609dc0 Don't auto-create any brig redirects (#11954)
PaperMC/Paper@8eb8e44a Allow For Default Titles in InventoryView Builders (#12013)

Gale Changes:
Dreeam-qwq/Gale@a224af13 Updated Upstream (Paper)
Dreeam-qwq/Gale@82f1e30e Updated Upstream (Paper)
Dreeam-qwq/Gale@a41cd227 Updated Upstream (Paper)
Dreeam-qwq/Gale@73519d55 Updated Upstream (Paper)

Purpur Changes:
PurpurMC/Purpur@9b046f36 Updated Upstream (Paper)
PurpurMC/Purpur@22bd4186 Updated Upstream (Paper)
2025-02-17 10:49:50 -05:00

132 lines
8.0 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com>
Date: Wed, 7 Aug 2024 18:54:01 +0800
Subject: [PATCH] Configurable unknown command message
diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java
index 6b8757569e0f0d756612fc180fef13143c606eaf..07e690c623fe38ce099aa2f0002e7a7456120f3b 100644
--- a/net/minecraft/commands/Commands.java
+++ b/net/minecraft/commands/Commands.java
@@ -383,31 +383,9 @@ public class Commands {
// Paper start - Add UnknownCommandEvent
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
// Paper end - Add UnknownCommandEvent
- if (var7.getInput() != null && var7.getCursor() >= 0) {
- int min = Math.min(var7.getInput().length(), var7.getCursor());
- MutableComponent mutableComponent = Component.empty()
- .withStyle(ChatFormatting.GRAY)
- .withStyle(style -> style.withClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/" + label))); // CraftBukkit // Paper
- if (min > 10) {
- mutableComponent.append(CommonComponents.ELLIPSIS);
- }
-
- mutableComponent.append(var7.getInput().substring(Math.max(0, min - 10), min));
- if (min < var7.getInput().length()) {
- Component component = Component.literal(var7.getInput().substring(min)).withStyle(ChatFormatting.RED, ChatFormatting.UNDERLINE);
- mutableComponent.append(component);
- }
-
- mutableComponent.append(Component.translatable("command.context.here").withStyle(ChatFormatting.RED, ChatFormatting.ITALIC));
- // Paper start - Add UnknownCommandEvent
- // source.sendFailure(mutableComponent);
- builder
- .append(net.kyori.adventure.text.Component.newline())
- .append(io.papermc.paper.adventure.PaperAdventure.asAdventure(mutableComponent));
- }
- org.bukkit.event.command.UnknownCommandEvent event = new org.bukkit.event.command.UnknownCommandEvent(source.getBukkitSender(), command, org.spigotmc.SpigotConfig.unknownCommandMessage.isEmpty() ? null : builder.build());
+ org.bukkit.event.command.UnknownCommandEvent event = new org.bukkit.event.command.UnknownCommandEvent(source.getBukkitSender(), command, message); // Leaf - Configurable unknown command message
org.bukkit.Bukkit.getServer().getPluginManager().callEvent(event);
if (event.message() != null) {
source.sendFailure(io.papermc.paper.adventure.PaperAdventure.asVanilla(event.message()), false);
@@ -624,6 +602,86 @@ public class Commands {
};
}
+ // Leaf start - Configurable unknown command message
+ private static net.kyori.adventure.text.TextComponent 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();
+ }
+
+ return getVanillaUnknownCommandMessage(builder, commandSyntaxException, label);
+ }
+
+ private static net.kyori.adventure.text.TextComponent 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()));
+
+ if (var7.getInput() != null && var7.getCursor() >= 0) {
+ int min = Math.min(var7.getInput().length(), var7.getCursor());
+ MutableComponent mutableComponent = Component.empty()
+ .withStyle(ChatFormatting.GRAY)
+ .withStyle(style -> style.withClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/" + label))); // CraftBukkit // Paper
+ if (min > 10) {
+ mutableComponent.append(CommonComponents.ELLIPSIS);
+ }
+
+ mutableComponent.append(var7.getInput().substring(Math.max(0, min - 10), min));
+ if (min < var7.getInput().length()) {
+ Component component = Component.literal(var7.getInput().substring(min)).withStyle(ChatFormatting.RED, ChatFormatting.UNDERLINE);
+ mutableComponent.append(component);
+ }
+
+ mutableComponent.append(Component.translatable("command.context.here").withStyle(ChatFormatting.RED, ChatFormatting.ITALIC));
+ // Paper start - Add UnknownCommandEvent
+ // source.sendFailure(mutableComponent);
+ builder
+ .append(net.kyori.adventure.text.Component.newline())
+ .append(io.papermc.paper.adventure.PaperAdventure.asAdventure(mutableComponent));
+ }
+
+ return builder.build();
+ }
+ // Leaf end - Configurable unknown command message
+
public static void validate() {
CommandBuildContext commandBuildContext = createValidationContext(VanillaRegistries.createLookup());
CommandDispatcher<CommandSourceStack> dispatcher = new Commands(Commands.CommandSelection.ALL, commandBuildContext).getDispatcher();