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

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

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

ItemStack.getHasSubtypes介绍

暂无

代码示例

代码示例来源: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: sinkillerj/ProjectE

public static boolean isDamageable(ItemStack stack)
{
  return !stack.getHasSubtypes() && stack.isItemStackDamageable();
}

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

@Override
  public ItemStack getFiringResult(ItemStack input, Metal.Tier tier)
  {
    ItemStack output = new ItemStack(firedVersion);
    if (input.getHasSubtypes() && output.getHasSubtypes()) output.setItemDamage(input.getMetadata());
    return output;
  }
}

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

public static boolean areEqual(ItemStack one, ItemStack two) {
  if (one != null && two != null) {
    if (one.getItem() == two.getItem()) {
      if (one.getHasSubtypes() && two.getHasSubtypes()) {
        if (one.getItemDamage() == two.getItemDamage()) {
          return true;
        }
      } else {
        return true;
      }
    }
  }
  return false;
}

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

@Override
public String apply(ItemStack itemStack) {
  if (itemStack.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null)) {
    IFluidHandler capability = itemStack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null);
    if (capability != null) {
      IFluidTankProperties[] tankPropertiesList = capability.getTankProperties();
      StringBuilder info = new StringBuilder();
      for (IFluidTankProperties tankProperties : tankPropertiesList) {
        String contentsName = getContentsName(tankProperties);
        if (contentsName != null) {
          info.append(contentsName).append(";");
        } else {
          info.append("empty").append(";");
        }
      }
      if (info.length() > 0) {
        if (itemStack.getHasSubtypes()) {
          info.append("m=").append(itemStack.getMetadata());
        }
        return info.toString();
      }
    }
  }
  return ISubtypeRegistry.ISubtypeInterpreter.NONE;
}

代码示例来源:origin: FTBTeam/FTB-Utilities

@Override
  public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException
  {
    LinkedHashSet<String> list = new LinkedHashSet<>(Arrays.asList(FTBUtilitiesConfig.world.disabled_right_click_items));
    ItemStack stack = getCommandSenderAsPlayer(sender).getHeldItem(EnumHand.MAIN_HAND);
    String s = stack.getItem().getRegistryName() + (stack.getHasSubtypes() ? ("@" + stack.getMetadata()) : "");
    if (list.contains(s))
    {
      list.remove(s);
    }
    else
    {
      list.add(s);
    }
    FTBUtilitiesConfig.world.disabled_right_click_items = list.toArray(new String[0]);
    FTBUtilitiesConfig.sync();
  }
}

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

/**
 * Determine if the damage of two ItemStacks is equal. Assumes both itemstacks are of type A.
 */
public static boolean itemsDamageEqual(ItemStack stackA, ItemStack stackB) {
  return (!stackA.getHasSubtypes() && stackA.getMaxDamage() == 0) || (getItemDamage(stackA) == getItemDamage(stackB));
}

代码示例来源:origin: sinkillerj/ProjectE

public static boolean isItemRepairable(ItemStack stack)
{
  if (stack.getHasSubtypes())
  {
    return false;
  }
  if (stack.getMaxDamage() == 0 || stack.getItemDamage() == 0)
  {
    return false;
  }
  Item item = stack.getItem();
  if (item instanceof ItemShears || item instanceof ItemFlintAndSteel || item instanceof ItemFishingRod || item instanceof ItemBow)
  {
    return true;
  }
  return (item instanceof ItemTool || item instanceof ItemSword || item instanceof ItemHoe || item instanceof ItemArmor);
}

代码示例来源:origin: sinkillerj/ProjectE

public static boolean containsItemStack(List<ItemStack> list, ItemStack toSearch)
{
  for (ItemStack stack : list) {
    if (stack.isEmpty()) {
      continue;
    }
    if (stack.getItem().equals(toSearch.getItem())) {
      if (!stack.getHasSubtypes() || stack.getItemDamage() == toSearch.getItemDamage()) {
        return true;
      }
    }
  }
  return false;
}

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

@Override
public boolean is(@Nullable ItemStack itemStack) {
 return itemStack != null && !itemStack.isEmpty() && thing.getItem() == itemStack.getItem()
   && (!thing.getHasSubtypes() || thing.getItemDamage() == OreDictionary.WILDCARD_VALUE || thing.getMetadata() == itemStack.getMetadata());
}

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

@Override
public boolean is(@Nullable ItemStack itemStack) {
 for (ItemStack oreStack : ores) {
  if (itemStack != null && !itemStack.isEmpty() && itemStack.getItem() == oreStack.getItem()
    && (!oreStack.getHasSubtypes() || oreStack.getItemDamage() == OreDictionary.WILDCARD_VALUE || oreStack.getMetadata() == itemStack.getMetadata())) {
   return true;
  }
 }
 return false;
}

代码示例来源:origin: PenguinSquad/Harvest-Festival

