From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Mon, 30 Nov 2020 03:12:04 -0600 Subject: [PATCH] Add demo command diff --git a/src/main/java/net/minecraft/commands/CommandDispatcher.java b/src/main/java/net/minecraft/commands/CommandDispatcher.java index e8fe4984fdc67536561a1ad08b328a30b30b8717..a551636c2c59e68a5abb1cd5611c1d5c7e36f514 100644 --- a/src/main/java/net/minecraft/commands/CommandDispatcher.java +++ b/src/main/java/net/minecraft/commands/CommandDispatcher.java @@ -191,6 +191,7 @@ public class CommandDispatcher { CommandIdleTimeout.a(this.b); CommandStop.a(this.b); CommandWhitelist.a(this.b); + net.pl3x.purpur.command.DemoCommand.register(getDispatcher()); // Purpur net.pl3x.purpur.command.PingCommand.register(getDispatcher()); // Purpur } diff --git a/src/main/java/net/minecraft/network/protocol/game/PacketPlayOutGameStateChange.java b/src/main/java/net/minecraft/network/protocol/game/PacketPlayOutGameStateChange.java index edb6c0ab2826051b04e025a713d794dbc5de4792..0161657748d398b6827ef8bc2b00b8a63bf37c55 100644 --- a/src/main/java/net/minecraft/network/protocol/game/PacketPlayOutGameStateChange.java +++ b/src/main/java/net/minecraft/network/protocol/game/PacketPlayOutGameStateChange.java @@ -13,7 +13,7 @@ public class PacketPlayOutGameStateChange implements Packet dispatcher) { + dispatcher.register(CommandDispatcher.literal("demo") + .requires((listener) -> { + return listener.hasPermission(2); + }) + .executes((context) -> { + return execute(context.getSource(), Collections.singleton(context.getSource().getPlayerOrException())); + }) + .then(CommandDispatcher.argument("targets", ArgumentEntity.players()) + .executes((context) -> { + return execute(context.getSource(), ArgumentEntity.getPlayers(context, "targets")); + }) + ) + ).setPermission("bukkit.command.demo"); + } + + private static int execute(CommandListenerWrapper sender, Collection targets) { + for (EntityPlayer player : targets) { + PacketPlayOutGameStateChange packet = new PacketPlayOutGameStateChange(PacketPlayOutGameStateChange.demo(), 0); + player.playerConnection.sendPacket(packet); + String output = String.format(PurpurConfig.demoCommandOutput, player.getProfile().getName(), player.ping); + sender.sendMessage(CraftChatMessage.fromStringOrNull(output), false); + } + return targets.size(); + } +}