@Override
 public void handle(AbstractPacketHandler handler) throws Exception {
   if (handler instanceof DownstreamBridge) {
     getPlayerField(DownstreamBridge.class);
     if (playerField != null) {
       ProxiedPlayer player;
       try {
         playerField.setAccessible(true);
         player = (ProxiedPlayer) playerField.get(handler);
       } catch (IllegalAccessException ex) {
         BungeeTabListPlus.getInstance()
             .getLogger()
             .warning("Failed to access player object in TeamPacketHandler for " + handler);
         return;
       }
       if (BungeeTabListPlus.getTabList(player) instanceof TabList18v3) {
         Server server = player.getServer();
         if (server != null) {
           BungeeTabListPlus.getInstance()
               .getLogger()
               .warning(
                   "Server "
                       + server.getInfo().getName()
                       + " uses Scoreboard teams. This feature is not compatible with BungeeTabListPlus.");
         } else {
           BungeeTabListPlus.getInstance()
               .getLogger()
               .warning(
                   "Player "
                       + player.getName()
                       + " received a Scoreboard team packet. This feature is not compatible with BungeeTabListPlus.");
         }
         throw CancelSendSignal.INSTANCE;
       }
     } else {
       BungeeTabListPlus.getInstance().getLogger().severe("Could not get player for " + handler);
     }
   }
   super.handle(handler);
 }
  public static void sendMessage(Server server, String... message) {
    ByteArrayOutputStream b = new ByteArrayOutputStream();
    DataOutputStream o = new DataOutputStream(b);

    try {
      for (String m : message) {
        o.writeUTF(m);
      }
    } catch (IOException ignored) {
    }

    server.sendData("BSBungee", b.toByteArray());
  }