Solved EventHandler not working?

Discussion in 'Plugin Development' started by Just_Niico, May 16, 2015.

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

    Just_Niico

    Code:
    package com.nico.helpme;
    
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.ChatColor;
    import org.bukkit.permissions.Permissible;
    public class Main extends JavaPlugin{
            public void onEnable(){
                    getLogger().info(ChatColor.DARK_GRAY + "[" + ChatColor.GOLD + "HelpMe" + ChatColor.DARK_GRAY + "]" + "" + ChatColor.GREEN + "Has now been enabled!");
            }
           
            @EventHandler
            public void onPlayerJoin(PlayerJoinEvent e) {
                    Player p = e.getPlayer();
                    p.sendMessage(ChatColor.GREEN + "This server is running 'HelpMe' by Just_Niico");
            }
          
            public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
                    if(cmd.getName().equalsIgnoreCase("helpme")){
                            sender.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.GOLD + "HelpMe" + ChatColor.DARK_GRAY + "]" + " " + ChatColor.GREEN + "You will recieve help as soon as possible." );                   
                            if (p.hasPermission("helpme.staff")) {
                                Player p = (Player) sender;
                                sender.sendMessage(ChatColor.RED + p.getPlayer().getName() + " " + ChatColor.RED + "needs your help!");
                                return true;
                        }
                    }
                  
                    return false;
            }
    }
    I want it to be so when someone logs in it says to them: "This server is running HelpMe by Just_Niico" and when someone types /helpme it says "You will recieve help as soon as possible." If the player has permission "helpme.staff" they get "Player needs your help!"

    For some reason, it keeps on going wrong. Please can some help me correct this? Thanks!
     
  2. Offline

    mythbusterma

    @Just_Niico

    "p" is not defined in the scope of your third method.

    I think you should go do some Java tutorials before you try Bukkit.
     
  3. I think you also need to take a better look at the event api reference :/
     
  4. Offline

    Ungemonstert

    I think you need to register the event.

    in your code:

    instead of
    Code:
    package com.nico.helpme;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.ChatColor;
    import org.bukkit.permissions.Permissible;
    public class Main extends JavaPlugin{
            public void onEnable(){
                    getLogger().info(ChatColor.DARK_GRAY + "[" + ChatColor.GOLD + "HelpMe" + ChatColor.DARK_GRAY + "]" + "" + ChatColor.GREEN + "Has now been enabled!");
            }
         
            @EventHandler
            public void onPlayerJoin(PlayerJoinEvent e) {
                    Player p = e.getPlayer();
                    p.sendMessage(ChatColor.GREEN + "This server is running 'HelpMe' by Just_Niico");
            }
       
            public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
                    if(cmd.getName().equalsIgnoreCase("helpme")){
                            sender.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.GOLD + "HelpMe" + ChatColor.DARK_GRAY + "]" + " " + ChatColor.GREEN + "You will recieve help as soon as possible." );                
                            if (p.hasPermission("helpme.staff")) {
                                Player p = (Player) sender;
                                sender.sendMessage(ChatColor.RED + p.getPlayer().getName() + " " + ChatColor.RED + "needs your help!");
                                return true;
                        }
                    }
               
                    return false;
            }
    }
    write
    Code:
    package com.nico.helpme;
    
    
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.ChatColor;
    import org.bukkit.permissions.Permissible;
    
    public class Main extends JavaPlugin /**/implements Listener/**/{
        public void onEnable(){
            /**/this.getServer().getPluginManager().registerEvents(this, this);/**/
            getLogger().info(ChatColor.DARK_GRAY + "[" + ChatColor.GOLD + "HelpMe" + ChatColor.DARK_GRAY + "]" + "" + ChatColor.GREEN + "Has now been enabled!");
        }
          
        @EventHandler
        public void onPlayerJoin(PlayerJoinEvent e) {
            Player p = e.getPlayer();
            p.sendMessage(ChatColor.GREEN + "This server is running 'HelpMe' by Just_Niico");
        }
        
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
            if(cmd.getName().equalsIgnoreCase("helpme")){
                sender.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.GOLD + "HelpMe" + ChatColor.DARK_GRAY + "]" + " " + ChatColor.GREEN + "You will recieve help as soon as possible." );                 
                /**/Player p = (Player) sender;/**/
                if (p.hasPermission("helpme.staff")) {
                    //Player p = (Player) sender;       - You must set the variable p before you test, if p has permissions for that
                    /**/p/**/.sendMessage(ChatColor.RED + p.getPlayer().getName() + " " + ChatColor.RED + "needs your help!");       - Now you can use the variable p
                    return true;
                }
            }
          
            return false;
        }
    }
    
    Everything I edited stands in /**/(what I edited)/**/.
    You can delete the /**/'s if you want to.
     
    Last edited: May 17, 2015
  5. Offline

    Just_Niico

    Last edited: May 17, 2015
Thread Status:
Not open for further replies.

Share This Page