@Override @Utility public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof ItemStack)) { return false; } ItemStack stack = (ItemStack) obj; return getAmount() == stack.getAmount() && isSimilar(stack); }
private ItemStack combine(ItemStack slotItem, ItemStack cursor, int amount) { if (InventoryUtil.isEmpty(slotItem)) { ItemStack stack = cursor.clone(); stack.setAmount(amount); return stack; } else if (slotItem.isSimilar(cursor)) { slotItem.setAmount(slotItem.getAmount() + amount); return slotItem; } else { throw new IllegalArgumentException( "Trying to combine dissimilar " + slotItem + " and " + cursor); } }
private boolean compareItems(ItemStack a, ItemStack b, boolean ignoreMeta) { if (ignoreMeta) { return a.getTypeId() == b.getTypeId() && a.getDurability() == b.getDurability(); } return a.isSimilar(b); }
firstEmpty = i; } else if (currentStack .isSimilar(stack)) { // Non empty slot of similar items, try to fill stack
.isSimilar(getItemStack())) { ItemStack clone = getItemStack().clone();
for (int dragSlot : slots) { ItemStack oldItem = view.getItem(dragSlot); if (InventoryUtil.isEmpty(oldItem) || cursor.isSimilar(oldItem)) { Inventory dragInv = dragSlot < top.getSize() ? top : bottom; int oldItemAmount = InventoryUtil.itemOrEmpty(oldItem).getAmount(); if (!InventoryUtil.isEmpty(slotItem) && slotItem.isSimilar(cursor)) { if (message.getMode() == 0 && slotItem.isSimilar(cursor)) { if (!InventoryUtil.isEmpty(slotItem) && cursorAmount + slotItem.getAmount() <= slotItem.getMaxStackSize()) { SlotType type = (i < top.getSize() ? top : bottom) .getSlotType(view.convertSlot(i)); if (InventoryUtil.isEmpty(item) || !cursor.isSimilar(item) || type == SlotType.RESULT) { continue;
/** * Asserts that the inventory contains at least one itemstack that is compatible * with the given itemstack. * * @param item The itemstack to compare everything to. */ public void assertContainsAny(ItemStack item) { assertTrueForSome(itemstack -> item.isSimilar(itemstack)); }
/** * Attempts to get the category with the given display item. * * @param item the display item of the category to get * @return Category if found, or null * * @since 4.0 */ public static Category getByItem(ItemStack item) { for (Category c: list) { if (c.getItem().isSimilar(item)) return c; } return null; }
public AlchemyPotion getChild(ItemStack ingredient) { if (!children.isEmpty()) { for (Entry<ItemStack, String> child : children.entrySet()) { if (ingredient.isSimilar(child.getKey())) { return PotionConfig.getInstance().getPotion(child.getValue()); } } } return null; }
/** * Get the number of times a certain item is in the inventory. * @param item The item to check for. * @return The number of times the item is present in this inventory. */ public int getNumberOfItems(ItemStack item) { int amount = 0; for (ItemStack itemstack : items) { if (itemstack != null && item.isSimilar(itemstack)) { amount += itemstack.getAmount(); } } return amount; }
public static boolean isValidIngredient(Player player, ItemStack item) { if (isEmpty(item)) { return false; } for (ItemStack ingredient : getValidIngredients(player)) { if (item.isSimilar(ingredient)) { return true; } } return false; }
public static int getItemAmount(ItemStack item, Inventory inv) { int amount = 0; for (ItemStack is : inv.getContents()) { if (item.isSimilar(is)) { amount += is.getAmount(); } } return amount; }
@Override @Utility public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof ItemStack)) { return false; } ItemStack stack = (ItemStack) obj; return getAmount() == stack.getAmount() && isSimilar(stack); }
/** * Determines whether the used item is bone meal. * * @param itemStack * @return true if the item is bone meal, false otherwise */ @SuppressWarnings("deprecation") private boolean isBoneMeal(ItemStack itemStack) { return serverVersion >= 13 ? itemStack.getType() == Material.BONE_MEAL : itemStack.isSimilar(new ItemStack(Material.valueOf("INK_SACK"), 1, (short) 15)); }
@Override public void run() { Location location = brewingStand.getLocation(); ItemStack[] newInventory = Arrays.copyOfRange(brewingStand.getInventory().getContents(), 0, 4); boolean validBrew = brewingStand.getFuelLevel() > 0 && AlchemyPotionBrewer.isValidBrew(player, newInventory); if (Alchemy.brewingStandMap.containsKey(location)) { if (oldInventory[Alchemy.INGREDIENT_SLOT] == null || newInventory[Alchemy.INGREDIENT_SLOT] == null || !oldInventory[Alchemy.INGREDIENT_SLOT].isSimilar(newInventory[Alchemy.INGREDIENT_SLOT]) || !validBrew) { Alchemy.brewingStandMap.get(location).cancelBrew(); } } else if (validBrew) { Alchemy.brewingStandMap.put(location, new AlchemyBrewTask(brewingStand, player)); } } }
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) public void onPlayerItemDamage(final PlayerItemDamageEvent event) { if (TempArmor.hasTempArmor(event.getPlayer())) { final TempArmor armor = TempArmor.getVisibleTempArmor(event.getPlayer()); for (final ItemStack i : armor.getNewArmor()) { if (i != null && event.getItem().isSimilar(i)) { event.setCancelled(true); break; } } } }
private boolean removeItem(Inventory inventory, ItemStack item, int amount) { for (int slot = 0; slot < inventory.getSize(); slot++) { ItemStack tmp = inventory.getItem(slot); if (tmp != null && tmp.getType() != Material.AIR && tmp.getAmount() >= amount && tmp.isSimilar(item)) { if (tmp.getAmount() > amount) { tmp.setAmount(tmp.getAmount() - amount); inventory.setItem(slot, tmp); return true; } else { inventory.setItem(slot, new ItemStack(Material.AIR)); return true; } } } return false; }
public GUIMaker fillWhite(ItemStack item) { for (int i = 0; i < this.inv.getSize(); i++) { if (this.inv.getItem(i) != null && this.inv.getItem(i).getType() != Material.AIR && !this.inv.getItem(i).isSimilar(item)) { int left_slot = i - 1; int right_slot = i + 1; if (getRow(i) == getRow(left_slot) && left_slot >= 0) { if (this.inv.getItem(left_slot) == null || this.inv.getItem(left_slot).getType() == Material.AIR) { this.inv.setItem(left_slot, item); } } if (getRow(i) == getRow(right_slot) && right_slot <= this.inv.getSize() - 1) { if (this.inv.getItem(right_slot) == null || this.inv.getItem(right_slot).getType() == Material.AIR) { this.inv.setItem(right_slot, item); } } } } return this; }
@Test public void setContents_OneItemAndOneNull_SetAndRestCleared() { ItemStack filler = new ItemStack(Material.COBBLESTONE, 1); for (int i = 1; i < inventory.getSize(); i++) { inventory.setItem(i, filler); } ItemStack item = new ItemStack(Material.DIRT, 32); inventory.setContents(new ItemStack[] { item }); assertTrue(item.isSimilar(inventory.getItem(0))); for (int i = 1; i < inventory.getSize(); i++) { ItemStack emptyItem = inventory.getItem(i); assertNotNull(emptyItem); assertEquals(Material.AIR, emptyItem.getType()); } }