Remove items with only certain lore; hasItemMeta() not working

Discussion in 'Plugin Development' started by Colby l, Feb 16, 2014.

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

    Colby l

    I'm trying to remove items with a certain lore from player's inventory. But, when I run the 'hasItemMeta()', then it returns false.

    I've searched for answers on the forum with no luck, as most methods of removing lore-specific items require the 'hasItemMeta()' check.

    I tested this by creating an item with the lore 'test', and had it in my inventory, and the response was 'Test 6', meaning the 'hasItemMeta()' check failed.

    Here's my code:
    Code:java
    1. public boolean itemRequirementCheck(Player p, int tier) {
    2. // Config variables
    3. int itemChargeAmount = config.getItemChargeAmount(tier);
    4. //gets item name enum
    5. String itemChargeEnum = config.getItemChargeEnum(tier);
    6. //gets inventory server
    7. PlayerInventory inventory = p.getInventory();
    8. //gets itemstack
    9. ItemStack itemStack = new ItemStack(Material.getMaterial(itemChargeEnum), itemChargeAmount);
    10. //checks if item charge is enabled
    11. if (itemChargeAmount == 0){
    12. //returns true if no items are needed to fly
    13. return true;
    14. }
    15. //cehcks if item has enum
    16. if (config.getItemMetaTag(tier).contains("-1")) {
    17. //checks if player has item and amount
    18. if (!inventory.contains(Material.valueOf(itemChargeEnum), itemChargeAmount)) {
    19. //TODO Remove TEST
    20. p.sendMessage("Test 1");
    21. //TEST
    22. //returns false if player doesn't have items
    23. return false;
    24. //if player has item amount and type returns true
    25. } else {
    26. //TODO Remove TEST
    27. p.sendMessage("Test 2");
    28. //TEST
    29. //if player has the requested inventory, returns true
    30. return true;
    31. }
    32.  
    33. }else if (itemStack.hasItemMeta()) {
    34.  
    35. //TODO Remove TEST
    36. p.sendMessage("Test 3");
    37. //TEST
    38.  
    39. //checks player's item stack for exact item lore
    40. if (itemStack.getItemMeta().getLore().contains(config.getItemMetaTag(tier).toString())) {
    41.  
    42. //TODO Remove TEST
    43. p.sendMessage("Test 4");
    44. //TEST
    45.  
    46. //returns true
    47. return true;
    48.  
    49. } else {
    50. //TODO Remove TEST
    51. p.sendMessage("Test 5");
    52. //TEST
    53.  
    54. // returns false
    55. return false;
    56. }
    57.  
    58. } else {
    59.  
    60. //TODO Remove TEST
    61. p.sendMessage("Test 6");
    62. //TEST
    63. //returns false
    64. return false;
    65. }
    66. }
    67.  


    Thanks for the help!

    Does anyone else have a similar issue with 'hasItemMeta()' not working?

    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