Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package de.enotrix.lobby;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.Server;
- import org.bukkit.command.ConsoleCommandSender;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.player.PlayerJoinEvent;
- import org.bukkit.plugin.java.JavaPlugin;
- import java.lang.reflect.Constructor;
- import java.lang.reflect.Field;
- public class TitelAPI extends JavaPlugin implements Listener {
- @Deprecated
- public static void sendTitle(Player player, Integer fadeIn, Integer stay, Integer fadeOut, String message) {
- sendTitle(player, fadeIn, stay, fadeOut, message, null);
- }
- @Deprecated
- public static void sendSubtitle(Player player, Integer fadeIn, Integer stay, Integer fadeOut, String message) {
- sendTitle(player, fadeIn, stay, fadeOut, null, message);
- }
- @Deprecated
- public static void sendFullTitle(Player player, Integer fadeIn, Integer stay, Integer fadeOut, String title, String subtitle) {
- sendTitle(player, fadeIn, stay, fadeOut, title, subtitle);
- }
- public 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();
- }
- }
- 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, Integer fadeIn, Integer stay, Integer fadeOut, String title, String subtitle) {
- try {
- 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", String.class).invoke(null, "{\"text\":\"" + title + "\"}");
- Constructor<?> titleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"), int.class, int.class, int.class);
- Object titlePacket = titleConstructor.newInstance(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", String.class).invoke(null, "{\"text\":\"" + subtitle + "\"}");
- Constructor<?> subtitleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"), int.class, int.class, int.class);
- Object subtitlePacket = subtitleConstructor.newInstance(enumSubtitle, chatSubtitle, fadeIn, stay, fadeOut);
- sendPacket(player, subtitlePacket);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static void sendTabTitle(Player player, String header, String footer) {
- if (header == null) header = "";
- header = ChatColor.translateAlternateColorCodes('&', header);
- if (footer == null) footer = "";
- footer = ChatColor.translateAlternateColorCodes('&', footer);
- header = header.replaceAll("%player%", player.getDisplayName());
- footer = footer.replaceAll("%player%", player.getDisplayName());
- try {
- Object tabHeader = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", String.class).invoke(null, "{\"text\":\"" + header + "\"}");
- Object tabFooter = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", String.class).invoke(null, "{\"text\":\"" + footer + "\"}");
- Constructor<?> titleConstructor = getNMSClass("PacketPlayOutPlayerListHeaderFooter").getConstructor(getNMSClass("IChatBaseComponent"));
- Object packet = titleConstructor.newInstance(tabHeader);
- Field field = packet.getClass().getDeclaredField("b");
- field.setAccessible(true);
- field.set(packet, tabFooter);
- sendPacket(player, packet);
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- public void onEnable() {
- getConfig().options().copyDefaults(true);
- saveConfig();
- Server server = getServer();
- ConsoleCommandSender console = server.getConsoleSender();
- console.sendMessage("");
- console.sendMessage(ChatColor.BLUE + "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
- console.sendMessage("");
- console.sendMessage(ChatColor.AQUA + getDescription().getName());
- console.sendMessage(ChatColor.AQUA + "Version " + getDescription().getVersion());
- console.sendMessage("");
- console.sendMessage(ChatColor.BLUE + "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
- console.sendMessage("");
- Bukkit.getPluginManager().registerEvents(this, this);
- }
- @EventHandler
- public void onPlayerJoin(PlayerJoinEvent event) {
- if (getConfig().getBoolean("Title On Join")) {
- sendTitle(event.getPlayer(), 20, 50, 20, getConfig().getString("Title Message"), getConfig().getString("Subtitle Message"));
- }
- if (getConfig().getBoolean("Tab Header Enabled")) {
- sendTabTitle(event.getPlayer(), getConfig().getString("Tab Header Message"), getConfig().getString("Tab Footer Message"));
- }
- }
- public void onDisable() {
- getLogger().info(getDescription().getName() + " has been disabled!");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement