This commit is contained in:
Robert Seifert 2013-05-20 16:34:23 -04:00
parent a6506b67bf
commit 92d096a8a5
5 changed files with 55 additions and 53 deletions

View file

@ -6,15 +6,16 @@ import java.io.File;
import java.util.Arrays;
import java.util.logging.Logger;
import org.modstats.ModstatInfo;
import org.modstats.Modstats;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.Configuration;
import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
import org.modstats.ModstatInfo;
import org.modstats.Modstats;
import universalelectricity.prefab.TranslationHelper;
import universalelectricity.prefab.multiblock.BlockMulti;
import universalelectricity.prefab.network.PacketManager;

View file

@ -383,4 +383,32 @@ public class AutoCraftingManager
}
return this.decrStackSize(stack, amount);
}
/**
* Used to automatically remove selected items from crafting inv
*
* @param requiredItems - items that are to be removed
*/
public void consumeItems(final ItemStack... requiredItems)
{
for (ItemStack searchStack : requiredItems)
{
if (searchStack != null)
{
int[] invSlots = ((IAutoCrafter) this.craftingEntity).getCraftingInv();
for (int i = 0; i < invSlots.length; i++)
{
ItemStack checkStack = this.craftingInv.getStackInSlot(invSlots[i]);
if (checkStack != null)
{
if (this.areStacksEqual(searchStack, checkStack))
{
this.craftingInv.setInventorySlotContents(invSlots[i], this.consumeItem(searchStack, 1));
break;
}
}
}
}
}
}
}

View file

@ -1,15 +1,15 @@
package assemblyline.common.imprinter;
import dark.library.inv.ISlotWatcher;
import dark.library.inv.SlotCraftingResult;
import dark.library.inv.SlotRestricted;
import dark.library.inv.WatchedSlot;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import assemblyline.common.AssemblyLine;
import dark.library.inv.ISlotWatcher;
import dark.library.inv.SlotCraftingResult;
import dark.library.inv.SlotRestricted;
import dark.library.inv.WatchedSlot;
public class ContainerImprinter extends Container implements ISlotWatcher
{

View file

@ -3,7 +3,6 @@ package assemblyline.common.imprinter;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.ISidedInventory;
@ -18,8 +17,6 @@ import net.minecraft.network.packet.Packet250CustomPayload;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityChest;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.PlayerDestroyItemEvent;
import universalelectricity.core.vector.Vector3;
import universalelectricity.core.vector.VectorHelper;
import universalelectricity.prefab.TranslationHelper;
@ -33,7 +30,6 @@ import assemblyline.common.AssemblyLine;
import com.google.common.io.ByteArrayDataInput;
import cpw.mods.fml.common.registry.GameRegistry;
import dark.library.helpers.Pair;
import dark.library.inv.ISlotPickResult;
@ -42,7 +38,7 @@ public class TileEntityImprinter extends TileEntityAdvanced implements net.minec
public static final int IMPRINTER_MATRIX_START = 9;
public static final int INVENTORY_START = IMPRINTER_MATRIX_START + 3;
private AutoCraftingManager craftingManager;
private AutoCraftingManager craftManager;
/**
* 9 slots for crafting, 1 slot for an imprint, 1 slot for an item
*/
@ -90,6 +86,18 @@ public class TileEntityImprinter extends TileEntityAdvanced implements net.minec
return false;
}
/**
* Gets the AutoCraftingManager that does all the crafting results
*/
public AutoCraftingManager getCraftingManager()
{
if (craftManager == null)
{
craftManager = new AutoCraftingManager(this);
}
return craftManager;
}
@Override
public int getSizeInventory()
{
@ -254,10 +262,6 @@ public class TileEntityImprinter extends TileEntityAdvanced implements net.minec
{
if (!this.worldObj.isRemote)
{
if (craftingManager == null)
{
craftingManager = new AutoCraftingManager(this);
}
/**
* Makes the stamping recipe for filters
*/
@ -311,7 +315,7 @@ public class TileEntityImprinter extends TileEntityAdvanced implements net.minec
{
ItemStack matrixOutput = CraftingManager.getInstance().findMatchingRecipe(inventoryCrafting, this.worldObj);
if (matrixOutput != null && this.craftingManager.getIdealRecipe(matrixOutput) != null)
if (matrixOutput != null && this.getCraftingManager().getIdealRecipe(matrixOutput) != null)
{
this.imprinterMatrix[craftingOutputSlot] = matrixOutput;
didCraft = true;
@ -331,7 +335,7 @@ public class TileEntityImprinter extends TileEntityAdvanced implements net.minec
{
// System.out.println("Imprint: Geting recipe for " +
// outputStack.toString());
Pair<ItemStack, ItemStack[]> idealRecipe = this.craftingManager.getIdealRecipe(outputStack);
Pair<ItemStack, ItemStack[]> idealRecipe = this.getCraftingManager().getIdealRecipe(outputStack);
if (idealRecipe != null)
{
@ -363,51 +367,20 @@ public class TileEntityImprinter extends TileEntityAdvanced implements net.minec
{
if (itemStack != null)
{
if (craftingManager == null)
{
craftingManager = new AutoCraftingManager(this);
}
//System.out.println("PickResult:" + worldObj.isRemote + " managing item " + itemStack.toString());
if (this.isImprinting)
{
this.imprinterMatrix[0] = null;
}
else
{
Pair<ItemStack, ItemStack[]> idealRecipeItem = this.craftingManager.getIdealRecipe(itemStack);
/**
* Based on the ideal recipe, consume all the items required to make such recipe.
*/
Pair<ItemStack, ItemStack[]> idealRecipeItem = this.getCraftingManager().getIdealRecipe(itemStack);
if (idealRecipeItem != null)
{
//System.out.println("PickResult: ideal recipe ");
ItemStack[] requiredItems = idealRecipeItem.getValue().clone();
if (requiredItems != null)
{
//System.out.println("PickResult: valid resources ");
for (ItemStack searchStack : requiredItems)
{
if (searchStack != null)
{
for (int i = 0; i < this.invSlots.length; i++)
{
ItemStack checkStack = this.getStackInSlot(this.invSlots[i]);
if (checkStack != null)
{
if (craftingManager.areStacksEqual(searchStack, checkStack))
{
this.setInventorySlotContents(this.invSlots[i], this.craftingManager.consumeItem(searchStack, 1));
//System.out.println("Consumed Item From Inv: " + checkStack.toString());
break;
}
}
}
}
}
this.getCraftingManager().consumeItems(requiredItems);
}
}
else

View file

@ -1,12 +1,12 @@
package assemblyline.common.machine.encoder;
import dark.library.inv.SlotRestricted;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import assemblyline.common.AssemblyLine;
import dark.library.inv.SlotRestricted;
public class ContainerEncoder extends Container
{