Thermodynamic Conductors function properly, added Thermal Evaporation Plant integration with heat system
|
@ -6,6 +6,9 @@ import java.util.Set;
|
|||
import mekanism.api.IHeatTransfer;
|
||||
import mekanism.api.transmitters.DynamicNetwork;
|
||||
import mekanism.api.transmitters.IGridTransmitter;
|
||||
import mekanism.api.util.UnitDisplayUtils.TemperatureUnit;
|
||||
import mekanism.common.multipart.MultipartTransmitter;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
|
||||
public class HeatNetwork extends DynamicNetwork<IHeatTransfer, HeatNetwork>
|
||||
|
@ -40,13 +43,13 @@ public class HeatNetwork extends DynamicNetwork<IHeatTransfer, HeatNetwork>
|
|||
@Override
|
||||
public String getStoredInfo()
|
||||
{
|
||||
return meanTemp + "K above ambient";
|
||||
return MekanismUtils.getTemperatureDisplay(meanTemp, TemperatureUnit.KELVIN) + " above ambient";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFlowInfo()
|
||||
{
|
||||
return heatTransferred + " transferred to acceptors, " + heatLost + " lost to environment, " + (heatTransferred + heatLost == 0 ? "" : heatTransferred / (heatTransferred + heatLost) * 100 + "% efficiency");
|
||||
return MekanismUtils.getTemperatureDisplay(heatTransferred, TemperatureUnit.KELVIN) + " transferred to acceptors, " + MekanismUtils.getTemperatureDisplay(heatLost, TemperatureUnit.KELVIN) + " lost to environment, " + (heatTransferred + heatLost == 0 ? "" : heatTransferred / (heatTransferred + heatLost) * 100 + "% efficiency");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -74,9 +77,9 @@ public class HeatNetwork extends DynamicNetwork<IHeatTransfer, HeatNetwork>
|
|||
{
|
||||
for(IGridTransmitter<IHeatTransfer, HeatNetwork> transmitter : transmitters)
|
||||
{
|
||||
if(transmitter instanceof IHeatTransfer)
|
||||
if(transmitter instanceof MultipartTransmitter && ((MultipartTransmitter)transmitter).getPart() instanceof IHeatTransfer)
|
||||
{
|
||||
IHeatTransfer heatTransmitter = (IHeatTransfer)transmitter;
|
||||
IHeatTransfer heatTransmitter = (IHeatTransfer)((MultipartTransmitter)transmitter).getPart();
|
||||
double[] d = heatTransmitter.simulateHeat();
|
||||
newHeatTransferred += d[0];
|
||||
newHeatLost += d[1];
|
||||
|
@ -85,9 +88,9 @@ public class HeatNetwork extends DynamicNetwork<IHeatTransfer, HeatNetwork>
|
|||
|
||||
for(IGridTransmitter<IHeatTransfer, HeatNetwork> transmitter : transmitters)
|
||||
{
|
||||
if(transmitter instanceof IHeatTransfer)
|
||||
if(transmitter instanceof MultipartTransmitter && ((MultipartTransmitter)transmitter).getPart() instanceof IHeatTransfer)
|
||||
{
|
||||
IHeatTransfer heatTransmitter = (IHeatTransfer)transmitter;
|
||||
IHeatTransfer heatTransmitter = (IHeatTransfer)((MultipartTransmitter)transmitter).getPart();
|
||||
newSumTemp += heatTransmitter.applyTemperatureChange();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -484,10 +484,10 @@ public final class Tier
|
|||
|
||||
public static enum ConductorTier
|
||||
{
|
||||
BASIC(5, 1, 0, new ColourRGBA(0.2, 0.2, 0.2, 1), TransmitterType.THERMODYNAMIC_CONDUCTOR_BASIC),
|
||||
ADVANCED(5, 1, 0, new ColourRGBA(0.2, 0.2, 0.2, 1), TransmitterType.THERMODYNAMIC_CONDUCTOR_ADVANCED),
|
||||
ELITE(5, 1, 0, new ColourRGBA(0.2, 0.2, 0.2, 1), TransmitterType.THERMODYNAMIC_CONDUCTOR_ELITE),
|
||||
ULTIMATE(5, 1, 0, new ColourRGBA(0.2, 0.2, 0.2, 1), TransmitterType.THERMODYNAMIC_CONDUCTOR_ULTIMATE);
|
||||
BASIC(5, 1, 10, new ColourRGBA(0.2, 0.2, 0.2, 1), TransmitterType.THERMODYNAMIC_CONDUCTOR_BASIC),
|
||||
ADVANCED(5, 1, 400, new ColourRGBA(0.2, 0.2, 0.2, 1), TransmitterType.THERMODYNAMIC_CONDUCTOR_ADVANCED),
|
||||
ELITE(5, 1, 8000, new ColourRGBA(0.2, 0.2, 0.2, 1), TransmitterType.THERMODYNAMIC_CONDUCTOR_ELITE),
|
||||
ULTIMATE(5, 1, 100000, new ColourRGBA(0.2, 0.2, 0.2, 1), TransmitterType.THERMODYNAMIC_CONDUCTOR_ULTIMATE);
|
||||
|
||||
public BaseTier getBaseTier()
|
||||
{
|
||||
|
|
|
@ -77,6 +77,7 @@ import mekanism.common.tile.TileEntityOsmiumCompressor;
|
|||
import mekanism.common.tile.TileEntityPRC;
|
||||
import mekanism.common.tile.TileEntityPrecisionSawmill;
|
||||
import mekanism.common.tile.TileEntityPurificationChamber;
|
||||
import mekanism.common.tile.TileEntityResistiveHeater;
|
||||
import mekanism.common.tile.TileEntityRotaryCondensentrator;
|
||||
import mekanism.common.tile.TileEntitySeismicVibrator;
|
||||
import mekanism.common.tile.TileEntitySolarNeutronActivator;
|
||||
|
@ -1144,7 +1145,8 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IBlo
|
|||
ENTANGLED_BLOCK(MachineBlock.MACHINE_BLOCK_3, 0, "EntangledBlock", 46, TileEntityEntangledBlock.class, true, false, false),
|
||||
SOLAR_NEUTRON_ACTIVATOR(MachineBlock.MACHINE_BLOCK_3, 1, "SolarNeutronActivator", 47, TileEntitySolarNeutronActivator.class, false, true, false),
|
||||
AMBIENT_ACCUMULATOR(MachineBlock.MACHINE_BLOCK_3, 2, "AmbientAccumulator", 48, TileEntityAmbientAccumulator.class, true, false, false),
|
||||
OREDICTIONIFICATOR(MachineBlock.MACHINE_BLOCK_3, 3, "Oredictionificator", 52, TileEntityOredictionificator.class, false, false, false);
|
||||
OREDICTIONIFICATOR(MachineBlock.MACHINE_BLOCK_3, 3, "Oredictionificator", 52, TileEntityOredictionificator.class, false, false, false),
|
||||
RESISTIVE_HEATER(MachineBlock.MACHINE_BLOCK_3, 4, "ResistiveHeater", 53, TileEntityResistiveHeater.class, true, true, false);
|
||||
|
||||
public MachineBlock typeBlock;
|
||||
public int meta;
|
||||
|
@ -1195,7 +1197,7 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IBlo
|
|||
|
||||
for(MachineType type : MachineType.values())
|
||||
{
|
||||
if(type != ENTANGLED_BLOCK && type != AMBIENT_ACCUMULATOR)
|
||||
if(type != ENTANGLED_BLOCK && type != AMBIENT_ACCUMULATOR && type != RESISTIVE_HEATER)
|
||||
{
|
||||
ret.add(type);
|
||||
}
|
||||
|
|
|
@ -121,9 +121,13 @@ public class PartThermodynamicConductor extends PartTransmitter<IHeatTransfer, H
|
|||
}
|
||||
|
||||
@Override
|
||||
protected boolean onConfigure(EntityPlayer player, int part, int side)
|
||||
public boolean onRightClick(EntityPlayer player, int side)
|
||||
{
|
||||
temperature += 10000;
|
||||
if(!world().isRemote)
|
||||
{
|
||||
temperature += 10000; //TODO remove
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -16,10 +16,8 @@ import mekanism.common.content.boiler.SynchronizedBoilerData;
|
|||
import mekanism.common.content.boiler.SynchronizedBoilerData.ValveData;
|
||||
import mekanism.common.multiblock.MultiblockManager;
|
||||
import mekanism.common.util.FluidContainerUtils.ContainerEditMode;
|
||||
import mekanism.common.util.HeatUtils;
|
||||
import mekanism.common.util.LangUtils;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraftforge.fluids.FluidRegistry;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
@ -315,7 +313,7 @@ public class TileEntityBoilerCasing extends TileEntityMultiblock<SynchronizedBoi
|
|||
@Override
|
||||
public double getInverseConductionCoefficient()
|
||||
{
|
||||
return 50;
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -327,14 +325,16 @@ public class TileEntityBoilerCasing extends TileEntityMultiblock<SynchronizedBoi
|
|||
@Override
|
||||
public void transferHeatTo(double heat)
|
||||
{
|
||||
heatToAbsorb += heat;
|
||||
if(structure != null)
|
||||
{
|
||||
structure.heatToAbsorb += heat;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public double[] simulateHeat()
|
||||
{
|
||||
innerSide = null;
|
||||
return HeatUtils.simulate(this);
|
||||
return new double[] {0, 0};
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -349,25 +349,12 @@ public class TileEntityBoilerCasing extends TileEntityMultiblock<SynchronizedBoi
|
|||
@Override
|
||||
public boolean canConnectHeat(ForgeDirection side)
|
||||
{
|
||||
return structure == null || !isInnerSide(side);
|
||||
return structure != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IHeatTransfer getAdjacent(ForgeDirection side)
|
||||
{
|
||||
if(structure != null && isInnerSide(side))
|
||||
{
|
||||
return structure;
|
||||
}
|
||||
else {
|
||||
TileEntity adj = Coord4D.get(this).getFromSide(side).getTileEntity(worldObj);
|
||||
|
||||
if(adj instanceof IHeatTransfer)
|
||||
{
|
||||
return (IHeatTransfer)adj;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
package mekanism.common.tile;
|
||||
|
||||
import mekanism.api.IHeatTransfer;
|
||||
import mekanism.common.block.BlockMachine.MachineType;
|
||||
import mekanism.common.util.HeatUtils;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityResistiveHeater extends TileEntityElectricBlock implements IHeatTransfer
|
||||
{
|
||||
public TileEntityResistiveHeater()
|
||||
{
|
||||
super("ResistiveHeater", MachineType.RESISTIVE_HEATER.baseEnergy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getTemp()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getInverseConductionCoefficient()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getInsulationCoefficient(ForgeDirection side)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void transferHeatTo(double heat)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public double[] simulateHeat()
|
||||
{
|
||||
return HeatUtils.simulate(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double applyTemperatureChange()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnectHeat(ForgeDirection side)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IHeatTransfer getAdjacent(ForgeDirection side)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package mekanism.common.tile;
|
||||
|
||||
import mekanism.api.Coord4D;
|
||||
import mekanism.api.IHeatTransfer;
|
||||
import mekanism.common.util.PipeUtils;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
|
@ -8,7 +9,7 @@ import net.minecraftforge.fluids.FluidStack;
|
|||
import net.minecraftforge.fluids.FluidTankInfo;
|
||||
import net.minecraftforge.fluids.IFluidHandler;
|
||||
|
||||
public class TileEntityThermalEvaporationValve extends TileEntityThermalEvaporationBlock implements IFluidHandler
|
||||
public class TileEntityThermalEvaporationValve extends TileEntityThermalEvaporationBlock implements IFluidHandler, IHeatTransfer
|
||||
{
|
||||
public boolean prevMaster = false;
|
||||
|
||||
|
@ -95,4 +96,57 @@ public class TileEntityThermalEvaporationValve extends TileEntityThermalEvaporat
|
|||
|
||||
return new FluidTankInfo[] {new FluidTankInfo(controller.inputTank), new FluidTankInfo(controller.outputTank)};
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getTemp()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getInverseConductionCoefficient()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getInsulationCoefficient(ForgeDirection side)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void transferHeatTo(double heat)
|
||||
{
|
||||
TileEntityThermalEvaporationController controller = getController();
|
||||
|
||||
if(controller != null)
|
||||
{
|
||||
controller.heatToAbsorb += heat;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public double[] simulateHeat()
|
||||
{
|
||||
return new double[] {0, 0};
|
||||
}
|
||||
|
||||
@Override
|
||||
public double applyTemperatureChange()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnectHeat(ForgeDirection side)
|
||||
{
|
||||
return getController() != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IHeatTransfer getAdjacent(ForgeDirection side)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,18 +1,14 @@
|
|||
package mekanism.common.util;
|
||||
|
||||
import mekanism.api.Coord4D;
|
||||
import mekanism.api.IHeatTransfer;
|
||||
import mekanism.api.transmitters.IGridTransmitter;
|
||||
import mekanism.api.transmitters.ITransmitterTile;
|
||||
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class HeatUtils
|
||||
{
|
||||
public static double[] simulate(IHeatTransfer source)
|
||||
{
|
||||
double heatTransferred[] = new double[] {0,0};
|
||||
double heatTransferred[] = new double[] {0, 0};
|
||||
|
||||
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
|
||||
{
|
||||
|
|
|
@ -240,6 +240,7 @@ public class TileEntityReactorPort extends TileEntityReactorBlock implements IFl
|
|||
{
|
||||
return getReactor().getTemp();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
BIN
src/main/resources/assets/mekanism/textures/blocks/GlowPlasticBlock.png
Normal file → Executable file
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.7 KiB |
BIN
src/main/resources/assets/mekanism/textures/blocks/PlasticBlock.png
Normal file → Executable file
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.7 KiB |
BIN
src/main/resources/assets/mekanism/textures/blocks/PlasticFence.png
Normal file → Executable file
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.4 KiB |
BIN
src/main/resources/assets/mekanism/textures/blocks/ReinforcedPlasticBlock.png
Normal file → Executable file
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.4 KiB |
BIN
src/main/resources/assets/mekanism/textures/blocks/RoadPlasticBlock.png
Normal file → Executable file
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.3 KiB |
BIN
src/main/resources/assets/mekanism/textures/blocks/SlickPlasticBlock.png
Normal file → Executable file
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.4 KiB |