Alexousd

DEV' PLUGIN HUB #05 - Title

Jun 14th, 2018
709
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.97 KB | None | 0 0
  1. package fr.itsalexousd.hub.tools;
  2.  
  3. import net.minecraft.server.v1_12_R1.IChatBaseComponent;
  4. import net.minecraft.server.v1_12_R1.PacketPlayOutTitle;
  5. import net.minecraft.server.v1_12_R1.PlayerConnection;
  6. import org.bukkit.ChatColor;
  7. import org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer;
  8. import org.bukkit.entity.Player;
  9.  
  10. import java.util.Collection;
  11.  
  12. public class Title {
  13.  
  14.     private String title;
  15.     private String subtitle;
  16.  
  17.     /**
  18.      * Créer un Title avec un message principal
  19.      * @param title le message principal
  20.      */
  21.     public Title(String title) {
  22.         this.title = title;
  23.         subtitle = "";
  24.     }
  25.  
  26.     /**
  27.      * Créer un Title avec un message principal et un sous-message
  28.      * @param title le message principal
  29.      * @param subtitle le sous-message
  30.      */
  31.     public Title(String title, String subtitle) {
  32.         this.title = title;
  33.         this.subtitle = subtitle;
  34.     }
  35.  
  36.     /**
  37.      * Envoyer le Title à un joueur
  38.      * @param player le joueur à qui envoyer le Title
  39.      * @param fadeIn le temps de fondu en ouverture
  40.      * @param stay le temps d'affichage
  41.      * @param fadeOut le temps de fondu en fermeture
  42.      */
  43.     public void send(Player player, int fadeIn, int stay, int fadeOut) {
  44.         PlayerConnection connection = ((CraftPlayer) player).getHandle().playerConnection;
  45.         PacketPlayOutTitle packetPlayOutTimes = new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.TIMES, null, fadeIn * 20, stay * 20, fadeOut * 20);
  46.         connection.sendPacket(packetPlayOutTimes);
  47.         if (subtitle != null) {
  48.             subtitle = subtitle.replaceAll("%player%", player.getDisplayName());
  49.             subtitle = ChatColor.translateAlternateColorCodes('&', subtitle);
  50.             IChatBaseComponent titleSub = IChatBaseComponent.ChatSerializer.a("{\"text\": \"" + subtitle + "\"}");
  51.             PacketPlayOutTitle packetPlayOutSubTitle = new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.SUBTITLE, titleSub);
  52.             connection.sendPacket(packetPlayOutSubTitle);
  53.         }
  54.         if (title != null) {
  55.             title = title.replaceAll("%player%", player.getDisplayName());
  56.             title = ChatColor.translateAlternateColorCodes('&', title);
  57.             IChatBaseComponent titleMain = IChatBaseComponent.ChatSerializer.a("{\"text\": \"" + title + "\"}");
  58.             PacketPlayOutTitle packetPlayOutTitle = new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.TITLE, titleMain);
  59.             connection.sendPacket(packetPlayOutTitle);
  60.         }
  61.     }
  62.  
  63.     /**
  64.      * Envoyer le Title à plusieurs joueurs
  65.      * @param players les joueurs à qui envoyer le Title
  66.      * @param fadeIn le temps de fondu en ouverture
  67.      * @param stay le temps d'affichage
  68.      * @param fadeOut le temps de fondu en fermeture
  69.      */
  70.     public void send(Collection<? extends Player> players, int fadeIn, int stay, int fadeOut){
  71.         players.forEach(p -> send(p, fadeIn, stay, fadeOut));
  72.     }
  73. }
Add Comment
Please, Sign In to add comment