@SuppressWarnings("ConstantConditions")
public static String getStringFromStack(ItemStack stack) {
  String str = Item.REGISTRY.getNameForObject(stack.getItem()).toString().replace(" ", "%20");
  if (stack.getHasSubtypes() || stack.isItemStackDamageable()) {
    str = str + " " + stack.getItemDamage();
  }
  if (stack.stackSize > 1) {
    str = str + " *" + stack.stackSize;
  }
  if (stack.hasTagCompound()) {
    str = str + " " + stack.getTagCompound().toString().replace(" ", "%20");
  }
  return str;
}

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

private boolean is(ItemStack stack0, ItemStack stack1) {
 return stack0.getItem() == stack1.getItem()
   && (!stack0.getHasSubtypes() || stack0.getItemDamage() == OreDictionary.WILDCARD_VALUE || stack0.getItemDamage() == stack1.getItemDamage());
}

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

public static boolean itemsEqualForCrafting(ItemStack stackA, ItemStack stackB) {
  return itemsEqualWithoutMetadata(stackA, stackB) && (!stackA.getHasSubtypes() || ((getItemDamage(stackA) == OreDictionary.WILDCARD_VALUE || getItemDamage(stackB) == OreDictionary.WILDCARD_VALUE) || getItemDamage(stackB) == getItemDamage(stackA)));
}

代码示例来源:origin: PenguinSquad/Harvest-Festival

private static boolean areItemStacksEqual(ItemStack stackA, ItemStack stackB) {
  return stackB.getItem() == stackA.getItem() && (!stackA.getHasSubtypes() || stackA.getMetadata() == stackB.getMetadata()) && ItemStack.areItemStackTagsEqual(stackA, stackB);
}

代码示例来源:origin: TeamWizardry/Wizardry

public static boolean stackEqualExact(ItemStack stack1, ItemStack stack2) {
  return stack1.getItem() == stack2.getItem() && (!stack1.getHasSubtypes() || stack1.getMetadata() == stack2.getMetadata()) && ItemStack.areItemStackTagsEqual(stack1, stack2);
}

代码示例来源:origin: Mine-and-blade-admin/Battlegear2

/**
 * Defines a generic weapon
 * @param main the item to check
 * @return true if the item is a generic weapon
 */
public static boolean isWeapon(ItemStack main) {
  if (main.getItem() instanceof IBattlegearWeapon)//Our generic weapon flag
    return true;
  else if(main.getMaxStackSize()==1 && main.getMaxDamage()>0 && !main.getHasSubtypes())//Usual values for tools, sword, and bow
    return true;
  else if(main == prevNotWieldable)//Prevent lag from check spam
    return false;
  else if(WeaponRegistry.isWeapon(main))//Registered as such
    return true;
  else if(!checkForRightClickFunction(main)){//Make sure there are no special functions for offhand/mainhand weapons
    WeaponRegistry.addDualWeapon(main);//register so as not to make that costly check again
    return true;
  }
  WeaponRegistry.addDualUsable(main);
  prevNotWieldable = main;
  return false;
}

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

public static boolean isItemEqual(ItemStack a, ItemStack b, boolean matchDamage, boolean matchNBT) {
    if (a.isEmpty() || b.isEmpty()) {
      return false;
    }
    if (a.getItem() != b.getItem()) {
      return false;
    }
    if (matchDamage && a.getHasSubtypes()) {
      if (a.getItemDamage() == OreDictionary.WILDCARD_VALUE || b.getItemDamage() == OreDictionary.WILDCARD_VALUE) {
        return true;
      }
      if (a.getItemDamage() != b.getItemDamage()) {
        return false;
      }
    }
    return !matchNBT || ItemStack.areItemStackTagsEqual(a, b);
  }
}

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

public void smartDropoff() {
  dropoff((stack, handler) -> {
    int slots = handler.getSlots();
    for(int i = 0; i < slots; i++) {
      ItemStack stackAt = handler.getStackInSlot(i);
      if(stackAt.isEmpty())
        continue;
      boolean itemEqual = stack.getItem() == stackAt.getItem();
      boolean damageEqual = stack.getItemDamage() == stackAt.getItemDamage();
      boolean nbtEqual = ItemStack.areItemStackTagsEqual(stackAt, stack);
      if(itemEqual && damageEqual && nbtEqual)
        return true;
      if(!stack.getHasSubtypes() && stack.isItemStackDamageable() && stack.getMaxStackSize() == 1 && itemEqual && nbtEqual)
        return true;
    }
    return false;
  });
}

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

public static boolean doItemStacksMatch(ItemStack stackA, ItemStack stackB, boolean ignoreDamage, boolean ignoreNBT) {
  if (stackA.isEmpty() && stackB.isEmpty()) {
    return true;
  } else if (stackA.getItem() != stackB.getItem()) {
    return false;
  } else if ((stackA.getHasSubtypes() || !ignoreDamage) && stackA.getItemDamage() != stackB.getItemDamage()) {
    return false;
  } else if (!ignoreNBT && stackA.getTagCompound() == null && stackB.getTagCompound() != null) {
    return false;
  } else {
    return (ignoreNBT || stackA.getTagCompound() == null || stackA.getTagCompound().equals(stackB.getTagCompound())) && stackA.areCapsCompatible(stackB);
  }
}

相关文章

微信公众号

最新文章

更多

ItemStack类方法