Files
Purpur/patches/server-unmapped/0198-Add-credits-command.patch
2021-06-14 17:32:55 -04:00

99 lines
6.2 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Encode42 <me@encode42.dev>
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 4338b459011bf7a083790b7bb76cf1b24471fd19..c5babb19a3b4d20c4f9e414d5654d18c570d2b2d 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<PacketListenerPlayOu
public static final PacketPlayOutGameStateChange.a b = new PacketPlayOutGameStateChange.a(1);
public static final PacketPlayOutGameStateChange.a c = new PacketPlayOutGameStateChange.a(2);
public static final PacketPlayOutGameStateChange.a d = new PacketPlayOutGameStateChange.a(3);
- public static final PacketPlayOutGameStateChange.a e = new PacketPlayOutGameStateChange.a(4);
+ public static final PacketPlayOutGameStateChange.a e = new PacketPlayOutGameStateChange.a(4); public static PacketPlayOutGameStateChange.a credits() { return e; } // Purpur - OBFHELPER
public static final PacketPlayOutGameStateChange.a f = new PacketPlayOutGameStateChange.a(5); public static PacketPlayOutGameStateChange.a demo() { return f; } // Purpur - OBFHELPER
public static final PacketPlayOutGameStateChange.a g = new PacketPlayOutGameStateChange.a(6);
public static final PacketPlayOutGameStateChange.a h = new PacketPlayOutGameStateChange.a(7);
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
index f15684b5d4764b2cae22c1d12b0b25cc41c04b93..9e384f575cd072aac635eb14209daf68f83fc692 100644
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
@@ -161,6 +161,7 @@ public class PurpurConfig {
public static String afkTabListPrefix = "[AFK] ";
public static String afkTabListSuffix = "";
public static String demoCommandOutput = "§a%s has been shown the demo screen";
+ public static String creditsCommandOutput = "§a%s has been shown the end credits";
public static String pingCommandOutput = "§a%s's ping is %sms";
public static String cannotRideMob = "§cYou cannot mount that mob";
private static void messages() {
@@ -169,6 +170,7 @@ public class PurpurConfig {
afkTabListPrefix = getString("settings.messages.afk-tab-list-prefix", afkTabListPrefix);
afkTabListSuffix = getString("settings.messages.afk-tab-list-suffix", afkTabListSuffix);
demoCommandOutput = getString("settings.messages.demo-command-output", demoCommandOutput);
+ creditsCommandOutput = getString("settings.messages.credits-command-output", creditsCommandOutput);
pingCommandOutput = getString("settings.messages.ping-command-output", pingCommandOutput);
cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob);
}
diff --git a/src/main/java/net/pl3x/purpur/command/CreditsCommand.java b/src/main/java/net/pl3x/purpur/command/CreditsCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..ccb7b9de16c75cd2cddd0c4bbf8e4595e3c61dea
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/command/CreditsCommand.java
@@ -0,0 +1,41 @@
+package net.pl3x.purpur.command;
+
+import net.minecraft.commands.CommandDispatcher;
+import net.minecraft.commands.CommandListenerWrapper;
+import net.minecraft.commands.arguments.ArgumentEntity;
+import net.minecraft.network.protocol.game.PacketPlayOutGameStateChange;
+import net.minecraft.server.level.EntityPlayer;
+import net.pl3x.purpur.PurpurConfig;
+import org.bukkit.craftbukkit.util.CraftChatMessage;
+
+import java.util.Collection;
+import java.util.Collections;
+
+public class CreditsCommand {
+ public static void register(com.mojang.brigadier.CommandDispatcher<CommandListenerWrapper> 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<EntityPlayer> 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();
+ }
+}