Plugin error on teleport

Discussion in 'Plugin Development' started by ObviousEmeralds, Nov 7, 2015.

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

    ObviousEmeralds

    Hey there,
    I'm a new plugin developer and I have been getting an error with my Plugin.
    My plugin is basically meant to be like Punishmental but my own version (For my server only)
    The plugin works fine other then these 2 "Pranks" that get an error (They both involve teleporting)
    Here is the code
    Code:
            if(args[0].equalsIgnoreCase("void")){
                Player target = Bukkit.getServer().getPlayer(args[1]);
                World world= Bukkit.getServer().getWorld(getName());
                target.teleport(new Location(world, 0, 0, 0));
                p.sendMessage(ChatColor.BLUE+"Sucess");
            return true;
            }
            if(args[0].equalsIgnoreCase("fall")){
                Player target = Bukkit.getServer().getPlayer(args[1]);
                World w = Bukkit.getServer().getWorld(getName());
                double x =target.getLocation().getX();
                double y =target.getLocation().getY()+100;
                double z =target.getLocation().getZ();
                target.teleport(new Location(w,x,y,z));
                p.sendMessage(ChatColor.BLUE+"Sucess");
            return true;
          
            }
    
    Those are the 2 that get the error. My log is (After I do the command in-game):
    Code:
    [11:18:22] [Server thread/ERROR]: null
    org.bukkit.command.CommandException: Unhandled exception executing command 'prank' in plugin Pranks v1.0
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[craftbukkit.jar:git-Bukkit-18fbb24]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:140) ~[craftbukkit.jar:git-Bukkit-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:620) ~[craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1106) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:966) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(SourceFile:37) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(SourceFile:9) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [craftbukkit.jar:git-Bukkit-18fbb24]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_60]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_60]
        at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:673) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:335) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:629) [craftbukkit.jar:git-Bukkit-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:537) [craftbukkit.jar:git-Bukkit-18fbb24]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_60]
    Caused by: java.lang.NullPointerException
        at org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer.teleport(CraftPlayer.java:460) ~[craftbukkit.jar:git-Bukkit-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.entity.CraftEntity.teleport(CraftEntity.java:226) ~[craftbukkit.jar:git-Bukkit-18fbb24]
        at me.ObviousEmeralds.Prank.MainClass.onCommand(MainClass.java:168) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[craftbukkit.jar:git-Bukkit-18fbb24]
        ... 15 more
    
    
    Thanks!
     
  2. Offline

    SuperSniper

    @ObviousEmeralds

    at me.ObviousEmeralds.Prank.MainClass.onCommand(MainClass.java:168) ~[?:?]

    What is line #168 in "MainClass"?
     
  3. Offline

    ObviousEmeralds

    @SuperSniper
    target.teleport(new Location(w,x,y,z));
     
  4. Offline

    SuperSniper

  5. that means "target" is null. Do not use deprecated methods, as they tend to cause errors :)
     
  6. Offline

    ObviousEmeralds

    @SuperSniper
    Code:
    package me.ObviousEmeralds.Prank;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.World;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.EntityType;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.potion.PotionEffect;
    import org.bukkit.potion.PotionEffectType;
    
    public class MainClass extends JavaPlugin {
    
        @Override
        public void onEnable() {
            new ListenerClass(this);
        }
       
        @Override
        public void onDisable() {
           
        }
       
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
           
            if (cmd.getName().equalsIgnoreCase("prank")) {
                Player p = (Player) sender;
            }
                if(args.length==0){
                    sender.sendMessage(ChatColor.DARK_GRAY+"Usage:");
                    sender.sendMessage(ChatColor.DARK_GRAY+"/prank "+ChatColor.BLUE+"fakejoin <Name>");
                    sender.sendMessage(ChatColor.DARK_GRAY+"/prank "+ChatColor.BLUE+"fakeleave <Name>");
                    sender.sendMessage(ChatColor.DARK_GRAY+"/prank "+ChatColor.BLUE+"fakeop <player>");
                    sender.sendMessage(ChatColor.DARK_GRAY+"/prank "+ChatColor.BLUE+"fakedeop <player>");
                    sender.sendMessage(ChatColor.DARK_GRAY+"/prank "+ChatColor.BLUE+"fakechat <Name>");
                    sender.sendMessage(ChatColor.DARK_GRAY+"/prank "+ChatColor.BLUE+"dropinv <player>");
                    sender.sendMessage(ChatColor.DARK_GRAY+"/prank "+ChatColor.BLUE+"kill <player>");
                    sender.sendMessage(ChatColor.DARK_GRAY+"/prank "+ChatColor.BLUE+"blind <player>");
                    sender.sendMessage(ChatColor.DARK_GRAY+"/prank "+ChatColor.BLUE+"drunk <player>");
                    sender.sendMessage(ChatColor.DARK_GRAY+"/prank "+ChatColor.BLUE+"creepers <player>");
                    sender.sendMessage(ChatColor.DARK_GRAY+"/prank "+ChatColor.BLUE+"void <player>");
                    sender.sendMessage(ChatColor.DARK_GRAY+"/prank "+ChatColor.BLUE+"fall <player>");
                    return true;
                }
                Player p = (Player) sender;
                if(args[0].equalsIgnoreCase("fakejoin")){
                    Bukkit.getServer().broadcastMessage(ChatColor.YELLOW+args[1]+" joined the game");
                    p.setPlayerListName(ChatColor.GRAY+args[0]+"        "+ChatColor.YELLOW+p.getHealth());
                    return true;
                }
                if(args[0].equalsIgnoreCase("fakeleave")){
                    Bukkit.getServer().broadcastMessage(ChatColor.YELLOW+args[1]+" left the game");
                    p.setPlayerListName(ChatColor.GRAY+args[0]+"        "+ChatColor.YELLOW+p.getHealth());
               
                return true;
               
            }
                if(args[0].equalsIgnoreCase("fakeop")){
                    Player target = Bukkit.getServer().getPlayer(args[1]);
                    target.sendMessage(ChatColor.YELLOW+"You are now op!");
            return true;}
                if(args[0].equalsIgnoreCase("fakedeop")){
                    Player target = Bukkit.getServer().getPlayer(args[1]);
                    target.sendMessage(ChatColor.YELLOW+"You are no longer op!");
            return true;
                }
            if(args[0].equalsIgnoreCase("fakechat")){
                    p.sendMessage(ChatColor.RED+"This command is disabled due to bugs");
    //                StringBuilder str = new StringBuilder();
    //                for(int i = 2; i < args.length; i++){
    //                    str.append(args[i]+" ");
    //            Bukkit.getServer().broadcastMessage("<"+args[1]+"> "+args[i]);   
    //           
    //                p.setPlayerListName(ChatColor.GRAY+args[0]+"        "+ChatColor.YELLOW+p.getHealth());
            return true;
                }
        //        }
       
            if(args[0].equalsIgnoreCase("dropinv")){
                Player target = Bukkit.getServer().getPlayer(args[1]);
                target.setHealth(0);
                target.setHealth(20);
                p.sendMessage(ChatColor.BLUE+"Sucess");
                return true;
            }
            if(args[0].equalsIgnoreCase("kill")){
                Player target = Bukkit.getServer().getPlayer(args[1]);
                target.setHealth(0);
                p.sendMessage(ChatColor.BLUE+"Sucess");
       
                return true;
            }
            if(args[0].equalsIgnoreCase("blind")){
                Player target = Bukkit.getServer().getPlayer(args[1]);
                target.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 200, 1));
                p.sendMessage(ChatColor.BLUE+"Sucess");
       
                return true;
            }
            if(args[0].equalsIgnoreCase("Drunk")){
                Player target = Bukkit.getServer().getPlayer(args[1]);
                target.addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 500, 100));
                p.sendMessage(ChatColor.BLUE+"Sucess");
       
                return true;
            }
            if(args[0].equalsIgnoreCase("creepers")){
                Player target = Bukkit.getServer().getPlayer(args[1]);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                target.getWorld().spawnEntity(target.getLocation(), EntityType.CREEPER);
                p.sendMessage(ChatColor.BLUE+"Sucess");
                return true;
            }
            if(args[0].equalsIgnoreCase("void")){
                Player target = Bukkit.getServer().getPlayer(args[1]);
                World world= Bukkit.getServer().getWorld(getName());
                target.teleport(new Location(world, 0, 0, 0));
                p.sendMessage(ChatColor.BLUE+"Sucess");
            return true;
            }
            if(args[0].equalsIgnoreCase("fall")){
                Player target = Bukkit.getServer().getPlayer(args[1]);
                World w = Bukkit.getServer().getWorld(getName());
                double x =target.getLocation().getX();
                double y =target.getLocation().getY()+100;
                double z =target.getLocation().getZ();
                target.teleport(new Location(w,x,y,z));
                p.sendMessage(ChatColor.BLUE+"Sucess");
            return true;
           
            }
            return false;   
       
        }   
        }
       
    
    
    It's the last two that don't work. (The log in the thread was after I did "/prank fall" (The bottom one)
     
  7. Additional info: Since we can now change Player names, the UUID-methods are a must-use. Another reason target could be "null" is that there is no Player with the name specified.

    Edit: You can use an UUID fetcher, google is gonna find one for you ;). Also: You did not check args[1] is even a thing and you should probably also use a for-loop to spawn those creepers
     
    Last edited: Nov 7, 2015
  8. Offline

    ObviousEmeralds

    I know about checking args[1] and using the for-loop for the creeper, I'm going to do that later.
    Could you try to fix the code?

    Edit: I usually teleport people that way and it works...
     
  9. Offline

    Scimiguy

    @ObviousEmeralds
    It's not our job to fix your code. That's your job

    You're not checking if player isn't null before attempting to teleport.
     
  10. Offline

    dbaum102

    Looks to me like /prank void would not work but /void would work idk if i read it right.
     
Thread Status:
Not open for further replies.

Share This Page