Solved How to check it a player has a specific item.

Discussion in 'Plugin Development' started by Droid143, Jan 13, 2014.

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

    Droid143

    Hello, I am an amateur plugin dev. and I need help with a plugin I am making. This plugin is for operators to type a command, and get a certain Item, with which they can use to ban people.

    Code:java
    1. public boolean onPlayerInteractEntityEvent(Player banner, Entity entity, Action left_click){
    2. Player banned = (Player) entity;
    3. ItemStack itemInHand = banner.getItemInHand();
    4.  
    5. if(itemInHand.equals(setName(new ItemStack(Material.IRON_AXE)))){
    6. if(banner.hasPermission("permission.banhammer")){
    7. if(banned instanceof Player){
    8. banned.setBanned(true);
    9. }
    10. }
    11. }
    12. return false;
    13. }


    Now, I have already figured out the how to give the sender the specified object, but I could use some help how to set up the code to properly check to see if the player has the object defined here.

    Code:java
    1. private ItemStack setName(ItemStack is){
    2. ItemMeta im = is.getItemMeta();
    3. im.setDisplayName(ChatColor.RED + "BanHammer!");
    4. is.setItemMeta(im);
    5. is.addEnchantment(Enchantment.DAMAGE_ALL, 3);
    6. return is;
    7. }
     
  2. Offline

    Blingdaddy1

    Well first off, do you have @EventHandler above your listener?
    Are you registering events in your onEnable()?
    Are you implementing Listener?
     
  3. Offline

    jacklin213

    Correct me if I'm wrong. Event should start like

    Code:
    @EventHandler
    public void onInteract(PlayerInteractEvent event){
    // do stuff
    }
     
  4. Offline

    Blingdaddy1


    Yup.
    Pretty sure the [fixed] should look like this:

    Code:java
    1. public void onPlayerInteractEntityEvent(PlayerInteractEvent event){
    2. Player banned = (Player) entity;
    3. ItemStack itemInHand = banner.getItemInHand();
    4.  
    5. //to lazy to do stuff
     
  5. Offline

    Droid143

    Yes you are all right, after I posted this I noticed the sticky thread talking about registering events, but that, at the moment, is not my concern. My concern is, to check to see if the banner has the item that, when the command was used, gave him, as mentioned in the second code lines I showed.

    Ok, I have figured out the registering the event, I just can't seem to find out how to check if the object is the specified object. Here's what I've got.

    Code:java
    1. private ItemStack setName(ItemStack is){
    2. ItemMeta im = is.getItemMeta();
    3. im.setDisplayName(ChatColor.RED + "BanHammer!");
    4. is.setItemMeta(im);
    5. is.addEnchantment(Enchantment.DAMAGE_UNDEAD, 3);
    6. return is;
    7. }
    8.  
    9. @EventHandler
    10. public void onPlayerBanEvent(EntityDamageByEntityEvent event){
    11. Player banner = (Player) event.getDamager();
    12. Player banned = (Player) event.getEntity();
    13. ItemStack itemInHand = banner.getItemInHand();
    14. ItemStack banhammer = (ItemStack) setName(new ItemStack(Material.IRON_AXE));
    15.  
    16. if(itemInHand.getItemMeta() == banhammer){
    17. //code here


    I've solved it, I had to check for the item type.

    Code:java
    1. private ItemStack setName(ItemStack is){
    2. ItemMeta im = is.getItemMeta();
    3. im.setDisplayName(ChatColor.RED + "BanHammer!");
    4. is.setItemMeta(im);
    5. is.addEnchantment(Enchantment.DAMAGE_UNDEAD, 3);
    6. return is;
    7. }
    8.  
    9. @EventHandler
    10. public void onPlayerBanEvent(EntityDamageByEntityEvent event){
    11. Player banner = (Player) event.getDamager();
    12. Player banned = (Player) event.getEntity();
    13. ItemStack itemInHand = banner.getItemInHand();
    14. ItemStack banhammer = (ItemStack) setName(new ItemStack(Material.IRON_AXE));
    15.  
    16. if(itemInHand.getType() == banhammer.getType()){
    17. if(banner.hasPermission("permission.banhammer")){
    18. if(banned instanceof Player){
    19. //code here
    20. }
    21. }
    22. }
    23. }


    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 6, 2016
Thread Status:
Not open for further replies.

Share This Page