How to return ItemStack for player item held in hand

Discussion in 'Plugin Development' started by aguy867867, May 31, 2014.

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

    aguy867867

    Code:java
    1. package io.github.aguy867.Guns;
    2.  
    3. import org.bukkit.Material;
    4. import org.bukkit.entity.Arrow;
    5. import org.bukkit.entity.Player;
    6. import org.bukkit.entity.Projectile;
    7. import org.bukkit.event.EventHandler;
    8. import org.bukkit.event.Listener;
    9. import org.bukkit.event.block.Action;
    10. import org.bukkit.event.entity.EntityDamageByEntityEvent;
    11. import org.bukkit.event.player.PlayerInteractEvent;
    12. import org.bukkit.event.player.PlayerJoinEvent;
    13. import org.bukkit.inventory.ItemStack;
    14. import org.bukkit.inventory.meta.ItemMeta;
    15. import org.bukkit.plugin.PluginManager;
    16. import org.bukkit.plugin.java.JavaPlugin;
    17. import org.bukkit.util.Vector;
    18.  
    19. public class Main extends JavaPlugin implements Listener{
    20. @Override
    21. public void onEnable() { //What to do on server load/reload
    22. getLogger().info("Guns is enabled. All clear for take off!");
    23. PluginManager pm = getServer().getPluginManager();
    24. pm.registerEvents(this, this);
    25. }
    26.  
    27. @Override
    28. public void onDisable() { //What to do on server unload/reload
    29. getLogger().info("Guns is disabled. Bye!");
    30.  
    31. }
    32.  
    33. public ItemStack getItemInHand(Player p){
    34. return p.getItemInHand();
    35. }
    36.  
    37.  
    38. String Pistolg = "Pistol";
    39.  
    40. ItemStack Pistol = new ItemStack(Material.BOW, 1); //Load items
    41.  
    42. ItemMeta pistolm = Pistol.getItemMeta();
    43.  
    44.  
    45. @EventHandler
    46. public void onPlayerJoin(PlayerJoinEvent event){
    47. pistolm.setDisplayName(Pistolg);
    48.  
    49. Pistol.setItemMeta(pistolm);
    50. Player p = event.getPlayer();
    51. p.getInventory().addItem(Pistol);
    52. }
    53.  
    54. @EventHandler
    55. public void onPlayerInteract(PlayerInteractEvent event) {
    56. pistolm.setDisplayName(Pistolg);
    57.  
    58. Pistol.setItemMeta(pistolm);
    59.  
    60. Player p = event.getPlayer();
    61. if(event.getAction() == Action.RIGHT_CLICK_AIR){
    62.  
    63. if (getItemInHand() == Pistol){// what can i put here cause this code isnt workiing
    64. getLogger().info("hi");
    65. int v = 2;
    66. final Vector direction = p.getEyeLocation().getDirection().multiply(v);
    67.  
    68. Arrow tnt = p.getWorld().spawn(p.getEyeLocation().add(direction.getX(), direction.getY(), direction.getZ()), Arrow.class);
    69.  
    70. tnt.setVelocity(direction);
    71. }
    72. }
    73. }
    74. /*
    75.   @EventHandler
    76.   public void onPlayerdamage(EntityDamageByEntityEvent event){
    77.   Player damager = (Player) ((Projectile) event).getShooter();
    78.   if (event.getDamager() instanceof Arrow) {
    79.   Arrow arrow = (Arrow) event.getDamager();
    80.  
    81.   if (arrow.getShooter() instanceof Player && damager.getItemInHand() == Pistol){
    82.   event.setDamage(event.getDamage() + 2);
    83.   }
    84.  
    85.  
    86.   }
    87.   }*/
    88. }
    89.  

    I cant seem to get the if statement to detect that the player is holding "Pistol". Anyone know a way how?
     
  2. Offline

    Arkel

    DJSkepter This will check the durability and everything, see ItemStack.java starting from line 302.

    First of all you should get rid of the redundant function getItemInHand. I would compare the material type and then the item name. Something like this:

    Code:java
    1.  
    2. ItemStack itemInHand = p.getItemInHand();
    3. if(itemInHand.getType() == Material.BOW && itemInHand.hasItemMeta() && itemInHand.getItemMeta().getDisplayName() .equals("Pistol") {
    4. ...
    5. }
    6.  
     
    DJSkepter likes this.
  3. Offline

    aguy867867

    Thanks! It works now.
     
Thread Status:
Not open for further replies.

Share This Page