public void sendTitle(
     Player player, int fadein, int stay, int fadeout, String title, String subtitle) {
   PlayerConnection pConn = ((CraftPlayer) player).getHandle().playerConnection;
   PacketPlayOutTitle pTitleInfo =
       new PacketPlayOutTitle(
           PacketPlayOutTitle.EnumTitleAction.TIMES,
           (IChatBaseComponent) null,
           (int) fadein,
           (int) stay,
           (int) fadeout);
   pConn.sendPacket(pTitleInfo);
   if (subtitle != null) {
     subtitle = subtitle.replaceAll("%player%", player.getDisplayName());
     subtitle = ChatColor.translateAlternateColorCodes('&', subtitle);
     IChatBaseComponent iComp =
         IChatBaseComponent.ChatSerializer.a("{\"text\": \"" + subtitle + "\"}");
     PacketPlayOutTitle pSubtitle =
         new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.SUBTITLE, iComp);
     pConn.sendPacket(pSubtitle);
   }
   if (title != null) {
     title = title.replaceAll("%player%", player.getDisplayName());
     title = ChatColor.translateAlternateColorCodes('&', title);
     IChatBaseComponent iComp =
         IChatBaseComponent.ChatSerializer.a("{\"text\": \"" + title + "\"}");
     PacketPlayOutTitle pTitle =
         new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.TITLE, iComp);
     pConn.sendPacket(pTitle);
   }
 }
  public static void sendPlayerMessage(Player player, String message) {
    HashMap<String, UrlEntry> urls = new HashMap<>();

    // JsonObject component = new JsonObject();
    String result = message;
    while (Regex.isMatch(result, REGEX_URL)) {
      String[] groups = Regex.getGroups(message, REGEX_URL);
      String url = groups[0];
      String name = groups[1];
      urls.put("\\{URL_" + (urls.size() + 1) + "\\}", new UrlEntry(url, name));
      result = Regex.replace(result, REGEX_URL, "\\{URL_" + (urls.size() + 1) + "\\}");
    }

    for (Map.Entry<String, UrlEntry> entry : urls.entrySet()) {
      result = result.replace(entry.getKey(), entry.getValue().getJson());
    }

    // component.addProperty("text", "test");

    IChatBaseComponent comp = IChatBaseComponent.ChatSerializer.a(result);
    Bukkit.broadcastMessage("Sending: " + comp.getText());
    PacketPlayOutChat packet = new PacketPlayOutChat(comp, (byte) 0);
    ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
  }
 public static IChatBaseComponent toICBC(String s) {
   return IChatBaseComponent.ChatSerializer.a(s);
 }