private ItemStack damageTool(ItemStack stack) { EntityPlayer craftingPlayer = ForgeHooks.getCraftingPlayer(); if(stack.attemptDamageItem(1, random, craftingPlayer instanceof EntityPlayerMP ? (EntityPlayerMP) craftingPlayer : null)) { ForgeEventFactory.onPlayerDestroyItem(craftingPlayer, stack, null); return ItemStack.EMPTY; } return stack; }
@Override public NonNullList<ItemStack> getRemainingItems(InventoryCrafting inventory) { NonNullList<ItemStack> aitemstack = NonNullList.withSize(inventory.getSizeInventory(), ItemStack.EMPTY); for (int i = 0; i < aitemstack.size(); ++i) { ItemStack itemstack = inventory.getStackInSlot(i); aitemstack.set(i, net.minecraftforge.common.ForgeHooks.getContainerItem(itemstack)); } Pair<ItemStack, List<ItemStack>> result = getResult(inventory); if(result != null) { List<ItemStack> extraOutputs = result.getRight(); for (ItemStack extraOutput : extraOutputs) { InventoryHelpers.tryReAddToStack(ForgeHooks.getCraftingPlayer(), ItemStack.EMPTY, extraOutput, ForgeHooks.getCraftingPlayer().getActiveHand()); } } return aitemstack; }
@Override public NonNullList<ItemStack> getRemainingItems(InventoryCrafting inv) { EntityPlayer player = ForgeHooks.getCraftingPlayer(); if (FMLCommonHandler.instance().getEffectiveSide().isServer() && player != null) { // Has to be server side due to sync issues. This function is also called on the client. // This is also the reason why it's done here as a drop instead of a retaining item. // todo: see if this can be done better, it might break for autocrafters. if (mold.type.getMoldReturnRate() < 1 || mold.type.getMoldReturnRate() > 0) { if (Constants.RNG.nextFloat() <= mold.type.getMoldReturnRate()) { player.addItemStackToInventory(new ItemStack(mold)); //InventoryHelper.spawnItemStack(player.world, player.posX, player.posY, player.posZ, new ItemStack(mold)); } } } return net.minecraftforge.common.ForgeHooks.defaultRecipeGetRemainingItems(inv); } }
EntityPlayer player = ForgeHooks.getCraftingPlayer(); while(itr.hasNext()) { ItemStack temp = itr.next();
j++; } else { EntityPlayer player = ForgeHooks.getCraftingPlayer(); if (!player.inventory.addItemStackToInventory(temp)) { player.dropItem(temp, false);
@Override public NonNullList<ItemStack> getRemainingItems(InventoryCrafting inv) { NonNullList<ItemStack> stacks = NonNullList.create(); for (int i = 0; i < inv.getSizeInventory(); i++) { ItemStack itemStack = inv.getStackInSlot(i); if (itemStack.getItem() == Items.SHEARS) { itemStack = itemStack.copy(); EntityPlayer craftingPlayer = ForgeHooks.getCraftingPlayer(); if (craftingPlayer != null) { // Regular item damaging if there is a player executing the recipe itemStack.damageItem(1, craftingPlayer); } else { // Fallback in case there is no crafting player itemStack.setItemDamage(itemStack.getItemDamage() + 1); if (itemStack.getItemDamage() > itemStack.getMaxDamage()) { itemStack.shrink(1); } } } else { itemStack = ForgeHooks.getContainerItem(itemStack); } stacks.add(itemStack); } return stacks; } }