Custom Item Crafting Permissions

Discussion in 'Plugin Development' started by inventorman101, Aug 3, 2013.

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

    inventorman101

    I have created an EventListener to listen for the item being crafted, if the player doesn't have permission then it will set the result to null. It works for the first recipe which is a material without ItemMeta. What I am having trouble with is checking to see if the result has a certain display name and if it has lore.

    CODE:
    Code:java
    1.  
    2. package com.brendannoble.spawnercage;
    3.  
    4. import java.util.List;
    5. import org.bukkit.ChatColor;
    6. import org.bukkit.Material;
    7. import org.bukkit.inventory.ItemStack;
    8. import org.bukkit.inventory.meta.ItemMeta;
    9. import org.bukkit.entity.Player;
    10. import org.bukkit.event.EventHandler;
    11. import org.bukkit.event.EventPriority;
    12. import org.bukkit.event.Listener;
    13. import org.bukkit.event.inventory.PrepareItemCraftEvent;
    14.  
    15. public class CraftingEvent implements Listener
    16. {
    17.  
    18. @EventHandler(priority = EventPriority.HIGHEST)
    19. public void PICE(PrepareItemCraftEvent event)
    20. {
    21. Player p = (Player) event.getView().getPlayer();
    22.  
    23. if (event.getInventory().getResult().getType()==Material.MOB_SPAWNER)
    24. {
    25. if(!p.hasPermission("spawnercage.cage"))
    26. {
    27. p.sendMessage(ChatColor.RED + "You don't have permission to craft this item!");
    28. event.getInventory().setResult(null);
    29. }
    30.  
    31. }
    32.  
    33. else if (event.getInventory().getResult().getType()==???)
    34. {
    35. if(!p.hasPermission("spawnercage.creeper"))
    36. {
    37. p.sendMessage(ChatColor.RED + "You don't have permission to craft this item!");
    38. event.getInventory().setResult(null);
    39. }
    40. }
    41. }
     
  2. Offline

    valon750

    Well, surely it'd just be a matter of..

    Code:
    if (event.getInventory().getResult().getType().getItemMeta.hasLore(){
        if (event.getInventory().getResult().getType().getItemMeta().getDisplayName().equals("name"){
            //run code
    }
    }
    If I'm off, ignore me, no caffeine has entered this body...
     
  3. Offline

    inventorman101

    It has a type mismatch when you do that because only ItemStack's can have ItemMeta and this is a material valon750
     
  4. Offline

    Kazzababe

    I could be wrong, but I'm fairly certain that you can just do:
    Code:
    if(item.equals(anotherItem))
    and that will take into account item meta.

    Or just something like this:
    Code:
    if(item.getType() == Material.YurMaterial) {
        ItemMeta itemMeta = item.getItemMeta();
        if(itemMeta != null) {
            String itemName = itemMeta.getDisplayName();
            if(itemName != null) {
                if(itemName.equals(itemname)) {
                    List<String> lore = itemMeta.getLore();
                    if(lore.equals(otherLoreList)) {
                        //true
                    }
                }
            }
        }
    }
     
  5. Offline

    inventorman101

    Kazzababe one question all of the custom crafts are spawners, will it still check through all of the else if statements until it finds a match?

    BTW It is not working and I think it is because they all are mob spawners here is my code

    Code:java
    1. package com.brendannoble.spawnercage;
    2.  
    3. import java.util.List;
    4. import org.bukkit.ChatColor;
    5. import org.bukkit.Material;
    6. import org.bukkit.inventory.ItemStack;
    7. import org.bukkit.inventory.meta.ItemMeta;
    8. import org.bukkit.entity.Player;
    9. import org.bukkit.event.EventHandler;
    10. import org.bukkit.event.EventPriority;
    11. import org.bukkit.event.Listener;
    12. import org.bukkit.event.inventory.PrepareItemCraftEvent;
    13.  
    14. public class CraftingEvent implements Listener
    15. {
    16.  
    17. @EventHandler(priority = EventPriority.HIGHEST)
    18. public void PICE(PrepareItemCraftEvent event)
    19. {
    20. Player p = (Player) event.getView().getPlayer();
    21. ItemStack item = event.getInventory().getResult();
    22. if (event.getInventory().getResult().getType()==Material.MOB_SPAWNER)
    23. {
    24. if(!p.hasPermission("spawnercage.cage"))
    25. {
    26. p.sendMessage(ChatColor.RED + "You don't have permission to craft this item!");
    27. event.getInventory().setResult(null);
    28. }
    29.  
    30. }
    31.  
    32. else if (item.getType() == Material.MOB_SPAWNER)
    33. {
    34. ItemMeta im = item.getItemMeta();
    35. if(im !=null)
    36. {
    37. String name = im.getDisplayName();
    38. if(name != null)
    39. {
    40. if(name.equals("Creeper Cage"))
    41. {
    42. List<String> lore = im.getLore();
    43. if(lore != null)
    44. {
    45. if(!p.hasPermission("spawnercage.creeper"))
    46. {
    47. p.sendMessage(ChatColor.RED + "You don't have permission to craft this item!");
    48. event.getInventory().setResult(null);
    49. }
    50. }
    51. }
    52. }
    53. }
    54. }
    55. }


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

Share This Page