"Cannot drop AIR" Error

Discussion in 'Plugin Development' started by togetherfreaks3, May 21, 2014.

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

    togetherfreaks3

    Hello first.
    At my new Plugin I have an Error which I cant fix. I know that the Error is caused when a Player doesnt have an Item in the hand. But I dont know how to test if the player has nothing in his hand.

    Error:
    Code:
    [17:10:21] [Server thread/ERROR]: Could not pass event EntityDamageByEntityEvent to BloodParticles v0.0.1
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:320) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:486) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:471) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at org.bukkit.craftbukkit.v1_7_R1.event.CraftEventFactory.callEvent(CraftEventFactory.java:98) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at org.bukkit.craftbukkit.v1_7_R1.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:386) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at org.bukkit.craftbukkit.v1_7_R1.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:414) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.EntityLiving.damageEntity(EntityLiving.java:656) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.EntityHuman.damageEntity(EntityHuman.java:746) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.EntityPlayer.damageEntity(EntityPlayer.java:446) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.EntityMonster.m(EntityMonster.java:99) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.EntityZombie.m(EntityZombie.java:218) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.PathfinderGoalMeleeAttack.e(PathfinderGoalMeleeAttack.java:100) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.PathfinderGoalSelector.a(PathfinderGoalSelector.java:108) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.EntityInsentient.bn(EntityInsentient.java:427) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.EntityLiving.e(EntityLiving.java:1436) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.EntityInsentient.e(EntityInsentient.java:306) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.EntityMonster.e(EntityMonster.java:20) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.EntityZombie.e(EntityZombie.java:152) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.EntityLiving.h(EntityLiving.java:1299) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.EntityInsentient.h(EntityInsentient.java:150) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.EntityMonster.h(EntityMonster.java:24) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.EntityZombie.h(EntityZombie.java:214) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.World.entityJoinedWorld(World.java:1348) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.World.playerJoinedWorld(World.java:1329) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.World.tickEntities(World.java:1217) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.WorldServer.tickEntities(WorldServer.java:480) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:637) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:250) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:545) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:457) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    Caused by: java.lang.IllegalArgumentException: Cannot drop AIR.
        at org.apache.commons.lang.Validate.isTrue(Validate.java:157) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at org.bukkit.craftbukkit.v1_7_R1.CraftWorld.dropItem(CraftWorld.java:295) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        at main.EvHandler.DamageEvent(EvHandler.java:58) ~[?:?]
        at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_51]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_51]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:318) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
        ... 31 more
    
    Here is my Plugin Code.
    Plugin:
    Code:java
    1. package main;
    2.  
    3. import java.util.Arrays;
    4. import java.util.Random;
    5.  
    6.  
    7.  
    8.  
    9.  
    10.  
    11.  
    12. import org.bukkit.ChatColor;
    13. import org.bukkit.Effect;
    14. import org.bukkit.entity.Player;
    15. import org.bukkit.event.EventHandler;
    16. import org.bukkit.event.EventPriority;
    17. import org.bukkit.event.Listener;
    18. import org.bukkit.event.entity.EntityDamageEvent;
    19. import org.bukkit.event.player.PlayerJoinEvent;
    20. import org.bukkit.inventory.ItemStack;
    21. import org.bukkit.inventory.meta.ItemMeta;
    22. import org.bukkit.inventory.meta.SkullMeta;
    23.  
    24. public class EvHandler implements Listener {
    25.  
    26. BloodParticles plugin;
    27.  
    28. public EvHandler(BloodParticles plugin){
    29. this.plugin = plugin;
    30. plugin.getServer().getPluginManager().registerEvents(this, plugin);
    31.  
    32. }
    33. @EventHandler(priority = EventPriority.HIGHEST)
    34. public void JoinEvent(PlayerJoinEvent opc) {
    35. Player player = opc.getPlayer();
    36. player.sendMessage(ChatColor.GREEN + "[HarderViolation] HarderViolation is installed on this Server.");
    37. }
    38.  
    39. @EventHandler(priority = EventPriority.HIGHEST)
    40. public void DamageEvent(EntityDamageEvent e) {
    41. if(e.getEntity() instanceof Player) {
    42. Player p = (Player) e.getEntity();
    43. p.getWorld().playEffect(p.getLocation(),Effect.STEP_SOUND, 55);
    44.  
    45. ItemStack drop = p.getItemInHand();
    46.  
    47.  
    48. if(p.getItemInHand() != null) {
    49. Random object = new Random();
    50. int randomnesss;
    51.  
    52. for(int counter =1; counter<=1;counter++) {
    53. randomnesss =+object.nextInt(500);
    54. if(randomnesss == 1){
    55. p.getWorld().dropItem(p.getLocation(),(applyLore(new ItemStack(352), ChatColor.DARK_AQUA + p.getDisplayName() + "s leg")));
    56. }
    57.  
    58. if(randomnesss == 2){
    59.  
    60. p.getWorld().dropItem(p.getLocation(),(applyLore(new ItemStack(352), ChatColor.DARK_AQUA + p.getDisplayName() + "s arm")));
    61. p.getWorld().dropItem(p.getLocation(),drop);
    62. p.getInventory().removeItem(drop);
    63.  
    64. }
    65.  
    66. }
    67.  
    68. for(int counter =1; counter<=1;counter++) {
    69. randomnesss =+object.nextInt(1000);
    70. if(randomnesss == 1){
    71. p.setHealth(0.0);
    72. p.getInventory().addItem(new ItemStack[] { getNamedSkull(p.getDisplayName()) });
    73. }
    74. }
    75.  
    76. for(int counter =1; counter<=1;counter++) {
    77. randomnesss =+object.nextInt(100);
    78. if(randomnesss == 1){
    79. p.sendMessage("You are bleeding!");
    80. p.getWorld().playEffect(p.getLocation(),Effect.STEP_SOUND, 55);
    81. p.damage(1.0);
    82.  
    83.  
    84. }
    85. }
    86.  
    87.  
    88. }
    89. }
    90. }
    91.  
    92.  
    93. private ItemStack applyLore(ItemStack stack, String name, String...lore){
    94. ItemMeta meta = stack.getItemMeta();
    95. meta.setDisplayName(name);
    96. meta.setLore(Arrays.asList(lore));
    97. stack.setItemMeta(meta);
    98. return stack;
    99.  
    100. }
    101. public ItemStack getNamedSkull(String nick)
    102. {
    103. ItemStack skull = new ItemStack(397, 1, (short)3);
    104. SkullMeta meta = (SkullMeta)skull.getItemMeta();
    105.  
    106. meta.setOwner(nick);
    107. skull.setItemMeta(meta);
    108.  
    109. return skull;
    110. }
    111.  
    112.  
    113. }
    114.  
    115.  
    116.  


    So please help me to fix that Error. (If you know a fix a Code Example or the fixed Code would be great but you can say the fix only too.)

    And Sorry for my Bad English, I am german and 14 Years old.
     
  2. Offline

    Bammerbom

    togetherfreaks3
    To test if someone has an item in hand:
    Code:
    if(player.getInventory().getItemInHand() != null && player.getInventory().getItemInHand().getType() != Material.AIR){
     
    TheMintyMate likes this.
  3. Offline

    togetherfreaks3

    Jhtzb likes this.
Thread Status:
Not open for further replies.

Share This Page