Custom PM command!

Discussion in 'Plugin Development' started by ajs333, Nov 12, 2013.

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

    MrSparkzz

    Xacero
    OHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH. Wow I'm dumb. For whatever reason I thought you were going to use /r if you already used /tell

    Derp .-.
     
  2. Offline

    ajs333

    Xacero
    It is requiring me to resolve the variable "target" and "player"... In other words I get an error

    Here is what I exactly want!
    When a player types /tell <name> it sends them the message but then from there on they can type /r to reply as for the targeted player!
     
  3. Offline

    Xacero

    MrSparkzz
    It happens :D

    ajs333
    Can you post the entire class please ? The variable IS defined there. And there is no variable called "player"

    What I gave you allows you to use /r after you've recieved a message, and reply to the person that sent you the last message.

    If you want that functionality + message the person YOU messaged last you'll need to fuse both mine and sparkzz's methods.
     
  4. Offline

    ajs333

    Xacero
    My whole class is actually a ban plugin so here it is!

    Code:
    package sBan;
     
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
     
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.OfflinePlayer;
    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.AsyncPlayerChatEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.event.player.PlayerKickEvent;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class sBan extends JavaPlugin implements Listener{
     
        List<String> mute = new ArrayList<String>();
     
        HashMap<String, String> reply_list = new HashMap<String, String>();
     
        public void onEnable () {
            System.out.print("sBan Enabled!");
            getServer().getPluginManager().registerEvents(this, this);
        }
        public void onDisable () {
            System.out.print("sBan Disabled!");
        }
        @EventHandler
          public void onChat(AsyncPlayerChatEvent e) {
            Player p = e.getPlayer();
            if (mute.contains(p.getName())) {
                e.setCancelled(true);
                p.sendMessage(ChatColor.GOLD + "You are muted!");
                    }
                }
        @EventHandler
        public void onPlayerKick(PlayerKickEvent event) {
            event.setLeaveMessage(null);
        }
        @EventHandler
        public void onPlayerJoin(PlayerJoinEvent event) {
            Player player = event.getPlayer();
            if(player.isBanned()) {
                player.kickPlayer(ChatColor.RED + "BANNED!");
            }
        }
     
        public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args) {
         
            StringBuilder str = new StringBuilder();
            for (int i = 1; i < args.length; i++){
                str.append(args[i] + " ");
            }
     
            String message = str.toString();
     
     
            if (commandLabel.equalsIgnoreCase("kick")) {
                if (args.length == 1){
                    Player targetPlayer = Bukkit.getServer().getPlayer(args[0]);
     
                    if (!(targetPlayer == null)){
                        targetPlayer.kickPlayer(ChatColor.RED + "You have been kicked by " + sender.getName() + " for breaking rules!");
                        Bukkit.broadcastMessage(ChatColor.GREEN + targetPlayer.getName() + " was kicked by " + sender.getName() + " for breaking rules!");
                    }else{
                        sender.sendMessage(ChatColor.DARK_RED + "No player found by the name: " + args[0]);
                    }
                }else{
                  if (args.length > 1) {
                      Player targetPlayer = Bukkit.getServer().getPlayer(args[0]);
                   
                      if (!(targetPlayer == null)){
                          targetPlayer.kickPlayer(ChatColor.RED + "You have been kicked by " + sender.getName() + ChatColor.RED + " for " + message);
                          Bukkit.broadcastMessage(ChatColor.GRAY + targetPlayer.getName() + " was kicked by " + sender.getName() + " for " + message);
                      }else{
                          sender.sendMessage(ChatColor.DARK_RED + "No player found by the name: " + args[0]);
                      }
                  }
                }
             
            }
     
            if (commandLabel.equalsIgnoreCase("ban")) {
                if (args.length > 1){
                    Player targetPlayer = Bukkit.getServer().getPlayer(args[0]);
                    targetPlayer.setBanned(true);
                    targetPlayer.kickPlayer(ChatColor.RED + "BANNED by " + sender.getName() + " for " + message + "!");
                    Bukkit.broadcastMessage(ChatColor.GRAY + targetPlayer.getName() + " was banned!");
                }else{
                    sender.sendMessage(ChatColor.DARK_RED + "Incorrect usage. Try using /ban <player> <reason>");
                }
            }
     
            if (commandLabel.equalsIgnoreCase("unban")) {
                if (args.length > 0){
                    OfflinePlayer targetPlayer = Bukkit.getServer().getOfflinePlayer(args[0]);
                    if(targetPlayer.isBanned()){
                        targetPlayer.setBanned(false);
                        Bukkit.broadcastMessage(ChatColor.GRAY + targetPlayer.getName() + " was unbaned by " + sender.getName() + "!");
                    }else{
                        sender.sendMessage(ChatColor.DARK_RED + "That player hasn't been banned!");
                    }
                }
            }
            if (commandLabel.equalsIgnoreCase("mute")) {
                if (args.length == 1) {
                    Player targetPlayer = Bukkit.getServer().getPlayer(args[0]);
                    mute.add(targetPlayer.getName()); 
                    sender.sendMessage(ChatColor.GOLD + "You muted " + targetPlayer.getName() + "!");
                    targetPlayer.sendMessage(ChatColor.RED + "You have been muted!");
                } else {
                    sender.sendMessage(ChatColor.RED + "Please specify a player!");
                }
            }
            if (commandLabel.equalsIgnoreCase("unmute")) {
                if (args.length == 1) {
                    Player targetPlayer = Bukkit.getServer().getPlayer(args[0]);
                    if(mute.contains(targetPlayer.getName())) {
                        mute.remove(targetPlayer.getName());
                        sender.sendMessage(ChatColor.GOLD + "You unmuted " + targetPlayer.getName() + "!");
                        targetPlayer.sendMessage(ChatColor.GOLD + "You are unmuted!");
                    } else {
                        sender.sendMessage(ChatColor.DARK_RED + "That player isn't muted!");
                    }
                }
            }
            if (command.getName().equalsIgnoreCase("tell") || command.getName().equalsIgnoreCase("msg")) {
             
                Player target = Bukkit.getServer().getPlayer(args[0]);
             
                reply_list.put(sender.getName(), target.getName());
             
                if(mute.contains(sender.getName())) {
                    sender.sendMessage(ChatColor.GOLD + "You are muted!");
                return false;
                } else {
             
                String message1 = "";
             
                for (int i = 1; i < args.length; i++) {
                message1 = message1 + (args[i] + " ");
                }
             
                sender.sendMessage(ChatColor.GRAY + "[" + sender.getName() + " ->" + target.getName() + "] " + message1);
             
                target.sendMessage(ChatColor.GRAY + "[" + sender.getName() + " - > Me] " + message1);
             
                return true;
                    }
                }
            if (command.getName().equalsIgnoreCase("r") || command.getName().equalsIgnoreCase("reply")) {
                String message1 = "";
     
                for (int i = 0; i < args.length; i++) {
                message1 = message1 + (args[i] + " ");
                }
     
                if (reply_list.containsKey(sender.getName()))
                        Player target = Bukkit.getServer().getPlayer(reply_list.get(sender.getName()));
                        if (target == null) {
                            sender.sendMessage(ChatColor.RED + "That player is offline!");
                                return true;
                        }
                        sender.sendMessage(ChatColor.GRAY + "[" + sender.getName() + " ->" + target.getName() + "] " + message1);
     
                        target.sendMessage(ChatColor.GRAY + "[" + sender.getName() + " - > Me] " + message1);
            } else {
                        sender.sendMessage(ChatColor.RED + "You have nobody to reply to!");
            }
            return false;
            return false;
        }
    }
    
     
  5. Offline

    Xacero

    ajs333
    ._. eek, seperate your classes! ._.

    Also silly you , forgot an openingbracket ;)

    Code:java
    1. if (reply_list.containsKey(sender.getName())) {
    2. Player target = Bukkit.getServer().getPlayer(reply_list.get(sender.getName()));
    3. if (target == null) {
    4. sender.sendMessage(ChatColor.RED + "That player is offline!");
    5. return true;
    6. }
    7. sender.sendMessage(ChatColor.GRAY + "[" + sender.getName() + " ->" + target.getName() + "] " + message1);
    8.  
    9. target.sendMessage(ChatColor.GRAY + "[" + sender.getName() + " - > Me] " + message1);
    10. }
     
  6. Offline

    ajs333

    Xacero
    I spend my weekends doing that by copying and pasting my coding and separating my classes... but I'll try that!

    Xacero
    I found one error... The target can't reply to the message... The target can't type /r or /reply
     
  7. Offline

    Xacero

    ajs333
    What do you mean can't reply to the message?
     
  8. Offline

    ajs333

    Xacero
    Yeah, the target can't reply to the message.
     
  9. Offline

    Xacero

    ajs333
    Is there an error?
    Is any message sent to either the sender or recipient ?

    What does "can't reply" mean?

    edit

    Code:java
    1. reply_list.put(sender.getName(), target.getName());
    2.  
    3. // this is not what I said. This is what spark said. Look back at what I said and use that instead.
     
  10. Offline

    ajs333

    Xacero
    What I mean is that when I type /msg crizxx10 Hi (That works fine)
    but Crizxx10 can't type /r and send me a message back...
    There is no errors.
     
  11. Offline

    Xacero

    ajs333

    From the post above you.
    Code:java
    1. reply_list.put(sender.getName(), target.getName());
    2.  
    3. // this is not what I said. This is what spark said. Look back at what I said and use that instead.
     
  12. Offline

    ajs333

    Xacero
    (facepalm) Everything works perfectly... My mistake... Thanks for the help...
     
  13. Offline

    Xacero

    ajs333
    Read through your source carefully. Check what is actually going on. If you don't understand hashmaps this person explains them pretty well.

    All of your issues so far have been easy fixes if you took the time to read and understand what it is you're doing :)

    I'm getting off now so I can't assist you further tonight, good luck :)
     
  14. Offline

    ajs333

    Xacero
    You don't have to help me with this part of the plugin but how would I send a message to all OP player and players with a permission, the private message that those two players sent. This is a way for Admin and Staff to watch for spam and stuff like that.

    MrSparkzz
    Can you help me on this one... When a player types /tell <name> and then types /r it gives that player an internal error...
     
  15. Offline

    MrSparkzz

    ajs333
    Check the stacktrace in the console. Whenever a plugin returns "An Internal Error has occurred" it's basically saying "check the console."
     
  16. Offline

    ajs333

    @MrSparklzz
    Here is that error

    21:55:44 [SEVERE] null
    org.bukkit.command.CommandException: Unhandled exception executing command 'r' in plugin sBan v1
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:192)
    at org.bukkit.craftbukkit.v1_6_R3.CraftServer.dispatchCommand(CraftServer.java:523)
    at net.minecraft.server.v1_6_R3.PlayerConnection.handleCommand(PlayerConnection.java:959)
    at net.minecraft.server.v1_6_R3.PlayerConnection.chat(PlayerConnection.java:877)
    at net.minecraft.server.v1_6_R3.PlayerConnection.a(PlayerConnection.java:834)
    at net.minecraft.server.v1_6_R3.Packet3Chat.handle(SourceFile:49)
    at net.minecraft.server.v1_6_R3.NetworkManager.b(NetworkManager.java:296)
    at net.minecraft.server.v1_6_R3.PlayerConnection.e(PlayerConnection.java:116)
    at net.minecraft.server.v1_6_R3.ServerConnection.b(SourceFile:37)
    at net.minecraft.server.v1_6_R3.DedicatedServerConnection.b(SourceFile:30)
    at net.minecraft.server.v1_6_R3.MinecraftServer.t(MinecraftServer.java:592)
    at net.minecraft.server.v1_6_R3.DedicatedServer.t(DedicatedServer.java:227)
    at net.minecraft.server.v1_6_R3.MinecraftServer.s(MinecraftServer.java:488)
    at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java:421)
    at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:583)
    Caused by: java.lang.IllegalArgumentException: Name cannot be null
    at org.apache.commons.lang.Validate.notNull(Validate.java:203)
    at org.bukkit.craftbukkit.v1_6_R3.CraftServer.getPlayer(CraftServer.java:323)
    at sBan.sBan.onCommand(sBan.java:162)
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
    ... 15 more

    >
     
  17. Offline

    MrSparkzz

    ajs333
    The name is returning null. What's line 162 of sBan?
     
  18. Offline

    ajs333

    MrSparkzz
    Line 162: String message1 = "";
     
  19. Offline

    MrSparkzz

    ajs333
    oh that's weird... Did you export the plugin already? If so, post your whole class code. (There seems to be a lot of problems with plugins tonight :O )
     
  20. Offline

    ajs333

    MrSparkzz
    Here is my whole class... I understand that its a bit messy but I'll fix that on the weekend!

    Code:
    package sBan;
     
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
     
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.OfflinePlayer;
    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.AsyncPlayerChatEvent;
    import org.bukkit.event.player.PlayerCommandPreprocessEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.event.player.PlayerKickEvent;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class sBan extends JavaPlugin implements Listener{
     
        List<String> mute = new ArrayList<String>();
     
        HashMap<String, String> reply_list = new HashMap<String, String>();
     
        public void onEnable () {
            System.out.print("sBan Enabled!");
            getServer().getPluginManager().registerEvents(this, this);
        }
        public void onDisable () {
            System.out.print("sBan Disabled!");
        }
     
        @EventHandler
        public void commandSee(PlayerCommandPreprocessEvent e)
        {
            Player p = e.getPlayer();
            for(Player ol : Bukkit.getOnlinePlayers())
            {
                if(ol.hasPermission("skits.mod") || ol.hasPermission("skits.tmod"))
                {
                    if(e.getMessage().contains("/tell") || e.getMessage().contains("/msg") || e.getMessage().contains("/r") || e.getMessage().contains("/reply")) {
                        ol.sendMessage(ChatColor.GRAY  + "" + p.getName() + " sent the command: "  + e.getMessage());
                    } else {
                        return;
                    }
                }
            }
        }
     
        @EventHandler
          public void onChat(AsyncPlayerChatEvent e) {
            Player p = e.getPlayer();
            if (mute.contains(p.getName())) {
                e.setCancelled(true);
                p.sendMessage(ChatColor.GOLD + "You are muted!");
                    }
                }
        @EventHandler
        public void onPlayerKick(PlayerKickEvent event) {
            event.setLeaveMessage(null);
        }
        @EventHandler
        public void onPlayerJoin(PlayerJoinEvent event) {
            Player player = event.getPlayer();
            if(player.isBanned()) {
                player.kickPlayer(ChatColor.RED + "BANNED!");
            }
        }
     
        public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args) {
         
            StringBuilder str = new StringBuilder();
            for (int i = 1; i < args.length; i++){
                str.append(args[i] + " ");
            }
     
            String message = str.toString();
     
     
            if (commandLabel.equalsIgnoreCase("kick")) {
                if (args.length == 1){
                    Player targetPlayer = Bukkit.getServer().getPlayer(args[0]);
     
                    if (!(targetPlayer == null)){
                        targetPlayer.kickPlayer(ChatColor.RED + "You have been kicked by " + sender.getName() + " for breaking rules!");
                        Bukkit.broadcastMessage(ChatColor.GREEN + targetPlayer.getName() + " was kicked by " + sender.getName() + " for breaking rules!");
                    }else{
                        sender.sendMessage(ChatColor.DARK_RED + "No player found by the name: " + args[0]);
                    }
                }else{
                  if (args.length > 1) {
                      Player targetPlayer = Bukkit.getServer().getPlayer(args[0]);
                   
                      if (!(targetPlayer == null)){
                          targetPlayer.kickPlayer(ChatColor.RED + "You have been kicked by " + sender.getName() + ChatColor.RED + " for " + message);
                          Bukkit.broadcastMessage(ChatColor.GRAY + targetPlayer.getName() + " was kicked by " + sender.getName() + " for " + message);
                      }else{
                          sender.sendMessage(ChatColor.DARK_RED + "No player found by the name: " + args[0]);
                      }
                  }
                }
             
            }
     
            if (commandLabel.equalsIgnoreCase("ban")) {
                if (args.length > 1){
                    Player targetPlayer = Bukkit.getServer().getPlayer(args[0]);
                    targetPlayer.setBanned(true);
                    targetPlayer.kickPlayer(ChatColor.RED + "BANNED by " + sender.getName() + " for " + message + "!");
                    Bukkit.broadcastMessage(ChatColor.GRAY + targetPlayer.getName() + " was banned!");
                }else{
                    sender.sendMessage(ChatColor.DARK_RED + "Incorrect usage. Try using /ban <player> <reason>");
                }
            }
     
            if (commandLabel.equalsIgnoreCase("unban")) {
                if (args.length > 0){
                    OfflinePlayer targetPlayer = Bukkit.getServer().getOfflinePlayer(args[0]);
                    if(targetPlayer.isBanned()){
                        targetPlayer.setBanned(false);
                        Bukkit.broadcastMessage(ChatColor.GRAY + targetPlayer.getName() + " was unbaned by " + sender.getName() + "!");
                    }else{
                        sender.sendMessage(ChatColor.DARK_RED + "That player hasn't been banned!");
                    }
                }
            }
            if (commandLabel.equalsIgnoreCase("mute")) {
                if (args.length == 1) {
                    Player targetPlayer = Bukkit.getServer().getPlayer(args[0]);
                    mute.add(targetPlayer.getName()); 
                    sender.sendMessage(ChatColor.GOLD + "You muted " + targetPlayer.getName() + "!");
                    targetPlayer.sendMessage(ChatColor.RED + "You have been muted!");
                } else {
                    sender.sendMessage(ChatColor.RED + "Please specify a player!");
                }
            }
            if (commandLabel.equalsIgnoreCase("unmute")) {
                if (args.length == 1) {
                    Player targetPlayer = Bukkit.getServer().getPlayer(args[0]);
                    if(mute.contains(targetPlayer.getName())) {
                        mute.remove(targetPlayer.getName());
                        sender.sendMessage(ChatColor.GOLD + "You unmuted " + targetPlayer.getName() + "!");
                        targetPlayer.sendMessage(ChatColor.GOLD + "You are unmuted!");
                    } else {
                        sender.sendMessage(ChatColor.DARK_RED + "That player isn't muted!");
                    }
                }
            }
            if (command.getName().equalsIgnoreCase("tell") || command.getName().equalsIgnoreCase("msg")) {
             
                Player target = Bukkit.getServer().getPlayer(args[0]);
             
                reply_list.put(target.getName(), sender.getName());
             
                if(mute.contains(sender.getName())) {
                    sender.sendMessage(ChatColor.GOLD + "You are muted!");
                return false;
                } else {
             
                String message1 = "";
             
                for (int i = 1; i < args.length; i++) {
                message1 = message1 + (args[i] + " ");
                }
             
                sender.sendMessage(ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "<" + ChatColor.GRAY + sender.getName() + ChatColor.WHITE + "" + ChatColor.BOLD + " -> " + ChatColor.GRAY + target.getDisplayName() + ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "> " + ChatColor.GRAY + message1);
             
                target.sendMessage(ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "<" + ChatColor.GRAY + sender.getName() + ChatColor.WHITE + "" + ChatColor.BOLD + " - > " + ChatColor.GRAY + target.getDisplayName() + ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "> " + ChatColor.GRAY + message1);
             
                return true;
                    }
                }
            if (command.getName().equalsIgnoreCase("r") || command.getName().equalsIgnoreCase("reply")) {
                String message1 = "";
     
                for (int i = 0; i < args.length; i++) {
                message1 = message1 + (args[i] + " ");
                }
                Player target = Bukkit.getServer().getPlayer(reply_list.get(sender.getName()));
     
                if (reply_list.containsKey(sender.getName())) {
                    if (target == null) {
                        sender.sendMessage(ChatColor.RED + "That player is offline!");
                            return true;
                    }
                    sender.sendMessage(ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "<" + ChatColor.GRAY + sender.getName() + ChatColor.WHITE + "" + ChatColor.BOLD + " -> " + ChatColor.GRAY + target.getDisplayName() + ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "> " + ChatColor.GRAY + message1);
     
                    target.sendMessage(ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "<" + ChatColor.GRAY + sender.getName() + ChatColor.WHITE + "" + ChatColor.BOLD + " - > " + ChatColor.GRAY + target.getDisplayName() + ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "> " + ChatColor.GRAY + message1);
                }
            } else {
                        sender.sendMessage(ChatColor.RED + "You have nobody to reply to!");
            }
            return false;
        }
    }
    
     
  21. Offline

    MrSparkzz

    ajs333
    I am truly confused on this one .-.
     
  22. Offline

    ajs333

    MrSparkzz
    Here is how I get the error. When a player types /tell <name> and the target player doesn't respond but the originalplayer types /r, that is when I get the Internal Error...

    MrSparkzz
    I can't find what is causing that error...
     
  23. Offline

    MrSparkzz

    ajs333
    I've gotta go to bed, but what's causing the error is one of the player names is null. That's all I know right now, sorry.
     
  24. Offline

    ajs333

    Thanks for the help.. I'll try to find someone else to help me!

    For everyone who doesn't want to read the earlier posts, I'm having an internal error where when a player types /msg <name> and then types /r, they get the internal error.

    Here is what the error is...
    16:02:14 [SEVERE] null
    org.bukkit.command.CommandException: Unhandled exception executing command 'r' in plugin sBan v1
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:192)
    at org.bukkit.craftbukkit.v1_6_R3.CraftServer.dispatchCommand(CraftServer.java:523)
    at net.minecraft.server.v1_6_R3.PlayerConnection.handleCommand(PlayerConnection.java:959)
    at net.minecraft.server.v1_6_R3.PlayerConnection.chat(PlayerConnection.java:877)
    at net.minecraft.server.v1_6_R3.PlayerConnection.a(PlayerConnection.java:834)
    at net.minecraft.server.v1_6_R3.Packet3Chat.handle(SourceFile:49)
    at net.minecraft.server.v1_6_R3.NetworkManager.b(NetworkManager.java:296)
    at net.minecraft.server.v1_6_R3.PlayerConnection.e(PlayerConnection.java:116)
    at net.minecraft.server.v1_6_R3.ServerConnection.b(SourceFile:37)
    at net.minecraft.server.v1_6_R3.DedicatedServerConnection.b(SourceFile:30)
    at net.minecraft.server.v1_6_R3.MinecraftServer.t(MinecraftServer.java:592)
    at net.minecraft.server.v1_6_R3.DedicatedServer.t(DedicatedServer.java:227)
    at net.minecraft.server.v1_6_R3.MinecraftServer.s(MinecraftServer.java:488)
    at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java:421)
    at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:583)
    Caused by: java.lang.IllegalArgumentException: Name cannot be null
    at org.apache.commons.lang.Validate.notNull(Validate.java:203)
    at org.bukkit.craftbukkit.v1_6_R3.CraftServer.getPlayer(CraftServer.java:323)
    at sBan.sBan.onCommand(sBan.java:181)
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
    ... 15 more

    >
     
  25. Offline

    L33m4n123

    Is the plugin name of the pm plugin called sBan or do you have another plugin maybe interfering?
     
  26. Offline

    Xacero

    ajs333

    create a permission like pm.spy, get a list of all players using Bukkit.getServer().getPlayers() and loop through that list checking if player.hasPermission(new Permission("pm.spy")); If so send message to target AND the player from the list.

    -

    Regarding your error

    Code:java
    1.  
    2. if (command.getName().equalsIgnoreCase("r") || command.getName().equalsIgnoreCase("reply")) {
    3. String message1 = "";
    4.  
    5. for (int i = 0; i < args.length; i++) {
    6. message1 = message1 + (args + " ");
    7. }
    8.  
    9. if (reply_list.containsKey(sender.getName())) {
    10. Player target = Bukkit.getServer().getPlayer(reply_list.get(sender.getName()));
    11. if (target == null) {
    12. sender.sendMessage(ChatColor.RED + "That player is offline!");
    13. return true;
    14. }
    15. sender.sendMessage(ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "<" + ChatColor.GRAY + sender.getName() + ChatColor.WHITE + "" + ChatColor.BOLD + " -> " + ChatColor.GRAY + target.getDisplayName() + ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "> " + ChatColor.GRAY + message1);
    16.  
    17. target.sendMessage(ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "<" + ChatColor.GRAY + sender.getName() + ChatColor.WHITE + "" + ChatColor.BOLD + " - > " + ChatColor.GRAY + target.getDisplayName() + ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "> " + ChatColor.GRAY + message1);
    18. }
    19. }
    20.  


    You put the part that assigns the value to target outside of the if statement that checks if there IS a last-sender value. Try now.
     
  27. Offline

    ajs333

    The plugin name is sBan
     
  28. Offline

    Xacero

    ajs333
    That had nothing to do with it, see my post. :)
     
  29. Offline

    ajs333

    Xacero
    Ok, I'll try that now...

    Xacero
    When I type /tell <name> and /r it says that player is offline but he isn't... and when the target player tries to type /r it gives them an error...

    Xacero
    That just gave me more problems... :/

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

    Xacero

    ajs333
    Code:
    if (command.getName().equalsIgnoreCase("tell") || command.getName().equalsIgnoreCase("msg")) {
         
                Player target = Bukkit.getServer().getPlayer(args[0]);
         
                reply_list.put(sender.getName(), target.getName());
         
                if(mute.contains(sender.getName())) {
                    sender.sendMessage(ChatColor.GOLD + "You are muted!");
                return false;
                } else {
         
                String message1 = "";
         
                for (int i = 1; i < args.length; i++) {
                message1 = message1 + (args[i] + " ");
                }
         
                sender.sendMessage(ChatColor.GRAY + "[" + sender.getName() + " ->" + target.getName() + "] " + message1);
         
                target.sendMessage(ChatColor.GRAY + "[" + sender.getName() + " - > Me] " + message1);
         
                return true;
                    }
                }
    There isn't even a null check in your tell command ...
     
Thread Status:
Not open for further replies.

Share This Page