@SubscribeEvent public static void onToolPartReplacement(TinkerEvent.OnToolPartReplacement event) { if(event.toolStack.getItem() == TinkerRangedWeapons.bolt) { List<ItemStack> extraParts = event.replacementParts.stream() .filter(Objects::nonNull) .filter(stack -> stack.getItem() == TinkerTools.boltCore) .map(BoltCore::getHeadStack) .collect(Collectors.toList()); event.replacementParts.addAll(new ArrayList<>(extraParts)); } } }
public OrechidRecipeWrapper(Map.Entry<String, Integer> entry) { this.weight = entry.getValue(); final int amount = Math.max(1, Math.round((float) weight * 64 / getTotalOreWeight())); // Shouldn't ever return an empty list since the ore weight // list is filtered to only have ores with ItemBlocks List<ItemStack> stackList = OreDictionary.getOres(entry.getKey()).stream() .filter(s -> s.getItem() instanceof ItemBlock) .map(ItemStack::copy) .collect(Collectors.toList()); stackList.forEach(s -> s.setCount(amount)); outputStacks = Collections.singletonList(stackList); }
@Nonnull @Override public ItemStack buildItemFromStacks(NonNullList<ItemStack> inputStacks) { List<ItemStack> stacks = inputStacks.stream().filter(itemStack -> !itemStack.isEmpty()).collect(Collectors.toList()); if(stacks.size() != 2) { return ItemStack.EMPTY; } ItemStack boltCore = stacks.get(0); ItemStack fletching = stacks.get(1); // we only care about the material returned by getMaterial call ItemStack boltCoreHead = BoltCore.getHeadStack(boltCore); return super.buildItemFromStacks(ListUtil.getListFrom(boltCore, boltCoreHead, fletching)); }
public static boolean doesOreExist(String key) { return OreDictionary.doesOreNameExist(key) && OreDictionary.getOres(key).stream() .anyMatch(s -> s.getItem() instanceof ItemBlock); }
/** * Builds an Itemstack of this tool with the given materials, if applicable. * * @param stacks Items to build with. Have to be in the correct order and have exact length. No nulls! * @return The built item or null if invalid input. */ @Nonnull public ItemStack buildItemFromStacks(NonNullList<ItemStack> stacks) { long itemCount = stacks.stream().filter(stack -> !stack.isEmpty()).count(); List<Material> materials = new ArrayList<>(stacks.size()); if(itemCount != requiredComponents.length) { return ItemStack.EMPTY; } // not a valid part arrangement for this tool for(int i = 0; i < itemCount; i++) { if(!validComponent(i, stacks.get(i))) { return ItemStack.EMPTY; } materials.add(TinkerUtil.getMaterialFromStack(stacks.get(i))); } return buildItem(materials); }
public static List<ItemStack> toStackExpand( IItemStack iStack ) { if( iStack == null ) { return Collections.emptyList(); } else { ItemStack is = (ItemStack) iStack.getInternal(); if( !is.isItemStackDamageable() && is.getItemDamage() == OreDictionary.WILDCARD_VALUE ) { NonNullList<ItemStack> ret = NonNullList.create(); is.getItem().getSubItems( CreativeTabs.SEARCH, ret ); return ret.stream().map( i -> new ItemStack( i.getItem(), iStack.getAmount(), i.getItemDamage() ) ).collect( Collectors.toList() ); } else { return Collections.singletonList( is ); } } }
public boolean isMailBoxFull() { return this.inventory.stream().noneMatch(ItemStack::isEmpty); }
@Override public void deserializeNBT(NBTTagCompound tag) { super.deserializeNBT(tag); this.empty = stacks.stream().allMatch(ItemStack::isEmpty); }
@Override protected void onContentsChanged(int slot) { super.onContentsChanged(slot); if (listener != null) { listener.accept(slot); } this.empty = stacks.stream().allMatch(ItemStack::isEmpty); }
public int getLogCount() { return (int) logs.stream().filter(i -> !i.isEmpty()).count(); }
@Override protected String getRecipeInfo(T recipe) { return recipe.getOutputs().stream().map(ItemStack::getDisplayName).collect(Collectors.joining(",")); }
@Override public boolean canWriteElementPre() { boolean inputValid = inputStacks.stream().anyMatch(stack -> !stack.getLeft().isEmpty()) || !inputFluid.isEmpty() || !inputFluidAmount.equalsIgnoreCase("0") || !inputEnergy.equalsIgnoreCase("0"); boolean outputValid = outputStacks.stream().anyMatch(stack -> !stack.isEmpty()) || !outputFluid.isEmpty() || !outputFluidAmount.equalsIgnoreCase("0") || !outputEnergy.equalsIgnoreCase("0"); return inputValid && outputValid; }
@ZenGetter("outputs") public List<IItemStack> getOutputs() { return this.backingRecipe.getOutputs().stream() .map(MCItemStack::new) .collect(Collectors.toList()); }
public static NonNullList<ItemStack> getReusableStacks(ICraftingRecipe recipe, InventoryCrafting craftMatrix) { return recipe.getRemainingItems(craftMatrix).stream().filter(s -> !s.isEmpty() && recipe.getIngredients().stream().anyMatch(i -> i.apply(s))) .collect(Collectors.toCollection(NonNullList::create)); } }
private void addMissingItem(List<Integer> missingItems, Ingredient missingIngredient, NonNullList<ItemStack> inputs) { List<ItemStack> matchingStacks = inputs.stream().filter(s -> missingIngredient.apply(s) && !missingItems.contains(getInputIndex(inputs.indexOf(s)))).collect(Collectors.toList()); if (!matchingStacks.isEmpty()) { ItemStack matched = matchingStacks.get(matchingStacks.size() - 1); for (int i = inputs.size() - 1; i >= 0; i--) { if (!missingItems.contains(getInputIndex(i)) && inputs.get(i) == matched) { missingItems.add(getInputIndex(i)); } } } }
public WorldGenHiveMarble(int rate) { super(rate); //TODO config option / more ore names OreDictionary.getOres("stoneMarble").stream().filter(s -> s.getItem() instanceof ItemBlock).map(s -> ((ItemBlock) s.getItem()).getBlock()).forEach(validBlocks::add); }
@Override public ImageRenderer getImage(final String data) { final ItemStack[] stacks = OreDictionary.getOres(data).stream().filter(stack -> !stack.isEmpty()).toArray(ItemStack[]::new); if (stacks != null && stacks.length > 0) { return new ItemStackImageRenderer(stacks); } else { return new MissingItemRenderer(WARNING_ORE_DICT_MISSING); } } }
@SubscribeEvent public void onInteraction(PlayerInteractEvent.EntityInteract event) { Set<Item> breedItems = OreDictionary.getOres("listAllgrain").stream().map(ItemStack::getItem).collect(Collectors.toSet()); Entity target = event.getTarget(); if (target instanceof EntityCow) { handleBreedItem((EntityCow) target, breedItems, event.getEntityPlayer(), event.getHand()); } else if (target instanceof EntitySheep) { handleBreedItem((EntitySheep) target, breedItems, event.getEntityPlayer(), event.getHand()); } }