Command Not Working

Discussion in 'Plugin Development' started by MrGriefer_, Aug 31, 2016.

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

    MrGriefer_

    Code:
    PHP:
    @Override
        
    public boolean onCommand(CommandSender senderCommand commandString labelString[] args) {
            if (!(
    sender instanceof Player)) {
               
                return 
    true;
            }
            
    Player player = (Playersender;
            if (
    args.length == && args[0].equalsIgnoreCase("setnpc")) {
                if (
    player.hasPermission("timebomb.setup")) {
                    if (
    args[1].equals("sniper")) {
                        
    plugin.kits.spawnSniperArmorStand(player.getLocation());
                    } else if (
    args[1].equals("rapidfire")) {
                        
    plugin.kits.spawnRapidFireArmorStand(player.getLocation());
                    } else if (
    args[1].equals("soldier")) {
                        
    plugin.kits.spawnSoldierArmorStand(player.getLocation());
                    }
                    
    player.sendMessage("§8[§4Time§7Bomb§8] §aNPC spawned!");
                } else {
                    
    Messages.sendMessage(playerMessages.nopermission);
                }
            }
    Problem:
    I'm getting NullPointerException when I execute /tbsetup setnpc sniper from the command above! I can't find whats wrong exactly!

    Error:
    HTML:
    [18:12:43] [Server thread/ERROR]: null
    
    org.bukkit.command.CommandException: Unhandled exception executing command 'tbsetup' in plugin TimeBomb v1.0.0
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:140) ~[spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at org.bukkit.craftbukkit.v1_10_R1.CraftServer.dispatchCommand(CraftServer.java:646) ~[spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.PlayerConnection.handleCommand(PlayerConnection.java:1351) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.PlayerConnection.a(PlayerConnection.java:1186) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_101]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_101]
        at net.minecraft.server.v1_10_R1.SystemUtils.a(SourceFile:45) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.MinecraftServer.D(MinecraftServer.java:732) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.DedicatedServer.D(DedicatedServer.java:400) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.MinecraftServer.C(MinecraftServer.java:668) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.java:567) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_101]
    Caused by: java.lang.NullPointerException
        at timebomb.commands.setup.ArenaCommands.onCommand(ArenaCommands.java:235) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        ... 15 more
    It says Caused by: java.lang.NullPointerException at ArenaCommands line number 235 I can't something wrong with that!
    Sorry for my bad English!
     
  2. Offline

    MrGriefer_

    PHP:
    plugin.kits.spawnSniperArmorStand(player.getLocation());
    EDIT: spawnSniperArmorStand method:
    PHP:
    public ArmorStand spawnSniperArmorStand(Location loc) {
            
    ArmorStand as = (ArmorStandloc.getWorld().spawnEntity(locEntityType.ARMOR_STAND);
            
    ItemStack skull = new ItemStack(Material.SKULL_ITEM1, (short3);
            
    SkullMeta skullMeta = (SkullMetaskull.getItemMeta();
            
    skullMeta.setOwner("doctorwho");
            
    skull.setItemMeta(skullMeta);
            as.
    setHelmet(skull);
            as.
    setChestplate(new ItemStack(Material.LEATHER_CHESTPLATE));
            as.
    setLeggings(new ItemStack(Material.LEATHER_LEGGINGS));
            as.
    setBoots(new ItemStack(Material.LEATHER_BOOTS));
            if (
    TimeBomb.oneEight) {
                as.
    setItemInHand(new ItemStack(Material.BOW));
            } else {
                as.
    getEquipment().setItemInMainHand(new ItemStack(Material.BOW));
            }
            as.
    setVisible(true);
            as.
    setSmall(false);
            as.
    setArms(true);
            as.
    setBasePlate(true);
            as.
    setGravity(false);
           
            as.
    setCustomName("§a§lSniper");
            as.
    setCustomNameVisible(true);
           
            
    NBT.setSlotsDisabled(as, true);
            
    NBT.setInvulnerable(as, true);
            return as;
        }
     
  3. @MrGriefer_
    Two possibilities. "plugin" is null, or "kits" is null.
     
  4. Offline

    MrGriefer_

    OMFG!!!! I always make the same mistake I forget to register kits in the onEnable()! OMG I'm so dumb. Thank you Alvin for reminding me!
     
  5. @MrGriefer_
    If your problem has been resolved, please mark the thread as such :)
     
  6. Offline

    MrGriefer_

    Sorry but I've got another problem with NullPointerException (They always get me) on EntityDamageEvent thats why I didn't mark the thread, here is the error:
    HTML:
    [18:46:31] [Server thread/ERROR]: Could not pass event EntityDamageEvent to TimeBomb v1.0.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at org.bukkit.craftbukkit.v1_10_R1.event.CraftEventFactory.callEvent(CraftEventFactory.java:89) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at org.bukkit.craftbukkit.v1_10_R1.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:572) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at org.bukkit.craftbukkit.v1_10_R1.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:558) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at org.bukkit.craftbukkit.v1_10_R1.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:604) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.EntityLiving.damageEntity0(EntityLiving.java:1238) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.EntityHuman.damageEntity0(EntityHuman.java:847) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.EntityLiving.damageEntity(EntityLiving.java:834) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.EntityHuman.damageEntity(EntityHuman.java:772) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.EntityPlayer.damageEntity(EntityPlayer.java:500) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.EntityLiving.e(EntityLiving.java:1103) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.EntityHuman.e(EntityHuman.java:1536) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.Block.fallOn(Block.java:528) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.Entity.a(Entity.java:901) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.EntityLiving.a(EntityLiving.java:176) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.EntityPlayer.a(EntityPlayer.java:658) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.PlayerConnection.a(PlayerConnection.java:642) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.PacketPlayInFlying.a(SourceFile:126) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.PacketPlayInFlying$PacketPlayInPosition.a(SourceFile:57) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_101]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_101]
        at net.minecraft.server.v1_10_R1.SystemUtils.a(SourceFile:45) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.MinecraftServer.D(MinecraftServer.java:732) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.DedicatedServer.D(DedicatedServer.java:400) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.MinecraftServer.C(MinecraftServer.java:668) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.java:567) [spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_101]
    Caused by: java.lang.NullPointerException
        at timebomb.eventhandler.PlayerStatusHandler.onPlayerDamage(PlayerStatusHandler.java:38) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_101]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.10.2.jar:git-Spigot-1e4dd71-4507d99]
        ... 30 more
    Here is my PlayerStatusHandler class:
    PHP:
    @EventHandler(priority EventPriority.HIGHESTignoreCancelled true)
        public 
    void onPlayerDamage(EntityDamageEvent event) {
            if (
    event.getEntity().getType() != EntityType.PLAYER) {
                return;
            }
            
    Player player = (Playerevent.getEntity();
            
    Arena arena plugin.amanager.getPlayerArena(player.getName());
            if (
    arena != null) {
                if (
    arena.getStatusManager().isArenaRunning()) {
                    return;
                } else if (
    respawnTimer.respawnTime.containsKey(player.getName())) {
                    
    event.setCancelled(true);
                    
    SoundUtil.playSound(player.getLocation(), Sounds.BAT_HURT999);
                } else {
                    
    event.setCancelled(true);
                }
            }
        }
     
  7. @MrGriefer_
    Again, you need to tell me which line is line 38.
     
  8. Offline

    MrGriefer_

    PHP:
    } else if (respawnTimer.respawnTime.containsKey(player.getName())) {
     
  9. Offline

    mythbusterma

    @MrGriefer_

    Something on that line is null, make it not null.

    Might I suggest avoiding public fields? It makes your code quite ugly.
     
    bwfcwalshy likes this.
  10. Offline

    MrGriefer_

    You mean like non-static method ?
     
  11. @MrGriefer_
    Well that yes, but also using getters and setters.
     
  12. Offline

    MrGriefer_

    Thank you I got that working! I'm facing another problem tho which doesn't include NullPointerException (Hooray), I'm trying to make timers for separate players and so far when 2 players are using the timers it creates massive lag the server doesn't respond and it just crashes! Here is my code:

    PHP:
    public HashMap<StringIntegerbombTime = new HashMap<StringInteger>();
        public 
    HashMap<StringBukkitRunnablebombTask = new HashMap<StringBukkitRunnable>();
       
        public 
    void startTimer(Player p) {
            if (
    bombTime.containsKey(p.getName())) {
                return;
            }
           
            
    bombTime.put(p.getName(), 30);
            
    bombTask.put(p.getName(), new BukkitRunnable() {
                public 
    void run() {
                    
    bombTime.put(p.getName(), bombTime.get(p.getName()) - 1);
                   
                    
    ItemStack is = new ItemStack(Material.TNTbombTime.get(p.getName()));
                    
    ItemMeta im is.getItemMeta();
                    
    im.setDisplayName(TimeBomb.getInstance().getConfig().getString("Items.Bomb.Name").replace("&""§"));
                    
    is.setItemMeta(im);
                    
    p.getInventory().setItem(8is);
                   
                    if (
    bombTime.get(p.getName()) == 0) {
                        
    bombTime.remove(p.getName());
                        
    bombTask.remove(p.getName());
                        
    cancel();
                        
    p.setHealth(0.0D);
                        
    Location loc p.getLocation();
                        
    p.getWorld().createExplosion(loc.getX(), loc.getY(), loc.getZ(), 1.0Ffalsefalse);
                        
    p.sendMessage("§a§lTimer ended!");
                        
    p.getInventory().clear();
                    } else if (
    bombTime.get(p.getName()) == || bombTime.get(p.getName()) == || bombTime.get(p.getName()) == 3
                            
    || bombTime.get(p.getName()) == || bombTime.get(p.getName()) == 1) {
                        
    TitleMsg.sendTitle(p1101"§c" bombTime.get(p.getName()), "");                           
                    }
                }
            });
           
            
    bombTask.get(p.getName()).runTaskTimer(TimeBomb.getInstance(), 020);
           
            return;
        }
    Keep in mind that I running more than 3 timers all at once!
     
  13. Offline

    mythbusterma

    @MrGriefer_

    I don't see anything in there that would obviously point to an issue. I would think the issue is somewhere else.
     
  14. Offline

    MrGriefer_

    There are no issues with that code, but does it creates lag when I use it on multiple players ?
     
  15. Offline

    mythbusterma

    @MrGriefer_

    I don't know, I don't have time to run and test your code.
     
  16. Offline

    ArsenArsen

    Have a single runnable which will increment/decrement all of them.
     
  17. Offline

    Zombie_Striker

    This normally means there is some code that takes too long to execute/ has an infinite loop. Your code does not look like it should do this. Try doing the following:
    1. Comment out the runnable. If that does not fix your problem, the issue is with another plugin/ bit of code.
    2. If it does fix it, there is something wrong with one of your methods. Comment out bits of the task until it stops lagging your server.
    3. Once you find the line that causes the lag, figure out why it is causing lag.
     
Thread Status:
Not open for further replies.

Share This Page