mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Upstream has released updates that appear to apply and compile correctly Paper Changes: 05af2837c [CI-SKIP] Improved the annotation test output 586966949 abstract custom set tags, add entity tags c7667378e Added PlayerLoomPatternSelectEvent 00972e80d Reimplement GS4QueryEvent 544c5c278 Re-add coral block tags (#4987) 7d56c8deb Added PlayerLecternPageChangeEvent c7cdf255b Add BlockFailedDispenseEvent c8a8d6fbe Added world settings for mobs picking up loot 91eda5bd3 Added ServerResourcesReloadedEvent be81b4f5c Add a Enchantable MaterialTag 975d18703 Add doors to material tags d075e748e colorful itemdump f3ba3dee0 Added WorldGameRuleChangeEvent 086d20118 Guardian beam workaround b63c890ec Support spawning item stacks d7d74c552 added height config for bamboo 7878e3bc2 Use setAmount for Recipe Amount 50e70697b Add EntityLoadCrossbowEvent f344e092c Add Anti-Xray bypass permission 9fd31e675 fix for nerfed slime mobs splitting 4a7962cd1 Zombie API - breaking doors 5650a41f5 Fix interact event not being called in adventure 2c9ed4335 Add PlayerFlowerPotManipulateEvent 1f32290b6 [Auto] Updated Upstream (CraftBukkit) d87694a20 Redact Velocity forwarding secret properly (#4980) 24a0b0206 [Auto] Updated Upstream (CraftBukkit) 7681042ef [Auto] Updated Upstream (Bukkit/CraftBukkit) 7dea3dba6 [Auto] Updated Upstream (CraftBukkit) 4b3792920 JavaDoc fixes f13b4727e Allow disabling mob spawner spawn egg transformation 525b50737 Cache burn durations 2c37d1077 Optimized tick ready check b4000b01a Add API to get the Material of Boats and Minecarts f1317386d Fix sign lazy initialisation 9f61759d9 Updated Upstream (CraftBukkit/Spigot) (#4972) aaff430b6 [CI-SKIP] Use GitHub Actions for build status 9f4055d99 Fix harming potion dupe 7bfb781ff Additional Block Material API's 0eaffd008 Micro Optimize DataBits Tuinity Changes: 9e5cabb6e Port starlight changes
129 lines
6.9 KiB
Diff
129 lines
6.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
|
Date: Fri, 13 Mar 2020 22:29:10 -0500
|
|
Subject: [PATCH] Add /ping command
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/ArgumentEntity.java b/src/main/java/net/minecraft/server/ArgumentEntity.java
|
|
index 1194f91a51f87bc461af039fe0819aaf3e5c8bdd..9141976d1d6c5cef9eb4d415df2ad3b8f14ce913 100644
|
|
--- a/src/main/java/net/minecraft/server/ArgumentEntity.java
|
|
+++ b/src/main/java/net/minecraft/server/ArgumentEntity.java
|
|
@@ -69,10 +69,12 @@ public class ArgumentEntity implements ArgumentType<EntitySelector> {
|
|
return ((EntitySelector) commandcontext.getArgument(s, EntitySelector.class)).c((CommandListenerWrapper) commandcontext.getSource());
|
|
}
|
|
|
|
+ public static ArgumentEntity players() { return d(); } // Purpur - OBFHELPER
|
|
public static ArgumentEntity d() {
|
|
return new ArgumentEntity(false, true);
|
|
}
|
|
|
|
+ public static Collection<EntityPlayer> getPlayers(CommandContext<CommandListenerWrapper> commandcontext, String s) throws CommandSyntaxException { return f(commandcontext, s); } // Purpur - OBFHELPER
|
|
public static Collection<EntityPlayer> f(CommandContext<CommandListenerWrapper> commandcontext, String s) throws CommandSyntaxException {
|
|
List<EntityPlayer> list = ((EntitySelector) commandcontext.getArgument(s, EntitySelector.class)).d((CommandListenerWrapper) commandcontext.getSource());
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/CommandDispatcher.java b/src/main/java/net/minecraft/server/CommandDispatcher.java
|
|
index cabce1a8ba5db56495628edd9bc796aee7a53356..1a13eb47e07776a53fab4ca38dcb48e55fb77b21 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.PingCommand.register(getDispatcher()); // Purpur
|
|
}
|
|
|
|
if (commanddispatcher_servertype.d) {
|
|
@@ -337,10 +338,12 @@ public class CommandDispatcher {
|
|
|
|
}
|
|
|
|
+ public static LiteralArgumentBuilder<CommandListenerWrapper> literal(String s) { return a(s); } // Purpur - OBFHELPER
|
|
public static LiteralArgumentBuilder<CommandListenerWrapper> a(String s) {
|
|
return LiteralArgumentBuilder.literal(s);
|
|
}
|
|
|
|
+ public static <T> RequiredArgumentBuilder<CommandListenerWrapper, T> argument(String s, ArgumentType<T> argumenttype) { return a(s, argumenttype); } // Purpur - OBFHELPER
|
|
public static <T> RequiredArgumentBuilder<CommandListenerWrapper, T> a(String s, ArgumentType<T> argumenttype) {
|
|
return RequiredArgumentBuilder.argument(s, argumenttype);
|
|
}
|
|
@@ -356,6 +359,7 @@ public class CommandDispatcher {
|
|
};
|
|
}
|
|
|
|
+ public com.mojang.brigadier.CommandDispatcher<CommandListenerWrapper> getDispatcher() { return a(); } // Purpur - OBFHELPER
|
|
public com.mojang.brigadier.CommandDispatcher<CommandListenerWrapper> a() {
|
|
return this.b;
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/CommandListenerWrapper.java b/src/main/java/net/minecraft/server/CommandListenerWrapper.java
|
|
index 86f1cfe454ea0a989775b49a6b88375c766ef647..da53af61d1171db3c167c6e007adf95355771653 100644
|
|
--- a/src/main/java/net/minecraft/server/CommandListenerWrapper.java
|
|
+++ b/src/main/java/net/minecraft/server/CommandListenerWrapper.java
|
|
@@ -189,6 +189,7 @@ public class CommandListenerWrapper implements ICompletionProvider, com.destroys
|
|
}
|
|
}
|
|
|
|
+ public EntityPlayer getPlayerOrException() throws CommandSyntaxException { return h(); } // Purpur - OBFHELPER
|
|
public EntityPlayer h() throws CommandSyntaxException {
|
|
if (!(this.k instanceof EntityPlayer)) {
|
|
throw CommandListenerWrapper.a.create();
|
|
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
|
index 403148774d880580412888a7c03c11da380149d7..98dd496be218ce254fc8d82f132c51ab8cdb918a 100644
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
|
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
|
@@ -133,10 +133,12 @@ public class PurpurConfig {
|
|
public static String afkBroadcastAway = "§e§o%s is now AFK";
|
|
public static String afkBroadcastBack = "§e§o%s is no longer AFK";
|
|
public static String afkTabListPrefix = "[AFK] ";
|
|
+ public static String pingCommandOutput = "§a%s's ping is %sms";
|
|
private static void messages() {
|
|
afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway);
|
|
afkBroadcastBack = getString("settings.messages.afk-broadcast-back", afkBroadcastBack);
|
|
afkTabListPrefix = getString("settings.messages.afk-tab-list-prefix", afkTabListPrefix);
|
|
+ pingCommandOutput = getString("settings.messages.ping-command-output", pingCommandOutput);
|
|
}
|
|
|
|
public static String serverModName = "Purpur";
|
|
diff --git a/src/main/java/net/pl3x/purpur/command/PingCommand.java b/src/main/java/net/pl3x/purpur/command/PingCommand.java
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..3d4762c4a179aaf4e270af018b940f93f1a7d9cd
|
|
--- /dev/null
|
|
+++ b/src/main/java/net/pl3x/purpur/command/PingCommand.java
|
|
@@ -0,0 +1,37 @@
|
|
+package net.pl3x.purpur.command;
|
|
+
|
|
+import net.minecraft.server.ArgumentEntity;
|
|
+import net.minecraft.server.CommandDispatcher;
|
|
+import net.minecraft.server.CommandListenerWrapper;
|
|
+import net.minecraft.server.EntityPlayer;
|
|
+import net.pl3x.purpur.PurpurConfig;
|
|
+import org.bukkit.craftbukkit.util.CraftChatMessage;
|
|
+
|
|
+import java.util.Collection;
|
|
+import java.util.Collections;
|
|
+
|
|
+public class PingCommand {
|
|
+ public static void register(com.mojang.brigadier.CommandDispatcher<CommandListenerWrapper> dispatcher) {
|
|
+ dispatcher.register(CommandDispatcher.literal("ping")
|
|
+ .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.ping");
|
|
+ }
|
|
+
|
|
+ private static int execute(CommandListenerWrapper sender, Collection<EntityPlayer> targets) {
|
|
+ for (EntityPlayer player : targets) {
|
|
+ String output = String.format(PurpurConfig.pingCommandOutput, player.getProfile().getName(), player.ping);
|
|
+ sender.sendMessage(CraftChatMessage.fromStringOrNull(output), false);
|
|
+ }
|
|
+ return targets.size();
|
|
+ }
|
|
+}
|