private boolean equalStacks(ItemStack stack1, ItemStack stack2) { return stack1.isItemEqual(stack2) && ItemStack.areItemStackTagsEqual(stack1, stack2); }
public List<ItemStack> getDisplayedRecipes() { ArrayList<ItemStack> list = new ArrayList<>(); for(LexiconPage page : pages) { ArrayList<ItemStack> itemsAddedThisPage = new ArrayList<>(); for(ItemStack s : page.getDisplayedRecipes()) { addItem: { for(ItemStack s1 : itemsAddedThisPage) if(s1.getItem() == s.getItem()) break addItem; for(ItemStack s1 : list) if(s1.isItemEqual(s) && ItemStack.areItemStackTagsEqual(s1, s)) break addItem; itemsAddedThisPage.add(s); list.add(s); } } } list.addAll(extraDisplayedRecipes); return list; }
/** * Gets if two stacks match. */ public static boolean stacksMatch(ItemStack stack1, ItemStack stack2, boolean checkNBT) { return !stack1.isEmpty() && !stack2.isEmpty() && stack1.isItemEqual(stack2) && (!checkNBT || ItemStack.areItemStackTagsEqual(stack1, stack2)); }
private void addStack(ItemStack stack) { if(stack.isEmpty()) return; for(ItemStack oStack : materials) if(oStack.isItemEqual(stack) && ItemStack.areItemStackTagsEqual(oStack, stack)) { oStack.grow(stack.getCount()); return; } materials.add(stack); }
public boolean requestMatches(Object request, ItemStack filter) { if(filter.isEmpty()) return false; if(request instanceof ItemStack) { ItemStack stack = (ItemStack) request; return !stack.isEmpty() && stack.isItemEqual(filter) && ItemStack.areItemStackTagsEqual(filter, stack); } String name = (String) request; return CorporeaHelper.stacksMatch(filter, name); }
public static void tryToSetLastRecipe(EntityPlayer player, IItemHandlerModifiable inv, List<ItemStack> lastRecipe) { if(lastRecipe == null || lastRecipe.isEmpty() || player.world.isRemote) return; int index = 0; boolean didAny = false; for(ItemStack stack : lastRecipe) { if(stack.isEmpty()) continue; for(int i = 0; i < player.inventory.getSizeInventory(); i++) { ItemStack pstack = player.inventory.getStackInSlot(i); if(!pstack.isEmpty() && pstack.isItemEqual(stack) && ItemStack.areItemStackTagsEqual(stack, pstack)) { inv.setStackInSlot(index, pstack.splitStack(1)); didAny = true; index++; break; } } } if(didAny) { player.world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.ENTITY_GENERIC_SPLASH, SoundCategory.BLOCKS, 0.1F, 10F); EntityPlayerMP mp = (EntityPlayerMP) player; mp.inventoryContainer.detectAndSendChanges(); } }
private boolean areEqualForMerge(ItemStack itemstack3, ItemStack itemstack4, Slot slot) { if(slot instanceof ModuleSlot) { return false; } return ItemStack.areItemStackTagsEqual(itemstack3, itemstack4); }
public boolean canAcceptItem(ItemStack stack, List<ItemStack> filter, int filterType) { if(stack.isEmpty()) return false; if(filter.isEmpty()) return true; switch(filterType) { case 0 : { // Accept items in frames only boolean anyFilter = false; for(ItemStack filterEntry : filter) { if(filterEntry == null) continue; anyFilter = true; boolean itemEqual = stack.getItem() == filterEntry.getItem(); boolean damageEqual = stack.getItemDamage() == filterEntry.getItemDamage(); boolean nbtEqual = ItemStack.areItemStackTagsEqual(filterEntry, stack); if(itemEqual && damageEqual && nbtEqual) return true; if(!stack.getHasSubtypes() && stack.isItemStackDamageable() && stack.getMaxStackSize() == 1 && itemEqual && nbtEqual) return true; if(stack.getItem() instanceof IManaItem && itemEqual) return true; } return !anyFilter; } case 1 : return !canAcceptItem(stack, filter, 0); // Accept items not in frames only default : return true; // Accept all items } }
private static ItemStack[] validateRecipe(EntityPlayer player, ItemStack stack, ItemStack[] recipe, int slot) { InventoryCrafting fakeInv = new InventoryCrafting(new ContainerWorkbench(player.inventory, player.world, BlockPos.ORIGIN), 3, 3); for(int i = 0; i < 9; i++) fakeInv.setInventorySlotContents(i, recipe[i]); ItemStack result = CraftingManager.findMatchingResult(fakeInv, player.world); if(result.isEmpty()) { assignRecipe(stack, recipe[9], slot); return null; } if(!result.isItemEqual(recipe[9]) || result.getCount() != recipe[9].getCount() || !ItemStack.areItemStackTagsEqual(recipe[9], result)) { assignRecipe(stack, recipe[9], slot); return null; } return recipe; }
private static boolean consumeFromInventory(ItemStack stack, IItemHandler inv, EntityPlayer player) { for(int i = 0; i < inv.getSlots(); i++) { ItemStack stackAt = inv.getStackInSlot(i); if(!stackAt.isEmpty() && stack.isItemEqual(stackAt) && ItemStack.areItemStackTagsEqual(stack, stackAt)) { boolean consume = true; ItemStack container = stackAt.getItem().getContainerItem(stackAt); if(!container.isEmpty()) { if(container == stackAt) consume = false; else { if(player == null) ItemHandlerHelper.insertItem(inv, container, false); else ItemHandlerHelper.giveItemToPlayer(player, container); } } if(consume) inv.extractItem(i, 1, false); return true; } } return false; }
@Override public boolean equals(Object obj) { if (obj == null || obj.getClass() != ItemStackKey.class) { return false; } ItemStack stack = ((ItemStackKey) obj).wrapped; return ItemStack.areItemsEqual(wrapped, stack) && ItemStack.areItemStackTagsEqual(wrapped, stack); }
@Override public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } else if (obj == null) { return false; } else if (getClass() != obj.getClass()) { return false; } ItemStackWrapper other = (ItemStackWrapper) obj; return ItemStack.areItemStacksEqual(wrapped, other.wrapped) && ItemStack.areItemStackTagsEqual(wrapped, other.wrapped); }
@Override public boolean consume() { ItemStack is = internal.extractItem( zz, 1, true ); if ( is != null && ItemStack.areItemStackTagsEqual( is, stack ) && ItemStack.areItemStackTagsEqual( is, stack ) ) { internal.extractItem( zz, 1, false ); ModUtil.adjustStackSize( stack, -1 ); return true; } return false; }
private static boolean areItemsEqual(boolean ignoreDamage, boolean ignoreNBTData, ItemStack filterStack, ItemStack itemStack) { if(ignoreDamage) { if(!filterStack.isItemEqualIgnoreDurability(itemStack)) { return false; } } else if (!filterStack.isItemEqual(itemStack)) { return false; } return ignoreNBTData || ItemStack.areItemStackTagsEqual(filterStack, itemStack); } }
protected int getNumCanMerge(@Nonnull ItemStack itemStack, @Nonnull ItemStack result) { if (!itemStack.isItemEqual(result) || !ItemStack.areItemStackTagsEqual(itemStack, result)) { return 0; } return Math.min(itemStack.getMaxStackSize() - itemStack.getCount(), result.getCount()); }
protected int getNumCanMerge(@Nonnull ItemStack itemStack, @Nonnull ItemStack result) { if (!itemStack.isItemEqual(result) || !ItemStack.areItemStackTagsEqual(itemStack, result)) { return 0; } return Math.min(itemStack.getMaxStackSize() - itemStack.getCount(), result.getCount()); }
@Override public boolean isInput(@Nonnull ItemStack test) { if (Prep.isInvalid(test) || Prep.isInvalid(input)) { return false; } if (useMeta) { return ItemStack.areItemsEqual(input, test) && (!input.hasTagCompound() || ItemStack.areItemStackTagsEqual(input, test)); } return test.getItem() == input.getItem() && (!input.hasTagCompound() || ItemStack.areItemStackTagsEqual(input, test)); }
private boolean shrinkItem(ItemStack stack, EntityPlayer player, int slot) { ItemStack stackAt = player.inventory.getStackInSlot(slot); if(stack.isItemEqual(stackAt) && ItemStack.areItemStackTagsEqual(stack, stackAt)) { stackAt.shrink(1); return true; } return false; }
EntityItem item = (EntityItem) e; ItemStack istack = item.getItem(); if(player.isSneaking() || istack.isItemEqual(pstack) && ItemStack.areItemStackTagsEqual(istack, pstack)) entIdBuilder.add(item.getEntityId());
protected void mergeStack(int slot, ItemStack stack) { NonNullList<ItemStack> slots = this.getSlots(); ItemStack previous = slots.get(slot); if (previous.isEmpty()) { slots.set(slot, stack); } else if (ItemStack.areItemsEqual(previous, stack) && ItemStack.areItemStackTagsEqual(previous, stack)) { previous.setCount(previous.getCount() + stack.getCount()); } }