From a176fe6a9ebbb52bcddafb6d16e3c117145d8f39 Mon Sep 17 00:00:00 2001 From: Encode42 Date: Fri, 30 Apr 2021 14:28:20 -0400 Subject: [PATCH] Add credits command --- patches/server/0204-Add-credits-command.patch | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 patches/server/0204-Add-credits-command.patch diff --git a/patches/server/0204-Add-credits-command.patch b/patches/server/0204-Add-credits-command.patch new file mode 100644 index 000000000..b3e3ce835 --- /dev/null +++ b/patches/server/0204-Add-credits-command.patch @@ -0,0 +1,89 @@ +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 324f475513eecab4242b8900084d7f088bd0e10b..25ef4280318c5b2073bad828f19b84812c019229 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.playerConnection.sendPacket(packet); ++ String output = String.format(PurpurConfig.creditsCommandOutput, player.getProfile().getName()); ++ sender.sendMessage(CraftChatMessage.fromStringOrNull(output), false); ++ } ++ return targets.size(); ++ } ++}