Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.PDKnight.Main;
- import java.lang.reflect.Constructor;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.entity.Player;
- public class TitleAPI {
- public static void sendPacket(Player player, Object packet) {
- try {
- Object handle = player.getClass()
- .getMethod("getHandle", new Class[0])
- .invoke(player, new Object[0]);
- Object playerConnection = handle.getClass()
- .getField("playerConnection").get(handle);
- playerConnection
- .getClass()
- .getMethod("sendPacket",
- new Class[] { getNMSClass("Packet") })
- .invoke(playerConnection, new Object[] { packet });
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static Class<?> getNMSClass(String name) {
- String version = Bukkit.getServer().getClass().getPackage().getName()
- .split("\\.")[3];
- try {
- return Class
- .forName("net.minecraft.server." + version + "." + name);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- return null;
- }
- public static void sendTitle(Player player, String times, String title, String subtitle) {
- try {
- int fadeIn = I(times.split(" ")[0]),
- stay = I(times.split(" ")[1]),
- fadeOut = I(times.split(" ")[2]);
- if (title != null) {
- title = ChatColor.translateAlternateColorCodes('&', title);
- title = title.replaceAll("%player%", player.getDisplayName());
- Object enumTitle = getNMSClass("PacketPlayOutTitle")
- .getDeclaredClasses()[0].getField("TITLE").get(null);
- Object chatTitle = getNMSClass("IChatBaseComponent")
- .getDeclaredClasses()[0].getMethod("a",
- new Class[] { String.class }).invoke(null,
- new Object[] { title });
- Constructor<?> titleConstructor = getNMSClass(
- "PacketPlayOutTitle").getConstructor(
- new Class[] {
- getNMSClass("PacketPlayOutTitle")
- .getDeclaredClasses()[0],
- getNMSClass("IChatBaseComponent"),
- Integer.TYPE, Integer.TYPE, Integer.TYPE });
- Object titlePacket = titleConstructor.newInstance(new Object[] {
- enumTitle, chatTitle, fadeIn, stay, fadeOut });
- sendPacket(player, titlePacket);
- }
- if (subtitle != null) {
- subtitle = ChatColor
- .translateAlternateColorCodes('&', subtitle);
- subtitle = subtitle.replaceAll("%player%",
- player.getDisplayName());
- Object enumSubtitle = getNMSClass("PacketPlayOutTitle")
- .getDeclaredClasses()[0].getField("SUBTITLE").get(null);
- Object chatSubtitle = getNMSClass("IChatBaseComponent")
- .getDeclaredClasses()[0].getMethod("a",
- new Class[] { String.class }).invoke(null,
- new Object[] { subtitle });
- Constructor<?> subtitleConstructor = getNMSClass(
- "PacketPlayOutTitle").getConstructor(
- new Class[] {
- getNMSClass("PacketPlayOutTitle")
- .getDeclaredClasses()[0],
- getNMSClass("IChatBaseComponent"),
- Integer.TYPE, Integer.TYPE, Integer.TYPE });
- Object subtitlePacket = subtitleConstructor
- .newInstance(new Object[] { enumSubtitle, chatSubtitle,
- fadeIn, stay, fadeOut });
- sendPacket(player, subtitlePacket);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static Integer I(String s) {
- return Integer.parseInt(s);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement