.

Discussion in 'Plugin Development' started by elementalgodz11, Dec 14, 2013.

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

    elementalgodz11

  2. Offline

    boysnnoco

    elementalgodz11 do
    Code:java
    1. @EventHandler
    2. public void onKick(PlayerKickEvent event){
    3. if(event.getPlayer().isBanned()){
    4. event.setQuitMessage(null);
    5. }
     
  3. Offline

    the_merciless

    Do you ban them before or after you kick them?

    Ban them 1st then use the code given above

    Code:java
    1. if (cmd.getName().equalsIgnoreCase("ban")){
    2. if (args.length == 1) {
    3.  
    4. Player p = (Player)sender;
    5. String targetname = args[0];
    6.  
    7. if (Bukkit.getPlayer(targetname) != null){
    8. Player target = Bukkit.getPlayer(targetname);
    9. target.kickPlayer(targetname);
    10. target.setBanned(true);
    11. Bukkit.broadcastMessage(ChatColor.GREEN + sender.getName() + ChatColor.GRAY + " banned " + ChatColor.GREEN + target.getName());
    12. }else{
    13. if (Bukkit.getOfflinePlayer(targetname).hasPlayedBefore()){
    14. OfflinePlayer offlinetarget = Bukkit.getOfflinePlayer(targetname);
    15. offlinetarget.setBanned(true);
    16. Bukkit.broadcastMessage(ChatColor.GREEN + sender.getName() + ChatColor.GRAY + " banned " + ChatColor.GREEN + offlinetarget.getName());
    17. }else{
    18. p.sendMessage("Unknown player");
    19. }
    20. }
    21.  
    22.  
    23. }
    24. }



    Huh?

    The code i just supplied will resolve an issue of online/offline players. If your message is still not working as expected it will be a problem with your events.

    Are you regestering your events, show us what your events do

    This should be:

    target.kickPlayer(targetname);

    @EventHandler
    public void onKick(PlayerKickEvent e){

    e.setReason(kickReason)
    e.setLeaveMessage(leaveMessage)
    }

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

    boysnnoco

    @elementalgoxz11 or you could do what I did...
     
  5. Offline

    the_merciless

    There is no reason why the kick Event message will not work. Thats the purpose of it, and it works for everyone else.

    Paste your class(es) as they are now

    What class are the events in

    yeah, show me

    Ok, heres what i would do.

    Code:
        List<String> kicked = new ArrayList<String>(); //create an arraylist
     
        public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
       
                if (cmd.getName().equalsIgnoreCase("kick")) {
     
                    if (sender.hasPermission("kits.kick")) {
     
                        if (args.length == 2) {
     
                            Player target = Bukkit.getPlayer(args[0]);
     
                            if (target != null) {
                                int i = 1;
                                int para = args.length;
                                String MSG = "";
                                while (i < para) {
                                    MSG = MSG + " " + args;
                                    i++;
                                }
     
                                target.kickPlayer(ChatColor.RED + "You was kicked by " + sender.getName() + "\n" + ChatColor.GRAY + MSG);
                                kicked.add(target.getName()); //add the kicked player to the list
                                Bukkit.getServer().broadcastMessage( ChatColor.GREEN + sender.getName() + ChatColor.GRAY + " kicked " + ChatColor.GREEN + target.getName());
                            } else {
                                sender.sendMessage(ChatColor.RED + "Error: " + ChatColor.GRAY + "Player not found.");
                            }
                        } else {
                            sender.sendMessage(ChatColor.RED + "Usage: " + ChatColor.GRAY + "/kick <player> <reason>");
                        }
     
                    }
     
                }
     
                return false;
            }
    then in your quit event:

    Code:
        @EventHandler
        public void onQuit(PlayerQuitEvent e){
            Player p = e.getPlayer();
       
            if (KickCommand.kicked.contains(p.getName())){
                e.setQuitMessage(null);
                KickCommand.kicked.remove(p.getName());
                return;
            }else{
                if (p.isBanned()) {
                    e.setQuitMessage(null);
                } else {
                    e.setQuitMessage(ChatColor.GREEN + p.getName() + ChatColor.GREEN + " Left");
                }
            }
       
        }
    EDITED TO FIX A MISTAKE

    Hmm, are you getting any errors in the console. I wonder if its because your using the target variable (which is an onlinePlayer) after the player has been kicked (making them an offline player) Let me modify the code to test....

    try this:

    Code:
            public boolean onCommand(CommandSender sender, Command cmd,
                    String commandLabel, String[] args) {
       
                if (cmd.getName().equalsIgnoreCase("kick")) {
       
                    if (sender.hasPermission("kits.kick")) {
       
                        if (args.length == 2) {
       
                            Player target = Bukkit.getPlayer(args[0]);
                            String targetname = target.getName();
       
                            if (target != null) {
                                int i = 1;
                                int para = args.length;
                                String MSG = "";
                                while (i < para) {
                                    MSG = MSG + " " + args;
                                    i++;
                                }
       
                                target.kickPlayer(ChatColor.RED + "You was kicked by "
                                        + sender.getName() + "\n" + ChatColor.GRAY
                                        + MSG);
                               
                                kicked.add(targetname); // add the kicked player
                                                                // to the list
                                Bukkit.getServer().broadcastMessage(
                                        ChatColor.GREEN + sender.getName()
                                                + ChatColor.GRAY + " kicked "
                                                + ChatColor.GREEN + targetname);
                            } else {
                                sender.sendMessage(ChatColor.RED + "Error: "
                                        + ChatColor.GRAY + "Player not found.");
                            }
                        } else {
                            sender.sendMessage(ChatColor.RED + "Usage: "
                                    + ChatColor.GRAY + "/kick <player> <reason>");
                        }
       
                    }
       
                }
       
                return false;
            }
       
        }
    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 5, 2016
  6. Offline

    AoH_Ruthless

    elementalgodz11
    Not sure if this has been said ... but maybe another plugin is overriding your quit event. Try setting the priority to Highest or maybe even Monitor.
     
Thread Status:
Not open for further replies.

Share This Page