Solved Which item was picked up?

Discussion in 'Plugin Development' started by dungeontiger, Aug 2, 2013.

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

    dungeontiger

    I'm trying to write code to see what item is picked up by a player. This code always shows "DROPPED_ITEM".

    Code:java
    1. @EventHandler
    2. public void onPlayerEvent(PlayerPickupItemEvent event) {
    3. EventManager.notify(EventFactory.createPlayerPickup(
    4. event.getPlayer(), event.getItem()));
    5. }
    6.  


    And the relevant event factory method is like this:

    Code:java
    1. public static Event createPlayerPickup(Player player, Item item) {
    2. String itemName = String.valueOf(item.getType());
    3. return new Event(EventType.PlAYER_PICKUP, player.getDisplayName(),
    4. Calendar.getInstance(), getLocationString(player.getLocation()), itemName);
    5. }
    6.  


    Basically item.getType() is always returning EntityType.DROPPED_ITEM. I expected it to indicate what item it was, a block, a rose, a diamond sword, whatever. How do I get that?

    Thanks.
     
  2. Offline

    javoris767

    dungeontiger That's just getting the string value of an EntityType. Try using
    Code:
    item.getType().getName();
    as that is the actual name.
     
  3. Offline

    callum2904

    To save you time bukkit made an event for this
    Code:java
    1. @EventHandler
    2. public void pickup(PlayerPickupItemEvent event){
    3. Player player = event.getPlayer();
    4. player.sendMessage("" + event.getItem().getItemStack().getType());
    5. }
     
  4. Offline

    dungeontiger

    Thanks guys. That was not the answer but it gave me a clue. I needed to get the item stack from the item and then it worked as expected. Thanks for your help.
     
Thread Status:
Not open for further replies.

Share This Page