List of usage examples for net.minecraftforge.event.entity.player EntityItemPickupEvent getItem
public ItemEntity getItem()
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; } } } }