Example usage for net.minecraftforge.event.entity.player EntityItemPickupEvent getItem

List of usage examples for net.minecraftforge.event.entity.player EntityItemPickupEvent getItem

Introduction

In this page you can find the example usage for net.minecraftforge.event.entity.player EntityItemPickupEvent getItem.

Prototype

public ItemEntity getItem() 

Source Link

Usage

From source file:com.gmail.socraticphoenix.forge.randore.RandoresItemListener.java

License:Open Source License

@SubscribeEvent
public void onPickup(EntityItemPickupEvent ev) {
    EntityPlayer player = ev.getEntityPlayer();
    World world = player.world;//  w  w w.  j a v  a 2s  . c o  m
    long seed = Randores.getRandoresSeed(world);
    if (!world.isRemote) {
        EntityItem entityItem = ev.getItem();
        ItemStack item = entityItem.getEntityItem();
        if (!item.hasDisplayName() || item.getSubCompound("randores") == null
                || Randores.getRandoresSeed(item) != seed) {
            Randores.applyData(item, world);
        }
    }
}

From source file:com.lothrazar.cyclicmagic.item.storagesack.ItemStorageBag.java

License:Open Source License

@SubscribeEvent
public void onEntityItemPickupEvent(EntityItemPickupEvent event) {
    if (event.getItem().isDead) {
        return;//w  ww  .  j  a va2 s.co m
    }
    ItemStack stackOnGround = event.getItem().getItem();
    //multiple bags held by player
    NonNullList<ItemStack> foundBags = this.findAmmoList(event.getEntityPlayer(), this);
    for (ItemStack stackIsBag : foundBags) {
        int pickupType = ItemStorageBag.StoragePickupType.get(stackIsBag);
        if (pickupType == StoragePickupType.NOTHING.ordinal()) {
            continue;
        }
        if (pickupType == StoragePickupType.FILTER.ordinal()) {
            // treat bag contents as whtielist
            boolean doesMatch = false;
            NonNullList<ItemStack> inv = InventoryStorage.readFromNBT(stackIsBag);
            for (ItemStack tryMatch : inv) {
                if (tryMatch.isItemEqualIgnoreDurability(stackOnGround)) {
                    doesMatch = true;
                    break;
                }
            }
            if (!doesMatch) {
                return;//  filter type an it does not match
            }
        }
        //else type is everything so just go
        //do the real deposit
        InventoryStorage inventoryBag = new InventoryStorage(event.getEntityPlayer(), stackIsBag);
        NonNullList<ItemStack> onGround = NonNullList.create();
        onGround.add(stackOnGround);
        BagDepositReturn ret = UtilInventoryTransfer.dumpFromListToIInventory(event.getEntity().world,
                inventoryBag, onGround, false);
        if (ret.stacks.get(0).isEmpty()) {
            /// we got everything 
            event.getItem().setDead();
            event.setCanceled(true);
        } else {
            //we got part of it 
            event.getItem().setItem(ret.stacks.get(0));
        }
        break;
    }
}

From source file:com.teambrmodding.assistedprogression.common.item.TrashBagItem.java

License:Creative Commons License

/**
 * Called when an item is picked up, here we test if we should void the items
 * @param event The item pickup event/*from w  ww . j a  v a 2 s.  c om*/
 */
@SubscribeEvent
public static void onItemPickup(EntityItemPickupEvent event) {
    PlayerEntity player = event.getPlayer();
    ItemStack pickedItem = event.getItem().getItem();

    if (pickedItem.isEmpty() || player == null)
        return;

    // Look for trashbags
    for (ItemStack stack : player.inventory.mainInventory) {
        // If we have a valid trashbag
        if (!stack.isEmpty() && stack.getItem() instanceof TrashBagItem && stack.hasTag()
                && stack.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).isPresent()) {
            IItemHandler trashBagHandler = stack
                    .getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).orElse(null);

            // Check against filter
            for (int x = 0; x < trashBagHandler.getSlots(); x++) {
                ItemStack trashKey = trashBagHandler.getStackInSlot(x);
                if (!trashKey.isEmpty()) {
                    if (ItemStack.areItemsEqual(trashKey, pickedItem)
                            && ItemStack.areItemStackTagsEqual(trashKey, pickedItem)) {
                        pickedItem.shrink(pickedItem.getCount());
                        player.world.playSound(null, new BlockPos(player.posX, player.posY, player.posZ),
                                SoundEvents.ENTITY_ITEM_PICKUP, SoundCategory.BLOCKS, 0.3F, 0.5F);
                        return; // Items voided, no need to continue
                    }
                }
            }
        }
    }
}

From source file:de.ellpeck.actuallyadditions.mod.items.ItemBag.java

