org.bukkit.inventory.ItemStack.isSimilar()方法的使用及代码示例

x33g5p2x  于2022-01-21 转载在 其他  
字(7.6k)|赞(0)|评价(0)|浏览(129)

本文整理了Java中org.bukkit.inventory.ItemStack.isSimilar()方法的一些代码示例,展示了ItemStack.isSimilar()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ItemStack.isSimilar()方法的具体详情如下:
包路径:org.bukkit.inventory.ItemStack
类名称:ItemStack
方法名:isSimilar

ItemStack.isSimilar介绍

[英]This method is the same as equals, but does not consider stack size (amount).
[中]此方法与等量相同,但不考虑堆栈大小(数量)。

代码示例

代码示例来源:origin: Bukkit/Bukkit

@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);
}

代码示例来源:origin: GlowstoneMC/Glowstone

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);
  }
}

代码示例来源:origin: GlowstoneMC/Glowstone

private boolean compareItems(ItemStack a, ItemStack b, boolean ignoreMeta) {
  if (ignoreMeta) {
    return a.getTypeId() == b.getTypeId() && a.getDurability() == b.getDurability();
  }
  return a.isSimilar(b);
}

代码示例来源:origin: GlowstoneMC/Glowstone

if (slotItem.isSimilar(cursor)) {
  int transfer = Math.min(cursor.getAmount(),
      slotItem.getType().getMaxStackSize() - slotItem.getAmount());
if (cursor.isSimilar(slotItem)) {
  if (slotItem.getAmount() + 1 <= slotItem.getType().getMaxStackSize()) {
    return InventoryAction.PLACE_ONE;

代码示例来源:origin: GlowstoneMC/Glowstone

firstEmpty = i;
} else if (currentStack
    .isSimilar(stack)) { // Non empty slot of similar items, try to fill stack

代码示例来源:origin: GlowstoneMC/Glowstone

.isSimilar(getItemStack())) {
ItemStack clone = getItemStack().clone();

代码示例来源:origin: GlowstoneMC/Glowstone

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;

代码示例来源:origin: seeseemelk/MockBukkit

/**
 * 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));
}

代码示例来源:origin: TheBusyBiscuit/Slimefun4

/**
 * 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;
}

代码示例来源:origin: mcMMO-Dev/mcMMO

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;
}

代码示例来源:origin: seeseemelk/MockBukkit

/**
 * 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;
}

代码示例来源:origin: mcMMO-Dev/mcMMO

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;
}

代码示例来源:origin: FunnyGuilds/FunnyGuilds

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;
}

代码示例来源:origin: SpigotMC/Spigot-API

@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);
}

代码示例来源:origin: PyvesB/AdvancedAchievements

/**
 * 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));
}

代码示例来源:origin: mcMMO-Dev/mcMMO

@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));
    }
  }
}

代码示例来源:origin: ProjectKorra/ProjectKorra

@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;
      }
    }
  }
}

代码示例来源:origin: NyaaCat/RPGItems-reloaded

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;
}

代码示例来源:origin: jiongjionger/NeverLag

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;
}

代码示例来源:origin: seeseemelk/MockBukkit

@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());
  }
}

相关文章