Development Assistance AsyncPlayerChatEvent problem

Discussion in 'Plugin Help/Development/Requests' started by Cheesepro, Jan 5, 2015.

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

    Cheesepro

    I've had this error a long time now... But I thought I would just ignores it but it really does spams the console whenever a player said something, so I really dont know where I got wrong Please do help! Thanks

    Error:
    Code:
    [20:41:18] [Async Chat Thread - #3/ERROR]: Could not pass event AsyncPlayerChatEvent to CheeseEssentials v1
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:305) ~[spigot.jar:git-Spigot-612de46-07c2162]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-612de46-07c2162]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-612de46-07c2162]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:484) [spigot.jar:git-Spigot-612de46-07c2162]
        at net.minecraft.server.v1_8_R1.PlayerConnection.chat(PlayerConnection.java:1036) [spigot.jar:git-Spigot-612de46-07c2162]
        at net.minecraft.server.v1_8_R1.PlayerConnection.a(PlayerConnection.java:975) [spigot.jar:git-Spigot-612de46-07c2162]
        at net.minecraft.server.v1_8_R1.PacketPlayInChat.a(PacketPlayInChat.java:26) [spigot.jar:git-Spigot-612de46-07c2162]
        at net.minecraft.server.v1_8_R1.PacketPlayInChat$1.run(PacketPlayInChat.java:47) [spigot.jar:git-Spigot-612de46-07c2162]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.7.0_45]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.7.0_45]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.7.0_45]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.7.0_45]
        at java.lang.Thread.run(Unknown Source) [?:1.7.0_45]
    Caused by: java.lang.NullPointerException
        at me.cheesepro.ce.listener.onPlayerChat.onChat(onPlayerChat.java:152) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_45]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_45]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_45]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_45]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:301) ~[spigot.jar:git-Spigot-612de46-07c2162]
        ... 12 more
    [20:41:18] [Async Chat Thread - #3/INFO]: PRO XxxCheeseproxxX: hi
    OnPlayerChat.java:
    Code:
    package me.cheesepro.ce.listener;
    
    import java.util.List;
    import java.util.Set;
    import java.util.UUID;
    import me.cheesepro.ce.API.Messenger;
    import me.cheesepro.ce.file.noswear;
    import me.cheesepro.ce.mainpack.CEMain;
    import me.cheesepro.ce.mainpack.cmdAFK;
    import org.bukkit.ChatColor;
    import org.bukkit.Server;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.EventPriority;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.AsyncPlayerChatEvent;
    import org.bukkit.event.player.PlayerCommandPreprocessEvent;
    import org.bukkit.permissions.PermissionAttachmentInfo;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.potion.PotionEffectType;
    
    public class onPlayerChat
            implements Listener
    {
        noswear bwords = noswear.getInstance();
        List<String> swearwords = this.bwords.getData().getStringList("words");
        CEMain plugin;
        Messenger msg;
        Set<UUID> afkPlayer;
    
        public onPlayerChat(CEMain plugin)
        {
            plugin.getServer().getPluginManager().registerEvents(this, plugin);
            this.plugin = plugin;
            this.msg = new Messenger(plugin);
            cmdAFK afkclass = new cmdAFK(plugin);
            this.afkPlayer = afkclass.getIsAFK();
        }
    
        @EventHandler
        public void colorcoding(AsyncPlayerChatEvent e)
        {
            Player p = e.getPlayer();
            if (p.hasPermission("cheeseess.chat.color"))
            {
                String msg = e.getMessage().replaceAll("&", "§");
                e.setMessage(msg);
            }
        }
    
        @EventHandler
        public void noSwear(AsyncPlayerChatEvent e)
        {
            Player p = e.getPlayer();
            String msg;
            if (!p.hasPermission("CheeseEss.chat.swear"))
            {
                msg = e.getMessage().toLowerCase().replace(" ", "");
                for (String word : this.swearwords) {
                    if (msg.contains(word))
                    {
                        e.setCancelled(true);
                        p.sendMessage(ChatColor.YELLOW.toString() + ChatColor.BOLD + "!==================================!");
                        p.sendMessage(ChatColor.DARK_RED.toString() + ChatColor.BOLD + "!!!Blocked strings detected in message!!!");
                        p.sendMessage(ChatColor.RED.toString() + ChatColor.BOLD + " *Messages sending action cancelled!*");
                        p.sendMessage(ChatColor.YELLOW.toString() + ChatColor.BOLD + "!==================================!");
                    }
                }
            }
        }
    
        @EventHandler
        public void noSwear(PlayerCommandPreprocessEvent e)
        {
            Player p = e.getPlayer();
            if (!p.hasPermission("CheeseEss.chat.swear"))
            {
                String msg = e.getMessage().toLowerCase();
                for (String words : msg.split(" ")) {
                    if (this.bwords.getData().getStringList("words").contains(words))
                    {
                        e.setCancelled(true);
                        p.sendMessage(ChatColor.YELLOW.toString() + ChatColor.BOLD + "!==================================!");
                        p.sendMessage(ChatColor.DARK_RED.toString() + ChatColor.BOLD + "!!!Blocked strings detected in message!!!");
                        p.sendMessage(ChatColor.RED.toString() + ChatColor.BOLD + " *Messages sending action cancelled!*");
                        p.sendMessage(ChatColor.YELLOW.toString() + ChatColor.BOLD + "!==================================!");
                    }
                }
            }
        }
    
        @EventHandler
        public void noAdsmsg(AsyncPlayerChatEvent e)
        {
            Player p = e.getPlayer();
            if (!p.hasPermission("CheeseEss.chat.ads"))
            {
                String link = e.getMessage().toLowerCase().replaceAll(" ", "");
                if ((link.contains(".com")) || (link.contains(".net")) || (link.contains(".me")) || (link.contains(".tk")) || (link.contains(".org")) || (link.contains(".us")) || (link.contains(".eu")) || (link.contains(".ca")) || (link.contains(".biz")) || (link.contains(".co")) || (link.contains(".info")) || (link.contains("http")))
                {
                    e.setCancelled(true);
                    p.sendMessage(ChatColor.YELLOW.toString() + ChatColor.BOLD + "!==================================!");
                    p.sendMessage(ChatColor.DARK_RED.toString() + ChatColor.BOLD + "###!!!!!Link(s) detected in message!!!!!###");
                    p.sendMessage(ChatColor.RED.toString() + ChatColor.BOLD + " *Messages sending action cancelled!*");
                    p.sendMessage(ChatColor.YELLOW.toString() + ChatColor.BOLD + "!==================================!");
                }
            }
        }
    
        @EventHandler
        public void noAdscmd(PlayerCommandPreprocessEvent e)
        {
            Player p = e.getPlayer();
            if (!p.hasPermission("CheeseEss.chat.ads"))
            {
                String link = e.getMessage().toLowerCase().replaceAll(" ", "");
                if ((link.contains(".com")) || (link.contains(".net")) || (link.contains(".me")) || (link.contains(".tk")) || (link.contains(".org")) || (link.contains(".us")) || (link.contains(".eu")) || (link.contains(".ca")) || (link.contains(".biz")) || (link.contains(".co")) || (link.contains(".info")) || (link.contains("http")))
                {
                    e.setCancelled(true);
                    p.sendMessage(ChatColor.YELLOW.toString() + ChatColor.BOLD + "!==================================!");
                    p.sendMessage(ChatColor.DARK_RED.toString() + ChatColor.BOLD + "###!!!!!Link(s) detected in command!!!!!###");
                    p.sendMessage(ChatColor.RED.toString() + ChatColor.BOLD + " *Messages sending action cancelled!*");
                    p.sendMessage(ChatColor.YELLOW.toString() + ChatColor.BOLD + "!==================================!");
                }
            }
        }
    
        @EventHandler(priority=EventPriority.HIGHEST)
        public void onAFKChat(AsyncPlayerChatEvent e)
        {
            Player p = e.getPlayer();
            UUID id = p.getUniqueId();
            if (this.afkPlayer.contains(id))
            {
                this.afkPlayer.remove(id);
                p.removePotionEffect(PotionEffectType.BLINDNESS);
                p.removePotionEffect(PotionEffectType.NIGHT_VISION);
                this.msg.broadcast(ChatColor.YELLOW.toString() + ChatColor.BOLD + p.getName() + ChatColor.GRAY.toString() + " is no longer AFK");
            }
        }
    
        @EventHandler
        public void onChat(AsyncPlayerChatEvent e)
        {
            Player p = e.getPlayer();
            if (!e.getFormat().equalsIgnoreCase("<%s> %s")) {
                for (PermissionAttachmentInfo perm : p.getEffectivePermissions()) {
                    if (perm.getPermission().startsWith("cheeseess.chat."))
                    {
                        String rank = perm.getPermission().replaceAll("cheeseess.chat.", " ").trim();
                        String rankprefix = this.plugin.getConfig().getString("chat.groups." + rank + ".prefix").replaceAll("&", "§");
                        String rankname = this.plugin.getConfig().getString("chat.groups." + rank + ".namecolor").replaceAll("&", "§");
                        String rankchat = this.plugin.getConfig().getString("chat.groups." + rank + ".chatcolor").replaceAll("&", "§");
                        String rankchatsign = this.plugin.getConfig().getString("chat.groups." + rank + ".chatsign").replaceAll("&", "§");
                        e.setFormat(rankprefix + " " + rankname + "%s" + rankchatsign + " " + rankchat + "%s");
                    }
                }
            } else {
                e.setFormat("<%s> %s");
            }
        }
    }
    
    And finally the line 152 of OnPlayerChat class:
    Code:
                        String rankprefix = this.plugin.getConfig().getString("chat.groups." + rank + ".prefix").replaceAll("&", "§");
    Config.yml:
    Code:
    chat:
      groups:
        player:
          prefix: ''
          namecolor: '&a'
          chatcolor: '&9'
          chatsign: ' &f:'
        helper:
          prefix: '&1&lHelper'
          namecolor: '&a'
          chatcolor: '&2'
          chatsign: ' &a>'
        builder:
          prefix: '&a&lBuilder'
          namecolor: '&2'
          chatcolor: '&f'
          chatsign: ' &a>'
        mod:
          prefix: '&d&lMod'
          namecolor: '&3'
          chatcolor: '&5'
          chatsign: ' &5&l>>'
        admin:
          prefix: '&5&lAdmin'
          namecolor: '&c'
          chatcolor: '&b'
          chatsign: '&5&l>>'
        owner:
          prefix: '&4&lOwner'
          namecolor: '&e'
          chatcolor: '&c&l'
          chatsign: '&e&l>>'
        youtuber:
          prefix: '&f&lYou&4&lTube'
          namecolor: '&a'
          chatcolor: '&9'
          chatsign: ' &f:'
        enhanced:
          prefix: '&b&lEnhanced'
          namecolor: '&a'
          chatcolor: '&f'
          chatsign: '&e:'
        pro:
          prefix: '&c&lPRO'
          namecolor: '&a'
          chatcolor: '&f'
          chatsign: '&e:'
        extreme:
          prefix: '&4&lExtreme'
          namecolor: '&a'
          chatcolor: '&f'
          chatsign: '&e:'
        legendary:
          prefix: '&7&l[&c&l&k0&7&l]&f&l&nLegendary&7&l[&c&l&k0&7&l]&r'
          namecolor: '&a'
          chatcolor: '&f'
          chatsign: '&e:'
        vip:
          prefix: '&0&l[&e&lVIP&0&l]&r'
          namecolor: '&a'
          chatcolor: '&f'
          chatsign: '&e:'
        lucky:
          prefix: '&a&l[&6&lLucky&a&l]&r'
          namecolor: '&a'
          chatcolor: '&9'
          chatsign: ' &f:'
    motd:
      game1: '&a&lWelcome to the server! Enjoy!'
      game2: '&e&lHow you doing today? I dont know you but I am doing Great!'
      game3: '&5&lUHamm I have nothing to day today.'
      game4: '&4&lLVOE MEMEMEMEMEMEMEMEME'
      game5: '&9player.sendMessage(ChatColor.RED.toString + ChatColor.Bold + "Ooops I
        forgot to compile..");'
      sys1: '&e&lServer is running CheeseEssentials!'
      sys2: '&a&lHighly configurable'
      sys3: '&c&lJoin now!'
      sys4: '&d&lStill in BETA!'
      sys5: '&f&lMOTD == Message of the Day!'
    messages:
      join: '&a&l%name% &e&lJoined the game'
      quit: '&e&l%name% &d&lLeft the game'
      bungee: ''
    prefix:
      main: '&b&l>>'
      warn: '&c&l>>'
      tip: '&e&l>>'
      gamemotd: '&5&l>>'
      sysmotd: '&f&lMine&b&lFuture>'
    
    And the thing is that everything works fine... the chat was formatted, color was displayed it works perfectly fine...
     
  2. Offline

    Skionz

    @Cheesepro Use ChatColor.translateAlternateColorCodes(). Not String#replaceAll
     
  3. Offline

    timtower Administrator Administrator Moderator

    Moved to Bukkit alternatives
     
Thread Status:
Not open for further replies.

Share This Page