diff options
author | Trumeet <yuuta@yuuta.moe> | 2022-07-27 11:04:45 -0700 |
---|---|---|
committer | Trumeet <yuuta@yuuta.moe> | 2022-07-27 11:04:45 -0700 |
commit | 3a450ee1759b3df38d698daabdfafd0447d8223a (patch) | |
tree | 1c3b3e1e5fa85a914e4cb480f19f280f827c5eb4 /mod/src/main/java/moe/ymc/acron/mixin | |
parent | c4bce9d7c539240242fce35162d74160725bbfe3 (diff) | |
download | acron-3a450ee1759b3df38d698daabdfafd0447d8223a.tar acron-3a450ee1759b3df38d698daabdfafd0447d8223a.tar.gz acron-3a450ee1759b3df38d698daabdfafd0447d8223a.tar.bz2 acron-3a450ee1759b3df38d698daabdfafd0447d8223a.zip |
feat(mod): enforce cmd response ordering and termination
Diffstat (limited to 'mod/src/main/java/moe/ymc/acron/mixin')
-rw-r--r-- | mod/src/main/java/moe/ymc/acron/mixin/CommandManagerMixin.java | 15 |
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(); + } + } } |