From 7f87a3eb2e3ecf013f009c7bc09a7ff7cd2a28df Mon Sep 17 00:00:00 2001 From: Etil <81570777+etil2jz@users.noreply.github.com> Date: Sun, 19 Sep 2021 17:28:10 +0200 Subject: [PATCH] (Purpur) Add ping command --- .../server/0029-Purpur-Add-ping-command.patch | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 patches/server/0029-Purpur-Add-ping-command.patch diff --git a/patches/server/0029-Purpur-Add-ping-command.patch b/patches/server/0029-Purpur-Add-ping-command.patch new file mode 100644 index 0000000..5c3089c --- /dev/null +++ b/patches/server/0029-Purpur-Add-ping-command.patch @@ -0,0 +1,77 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Etil <81570777+etil2jz@users.noreply.github.com> +Date: Sun, 19 Sep 2021 17:27:45 +0200 +Subject: [PATCH] (Purpur) Add ping command + + +diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java +index 6fec6a47538da4c0c5a4505e9bedf492bb3376dd..d1f2e3e88e43e33e51120d9b23cf23caa68a66d1 100644 +--- a/src/main/java/net/minecraft/commands/Commands.java ++++ b/src/main/java/net/minecraft/commands/Commands.java +@@ -198,6 +198,7 @@ public class Commands { + SetPlayerIdleTimeoutCommand.register(this.dispatcher); + StopCommand.register(this.dispatcher); + WhitelistCommand.register(this.dispatcher); ++ xyz.arthurb.mirai.command.PingCommand.register(this.dispatcher); // Purpur + } + + if (environment.includeIntegrated) { +diff --git a/src/main/java/xyz/arthurb/mirai/MiraiConfig.java b/src/main/java/xyz/arthurb/mirai/MiraiConfig.java +index 50392b3056d1cc10d9c59353bfa8edda3bab85f4..4d63701729f472645119d7381b7db2c32b4ad4e4 100644 +--- a/src/main/java/xyz/arthurb/mirai/MiraiConfig.java ++++ b/src/main/java/xyz/arthurb/mirai/MiraiConfig.java +@@ -204,5 +204,14 @@ public class MiraiConfig { + private static void protocolLib() { + fixProtocolLib = getBoolean("settings.fix-protocollib", fixProtocolLib); + } ++ ++ public static String pingCommandOutput = "%s's ping is %sms"; ++ ++ // add new command outputs above ^ ++ ++ private static void messages() { ++ pingCommandOutput = getString("settings.messages.ping-command-output", pingCommandOutput); ++ } ++ // add new command outputs above ^ + + } +\ No newline at end of file +diff --git a/src/main/java/xyz/arthurb/mirai/command/PingCommand.java b/src/main/java/xyz/arthurb/mirai/command/PingCommand.java +new file mode 100644 +index 0000000000000000000000000000000000000000..483e8c4b50494f58607758bbfce9ec43db66a8dc +--- /dev/null ++++ b/src/main/java/xyz/arthurb/mirai/command/PingCommand.java +@@ -0,0 +1,32 @@ ++package xyz.arthurb.mirai.command; ++ ++import com.mojang.brigadier.CommandDispatcher; ++import net.minecraft.commands.CommandSourceStack; ++import net.minecraft.commands.Commands; ++import net.minecraft.commands.arguments.EntityArgument; ++import net.minecraft.server.level.ServerPlayer; ++import xyz.arthurb.mirai.MiraiConfig; ++import org.bukkit.craftbukkit.util.CraftChatMessage; ++ ++import java.util.Collection; ++import java.util.Collections; ++ ++public class PingCommand { ++ public static void register(CommandDispatcher dispatcher) { ++ dispatcher.register(Commands.literal("ping") ++ .requires((listener) -> listener.hasPermission(2)) ++ .executes((context) -> execute(context.getSource(), Collections.singleton(context.getSource().getPlayerOrException()))) ++ .then(Commands.argument("targets", EntityArgument.players()) ++ .executes((context) -> execute(context.getSource(), EntityArgument.getPlayers(context, "targets"))) ++ ) ++ ).setPermission("bukkit.command.ping"); ++ } ++ ++ private static int execute(CommandSourceStack sender, Collection targets) { ++ for (ServerPlayer player : targets) { ++ String output = String.format(MiraiConfig.pingCommandOutput, player.getGameProfile().getName(), player.latency); ++ sender.sendSuccess(output, false); ++ } ++ return targets.size(); ++ } ++} +\ No newline at end of file