Get Item Meta?

Discussion in 'Plugin Development' started by sum_17427, Nov 28, 2014.

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

    sum_17427

    Here my code:
    Code:java
    1. package me.summc.fastchest;
    2.  
    3. import java.util.logging.Logger;
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.Material;
    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.block.Action;
    13. import org.bukkit.event.player.PlayerInteractEvent;
    14. import org.bukkit.inventory.ItemStack;
    15. import org.bukkit.inventory.ShapedRecipe;
    16. import org.bukkit.inventory.meta.ItemMeta;
    17. import org.bukkit.plugin.java.JavaPlugin;
    18.  
    19. public class Main extends JavaPlugin implements Listener{
    20. Logger log;
    21. public void onEnable(){
    22. getServer().getPluginManager().registerEvents(this, this);
    23. this.log = getLogger();
    24. this.log.info("Fastchest plugin Enabled!");
    25. }
    26. @EventHandler(priority=EventPriority.NORMAL)
    27. public void onInventoryClick(PlayerInteractEvent e){
    28. Player p = e.getPlayer();
    29.  
    30. String Name = ChatColor.BLUE + "Backpack";
    31. ItemStack backpack = new ItemStack(Material.CHEST, 1);
    32. ItemMeta im = backpack.getItemMeta();
    33. im.setDisplayName(Name);
    34. backpack.setItemMeta(im);
    35. ShapedRecipe Backpack = new ShapedRecipe(backpack);
    36. Backpack.shape(new String[]{"LLL","SES","LLL"}).setIngredient('L', Material.LEATHER).setIngredient('E', Material.ENDER_CHEST).setIngredient('S', Material.STRING);
    37. Bukkit.getServer().addRecipe(Backpack);
    38. if (p.hasPermission("fastchest.use")){
    39. if ((e.getAction() == Action.LEFT_CLICK_AIR)) {
    40. if (p.getInventory().getItemInHand().getItemMeta() == Backpack){
    41. p.openInventory(p.getEnderChest());
    42. }
    43. }
    44. } else {
    45. p.sendMessage("You not allowed to do this!");
    46. }
    47. }
    48. public void onDisable(){
    49. this.log = getLogger();
    50. this.log.info("Fastchest plugin Disabled!");
    51. }
    52. }

    Why "p.getInventory().getItemInHand().getItemMeta() == Backpack" dosen't work?

    And how to make enderchest just show 9 slot?

    <Edit by mrCookieSlime: Merged posts and removed fast bump.>
     
  2. Offline

    sum_17427

  3. sum_17427
    Well first of all, learn the importance of properly named variables (and Java naming conventions in general). I don't quite understand what you're trying to do, but can't you just check if the item in hand is equal to the backpack ItemStack?
    Code:
    if(p.getInventory().getItemInHand().equals(backpack)) {
        // stuff
    }
     
  4. Offline

    sum_17427

    Assist
    nvm, it work. Thanks so much! You know how to make echest just show 9 slot?
     
  5. sum_17427
    I edited my post earlier to say that it's not possible (as far as I know).
     
  6. Offline

    ChipDev

    Assist cancel interact event and open a fame chest
     
  7. ChipDev
    He wants an ender chest with 9 slots, which is not possible. You can however open a normal chest with custom slots, but you cannot define the type of the inventory.
     
    ChipDev likes this.
  8. Offline

    ChipDev

    Right. You would have to fake it.. With a lot of player hashmaps :/
     
Thread Status:
Not open for further replies.

Share This Page