Plugin Help I'm trying to make a plugin that checks if player is banned

Discussion in 'Plugin Help/Development/Requests' started by Sarcry, Aug 27, 2016.

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

    Sarcry

    I'm trying to make it work but it doesn't for any reason. I think is that I must modify and add another "target" for offline players. For online players works. Here's the code:
    http://pastebin.com/S4CDtQX2
    Error:
    Code:
    Unexpected exception while parsing console command "checkban Sarcry"
    org.bukkit.command.CommandException: Unhandled exception executing command 'checkban' in plugin Ban v1.0
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[craftbukkit.jar:git-Bukkit-5e5cf84]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:139) ~[craftbukkit.jar:git-Bukkit-5e5cf84]
        at org.bukkit.craftbukkit.v1_10_R1.CraftServer.dispatchCommand(CraftServer.java:625) ~[craftbukkit.jar:git-Bukkit-5e5cf84]
        at org.bukkit.craftbukkit.v1_10_R1.CraftServer.dispatchServerCommand(CraftServer.java:611) [craftbukkit.jar:git-Bukkit-5e5cf84]
        at net.minecraft.server.v1_10_R1.DedicatedServer.aL(DedicatedServer.java:398) [craftbukkit.jar:git-Bukkit-5e5cf84]
        at net.minecraft.server.v1_10_R1.DedicatedServer.D(DedicatedServer.java:362) [craftbukkit.jar:git-Bukkit-5e5cf84]
        at net.minecraft.server.v1_10_R1.MinecraftServer.C(MinecraftServer.java:643) [craftbukkit.jar:git-Bukkit-5e5cf84]
        at net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.java:547) [craftbukkit.jar:git-Bukkit-5e5cf84]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_101]
    Caused by: java.lang.NullPointerException
        at sar.ban.Punish.onCommand(Punish.java:158) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[craftbukkit.jar:git-Bukkit-5e5cf84]
        ... 8 more
    
     
    Last edited: Aug 27, 2016
  2. @Sarcry
    All you should need to do is replace Bukkit.getPlayer(..) with Bukkit.getOfflinePlayer(...) and you should be all fine. The reason is that Bukkit.getPlayer returns null if the player isn't online.
     
  3. Offline

    Sarcry

    Still getting the error:
    Code:
    [14:21:14] [Server thread/WARN]: Unexpected exception while parsing console command "checkban Sarcry"
    org.bukkit.command.CommandException: Unhandled exception executing command 'checkban' in plugin Ban v1.0
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[craftbukkit.jar:git-Bukkit-5e5cf84]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:139) ~[craftbukkit.jar:git-Bukkit-5e5cf84]
        at org.bukkit.craftbukkit.v1_10_R1.CraftServer.dispatchCommand(CraftServer.java:625) ~[craftbukkit.jar:git-Bukkit-5e5cf84]
        at org.bukkit.craftbukkit.v1_10_R1.CraftServer.dispatchServerCommand(CraftServer.java:611) [craftbukkit.jar:git-Bukkit-5e5cf84]
        at net.minecraft.server.v1_10_R1.DedicatedServer.aL(DedicatedServer.java:398) [craftbukkit.jar:git-Bukkit-5e5cf84]
        at net.minecraft.server.v1_10_R1.DedicatedServer.D(DedicatedServer.java:362) [craftbukkit.jar:git-Bukkit-5e5cf84]
        at net.minecraft.server.v1_10_R1.MinecraftServer.C(MinecraftServer.java:643) [craftbukkit.jar:git-Bukkit-5e5cf84]
        at net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.java:547) [craftbukkit.jar:git-Bukkit-5e5cf84]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_101]
    Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_10_R1.CraftOfflinePlayer cannot be cast to org.bukkit.entity.Player
        at sar.ban.Punish.onCommand(Punish.java:155) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[craftbukkit.jar:git-Bukkit-5e5cf84]
        ... 8 more
    
    Main class:
    Code:
    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
              if (cmd.getName().equalsIgnoreCase("checkban")) {
                 
                  if (sender.hasPermission("ban.checkban")) {
                      if (args.length == 0 ) {
                          sender.sendMessage(ChatColor.DARK_RED + "» " + ChatColor.RED + "WARNING: You must specify a player!");
                          sender.sendMessage(ChatColor.DARK_RED + "» " + ChatColor.RED + "Usage /checkban <player>" );
                      }
                      Player target = (Player) Bukkit.getServer().getOfflinePlayer(args[0]);
                     
                      if (args.length == 1) {
                         
                         
                          if (target.isBanned()) {
                              sender.sendMessage(ChatColor.GREEN + "That player is banned from the server.");
                          }
                          if (!target.isBanned()) {
                              sender.sendMessage(ChatColor.GREEN + "That player isn't banned from the server.");
                             
                          }
                        return true;
                      }
                  }
                  if (!sender.hasPermission("ban.checkban")) {
                      sender.sendMessage(ChatColor.RED + "You don't have enough permissions!");
                  }
              }
            return true;
        }
    
     
  4. @Sarcry
    Just remove the cast to Player, the "isBanned()" method can be used on OfflinePlayer objects aswell.
     
  5. Offline

    Sarcry

    Thanks a lot!
     
Thread Status:
Not open for further replies.

Share This Page