Solved PlayerJoinEvent not working

Discussion in 'Plugin Development' started by Luseres, Aug 9, 2017.

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

    Luseres

    Hello bukkit users,
    I have made my own plugin in eclipse and I wanted it to be like this:
    When a ranked player joins the server there will be a message being showed and this is only in the Hub.
    So my idea was to do this but I dont have bungee cord so I had to do it on a world called "Spawn".
    When a player joins with the permissions:
    - perzios.vip
    - perzios.elite
    - perzios.premium
    - perzios.legend
    there will be a join message to everyone in the world "Spawn".

    So I tryd to make a code that will do this but I had no succes...
    I tryd help from a Developer and he tryed to fixt it to but it did not help the problem.

    My console is error free on reload, restart and startup.
    In /pl the plugin "PerziosCraft" is there
    In console on reload, restart, startup it says:
    [Server] INFO Enabling PerziosCraft v1.1.3
    [Server] INFO PerziosCraft Plugin Enabled!

    my current code is:

    Code:
    package me.luseres.perzioscraft;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    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;
    
    public class Main extends JavaPlugin implements Listener{
    
        @Override
        public void onEnable() {
            getLogger().info(ChatColor.AQUA+"PerziosCraft Plugin Enabled!");
            getCommand("perzioscraft").setExecutor(new CMD_perzioscraft());
        }
      
      
      
        @EventHandler
        public void onJoin(PlayerJoinEvent e) {
            Player player = e.getPlayer();
            if(e.getPlayer().hasPermission("perzios.vip")){
                for(Player ap : Bukkit.getOnlinePlayers()){
                    if(ap.getServer().getServerName().equalsIgnoreCase("spawn")){
                        ap.sendMessage(ChatColor.GRAY+"[" + ChatColor.DARK_BLUE+"Perzios" + ChatColor.DARK_AQUA+"Craft" + ChatColor.GRAY+"]" +
                                " " + ChatColor.GRAY + "[" + ChatColor.RED + "VIP" + ChatColor.GRAY + "] " + ChatColor.AQUA+player.getName() + ChatColor.AQUA+"Joined the PerziosCraft Servers!");
                    }
                }
            }
     
            if(e.getPlayer().hasPermission("perzios.elite")){
                for(Player ap : Bukkit.getOnlinePlayers()){
                    if(ap.getServer().getServerName().equalsIgnoreCase("spawn")){
                        ap.sendMessage(ChatColor.GRAY+"[" + ChatColor.DARK_BLUE+"Perzios" + ChatColor.DARK_AQUA+"Craft" + ChatColor.GRAY+"]" +
                                " " + ChatColor.GRAY + "[" + ChatColor.DARK_BLUE + "Elite" + ChatColor.GRAY + "] " + ChatColor.AQUA+player.getName() + ChatColor.AQUA+"Joined the PerziosCraft Servers!");
                    }
                }
            }
            if(e.getPlayer().hasPermission("perzios.premium")){
                for(Player ap : Bukkit.getOnlinePlayers()){
                    if(ap.getServer().getServerName().equalsIgnoreCase("spawn")){
                        ap.sendMessage(ChatColor.GRAY+"[" + ChatColor.DARK_GREEN+"Perzios" + ChatColor.DARK_AQUA+"Craft" + ChatColor.GRAY+"]" +
                                " " + ChatColor.GRAY + "[" + ChatColor.RED + "Premium" + ChatColor.GRAY + "] " + ChatColor.AQUA+player.getName() + ChatColor.AQUA+"Joined the PerziosCraft Servers!");
                    }
                }
            }
            if(e.getPlayer().hasPermission("perzios.legend")){
                for(Player ap : Bukkit.getOnlinePlayers()){
                    if(ap.getServer().getServerName().equalsIgnoreCase("spawn")){
                        ap.sendMessage(ChatColor.GRAY+"[" + ChatColor.DARK_PURPLE+"Perzios" + ChatColor.DARK_AQUA+"Craft" + ChatColor.GRAY+"]" +
                                " " + ChatColor.GRAY + "[" + ChatColor.GOLD + "Legend" + ChatColor.GRAY + "] " + ChatColor.AQUA+player.getName() + ChatColor.AQUA+"Joined the PerziosCraft Servers!");
                    }
                }
            }
        }
    }
    
    Maybe you guys can help me out with this problem but I cant find anything...
    Thank you for helping, Luseres
     
    Last edited: Aug 9, 2017
  2. Offline

    Zombie_Striker

    @Luseres
    1. Events need the class to be registered in order to be seen. Register the listener in the onEnable.
    2. Do not log your own plugins. Bukkit does this for you. Remove the logger.
    3. Don't loop through the online players; That will get everyone on the server. If you only want players in the lobby to see it, get the player's in the lobby world by using Bukkit.getWorld("spawn").getPlayers()
    4. Cancel the event if the player has any of those permissions. Currently, the default spawn message will be sent even if you send your own messages.
     
    Luseres likes this.
  3. Offline

    Luseres

    @Zombie_Striker
    I changed the code to:

    Code:
    package me.luseres.perzioscraft;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    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;
    
    public class Main extends JavaPlugin implements Listener{
    
        @Override
        public void onEnable() {
            getLogger().info(ChatColor.AQUA+"PerziosCraft Plugin Enabled!");
            getCommand("perzioscraft").setExecutor(new CMD_perzioscraft());
            getServer().getPluginManager().registerEvents(this, this);
        }
      
      
      
        @EventHandler
        public void onJoin (PlayerJoinEvent e) {
            Player player = e.getPlayer();
            if(e.getPlayer().hasPermission("perzios.vip")){
                for(Player ap : Bukkit.getWorld("Spawn").getPlayers()){
                    if(ap.getWorld().equals("Spawn")){
                        ap.sendMessage(ChatColor.GRAY+"[" + ChatColor.DARK_BLUE+"Perzios" + ChatColor.DARK_AQUA+"Craft" + ChatColor.GRAY+"]" +
                                " " + ChatColor.GRAY + "[" + ChatColor.RED + "VIP" + ChatColor.GRAY + "] " + ChatColor.AQUA+player.getName() + ChatColor.AQUA+"Joined the PerziosCraft Servers!");
                    }
                    else {
                    }
                }
            }
     
            if(e.getPlayer().hasPermission("perzios.elite")){
                for(Player ap : Bukkit.getWorld("Spawn").getPlayers()){
                    if(ap.getWorld().equals("Spawn")){
                        ap.sendMessage(ChatColor.GRAY+"[" + ChatColor.DARK_BLUE+"Perzios" + ChatColor.DARK_AQUA+"Craft" + ChatColor.GRAY+"]" +
                                " " + ChatColor.GRAY + "[" + ChatColor.DARK_BLUE + "Elite" + ChatColor.GRAY + "] " + ChatColor.AQUA+player.getName() + ChatColor.AQUA+"Joined the PerziosCraft Servers!");
                    }
                    else {
                    }
                }
            }
            if(e.getPlayer().hasPermission("perzios.premium")){
                for(Player ap : Bukkit.getWorld("Spawn").getPlayers()){
                    if(ap.getWorld().equals("Spawn")){
                        ap.sendMessage(ChatColor.GRAY+"[" + ChatColor.DARK_GREEN+"Perzios" + ChatColor.DARK_AQUA+"Craft" + ChatColor.GRAY+"]" +
                                " " + ChatColor.GRAY + "[" + ChatColor.RED + "Premium" + ChatColor.GRAY + "] " + ChatColor.AQUA+player.getName() + ChatColor.AQUA+"Joined the PerziosCraft Servers!");
                    }
                    else {
                    }
                }
            }
            if(e.getPlayer().hasPermission("perzios.legend")){
                for(Player ap : Bukkit.getWorld("Spawn").getPlayers()){
                    if(ap.getWorld().equals("Spawn")){
                        ap.sendMessage(ChatColor.GRAY+"[" + ChatColor.DARK_PURPLE+"Perzios" + ChatColor.DARK_AQUA+"Craft" + ChatColor.GRAY+"]" +
                                " " + ChatColor.GRAY + "[" + ChatColor.GOLD + "Legend" + ChatColor.GRAY + "] " + ChatColor.AQUA+player.getName() + ChatColor.AQUA+"Joined the PerziosCraft Servers!");
                    }
                    else {
                    }
                }
            }
        }
    }
    
    So I registered the event, change the getWorld (I'm not sure if its good now).
    But how do I cancel the event in
    Code:
                    else {
                    }
    ?
     
  4. Offline

    cuzimeinhorn

    e.setcancelled(true);
     
  5. Offline

    Luseres

    Does not work
    Error:
    and line 32 is the
    Code:
    e.setcancelled(true);
     
  6. Offline

    Zombie_Striker

    @Luseres
    It is setCanceled(), with a capital C.
     
  7. Offline

    Luseres

    @Zombie_Striker

    Now I got
    by chaning the c to C
     
    Last edited: Aug 10, 2017
  8. Offline

    Zombie_Striker

    @Luseres
    After re-reading your code, I realized you were using PlayerJoinEvent and have no idea why setCanceled was even recommended. The code you actually want is e.setJoinMessage("");
     
  9. Offline

    A5H73Y

    Your code could be refactored to a better standard.
    Use a switch statement on their permission to set a message variable to the matching message.
    Also the "if(ap.getWorld().equals("Spawn")){" line is now redundant, as is each empty "} else {"
    Remind yourself to follow the DRY principle.
     
  10. Offline

    Luseres

    @A5H73Y , @Zombie_Striker Thank you for helping me out! The plugin works fine now! Ill give you both credits :D and thank you for spending your time on this post!
     
Thread Status:
Not open for further replies.

Share This Page