@SubscribeEvent
public void onItemPickup(EntityItemPickupEvent event) {
    if (event.isCanceled() || event.getResult() == Event.Result.ALLOW) {
        return;//  w w w  .j a  v  a2s .  com
    }

    EntityPlayer player = event.getEntityPlayer();
    EntityItem item = event.getItem();
    if (item != null && !item.isDead) {
        ItemStack stack = item.getEntityItem();
        if (StackUtil.isValid(stack)) {
            for (int i = 0; i < player.inventory.getSizeInventory(); i++) {
                if (i != player.inventory.currentItem) {

                    ItemStack invStack = player.inventory.getStackInSlot(i);
                    if (StackUtil.isValid(invStack) && invStack.getItem() instanceof ItemBag
                            && invStack.hasTagCompound()) {
                        if (invStack.getTagCompound().getBoolean("AutoInsert")) {
                            boolean changed = false;

                            boolean isVoid = ((ItemBag) invStack.getItem()).isVoid;
                            ItemStackHandlerCustom inv = new ItemStackHandlerCustom(
                                    ContainerBag.getSlotAmount(isVoid));
                            ItemDrill.loadSlotsFromNBT(inv, invStack);

                            FilterSettings filter = new FilterSettings(4, false, false, false, false, 0, 0);
                            filter.readFromNBT(invStack.getTagCompound(), "Filter");
                            if (filter.check(stack)) {
                                if (isVoid) {
                                    stack = StackUtil.setStackSize(stack, 0);
                                    changed = true;
                                } else {
                                    for (int j = 0; j < inv.getSlots(); j++) {
                                        ItemStack bagStack = inv.getStackInSlot(j);
                                        if (StackUtil.isValid(bagStack)) {
                                            if (ItemUtil.canBeStacked(bagStack, stack)) {
                                                int maxTransfer = Math.min(StackUtil.getStackSize(stack),
                                                        stack.getMaxStackSize()
                                                                - StackUtil.getStackSize(bagStack));
                                                if (maxTransfer > 0) {
                                                    inv.setStackInSlot(j,
                                                            StackUtil.addStackSize(bagStack, maxTransfer));
                                                    stack = StackUtil.addStackSize(stack, -maxTransfer);
                                                    changed = true;
                                                }
                                            }
                                        } else {
                                            inv.setStackInSlot(j, stack.copy());
                                            stack = StackUtil.setStackSize(stack, 0);
                                            changed = true;
                                        }

                                        if (!StackUtil.isValid(stack)) {
                                            break;
                                        }
                                    }
                                }
                            }

                            if (changed) {
                                if (!isVoid) {
                                    ItemDrill.writeSlotsToNBT(inv, invStack);
                                }
                                event.setResult(Event.Result.ALLOW);
                            }
                        }
                    }
                }

                if (!StackUtil.isValid(stack)) {
                    break;
                }
            }
        }

        item.setEntityItemStack(stack);
    }
}

From source file:jayavery.geomastery.main.PlayerEvents.java

License:Open Source License

/** Alters behaviour when player picks up an item. */
@SubscribeEvent/*  w w  w . j av a  2  s  .  co  m*/
public void playerItemPickup(EntityItemPickupEvent event) {

    EntityPlayer player = event.getEntityPlayer();

    ItemStack stack = event.getItem().getEntityItem();
    Item item = stack.getItem();

    // Special case for laid eggs
    if (item instanceof ItemEgg) {

        int count = stack.getCount();
        stack = ItemSimple.newStack(GeoItems.EGG, count, player.world);
    }

    if (player.getCapability(GeoCaps.CAP_PLAYER, null).canPickup(item)) {

        stack = ContainerInventory.add(player, stack);
    }

    if (stack.isEmpty()) {

        event.getItem().setDead();

    } else {

        event.getItem().setEntityItemStack(stack);
    }

    event.setCanceled(true);
}

From source file:vazkii.quark.management.feature.FavoriteItems.java

License:Creative Commons License

@SubscribeEvent
public void itemPickedUp(EntityItemPickupEvent event) {
    ItemStack stack = event.getItem().getItem();
    ItemStack copy = stack.copy();/*from w ww .j  a  va  2 s .  co m*/
    ItemNBTHelper.setBoolean(copy, TAG_FAVORITE_ITEM, true);

    if (stack.isStackable()) {
        for (ItemStack other : event.getEntityPlayer().inventory.mainInventory) {
            if (ItemStack.areItemsEqual(copy, other) && ItemStack.areItemStackTagsEqual(copy, other)) {
                if (!ItemStack.areItemStackTagsEqual(stack, copy)) {
                    event.getItem().setItem(copy);
                    event.setCanceled(true);
                }
                return;
            }
        }
    }
}