From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Encode42 Date: Fri, 30 Apr 2021 14:03:06 -0400 Subject: [PATCH] Add credits command diff --git a/src/main/java/net/minecraft/commands/CommandDispatcher.java b/src/main/java/net/minecraft/commands/CommandDispatcher.java index ce95a7d9c967d723bad468bd00a5c0a6b887aa33..0703148d079d86921dac42ef90e514d3584bf569 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.CreditsCommand.register(getDispatcher()); // Purpur net.pl3x.purpur.command.DemoCommand.register(getDispatcher()); // Purpur net.pl3x.purpur.command.PingCommand.register(getDispatcher()); // Purpur net.pl3x.purpur.command.TPSBarCommand.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 0161657748d398b6827ef8bc2b00b8a63bf37c55..aaff933c5bf619303842ce6b9a9dc979bcfde7bd 100644 --- a/src/main/java/net/minecraft/network/protocol/game/PacketPlayOutGameStateChange.java +++ b/src/main/java/net/minecraft/network/protocol/game/PacketPlayOutGameStateChange.java @@ -12,7 +12,7 @@ public class PacketPlayOutGameStateChange implements Packet dispatcher) { + dispatcher.register(CommandDispatcher.literal("credits") + .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.credits"); + } + + private static int execute(CommandListenerWrapper sender, Collection targets) { + for (EntityPlayer player : targets) { + PacketPlayOutGameStateChange packet = new PacketPlayOutGameStateChange(PacketPlayOutGameStateChange.credits(), 1F); + player.viewingCredits = true; + player.playerConnection.sendPacket(packet); + String output = String.format(PurpurConfig.creditsCommandOutput, player.getProfile().getName()); + sender.sendMessage(CraftChatMessage.fromStringOrNull(output), false); + } + return targets.size(); + } +}