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: 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
129 lines
6.6 KiB
Diff
129 lines
6.6 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 1194f91a51..9141976d1d 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 cabce1a8ba..1a13eb47e0 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 86f1cfe454..da53af61d1 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 1c6265818b..68b3f1def3 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 0000000000..3d4762c4a1
|
|
--- /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();
|
|
+ }
|
|
+}
|