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; } }