package pneumaticCraft.api; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; /** * DO NOT IMPLEMENT THIS CLASS YOURSELF! Use PneumaticRegistry.getInstance().getHeatExchangerLogic() ! * @author MineMaarten * www.minemaarten.com */ public interface IHeatExchangerLogic{ /** * Call this to tick this logic, and make the heat disperse itself. */ public void update(); /** * When called (preferably on tile entity load and neighbor block/tile entity change) this will add all IHeatExchanger neighbor TileEntities as connected heat exchangers. * It will also take care of blocks like Lava. * * You don't _have_ to call this method, if this heat exchanger is not connected to the outside world (for example the heat of the liquid * plastic in the Plastic Mixer). * @param world * @param x * @param y * @param z * @param validSides Can be left out as vararg, meaning every side can be connected. When one or more sides are specified this will constrain * this heat exchanger to only connect to other heat exchangers on these sides. */ public void initializeAsHull(World world, int x, int y, int z, ForgeDirection... validSides); /** * When called, this will connect these two heat exchangers. You should only call this on one of the two heat exchangers. * @param exchanger */ public void addConnectedExchanger(IHeatExchangerLogic exchanger); public void removeConnectedExchanger(IHeatExchangerLogic exchanger); /** * A heat exchanger starts with 295 degrees Kelvin (20 degrees Celcius) by default. * @param temperature in degrees Kelvin */ public void setTemperature(double temperature); public double getTemperature(); /** * The higher the thermal resistance, the slower the heat disperses. * @param thermalResistance By default it's 1. */ public void setThermalResistance(double thermalResistance); public double getThermalResistance(); /** * The higher the capacity, the more heat can be 'stored'. This means that an object with a high capacity can heat up an object with a lower * capacity without losing any significant amount of temperature. * @param capacity */ public void setThermalCapacity(double capacity); public double getThermalCapacity(); public void writeToNBT(NBTTagCompound tag); public void readFromNBT(NBTTagCompound tag); /** * Adds heat (= deltaT * Thermal Capacity) to this exchanger. negative values will remove heat. * @param amount */ public void addHeat(double amount); }