package ihl.processing.metallurgy; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import ic2.api.network.INetworkTileEntityEventListener; import ic2.api.recipe.IRecipeInput; import ic2.api.recipe.RecipeInputItemStack; import ic2.api.recipe.RecipeInputOreDict; import ic2.core.ContainerBase; import ic2.core.ExplosionIC2; import ic2.core.IC2; import ic2.core.IHasGui; import ic2.core.audio.AudioSource; import ic2.core.audio.PositionSpec; import ic2.core.block.TileEntityInventory; import ic2.core.block.invslot.InvSlot.Access; import ihl.processing.chemistry.ApparatusProcessableInvSlot; import ihl.recipes.RecipeOutputItemStack; import ihl.recipes.UniversalRecipeInput; import ihl.recipes.UniversalRecipeManager; import ihl.recipes.UniversalRecipeOutput; import ihl.utils.IHLUtils; public class DetonationSprayingMachineTileEntity extends TileEntityInventory implements IHasGui, INetworkTileEntityEventListener { protected static final UniversalRecipeManager recipeManager = new UniversalRecipeManager("detonationsprayingmachine"); public final ApparatusProcessableInvSlot input; private AudioSource explosion; public DetonationSprayingMachineTileEntity() { super(); this.input = new ApparatusProcessableInvSlot(this, "input", 0, Access.IO, 3, 64); } @Override public List getNetworkedFields() { List fields = super.getNetworkedFields(); return fields; } @Override public void readFromNBT(NBTTagCompound nbttagcompound) { super.readFromNBT(nbttagcompound); } @Override public void writeToNBT(NBTTagCompound nbttagcompound) { super.writeToNBT(nbttagcompound); } @Override public boolean wrenchCanSetFacing(EntityPlayer entityPlayer, int side) { return false; } @Override public ItemStack getWrenchDrop(EntityPlayer entityPlayer) { return IHLUtils.getThisModItemStack("cannonBronze"); } @Override public String getInventoryName() { return "detonationSprayingMachine"; } @Override public void onNetworkEvent(int event) { worldObj.playSoundEffect(xCoord, yCoord, zCoord, "random.explode", 4.0F, 1.0F); } @Override @SideOnly(Side.CLIENT) public GuiScreen getGui(EntityPlayer player, boolean arg1) { return new DetonationSprayingMachineGui(new DetonationSprayingMachineContainer(player, this)); } @Override public ContainerBase getGuiContainer(EntityPlayer player) { return new DetonationSprayingMachineContainer(player, this); } @Override public void onGuiClosed(EntityPlayer player) {} public boolean canOperate() { return getOutput()!=null; } public UniversalRecipeOutput getOutput() { return DetonationSprayingMachineTileEntity.recipeManager.getOutputFor(this.getInput(), false, false); } public List[] getInput() { return new List[] {null,this.input.getItemStackList()}; } @Override public void onLoaded() { super.onLoaded(); if (IC2.platform.isRendering() && this.explosion==null) { this.explosion = IC2.audioManager.createSource(this, PositionSpec.Center, "Machines/MinerOp.ogg",false,false, 0.5F); } } public void operate() {//diamond file max durability - 128000 //file tags - "GT.ToolStats"->"MaxDamage" & "Damage" if(this.canOperate()) { List output1 = DetonationSprayingMachineTileEntity.recipeManager.getOutputFor(getInput(), false, false).getItemOutputs(); ItemStack resultStack = output1.get(0).itemStack.copy(); resultStack.stackSize=this.input.get(0).stackSize; if(resultStack.stackTagCompound==null) { resultStack.stackTagCompound=this.input.get(0).stackTagCompound; } if(resultStack.stackTagCompound!=null && resultStack.stackTagCompound.hasKey("GT.ToolStats")) { NBTTagCompound gtTagCompound = resultStack.stackTagCompound.getCompoundTag("GT.ToolStats"); if(gtTagCompound!=null && gtTagCompound.hasKey("MaxDamage")) { int maxDamage = gtTagCompound.getInteger("MaxDamage"); int damage = 0; if(gtTagCompound.hasKey("Damage")) { damage = gtTagCompound.getInteger("Damage"); } if(damage getRecipes() { return recipeManager.getRecipes(); } @Override public boolean shouldRenderInPass(int pass) { return pass==0; } }