net.minecraft.item.ItemStack.isStackable()方法的使用及代码示例

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

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

ItemStack.isStackable介绍

暂无

代码示例

代码示例来源:origin: SleepyTrousers/EnderCore

@Override
 public boolean doApply(@Nonnull ItemStack input) {
  return input.isStackable();
 }
};

代码示例来源:origin: SleepyTrousers/EnderCore

/**
 * Checks if items, damage and NBT are equal and the items are stackable.
 *
 * @param s1
 * @param s2
 * @return True if the two stacks are mergeable, false otherwise.
 */
public static boolean areStackMergable(@Nonnull ItemStack s1, @Nonnull ItemStack s2) {
 if (s1.isEmpty() || s2.isEmpty() || !s1.isStackable() || !s2.isStackable()) {
  return false;
 }
 if (!s1.isItemEqual(s2)) {
  return false;
 }
 return ItemStack.areItemStackTagsEqual(s1, s2);
}

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

private static boolean shiftToMachineInventory(List<Slot> inventorySlots, ItemStack stackToShift, int numSlots) {
  boolean success = false;
  if (stackToShift.isStackable()) {
    success = shiftToMachineInventory(inventorySlots, stackToShift, numSlots, true);
  }
  if (!stackToShift.isEmpty()) {
    success |= shiftToMachineInventory(inventorySlots, stackToShift, numSlots, false);
  }
  return success;
}

代码示例来源:origin: Vazkii/Quark

@SideOnly(Side.CLIENT)
public ItemStack getDisplayedStack(EntityPlayer player, ItemStack stack, int count) {
  boolean verifySize = true;
  if(stack.getItem() instanceof ItemBow && EnchantmentHelper.getEnchantmentLevel(Enchantments.INFINITY, stack) == 0) {
    stack = new ItemStack(Items.ARROW);
    verifySize = false;
  }
  
  if(stack.getItem() instanceof ItemTrowel) {
    stack = ItemTrowel.getLastStack(stack);
    verifySize = false;
  }
  
  if(!stack.isStackable() && slot.getSlotType() == Type.HAND)
    return ItemStack.EMPTY;
  
  if(verifySize && stack.isStackable() && count == stack.getCount())
    return ItemStack.EMPTY;
  
  return stack;
}

代码示例来源:origin: SleepyTrousers/EnderIO

public static boolean hasFreeSpace(@Nonnull IItemHandler handler) {
 for (int i = 0; i < handler.getSlots(); i++) {
  ItemStack stack = handler.getStackInSlot(i);
  if (Prep.isInvalid(stack) || (stack.isStackable() && stack.getCount() < stack.getMaxStackSize() && stack.getCount() < handler.getSlotLimit(i))) {
   return true;
  }
 }
 return false;
}

代码示例来源:origin: Vazkii/Quark

@SideOnly(Side.CLIENT)
public int getStackCount(EntityPlayer player, ItemStack stack) {
  if(!stack.isStackable())
    return 1;
  
  Predicate<ItemStack> pred = (stackAt) -> stack.isItemEqual(stackAt);    
  
  if(stack.getItem() == Items.ARROW)
    pred = (stackAt) -> stackAt.getItem() instanceof ItemArrow;
  
  int total = 0;
  for(int i = 0; i < player.inventory.getSizeInventory(); i++) {
    ItemStack stackAt = player.inventory.getStackInSlot(i);
    if(pred.apply(stackAt))
      total += stackAt.getCount();
  }
  
  return total;
}

代码示例来源:origin: ldtteam/minecolonies

private boolean canMergeStacks(final ItemStack stack1, final ItemStack stack2)
{
  return !ItemStackUtils.isEmpty(stack1) && ItemStack.areItemStacksEqual(stack1, stack2) && stack1.isStackable()
       && ItemStackUtils.getSize(stack1) < stack1.getMaxStackSize() && ItemStackUtils.getSize(stack1) < this.getInventoryStackLimit();
}

代码示例来源:origin: Vazkii/Quark

Item item = stack.getItem();
if(player != null && player.world != null && !player.world.isRemote && !stack.isEmpty() && !(item instanceof ItemArmor) && (!unstackablesOnly || !stack.isStackable())) {
  int currSlot = player.inventory.currentItem;
  if(event.getHand() == EnumHand.OFF_HAND)

代码示例来源:origin: OpenMods/OpenModsLib

List<Slot> slots = getSlots();
if (stackToMerge.isStackable()) {
  int slotId = reverse? stop - 1 : start;
  while (!stackToMerge.isEmpty() && ((!reverse && slotId < stop) || (reverse && slotId >= start))) {

代码示例来源:origin: SleepyTrousers/EnderIO

if (!stack.isStackable()) {
 return ItemHandlerHelper.insertItem(inventory, stack, simulate);

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

private static boolean shiftItemStackToRangeMerge(List<Slot> inventorySlots, ItemStack stackToShift, int start, int count) {
  if (!stackToShift.isStackable() || stackToShift.isEmpty()) {
    return false;
  }
  boolean changed = false;
  for (int slotIndex = start; !stackToShift.isEmpty() && slotIndex < start + count; slotIndex++) {
    Slot slot = inventorySlots.get(slotIndex);
    ItemStack stackInSlot = slot.getStack();
    if (!stackInSlot.isEmpty() && ItemStackUtil.isIdenticalItem(stackInSlot, stackToShift)) {
      int resultingStackSize = stackInSlot.getCount() + stackToShift.getCount();
      int max = Math.min(stackToShift.getMaxStackSize(), slot.getSlotStackLimit());
      if (resultingStackSize <= max) {
        stackToShift.setCount(0);
        stackInSlot.setCount(resultingStackSize);
        slot.onSlotChanged();
        changed = true;
      } else if (stackInSlot.getCount() < max) {
        stackToShift.shrink(max - stackInSlot.getCount());
        stackInSlot.setCount(max);
        slot.onSlotChanged();
        changed = true;
      }
    }
  }
  return changed;
}

代码示例来源:origin: Vazkii/Quark

@SubscribeEvent
public void itemPickedUp(EntityItemPickupEvent event) {
  ItemStack stack = event.getItem().getItem();
  ItemStack copy = stack.copy();
  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;
      }
    }
  }
}

代码示例来源:origin: mezz/JustEnoughItems

inventoryStack.isStackable() &&
inventoryStack.isItemEqual(stack) &&
ItemStack.areItemStackTagsEqual(inventoryStack, stack)) {

代码示例来源:origin: MatterOverdrive/MatterOverdrive-Legacy-Edition

ItemStack var10;
int var11;
if (stack.isStackable()) {
  for (; stack.getCount() > 0 && (!var4 && var7 < var3 || var4 && var7 >= var2); var7 += var8) {
    var9 = slots.get(var7);

代码示例来源:origin: CoFH/ThermalFoundation

ItemStack stackInSlot;
if (stack.isStackable()) {
  while (stack.getCount() > 0 && (!ascending && k < slotMax || ascending && k >= slotMin)) {
    slot = this.inventorySlots.get(k);

代码示例来源:origin: MatterOverdrive/MatterOverdrive-Legacy-Edition

boolean putInOutput(ItemStack item) {
  if (getStackInSlot(OUTPUT_SLOT_ID).isEmpty()) {
    setInventorySlotContents(OUTPUT_SLOT_ID, item);
    return true;
  } else {
    if (getStackInSlot(OUTPUT_SLOT_ID).isStackable() && getStackInSlot(OUTPUT_SLOT_ID).getItemDamage() == item.getItemDamage() && getStackInSlot(OUTPUT_SLOT_ID).getItem() == item.getItem()) {
      int newStackSize = getStackInSlot(OUTPUT_SLOT_ID).getCount() + 1;
      if (newStackSize <= getStackInSlot(OUTPUT_SLOT_ID).getMaxStackSize()) {
        getStackInSlot(OUTPUT_SLOT_ID).setCount(newStackSize);
        return true;
      }
    }
  }
  return false;
}

代码示例来源:origin: P3pp3rF1y/AncientWarfare2

public static ItemStack mergeItemStack(IItemHandler handler, ItemStack stack) {
  ItemStack ret = stack;
  if (stack.isStackable()) {
    for (int i = 0; i < handler.getSlots(); i++) {
      if (stack.isEmpty()) {

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

if (!inventoryStack.isStackable()) {
  continue;

代码示例来源:origin: SleepyTrousers/EnderIO

if (outputStack.isStackable() && ItemUtil.areStackMergable(outputStack, fill.result.itemStack)
  && (fill.result.itemStack.getCount() + outputStack.getCount()) <= outputStack.getMaxStackSize()) {
 fill.result.itemStack.grow(outputStack.getCount());

代码示例来源:origin: SleepyTrousers/EnderIO

if (outputStack.isStackable() && ItemUtil.areStackMergable(outputStack, fill.result.itemStack)
  && (fill.result.itemStack.getCount() + outputStack.getCount()) <= outputStack.getMaxStackSize()) {
 fill.result.itemStack.grow(outputStack.getCount());

相关文章

微信公众号

最新文章

更多

ItemStack类方法