Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Copyright (c) Memexuer 2019. Wszelkie prawa zastrzeżone.
- */
- package pl.memexurer.core.util;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.entity.Player;
- import pl.memexurer.core.yaml.Mesages;
- import java.lang.reflect.Constructor;
- import java.lang.reflect.Field;
- import java.lang.reflect.Method;
- public class TitleUtil {
- public TitleUtil() {
- }
- public static void sendActionBar(Player player, String message) {
- String nmsVersion = (nmsVersion = Bukkit.getServer().getClass().getPackage().getName()).substring(nmsVersion.lastIndexOf(".") + 1);
- try {
- Class<?> c1 = Class.forName("org.bukkit.craftbukkit." + nmsVersion + ".entity.CraftPlayer");
- Object p = c1.cast(player);
- Object ppoc;
- Class<?> c2, c3,
- c4 = Class.forName("net.minecraft.server." + nmsVersion + ".PacketPlayOutChat"),
- c5 = Class.forName("net.minecraft.server." + nmsVersion + ".Packet");
- Object o;
- if ((nmsVersion.equalsIgnoreCase("v1_8_R1") || !nmsVersion.startsWith("v1_8_")) && !nmsVersion.startsWith("v1_9_")) {
- c2 = Class.forName("net.minecraft.server." + nmsVersion + ".ChatSerializer");
- c3 = Class.forName("net.minecraft.server." + nmsVersion + ".IChatBaseComponent");
- Method m3 = c2.getDeclaredMethod("a", String.class);
- o = c3.cast(m3.invoke(c2, "{\"text\": \"" + message + "\"}"));
- } else {
- c2 = Class.forName("net.minecraft.server." + nmsVersion + ".ChatComponentText");
- c3 = Class.forName("net.minecraft.server." + nmsVersion + ".IChatBaseComponent");
- o = c2.getConstructor(new Class<?>[]{String.class}).newInstance(message);
- }
- ppoc = c4.getConstructor(new Class<?>[]{c3, byte.class}).newInstance(o, (byte) 2);
- Method m1 = c1.getDeclaredMethod("getHandle");
- Object h = m1.invoke(p);
- Field f1 = h.getClass().getDeclaredField("playerConnection");
- Object pc = f1.get(h);
- Method m5 = pc.getClass().getDeclaredMethod("sendPacket", c5);
- m5.invoke(pc, ppoc);
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- public static void sendTitle(Player player, String text, int x, int y, int z) {
- try {
- Object enumTitle = getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0].getField("TITLE").get(null);
- Object titleChat = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", String.class).invoke(null, "\"" + ColorUtil.tr(text) + "\"");
- Constructor<?> titleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"), int.class, int.class, int.class);
- Object titlePacket = titleConstructor.newInstance(enumTitle, titleChat, x, y, z);
- sendPacket(player, titlePacket);
- } catch (Exception ex) {
- //Do something
- }
- }
- public static void sendSubtitle(Player player, String text, int x, int y, int z) {
- try {
- Object enumSubtitle = getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0].getField("SUBTITLE").get(null);
- Object subtitleChat = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", String.class).invoke(null, "\"" + ColorUtil.tr(text) + "\"");
- Constructor<?> titleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"), int.class, int.class, int.class);
- Object subtitlePacket = titleConstructor.newInstance(enumSubtitle, subtitleChat, x, y, z);
- sendPacket(player, subtitlePacket);
- } catch (Exception ex) {
- //Do something
- }
- }
- private static void sendPacket(Player player, Object packet) {
- try {
- Object handle = player.getClass().getMethod("getHandle").invoke(player);
- Object playerConnection = handle.getClass().getField("playerConnection").get(handle);
- playerConnection.getClass().getMethod("sendPacket", getNMSClass("Packet")).invoke(playerConnection, packet);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * Get NMS class using reflection
- *
- * @param name Name of the class
- * @return Class
- */
- private 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 sendMsg(Player p, String title, String msg, int in, int stay, int out) {
- sendTitle(p, title, in, stay, out);
- sendSubtitle(p, msg, in, stay, out);
- }
- public static void sendPluginMsg(Player p, String title, String msg) {
- sendTitle(p, Mesages.colorScheme + ChatColor.BOLD + title, 7,2,10);
- sendSubtitle(p, ChatColor.GRAY + msg, 7,2,10);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement