Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. public class Main extends JavaPlugin {
  2.  
  3. private Field nameField;
  4.  
  5. @Override
  6. public void onEnable() {
  7. nameField = getField(GameProfile.class, "name");
  8. }
  9.  
  10. @Override
  11. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  12.  
  13. if (command.getName().equalsIgnoreCase("nick")) {
  14. if (sender instanceof Player) {
  15. if (args.length == 1) {
  16. Player p = (Player) sender;
  17. String name = args[0];
  18. System.out.println(name);
  19. CraftPlayer cp = (CraftPlayer) p;
  20.  
  21. try {
  22. nameField.set(cp.getProfile(), name);
  23. } catch (IllegalArgumentException | IllegalAccessException e1) {
  24. e1.printStackTrace();
  25. }
  26. PacketPlayOutEntityDestroy destroy = new PacketPlayOutEntityDestroy(cp.getEntityId());
  27. sendPacket(destroy);
  28. removeFromTab(cp);
  29.  
  30. new BukkitRunnable() {
  31.  
  32. @Override
  33. public void run() {
  34. addtoTab(cp);
  35. PacketPlayOutNamedEntitySpawn spawn = new PacketPlayOutNamedEntitySpawn(cp.getHandle());
  36. for (Player all : Bukkit.getOnlinePlayers()) {
  37. if (!((CraftPlayer)all).equals(cp)) {
  38. ((CraftPlayer)all).getHandle().playerConnection.sendPacket(spawn);
  39. }
  40. }
  41. }
  42. }.runTaskLater(this,5);
  43.  
  44. }
  45. }
  46. }
  47. return false;
  48.  
  49. }
  50.  
  51. private void removeFromTab(CraftPlayer cp) {
  52. PacketPlayOutPlayerInfo packet = new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.REMOVE_PLAYER, cp.getHandle());
  53. sendPacket(packet);
  54. }
  55.  
  56. private void addtoTab(CraftPlayer cp) {
  57. PacketPlayOutPlayerInfo packet = new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.ADD_PLAYER, cp.getHandle());
  58. sendPacket(packet);
  59. }
  60.  
  61. private void sendPacket(Packet<?> packet) {
  62. for (Player current : Bukkit.getOnlinePlayers()) {
  63. ((CraftPlayer) current).getHandle().playerConnection.sendPacket(packet);
  64. }
  65. }
  66.  
  67. private Field getField(Class<?> clazz, String name) {
  68.  
  69. try {
  70. Field field = clazz.getDeclaredField(name);
  71. field.setAccessible(true);
  72. return field;
  73. } catch (NoSuchFieldException e) {
  74. e.printStackTrace();
  75. return null;
  76. } catch (SecurityException e) {
  77. e.printStackTrace();
  78. return null;
  79. }
  80.  
  81. }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement