BroadcastMessage from event

Discussion in 'Plugin Development' started by Tss1410, Apr 28, 2019.

Thread Status:
Not open for further replies.
  1. Offline

    Tss1410

    I have this code. When i try to use it on my 1.14 server, i get this error:

    Caused by: java.lang.IllegalStateException: BroadcastMessageEvent cannot be triggered asynchronously from another thread.

    I have been using it prevously on 1.13, but now it wont work. Any ideas?


    Code:
    @EventHandler
        public void onPlayerChat(AsyncPlayerChatEvent e){
            if(pl.muted.contains(e.getPlayer().getUniqueId().toString())){
                e.setCancelled(true);
                e.getPlayer().sendMessage(ChatColor.RED + "You are muted!");
                return;
            }       
           
            Bukkit.broadcastMessage(pl.players.get(e.getPlayer().getUniqueId().toString()).rank.color + pl.players.get(e.getPlayer().getUniqueId().toString()).rank.prefix + (pl.players.get(e.getPlayer().getUniqueId().toString()).rank.id < Rank.SPONSOR.id ? ""  : ChatColor.DARK_GRAY + " ┃ " ) + pl.players.get(e.getPlayer().getUniqueId().toString()).rank.color +
                    e.getPlayer().getName() + ChatColor.GRAY + " » " + ChatColor.WHITE +
                    (pl.players.get(e.getPlayer().getUniqueId().toString()).rank.id > Rank.BRUKER.id ? ChatColor.translateAlternateColorCodes('&', e.getMessage()) : e.getMessage()));
            addLog(e.getPlayer().getName() + ": " + e.getMessage());
            e.setCancelled(true);
    
        }
     
  2. Offline

    timtower Administrator Administrator Moderator

    @Tss1410 Run it through a BukkitRunnable that is called a single tick later.
    But it is way better to just set the format instead of stopping the message and sending it yourself.
     
    FabeGabeMC, Dai_Kunai and KarimAKL like this.
Thread Status:
Not open for further replies.

Share This Page