Detecting Chat Messages and acting accordingly

Discussion in 'Plugin Development' started by Godbrandont, Jul 4, 2015.

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

    Godbrandont

    Hello I have recently been trying to work on a basic plugin that detects whether a player says a certain thing and if they do, send a message to them. This is basically a Helper Bot. However my code is currently not working and I have no idea why. Could anyone help me? Thanks.

    Main Class
    Code:
    package me.Godbrandont.HelperBot;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Main extends JavaPlugin{
       
        public void OnEnable()
        {
            registerListeners();
        }
       
        public void registerListeners()
        {
            PluginManager pm = getServer().getPluginManager();
            pm.registerEvents(new PlayerListener(), this);
        }
    }
    PlayerListener Class
    Code:
    package me.Godbrandont.HelperBot;
    
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.AsyncPlayerChatEvent;
    
    public class PlayerListener implements Listener{
       
        @EventHandler
        public void OnPlayerChat(AsyncPlayerChatEvent e)
        {
            Player p = e.getPlayer();
            if(!p.hasPermission("helperbot.exempt"))
            {
                if(e.getMessage().toLowerCase().contains("leave") && e.getMessage().toLowerCase().contains("spawn") || e.getMessage().toLowerCase().contains("exit") && e.getMessage().toLowerCase().contains("spawn") || e.getMessage().toLowerCase().contains("depart") && e.getMessage().toLowerCase().contains("spawn") || e.getMessage().toLowerCase().contains("go out of") && e.getMessage().toLowerCase().contains("spawn"))
                {
                    p.sendMessage("[HelperBot] You can leave spawn via the biome portals scattered around spawn.");
                    e.setCancelled(true);
                }   
            }
        }
    }
    
     
  2. Offline

    Reynergodoy

    hmm... you can do:
    @EventHandler
    public void onPlayerChat(AsyncPlayerChatEvent e) {
    Player target = e.getPlayer();
    String message = e.getMessage().toLowerCase();


    if(message.contains("spawn")){

    Bukkit.broadcastMessage( "ChatColor.LIGHT_PURPLE + [HelperBot] " + ChatColor.GREEN + target.getDisplayName() + ChatColor.GREEN "you can leave spawn via the biome portals scattered around spawn.");
    }
     
  3. Offline

    schwabfl

    are you opped?
    Because if you are opped !p.hasPermission("helperbot.exempt") will return false
    meaning that this
    Code:
    if(e.getMessage().toLowerCase().contains("leave") && e.getMessage().toLowerCase().contains("spawn") || e.getMessage().toLowerCase().contains("exit") && e.getMessage().toLowerCase().contains("spawn") || e.getMessage().toLowerCase().contains("depart") && e.getMessage().toLowerCase().contains("spawn") || e.getMessage().toLowerCase().contains("go out of") && e.getMessage().toLowerCase().contains("spawn")) {
         p.sendMessage("[HelperBot] You can leave spawn via the biome portals scattered around spawn.");
         e.setCancelled(true);
    } 
    
    will not run
     
  4. Offline

    Godbrandont

    That doesn't seem to work either :(

    Yeah I know, but I've tried it with and without and it doesn't work either way

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 12, 2016
  5. Offline

    schwabfl

    Ah, I just realized while looking at your code again
    you misspelled "onEnable"
    you capitalized the "o"
    change the upper case o to a lower case o and it should work
     
  6. Offline

    Godbrandont

    Ah of course, thanks a lot
     
Thread Status:
Not open for further replies.

Share This Page