From f9a4960781b70e245b00e1e28ddb8d7a3582034c Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Fri, 13 Mar 2020 22:29:10 -0500 Subject: [PATCH] Add /ping command --- .../java/net/pl3x/purpur/PurpurConfig.java | 2 + .../net/pl3x/purpur/command/PingCommand.java | 52 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 src/main/java/net/pl3x/purpur/command/PingCommand.java diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java index 63a91e7b7a..ca49b3b6a3 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -3,6 +3,7 @@ package net.pl3x.purpur; import com.google.common.base.Throwables; import net.minecraft.server.MinecraftServer; import net.pl3x.purpur.command.MSPTCommand; +import net.pl3x.purpur.command.PingCommand; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.configuration.InvalidConfigurationException; @@ -55,6 +56,7 @@ public class PurpurConfig { commands = new HashMap<>(); commands.put("purpur", new PurpurCommand("purpur")); commands.put("mspt", new MSPTCommand("mspt")); + commands.put("ping", new PingCommand("ping")); version = getInt("config-version", 4); set("config-version", 4); 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..77dddea3d6 --- /dev/null +++ b/src/main/java/net/pl3x/purpur/command/PingCommand.java @@ -0,0 +1,52 @@ +package net.pl3x.purpur.command; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.command.CommandSender; +import org.bukkit.command.defaults.BukkitCommand; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; + +import java.util.List; +import java.util.stream.Collectors; + +public class PingCommand extends BukkitCommand { + public PingCommand(String name) { + super(name); + + this.description = "Gets player ping"; + this.usageMessage = "/ping (player)"; + this.setPermission("bukkit.command.ping"); + } + + @Override + public List tabComplete(CommandSender sender, String alias, String[] args) { + return Bukkit.getOnlinePlayers().stream().map(HumanEntity::getName).collect(Collectors.toList()); + } + + @Override + public boolean execute(CommandSender sender, String currentAlias, String[] args) { + if (!testPermission(sender)) { + return true; + } + + if (args.length == 0) { + if (!(sender instanceof Player)) { + sender.sendMessage(ChatColor.RED + "Player only command"); + return true; + } + Player player = (Player) sender; + sender.sendMessage(ChatColor.GREEN + "Your ping is " + player.spigot().getPing() + "ms"); + return true; + } + + Player player = Bukkit.getPlayer(args[0]); + if (player == null) { + sender.sendMessage(ChatColor.RED + "Player not online"); + return true; + } + + sender.sendMessage(ChatColor.GREEN + player.getName() + "'s ping is " + player.spigot().getPing() + "ms"); + return true; + } +} -- 2.24.0