mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-18 08:57:44 +01:00
Upstream has released updates that appear to apply and compile correctly Paper Changes: 9a129fa99 Add #getEligibleHumans to SkeletonHorseTrapEvent b5e23c7a6 Fix merging spawning values a932e8ad7 Turn off spigot verbose world by default 8ced89f65 Fix Delegation to vanilla chunk gen
97 lines
5.6 KiB
Diff
97 lines
5.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: BillyGalbreath <blake.galbreath@gmail.com>
|
|
Date: Mon, 30 Nov 2020 03:12:04 -0600
|
|
Subject: [PATCH] Add demo command
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/CommandDispatcher.java b/src/main/java/net/minecraft/server/CommandDispatcher.java
|
|
index 1a13eb47e0..ccd0be059f 100644
|
|
--- a/src/main/java/net/minecraft/server/CommandDispatcher.java
|
|
+++ b/src/main/java/net/minecraft/server/CommandDispatcher.java
|
|
@@ -107,6 +107,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/server/PacketPlayOutGameStateChange.java b/src/main/java/net/minecraft/server/PacketPlayOutGameStateChange.java
|
|
index 08cbc787e2..57d39ed441 100644
|
|
--- a/src/main/java/net/minecraft/server/PacketPlayOutGameStateChange.java
|
|
+++ b/src/main/java/net/minecraft/server/PacketPlayOutGameStateChange.java
|
|
@@ -11,7 +11,7 @@ public class PacketPlayOutGameStateChange implements Packet<PacketListenerPlayOu
|
|
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 f = new PacketPlayOutGameStateChange.a(5);
|
|
+ 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);
|
|
public static final PacketPlayOutGameStateChange.a i = new PacketPlayOutGameStateChange.a(8);
|
|
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
|
index adfd90c5b7..06e40ffed1 100644
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
|
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
|
@@ -134,6 +134,7 @@ public class PurpurConfig {
|
|
public static String afkBroadcastBack = "§e§o%s is no longer AFK";
|
|
public static String afkTabListPrefix = "[AFK] ";
|
|
public static String afkTabListSuffix = "";
|
|
+ public static String demoCommandOutput = "§a%s has been shown the demo screen";
|
|
public static String pingCommandOutput = "§a%s's ping is %sms";
|
|
public static String cannotRideMob = "§cYou cannot mount that mob";
|
|
private static void messages() {
|
|
@@ -141,6 +142,7 @@ public class PurpurConfig {
|
|
afkBroadcastBack = getString("settings.messages.afk-broadcast-back", afkBroadcastBack);
|
|
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);
|
|
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/DemoCommand.java b/src/main/java/net/pl3x/purpur/command/DemoCommand.java
|
|
new file mode 100644
|
|
index 0000000000..7640ce18b8
|
|
--- /dev/null
|
|
+++ b/src/main/java/net/pl3x/purpur/command/DemoCommand.java
|
|
@@ -0,0 +1,39 @@
|
|
+package net.pl3x.purpur.command;
|
|
+
|
|
+import java.util.Collection;
|
|
+import java.util.Collections;
|
|
+import net.minecraft.server.ArgumentEntity;
|
|
+import net.minecraft.server.CommandDispatcher;
|
|
+import net.minecraft.server.CommandListenerWrapper;
|
|
+import net.minecraft.server.EntityPlayer;
|
|
+import net.minecraft.server.PacketPlayOutGameStateChange;
|
|
+import net.pl3x.purpur.PurpurConfig;
|
|
+import org.bukkit.craftbukkit.util.CraftChatMessage;
|
|
+
|
|
+public class DemoCommand {
|
|
+ public static void register(com.mojang.brigadier.CommandDispatcher<CommandListenerWrapper> 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<EntityPlayer> 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();
|
|
+ }
|
|
+}
|