package ihl.processing.metallurgy; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import ic2.api.energy.event.EnergyTileLoadEvent; import ic2.api.energy.event.EnergyTileUnloadEvent; import ic2.api.energy.tile.IEnergySink; import ic2.api.network.INetworkDataProvider; import ic2.api.tile.IWrenchable; import ic2.core.IC2; import ihl.items_blocks.FlexibleCableItem; import ihl.recipes.UniversalRecipeInput; import ihl.recipes.UniversalRecipeManager; import ihl.recipes.UniversalRecipeOutput; import ihl.utils.IHLUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; public class VulcanizationExtrudingMoldTileEntity extends TileEntity implements IWrenchable, INetworkDataProvider, IEnergySink, IProductionLine, IFluidHandler{ private short facing=2; private short lastFacing=2; public double energy; public int maxStorage=64; private double energyConsume=16D; private boolean addedToEnergyNet=false; private FluidTank fluidTank = new FluidTank(5000); protected static final UniversalRecipeManager recipeManager = new UniversalRecipeManager("vulcanizationextrudingmold"); public VulcanizationExtrudingMoldTileEntity() { super(); } public static void addRecipe(FluidStack inputFluid,ItemStack input,ItemStack output1) { recipeManager.addRecipe(new UniversalRecipeInput((new FluidStack[] {inputFluid}),(new ItemStack[] {input})),new UniversalRecipeOutput(null,(new ItemStack[] {output1}),200)); } public boolean enableUpdateEntity() { return IC2.platform.isSimulating(); } @Override public void invalidate() { if (IC2.platform.isSimulating()&&this.addedToEnergyNet) { MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this)); this.addedToEnergyNet = false; } super.invalidate(); } @Override public List getNetworkedFields() { List fields = new ArrayList(); fields.add("facing"); return fields; } @Override public void updateEntity() { super.updateEntity(); if (IC2.platform.isSimulating()&&!this.addedToEnergyNet) { MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this)); this.addedToEnergyNet = true; } if(lastFacing!=facing) { IC2.network.get().updateTileEntityField(this, "facing"); lastFacing=facing; } } @Override public boolean wrenchCanSetFacing(EntityPlayer entityPlayer, int side) { return this.getFacing()!=side; } @Override public short getFacing() { return this.facing; } @Override public void setFacing(short facing1) { if (IC2.platform.isSimulating()&&this.addedToEnergyNet) { MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this)); this.addedToEnergyNet = false; } facing=(short) Math.max(2,facing1); if(IC2.platform.isSimulating()) { IC2.network.get().updateTileEntityField(this, "facing"); lastFacing=facing; } if (IC2.platform.isSimulating()&&!this.addedToEnergyNet) { MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this)); this.addedToEnergyNet = true; } } @Override public boolean wrenchCanRemove(EntityPlayer entityPlayer) { return true; } @Override public float getWrenchDropRate() { return 1F; } @Override public ItemStack getWrenchDrop(EntityPlayer entityPlayer) { return IHLUtils.getThisModItemStack("vulcanizationExtrudingMold"); } @Override public void readFromNBT(NBTTagCompound nbttagcompound) { super.readFromNBT(nbttagcompound); this.fluidTank.readFromNBT(nbttagcompound.getCompoundTag("fluidTank")); facing=nbttagcompound.getShort("facing"); energy=nbttagcompound.getDouble("energy"); } @Override public void writeToNBT(NBTTagCompound nbttagcompound) { super.writeToNBT(nbttagcompound); NBTTagCompound fluidTankTag = new NBTTagCompound(); this.fluidTank.writeToNBT(fluidTankTag); nbttagcompound.setTag("fluidTank", fluidTankTag); nbttagcompound.setShort("facing", facing); nbttagcompound.setDouble("energy", this.energy); } @Override public double getDemandedEnergy() { return this.maxStorage-this.energy; } @Override public int getSinkTier() { return 4; } @Override public double injectEnergy(ForgeDirection directionFrom, double amount, double voltage) { if(this.energy getRecipes() { return recipeManager.getRecipes(); } }