private bool canSmelt() { if (furnaceItemStacks[0] == null) { return(false); } ItemStack itemstack = FurnaceRecipes.smelting().getSmeltingResult(furnaceItemStacks[0].getItem().shiftedIndex); if (itemstack == null) { return(false); } if (furnaceItemStacks[2] == null) { return(true); } if (!furnaceItemStacks[2].isItemEqual(itemstack)) { return(false); } if (furnaceItemStacks[2].stackSize < getInventoryStackLimit() && furnaceItemStacks[2].stackSize < furnaceItemStacks[2].getMaxStackSize()) { return(true); } return(furnaceItemStacks[2].stackSize < itemstack.getMaxStackSize()); }
/// <summary> /// Turn one item from the furnace source stack into the appropriate smelted item in the furnace result stack /// </summary> public virtual void SmeltItem() { if (!CanSmelt()) { return; } ItemStack itemstack = FurnaceRecipes.Smelting().GetSmeltingResult(FurnaceItemStacks[0].GetItem().ShiftedIndex); if (FurnaceItemStacks[2] == null) { FurnaceItemStacks[2] = itemstack.Copy(); } else if (FurnaceItemStacks[2].ItemID == itemstack.ItemID) { FurnaceItemStacks[2].StackSize++; } FurnaceItemStacks[0].StackSize--; if (FurnaceItemStacks[0].StackSize <= 0) { FurnaceItemStacks[0] = null; } }
/// <summary> /// Returns true if the furnace can smelt an item, i.e. has a source item, destination stack isn't full, etc. /// </summary> private bool CanSmelt() { if (FurnaceItemStacks[0] == null) { return(false); } ItemStack itemstack = FurnaceRecipes.Smelting().GetSmeltingResult(FurnaceItemStacks[0].GetItem().ShiftedIndex); if (itemstack == null) { return(false); } if (FurnaceItemStacks[2] == null) { return(true); } if (!FurnaceItemStacks[2].IsItemEqual(itemstack)) { return(false); } if (FurnaceItemStacks[2].StackSize < GetInventoryStackLimit() && FurnaceItemStacks[2].StackSize < FurnaceItemStacks[2].GetMaxStackSize()) { return(true); } return(FurnaceItemStacks[2].StackSize < itemstack.GetMaxStackSize()); }
static void handleWiki(ArraySegment <string> args) { switch (args[0]) { case "furnace": var furnaceRecipes = new FurnaceRecipes(new GameDataParser(new FileUtils())); furnaceRecipes.PrintTable(); break; case "recipes": var genericRecipes = new GenericRecipes(new GameDataParser(new FileUtils())); genericRecipes.PrintAll(); break; default: printUsage(); break; } }
public void smeltItem() { if (!canSmelt()) { return; } ItemStack itemstack = FurnaceRecipes.smelting().getSmeltingResult(furnaceItemStacks[0].getItem().shiftedIndex); if (furnaceItemStacks[2] == null) { furnaceItemStacks[2] = itemstack.copy(); } else if (furnaceItemStacks[2].itemID == itemstack.itemID) { furnaceItemStacks[2].stackSize++; } furnaceItemStacks[0].stackSize--; if (furnaceItemStacks[0].stackSize <= 0) { furnaceItemStacks[0] = null; } }
/// <summary> /// Called to transfer a stack from one inventory to the other eg. when shift clicking. /// </summary> public override ItemStack TransferStackInSlot(int par1) { ItemStack itemstack = null; Slot slot = (Slot)InventorySlots[par1]; if (slot != null && slot.GetHasStack()) { ItemStack itemstack1 = slot.GetStack(); itemstack = itemstack1.Copy(); if (par1 == 2) { if (!MergeItemStack(itemstack1, 3, 39, true)) { return(null); } slot.Func_48433_a(itemstack1, itemstack); } else if (par1 == 1 || par1 == 0) { if (!MergeItemStack(itemstack1, 3, 39, false)) { return(null); } } else if (FurnaceRecipes.Smelting().GetSmeltingResult(itemstack1.GetItem().ShiftedIndex) != null) { if (!MergeItemStack(itemstack1, 0, 1, false)) { return(null); } } else if (TileEntityFurnace.Func_52005_b(itemstack1)) { if (!MergeItemStack(itemstack1, 1, 2, false)) { return(null); } } else if (par1 >= 3 && par1 < 30) { if (!MergeItemStack(itemstack1, 30, 39, false)) { return(null); } } else if (par1 >= 30 && par1 < 39 && !MergeItemStack(itemstack1, 3, 30, false)) { return(null); } if (itemstack1.StackSize == 0) { slot.PutStack(null); } else { slot.OnSlotChanged(); } if (itemstack1.StackSize != itemstack.StackSize) { slot.OnPickupFromSlot(itemstack1); } else { return(null); } } return(itemstack); }