Cancelling the drop of a item with meta

Discussion in 'Plugin Development' started by Duuckky, May 19, 2014.

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

    Duuckky

    Item Meta

    Code:java
    1. ItemStack book = new ItemStack(Material.WRITTEN_BOOK);{
    2. BookMeta bookMeta = (BookMeta) book.getItemMeta();
    3. bookMeta.addPage("1", "1");
    4. bookMeta.setPage(1, ("Page 1"));
    5. bookMeta.setPage(2, "Page 2");
    6. bookMeta.setAuthor("§gBook");
    7. bookMeta.setDisplayName("§3Book");
    8. book.setItemMeta(bookMeta);
    9. }


    Drop Event

    Code:java
    1. @EventHandler
    2. public void onPlayerDropBook(PlayerDropItemEvent e) {
    3. if (e.getItemDrop().getItemStack().getType().equals(book)) {
    4. e.setCancelled(true);
    5. }
    6. }


    Cannot find the problem here, I can still drop the book :c
     
  2. Offline

    MrSparkzz

    Duuckky
    Did you remember to initialize the event in your on enable?
     
    DamnHippo likes this.
  3. Offline

    Duuckky

    Yes
     
  4. Offline

    MrSparkzz

    Duuckky
    Any errors in the console?
     
    DamnHippo likes this.
  5. Offline

    Duuckky

    nope
     
  6. Offline

    MrSparkzz

    Duuckky
    Show the rest of your code?
     
    DamnHippo likes this.
  7. Offline

    Duuckky

    Events

    Code:java
    1. package me.duuckky.events;
    2.  
    3. import org.bukkit.Material;
    4. import org.bukkit.entity.Player;
    5. import org.bukkit.event.EventHandler;
    6. import org.bukkit.event.Listener;
    7. import org.bukkit.event.block.Action;
    8. import org.bukkit.event.player.PlayerDropItemEvent;
    9. import org.bukkit.event.player.PlayerInteractEvent;
    10. import org.bukkit.event.player.PlayerJoinEvent;
    11. import org.bukkit.inventory.ItemStack;
    12. import org.bukkit.inventory.meta.BookMeta;
    13.  
    14. public class BookEvents implements Listener {
    15.  
    16. ItemStack book = new ItemStack(Material.WRITTEN_BOOK);{
    17. BookMeta bookMeta = (BookMeta) book.getItemMeta();
    18. bookMeta.addPage("1", "1");
    19. bookMeta.setPage(1, ("Page 1"));
    20. bookMeta.setPage(2, "Page 2");
    21. bookMeta.setAuthor("§gBook");
    22. bookMeta.setDisplayName("§3Book");
    23. book.setItemMeta(bookMeta);
    24. }
    25.  
    26. @EventHandler
    27. public void onPlayerJoin(PlayerJoinEvent e) {
    28. Player p = e.getPlayer();
    29.  
    30. if (!p.getInventory().contains(book)) {
    31. p.getInventory().addItem(book);
    32. }
    33. }
    34.  
    35. @EventHandler
    36. public void onPlayerInteract(PlayerInteractEvent e) {
    37. Player p = e.getPlayer();
    38. Action a = e.getAction();
    39.  
    40. if (a == Action.RIGHT_CLICK_AIR || a == Action.RIGHT_CLICK_BLOCK
    41. && p.getItemInHand().equals(book)) {
    42. p.sendMessage("book");
    43. }
    44. }
    45.  
    46. @EventHandler
    47. public void onPlayerDropBook(PlayerDropItemEvent e) {
    48. if (e.getItemDrop().getItemStack().getType().equals(book)) {
    49. e.getPlayer().sendMessage("wow");
    50. e.setCancelled(true);
    51. }
    52. }
    53. }


    Main

    Code:java
    1. package me.duuckky;
    2.  
    3. import me.duuckky.events.BookEvents;
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.plugin.PluginManager;
    7. import org.bukkit.plugin.java.JavaPlugin;
    8.  
    9. public class Books extends JavaPlugin {
    10.  
    11. public void onEnable() {
    12. PluginManager pm = Bukkit.getServer().getPluginManager();
    13. pm.registerEvents(new BookEvents(), this);
    14. }
    15. }
    16.  
     
  8. Offline

    xTigerRebornx

    Duuckky You are trying to see if a Material and an ItemStack are equal, which will never be true. You have to get the ItemMeta and check it for what you want.
     
    MrSparkzz likes this.
  9. Offline

    MrSparkzz

    Duuckky
    Does it send the message "wow?"

    xTigerRebornx
    I was thinking that, but I've never used that event.
     
    DamnHippo likes this.
  10. Offline

    Duuckky

    What do you mean by get the ItemMeta and check it for what i want

    It does not

    Do you mean this?
    Code:java
    1. if (e.getItemDrop().getItemStack().getType().equals(book.getItemMeta())) {
    2. e.getPlayer().sendMessage("wow");
    3. e.setCancelled(true);
    4. }


    This doesn't work :c

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 8, 2016
  11. Offline

    Duuckky

  12. Offline

    metalhedd

    if (e.getItemDrop().getItemStack().isSimilar(book)) {
    e.setCancelled(true);
    }
     
    Rocoty likes this.
Thread Status:
Not open for further replies.

Share This Page