package com.harry9137.ct.tileentity;
import com.harry9137.ct.CreepTech;
import com.harry9137.ct.energy.IEnergyContainer;
import com.harry9137.ct.handler.recipies.Recipe;
import com.harry9137.ct.handler.recipies.Recipes;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IChatComponent;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
public class TileEntityInfuser extends TileEntity implements IEnergyContainer, IInventory, ITickUpdater{
public ItemStack[] items = new ItemStack[5];
private boolean[] itemSlotChecked = new boolean[4];
private boolean[] itemSlotTrue = new boolean[4];
public int Power;
private int Tick;
@Override
public void updateEntity(){
Tick++;
if(Tick == 5){
Tick = 0;
this.updateCrafting();
}
}
@Override
public int getEnergyLevel() {
return Power;
}
@Override
public boolean getCanSendPower() {
return false;
}
@Override
public boolean getCanReceivePower() {
return true;
}
@Override
public int getEnergyMax() {
return 0;
}
@Override
public void onEnergyUpdate() {
}
@Override
public void setPowerLevel(int powerLevel) {
Power = powerLevel;
}
@Override
public int getSizeInventory() {
return 5;
}
@Override
public ItemStack getStackInSlot(int p_70301_1_) {
return items[p_70301_1_];
}
@Override
public ItemStack decrStackSize(int i, int j) {
this.updateCrafting();
if (items[i] != null)
{
if (items[i].stackSize <= j)
{
ItemStack itemstack = items[i];
items[i] = null;
markDirty();
return itemstack;
}
ItemStack itemstack1 = items[i].splitStack(j);
if (items[i].stackSize == 0)
{
items[i] = null;
}
markDirty();
return itemstack1;
}
else
{
return null;
}
}
@Override
public ItemStack getStackInSlotOnClosing(int p_70304_1_) {
return items[p_70304_1_];
}
@Override
public void setInventorySlotContents(int p_70299_1_, ItemStack p_70299_2_) {
items[p_70299_1_] = p_70299_2_;
markDirty();
this.updateCrafting();
}
@Override
public int getInventoryStackLimit() {
return 64;
}
@Override
public boolean isUseableByPlayer(EntityPlayer p_70300_1_) {
return true;
}
@Override
public void openInventory(EntityPlayer playerIn) {
}
@Override
public void closeInventory(EntityPlayer playerIn) {
}
@Override
public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) {
return true;
}
@Override
public int getField(int id) {
return 0;
}
@Override
public void setField(int id, int value) {
}
@Override
public int getFieldCount() {
return 0;
}
@Override
public void clear() {
}
public void updateCrafting(){
CreepTech.console.addText("CraftingUpdate===================================================");
for(Recipe recipe : Recipes.infuser){
CreepTech.console.addText("Recipe loop");
itemSlotChecked[0] = false;
itemSlotChecked[1] = false;
itemSlotChecked[2] = false;
itemSlotChecked[3] = false;
int j = 0;
for(ItemStack currentItem: recipe.Input){
CreepTech.console.addText("Input Stack loop");
int i = -1;
for(ItemStack currentSlot : items){
CreepTech.console.addText("Slot loop");
i++;
if(!itemSlotChecked[i]){
CreepTech.console.addText("Slot Not Checked");
if(currentSlot != null) {
if (currentSlot.getItem() == currentItem.getItem()) {
CreepTech.console.addText("Item Equality Found");
itemSlotChecked[i] = true;
itemSlotTrue[j] = true;
break;
}
}
}
if(i == 3){
break;
}
}
j++;
}
boolean temp = true;
int k = 0;
for(Boolean temp2 : itemSlotTrue){
k++;
CreepTech.console.addText("Slot true loop");
if(!temp2 && k <= recipe.Input.length){
CreepTech.console.addText("Slot false check");
temp = false;
}
}
if(temp && getStackInSlot(4) == null && !worldObj.isRemote){
CreepTech.console.addText("Temp true check");
items[4] = recipe.Output;
}
}
}
@Override
public String getName() {
return null;
}
@Override
public boolean hasCustomName() {
return false;
}
@Override
public IChatComponent getDisplayName() {
return null;
}
}