Advertisement
Guest User

H

a guest
Aug 29th, 2015
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.58 KB | None | 0 0
  1. package de.enotrix.lobby;
  2.  
  3. import org.bukkit.Bukkit;
  4. import org.bukkit.ChatColor;
  5. import org.bukkit.Server;
  6. import org.bukkit.command.ConsoleCommandSender;
  7. import org.bukkit.entity.Player;
  8. import org.bukkit.event.EventHandler;
  9. import org.bukkit.event.Listener;
  10. import org.bukkit.event.player.PlayerJoinEvent;
  11. import org.bukkit.plugin.java.JavaPlugin;
  12.  
  13. import java.lang.reflect.Constructor;
  14. import java.lang.reflect.Field;
  15.  
  16.  
  17. public class TitelAPI extends JavaPlugin implements Listener {
  18.  
  19. @Deprecated
  20. public static void sendTitle(Player player, Integer fadeIn, Integer stay, Integer fadeOut, String message) {
  21. sendTitle(player, fadeIn, stay, fadeOut, message, null);
  22. }
  23.  
  24. @Deprecated
  25. public static void sendSubtitle(Player player, Integer fadeIn, Integer stay, Integer fadeOut, String message) {
  26. sendTitle(player, fadeIn, stay, fadeOut, null, message);
  27. }
  28.  
  29. @Deprecated
  30. public static void sendFullTitle(Player player, Integer fadeIn, Integer stay, Integer fadeOut, String title, String subtitle) {
  31. sendTitle(player, fadeIn, stay, fadeOut, title, subtitle);
  32. }
  33.  
  34. public static void sendPacket(Player player, Object packet) {
  35. try {
  36. Object handle = player.getClass().getMethod("getHandle").invoke(player);
  37. Object playerConnection = handle.getClass().getField("playerConnection").get(handle);
  38. playerConnection.getClass().getMethod("sendPacket", getNMSClass("Packet")).invoke(playerConnection, packet);
  39. } catch (Exception e) {
  40. e.printStackTrace();
  41. }
  42. }
  43.  
  44. public static Class<?> getNMSClass(String name) {
  45. String version = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
  46. try {
  47. return Class.forName("net.minecraft.server." + version + "." + name);
  48. } catch (ClassNotFoundException e) {
  49. e.printStackTrace();
  50. return null;
  51. }
  52. }
  53.  
  54. public static void sendTitle(Player player, Integer fadeIn, Integer stay, Integer fadeOut, String title, String subtitle) {
  55. try {
  56. if (title != null) {
  57. title = ChatColor.translateAlternateColorCodes('&', title);
  58. title = title.replaceAll("%player%", player.getDisplayName());
  59. Object enumTitle = getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0].getField("TITLE").get(null);
  60. Object chatTitle = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", String.class).invoke(null, "{\"text\":\"" + title + "\"}");
  61. Constructor<?> titleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"), int.class, int.class, int.class);
  62. Object titlePacket = titleConstructor.newInstance(enumTitle, chatTitle, fadeIn, stay, fadeOut);
  63. sendPacket(player, titlePacket);
  64. }
  65.  
  66. if (subtitle != null) {
  67. subtitle = ChatColor.translateAlternateColorCodes('&', subtitle);
  68. subtitle = subtitle.replaceAll("%player%", player.getDisplayName());
  69. Object enumSubtitle = getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0].getField("SUBTITLE").get(null);
  70. Object chatSubtitle = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", String.class).invoke(null, "{\"text\":\"" + subtitle + "\"}");
  71. Constructor<?> subtitleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"), int.class, int.class, int.class);
  72. Object subtitlePacket = subtitleConstructor.newInstance(enumSubtitle, chatSubtitle, fadeIn, stay, fadeOut);
  73. sendPacket(player, subtitlePacket);
  74. }
  75. } catch (Exception e) {
  76. e.printStackTrace();
  77. }
  78. }
  79.  
  80. public static void sendTabTitle(Player player, String header, String footer) {
  81. if (header == null) header = "";
  82. header = ChatColor.translateAlternateColorCodes('&', header);
  83.  
  84. if (footer == null) footer = "";
  85. footer = ChatColor.translateAlternateColorCodes('&', footer);
  86.  
  87. header = header.replaceAll("%player%", player.getDisplayName());
  88. footer = footer.replaceAll("%player%", player.getDisplayName());
  89.  
  90. try {
  91. Object tabHeader = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", String.class).invoke(null, "{\"text\":\"" + header + "\"}");
  92. Object tabFooter = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", String.class).invoke(null, "{\"text\":\"" + footer + "\"}");
  93. Constructor<?> titleConstructor = getNMSClass("PacketPlayOutPlayerListHeaderFooter").getConstructor(getNMSClass("IChatBaseComponent"));
  94. Object packet = titleConstructor.newInstance(tabHeader);
  95. Field field = packet.getClass().getDeclaredField("b");
  96. field.setAccessible(true);
  97. field.set(packet, tabFooter);
  98. sendPacket(player, packet);
  99. } catch (Exception ex) {
  100. ex.printStackTrace();
  101. }
  102. }
  103.  
  104. public void onEnable() {
  105. getConfig().options().copyDefaults(true);
  106. saveConfig();
  107. Server server = getServer();
  108. ConsoleCommandSender console = server.getConsoleSender();
  109.  
  110. console.sendMessage("");
  111. console.sendMessage(ChatColor.BLUE + "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
  112. console.sendMessage("");
  113. console.sendMessage(ChatColor.AQUA + getDescription().getName());
  114. console.sendMessage(ChatColor.AQUA + "Version " + getDescription().getVersion());
  115. console.sendMessage("");
  116. console.sendMessage(ChatColor.BLUE + "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
  117. console.sendMessage("");
  118.  
  119. Bukkit.getPluginManager().registerEvents(this, this);
  120. }
  121.  
  122. @EventHandler
  123. public void onPlayerJoin(PlayerJoinEvent event) {
  124. if (getConfig().getBoolean("Title On Join")) {
  125. sendTitle(event.getPlayer(), 20, 50, 20, getConfig().getString("Title Message"), getConfig().getString("Subtitle Message"));
  126. }
  127.  
  128. if (getConfig().getBoolean("Tab Header Enabled")) {
  129. sendTabTitle(event.getPlayer(), getConfig().getString("Tab Header Message"), getConfig().getString("Tab Footer Message"));
  130. }
  131. }
  132.  
  133. public void onDisable() {
  134. getLogger().info(getDescription().getName() + " has been disabled!");
  135. }
  136.  
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement