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

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

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

ItemStack.areItemStackTagsEqual介绍

暂无

代码示例

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

private boolean equalStacks(ItemStack stack1, ItemStack stack2) {
  return stack1.isItemEqual(stack2) && ItemStack.areItemStackTagsEqual(stack1, stack2);
}

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

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

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

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

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

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

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

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

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

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

代码示例来源:origin: RS485/LogisticsPipes

private boolean areEqualForMerge(ItemStack itemstack3, ItemStack itemstack4, Slot slot) {
  if(slot instanceof ModuleSlot) {
    return false;
  }
  return ItemStack.areItemStackTagsEqual(itemstack3, itemstack4);
}

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

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

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

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

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

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

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

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

代码示例来源:origin: Chisel-Team/Chisel

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

代码示例来源:origin: AlgorithmX2/Chisels-and-Bits

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

代码示例来源:origin: GregTechCE/GregTech

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

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

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

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

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

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

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

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

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

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

EntityItem item = (EntityItem) e;
ItemStack istack = item.getItem();
if(player.isSneaking() || istack.isItemEqual(pstack) && ItemStack.areItemStackTagsEqual(istack, pstack))
  entIdBuilder.add(item.getEntityId());

代码示例来源:origin: JurassiCraftTeam/JurassiCraft2

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

相关文章

微信公众号

最新文章

更多

ItemStack类方法