Vinetos

Titles API (new)

Aug 6th, 2015
397
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.24 KB | None | 0 0
  1. package fr.vinetos.titlejoin;
  2.  
  3. import java.lang.reflect.Field;
  4.  
  5. import net.minecraft.server.v1_8_R2.IChatBaseComponent;
  6. import net.minecraft.server.v1_8_R2.IChatBaseComponent.ChatSerializer;
  7. import net.minecraft.server.v1_8_R2.PacketPlayOutChat;
  8. import net.minecraft.server.v1_8_R2.PacketPlayOutPlayerListHeaderFooter;
  9. import net.minecraft.server.v1_8_R2.PacketPlayOutTitle;
  10. import net.minecraft.server.v1_8_R2.PacketPlayOutTitle.EnumTitleAction;
  11. import net.minecraft.server.v1_8_R2.PlayerConnection;
  12.  
  13. import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer;
  14. import org.bukkit.entity.Player;
  15.  
  16. public class Titles
  17. {
  18.  
  19. public static void sendTitle(Player p, String title, String subtitle, int fadeIn, int time, int fadeOut)
  20. {
  21. title = title.replace("'", "\\'");
  22. subtitle = subtitle.replace("'", "\\'");
  23. CraftPlayer craftplayer = (CraftPlayer)p;
  24. PlayerConnection connection = craftplayer.getHandle().playerConnection;
  25. IChatBaseComponent titleJSON = ChatSerializer.a("{'text': '" + title + "'}");
  26. IChatBaseComponent subtitleJSON = ChatSerializer.a("{'text': '" + subtitle + "'}");
  27. PacketPlayOutTitle timesPacket = new PacketPlayOutTitle(EnumTitleAction.TIMES, titleJSON, fadeIn, time, fadeOut);
  28. PacketPlayOutTitle titlePacket = new PacketPlayOutTitle(EnumTitleAction.TITLE, titleJSON);
  29. PacketPlayOutTitle subtitlePacket = new PacketPlayOutTitle(EnumTitleAction.SUBTITLE, subtitleJSON);
  30. connection.sendPacket(timesPacket);
  31. connection.sendPacket(titlePacket);
  32. connection.sendPacket(subtitlePacket);
  33. }
  34.  
  35. public static void sendActionBar(Player p, String msg)
  36. {
  37. IChatBaseComponent cbc = ChatSerializer.a("{\"text\": \"" + msg + "\"}");
  38. PacketPlayOutChat ppoc = new PacketPlayOutChat(cbc, (byte) 2);
  39. ((CraftPlayer)p).getHandle().playerConnection.sendPacket(ppoc);
  40. }
  41.  
  42. public static void sendHeaderAndFooter(Player p, String head, String foot)
  43. {
  44. PlayerConnection connection = ((CraftPlayer)p).getHandle().playerConnection;
  45. IChatBaseComponent header = ChatSerializer.a("{'color':'" + "', 'text':'" + head + "'}");
  46. IChatBaseComponent footer = ChatSerializer.a("{'color':'" + "', 'text':'" + foot + "'}");
  47. PacketPlayOutPlayerListHeaderFooter packet = new PacketPlayOutPlayerListHeaderFooter();
  48. try
  49. {
  50. Field headerField = packet.getClass().getDeclaredField("a");
  51. headerField.setAccessible(true);
  52. headerField.set(packet, header);
  53. headerField.setAccessible(!headerField.isAccessible());
  54.  
  55.  
  56. Field footerField = packet.getClass().getDeclaredField("b");
  57. footerField.setAccessible(true);
  58. footerField.set(packet, footer);
  59. footerField.setAccessible(!footerField.isAccessible());
  60. }
  61. catch(Exception e){e.printStackTrace();}
  62. connection.sendPacket(packet);
  63. }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment