aboutsummaryrefslogtreecommitdiff
path: root/mod/src/main/java/moe/ymc/acron/mixin/CommandManagerMixin.java
diff options
context:
space:
mode:
Diffstat (limited to 'mod/src/main/java/moe/ymc/acron/mixin/CommandManagerMixin.java')
-rw-r--r--mod/src/main/java/moe/ymc/acron/mixin/CommandManagerMixin.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/mod/src/main/java/moe/ymc/acron/mixin/CommandManagerMixin.java b/mod/src/main/java/moe/ymc/acron/mixin/CommandManagerMixin.java
index 9aaed2e..ccde6f0 100644
--- a/mod/src/main/java/moe/ymc/acron/mixin/CommandManagerMixin.java
+++ b/mod/src/main/java/moe/ymc/acron/mixin/CommandManagerMixin.java
@@ -1,6 +1,7 @@
package moe.ymc.acron.mixin;
import com.mojang.brigadier.CommandDispatcher;
+import moe.ymc.acron.cmd.CmdSrc;
import moe.ymc.acron.config.ConfigReloadCmd;
import net.minecraft.server.command.CommandManager;
import net.minecraft.server.command.ServerCommandSource;
@@ -12,6 +13,7 @@ import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import static net.minecraft.server.command.CommandManager.literal;
@@ -35,4 +37,17 @@ public abstract class CommandManagerMixin {
)
);
}
+
+ @Inject(at = @At(value = "RETURN"),
+ method = "execute")
+ // Unfortunately we cannot inject into the catch blocks, so
+ // a cursed approach would be always sending the result if we
+ // haven't.
+ public void execute(ServerCommandSource commandSource,
+ String command,
+ CallbackInfoReturnable<Integer> cir) {
+ if (commandSource instanceof CmdSrc src) {
+ src.sendResultIfNot();
+ }
+ }
}