From c0d6cb9e6b6b7605bd90e07b4e0898b42cdf7b1c Mon Sep 17 00:00:00 2001 From: shedaniel Date: Tue, 17 Oct 2023 11:05:48 +0800 Subject: [PATCH] Updated to 23w41a Signed-off-by: shedaniel --- .../mixin/fabric/MixinCommands.java | 22 ++++++++++++------- gradle.properties | 6 ++--- .../architectury/test/events/DebugEvents.java | 5 +++++ 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/fabric/src/main/java/dev/architectury/mixin/fabric/MixinCommands.java b/fabric/src/main/java/dev/architectury/mixin/fabric/MixinCommands.java index 42c8d3be..5b96ffbe 100644 --- a/fabric/src/main/java/dev/architectury/mixin/fabric/MixinCommands.java +++ b/fabric/src/main/java/dev/architectury/mixin/fabric/MixinCommands.java @@ -20,28 +20,34 @@ package dev.architectury.mixin.fabric; import com.google.common.base.Throwables; -import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.ParseResults; -import com.mojang.brigadier.exceptions.CommandSyntaxException; import dev.architectury.event.events.common.CommandPerformEvent; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyVariable; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(Commands.class) public class MixinCommands { - @Redirect(method = "performCommand", - at = @At(value = "INVOKE", target = "Lcom/mojang/brigadier/CommandDispatcher;execute(Lcom/mojang/brigadier/ParseResults;)I", remap = false)) - private int performCommand(CommandDispatcher dispatcher, ParseResults results) throws CommandSyntaxException { + @ModifyVariable(method = "performCommand", + at = @At(value = "INVOKE", target = "Lnet/minecraft/commands/Commands;validateParseResults(Lcom/mojang/brigadier/ParseResults;)V", remap = false), argsOnly = true) + private ParseResults performCommand(ParseResults results) { var event = new CommandPerformEvent(results, null); if (CommandPerformEvent.EVENT.invoker().act(event).isPresent()) { if (event.getThrowable() != null) { Throwables.throwIfUnchecked(event.getThrowable()); } - return 1; + return null; } - return dispatcher.execute(event.getResults()); + return event.getResults(); + } + + @Inject(method = "performCommand", + at = @At(value = "INVOKE", target = "Lnet/minecraft/commands/Commands;validateParseResults(Lcom/mojang/brigadier/ParseResults;)V", remap = false), cancellable = true) + private void performCommand(ParseResults results, String command, CallbackInfo ci) { + if (results == null) ci.cancel(); } } diff --git a/gradle.properties b/gradle.properties index 4d391815..53b20e0a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,8 +3,8 @@ org.gradle.daemon=false platforms=fabric -minecraft_version=23w40a -supported_version=23w40a +minecraft_version=23w41a +supported_version=23w41a artifact_type=beta @@ -14,7 +14,7 @@ base_version=11.0 maven_group=dev.architectury fabric_loader_version=0.14.23 -fabric_api_version=0.89.4+1.20.3 +fabric_api_version=0.90.1+1.20.3 mod_menu_version=7.0.0 forge_version=48.0.1 diff --git a/testmod-common/src/main/java/dev/architectury/test/events/DebugEvents.java b/testmod-common/src/main/java/dev/architectury/test/events/DebugEvents.java index 4c6e6b1a..5423bf98 100644 --- a/testmod-common/src/main/java/dev/architectury/test/events/DebugEvents.java +++ b/testmod-common/src/main/java/dev/architectury/test/events/DebugEvents.java @@ -73,6 +73,11 @@ public class DebugEvents { return EventResult.interruptTrue(); }); CommandPerformEvent.EVENT.register(event -> { + if (event.getResults().getReader().getString().startsWith("help")) { + TestMod.SINK.accept("Cancelling help command as a test!"); + return EventResult.interruptFalse(); + } + TestMod.SINK.accept("Server command performed: " + event.getResults().getReader().getString()); return EventResult.pass(); });