Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2020
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.31 KB | None | 0 0
  1. package org.bukkit.command.defaults;
  2.  
  3. import org.bukkit.Bukkit;
  4. import org.bukkit.ChatColor;
  5.  
  6. import org.bukkit.command.CommandSender;
  7. import org.bukkit.entity.Player;
  8.  
  9. import java.lang.reflect.Field;
  10. import java.lang.reflect.Method;
  11. import java.util.Arrays;
  12.  
  13.  
  14. public class PingCommand extends BukkitCommand {
  15. public PingCommand(String name) {
  16. super(name);
  17.  
  18. this.description = "Gets ping of player";
  19. this.usageMessage = "/ping [playername]";
  20. this.setPermission(null);
  21. this.setAliases(Arrays.asList("pings"));
  22. }
  23.  
  24. @Override
  25. public boolean execute(CommandSender sender, String currentAlias, String[] args) {
  26. if (!testPermission(sender)) return true;
  27. if (sender instanceof Player) {
  28. Player player = (Player) sender;
  29. if (args.length < 1 || args[0].length() == 0) {
  30. sender.sendMessage("§a§l>> §7Your ping is " + colorPing(getPing(player)));
  31. }
  32. } else if (Bukkit.getPlayerExact(args[0]) != null) {
  33. Player player = Bukkit.getPlayerExact(args[0]);
  34. sender.sendMessage("§a§l>> §7" + player.getName() + "" + "'s ping is " + colorPing(getPing(player)));
  35.  
  36. } else {
  37. sender.sendMessage(args[0] + " not found.");
  38. }
  39. return true;
  40. }
  41. private static final String CRAFT_BUKKIT_PACKAGE;
  42. private static final String NET_MINECRAFT_SERVER_PACKAGE;
  43.  
  44. private static final Class CRAFT_PLAYER_CLASS;
  45. private static final Method CRAFT_PLAYER_GET_HANDLE_METHOD;
  46.  
  47. private static final Class ENTITY_PLAYER_CLASS;
  48. private static final Field ENTITY_PLAYER_PING_FIELD;
  49.  
  50.  
  51. static {
  52. try {
  53. String version = Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];
  54.  
  55. CRAFT_BUKKIT_PACKAGE = "org.bukkit.craftbukkit." + version + ".";
  56. NET_MINECRAFT_SERVER_PACKAGE = "net.minecraft.server." + version + ".";
  57.  
  58. CRAFT_PLAYER_CLASS = Class.forName(CRAFT_BUKKIT_PACKAGE + "entity.CraftPlayer");
  59. CRAFT_PLAYER_GET_HANDLE_METHOD = CRAFT_PLAYER_CLASS.getDeclaredMethod("getHandle");
  60. CRAFT_PLAYER_GET_HANDLE_METHOD.setAccessible(true);
  61.  
  62. ENTITY_PLAYER_CLASS = Class.forName(NET_MINECRAFT_SERVER_PACKAGE + "EntityPlayer");
  63. ENTITY_PLAYER_PING_FIELD = ENTITY_PLAYER_CLASS.getDeclaredField("ping");
  64. ENTITY_PLAYER_PING_FIELD.setAccessible(true);
  65.  
  66.  
  67. } catch (Exception e) {
  68. e.printStackTrace();
  69.  
  70. throw new RuntimeException("Failed to initialize Bukkit/NMS Reflection");
  71. }
  72. }
  73.  
  74. public static int getPing(Player player) {
  75. try {
  76. int ping = ENTITY_PLAYER_PING_FIELD.getInt(CRAFT_PLAYER_GET_HANDLE_METHOD.invoke(player));
  77.  
  78. return ping > 0 ? ping : 0;
  79. } catch (Exception e) {
  80. return 1;
  81. }
  82. }
  83.  
  84. public static String colorPing(int ping) {
  85. if (ping <= 40) {
  86. return ChatColor.GREEN + "" + ping;
  87. } else if (ping <= 70) {
  88. return ChatColor.YELLOW + "" + ping;
  89. } else if (ping <= 100) {
  90. return ChatColor.GOLD + "" + ping;
  91. } else {
  92. return ChatColor.RED + "" + ping;
  93. }
  94. }
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement