Work on Thermodynamic Conductors
This commit is contained in:
parent
f19a8f9e64
commit
2bea8ac29a
21 changed files with 451 additions and 331 deletions
|
@ -10,14 +10,13 @@ import mekanism.client.render.MekanismRenderer.DisplayInteger;
|
||||||
import mekanism.client.render.MekanismRenderer.Model3D;
|
import mekanism.client.render.MekanismRenderer.Model3D;
|
||||||
import mekanism.common.content.transporter.TransporterStack;
|
import mekanism.common.content.transporter.TransporterStack;
|
||||||
import mekanism.common.item.ItemConfigurator;
|
import mekanism.common.item.ItemConfigurator;
|
||||||
import mekanism.common.multipart.MultipartTransporter;
|
|
||||||
import mekanism.common.multipart.PartDiversionTransporter;
|
import mekanism.common.multipart.PartDiversionTransporter;
|
||||||
import mekanism.common.multipart.PartHeatTransmitter;
|
|
||||||
import mekanism.common.multipart.PartLogisticalTransporter;
|
import mekanism.common.multipart.PartLogisticalTransporter;
|
||||||
import mekanism.common.multipart.PartMechanicalPipe;
|
import mekanism.common.multipart.PartMechanicalPipe;
|
||||||
import mekanism.common.multipart.PartPressurizedTube;
|
import mekanism.common.multipart.PartPressurizedTube;
|
||||||
import mekanism.common.multipart.PartSidedPipe;
|
import mekanism.common.multipart.PartSidedPipe;
|
||||||
import mekanism.common.multipart.PartSidedPipe.ConnectionType;
|
import mekanism.common.multipart.PartSidedPipe.ConnectionType;
|
||||||
|
import mekanism.common.multipart.PartThermodynamicConductor;
|
||||||
import mekanism.common.multipart.PartUniversalCable;
|
import mekanism.common.multipart.PartUniversalCable;
|
||||||
import mekanism.common.multipart.TransmitterType;
|
import mekanism.common.multipart.TransmitterType;
|
||||||
import mekanism.common.multipart.TransmitterType.Size;
|
import mekanism.common.multipart.TransmitterType.Size;
|
||||||
|
@ -271,7 +270,7 @@ public class RenderPartTransmitter implements IIconSelfRegister
|
||||||
pop();
|
pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void renderContents(PartHeatTransmitter transmitter, Vector3 pos)
|
public void renderContents(PartThermodynamicConductor transmitter, Vector3 pos)
|
||||||
{
|
{
|
||||||
push();
|
push();
|
||||||
CCRenderState.reset();
|
CCRenderState.reset();
|
||||||
|
@ -602,10 +601,10 @@ public class RenderPartTransmitter implements IIconSelfRegister
|
||||||
renderTransparency(MekanismRenderer.energyIcon, cable.getModelForSide(side, true), new ColourRGBA(1.0, 1.0, 1.0, cable.currentPower));
|
renderTransparency(MekanismRenderer.energyIcon, cable.getModelForSide(side, true), new ColourRGBA(1.0, 1.0, 1.0, cable.currentPower));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void renderHeatSide(ForgeDirection side, PartHeatTransmitter cable)
|
public void renderHeatSide(ForgeDirection side, PartThermodynamicConductor cable)
|
||||||
{
|
{
|
||||||
CCRenderState.changeTexture(MekanismRenderer.getBlocksTexture());
|
CCRenderState.changeTexture(MekanismRenderer.getBlocksTexture());
|
||||||
renderTransparency(MekanismRenderer.heatIcon, cable.getModelForSide(side, true), ColourTemperature.fromTemperature(cable.getTransmitter().temperature, cable.getBaseColour()));
|
renderTransparency(MekanismRenderer.heatIcon, cable.getModelForSide(side, true), ColourTemperature.fromTemperature(cable.temperature, cable.getBaseColour()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void renderFluidInOut(ForgeDirection side, PartMechanicalPipe pipe)
|
public void renderFluidInOut(ForgeDirection side, PartMechanicalPipe pipe)
|
||||||
|
@ -664,7 +663,7 @@ public class RenderPartTransmitter implements IIconSelfRegister
|
||||||
PartMechanicalPipe.registerIcons(register);
|
PartMechanicalPipe.registerIcons(register);
|
||||||
PartPressurizedTube.registerIcons(register);
|
PartPressurizedTube.registerIcons(register);
|
||||||
PartLogisticalTransporter.registerIcons(register);
|
PartLogisticalTransporter.registerIcons(register);
|
||||||
PartHeatTransmitter.registerIcons(register);
|
PartThermodynamicConductor.registerIcons(register);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,15 +1,11 @@
|
||||||
package mekanism.common;
|
package mekanism.common;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import mekanism.api.IHeatTransfer;
|
import mekanism.api.IHeatTransfer;
|
||||||
import mekanism.api.transmitters.DynamicNetwork;
|
import mekanism.api.transmitters.DynamicNetwork;
|
||||||
import mekanism.api.transmitters.IGridTransmitter;
|
import mekanism.api.transmitters.IGridTransmitter;
|
||||||
import mekanism.api.transmitters.TransmissionType;
|
|
||||||
|
|
||||||
import cpw.mods.fml.common.FMLCommonHandler;
|
import cpw.mods.fml.common.FMLCommonHandler;
|
||||||
|
|
||||||
public class HeatNetwork extends DynamicNetwork<IHeatTransfer, HeatNetwork>
|
public class HeatNetwork extends DynamicNetwork<IHeatTransfer, HeatNetwork>
|
||||||
|
|
|
@ -627,6 +627,18 @@ public class Mekanism
|
||||||
CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 2, 17), new Object[] {
|
CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 2, 17), new Object[] {
|
||||||
"RRR", "SBS", "RRR", Character.valueOf('R'), "dustRedstone", Character.valueOf('S'), "ingotSteel", Character.valueOf('B'), Blocks.iron_bars
|
"RRR", "SBS", "RRR", Character.valueOf('R'), "dustRedstone", Character.valueOf('S'), "ingotSteel", Character.valueOf('B'), Blocks.iron_bars
|
||||||
}));
|
}));
|
||||||
|
CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 18), new Object[] {
|
||||||
|
"SCS", Character.valueOf('S'), "ingotSteel", Character.valueOf('C'), "ingotCopper"
|
||||||
|
}));
|
||||||
|
CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 19), new Object[] {
|
||||||
|
"TTT", "TET", "TTT", Character.valueOf('E'), "alloyAdvanced", Character.valueOf('T'), new ItemStack(MekanismItems.PartTransmitter, 1, 18)
|
||||||
|
}));
|
||||||
|
CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 20), new Object[] {
|
||||||
|
"TTT", "TRT", "TTT", Character.valueOf('R'), "alloyElite", Character.valueOf('T'), new ItemStack(MekanismItems.PartTransmitter, 1, 19)
|
||||||
|
}));
|
||||||
|
CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 21), new Object[] {
|
||||||
|
"TTT", "TAT", "TTT", Character.valueOf('A'), "alloyUltimate", Character.valueOf('T'), new ItemStack(MekanismItems.PartTransmitter, 1, 20)
|
||||||
|
}));
|
||||||
|
|
||||||
//Plastic stuff
|
//Plastic stuff
|
||||||
CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.Polyethene, 1, 1), new Object[] {
|
CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.Polyethene, 1, 1), new Object[] {
|
||||||
|
|
|
@ -5,6 +5,7 @@ import mekanism.api.EnumColor;
|
||||||
import mekanism.common.multipart.TransmitterType;
|
import mekanism.common.multipart.TransmitterType;
|
||||||
import mekanism.common.util.LangUtils;
|
import mekanism.common.util.LangUtils;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
import codechicken.lib.colour.ColourRGBA;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tier information for Mekanism. This currently includes tiers for Energy Cubes and Smelting Factories.
|
* Tier information for Mekanism. This currently includes tiers for Energy Cubes and Smelting Factories.
|
||||||
|
@ -481,6 +482,77 @@ 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);
|
||||||
|
|
||||||
|
public BaseTier getBaseTier()
|
||||||
|
{
|
||||||
|
return BaseTier.values()[ordinal()];
|
||||||
|
}
|
||||||
|
|
||||||
|
public double inverseConduction;
|
||||||
|
private double baseConduction;
|
||||||
|
|
||||||
|
public double inverseHeatCapacity;
|
||||||
|
private double baseHeatCapacity;
|
||||||
|
|
||||||
|
public double inverseConductionInsulation;
|
||||||
|
private double baseConductionInsulation;
|
||||||
|
|
||||||
|
public ColourRGBA baseColour;
|
||||||
|
|
||||||
|
public TransmitterType type;
|
||||||
|
|
||||||
|
private ConductorTier(double inversek, double inverseC, double insulationInversek, ColourRGBA colour, TransmitterType transmitterType)
|
||||||
|
{
|
||||||
|
baseConduction = inverseConduction = inversek;
|
||||||
|
baseHeatCapacity = inverseHeatCapacity = inverseC;
|
||||||
|
baseConductionInsulation = inverseConductionInsulation = insulationInversek;
|
||||||
|
|
||||||
|
baseColour = colour;
|
||||||
|
|
||||||
|
type = transmitterType;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void loadConfig()
|
||||||
|
{
|
||||||
|
inverseConduction = Mekanism.configuration.get("tier", getBaseTier().getName() + "ConductorInverseConduction", baseConduction).getDouble();
|
||||||
|
inverseHeatCapacity = Mekanism.configuration.get("tier", getBaseTier().getName() + "ConductorHeatCapacity", baseHeatCapacity).getDouble();
|
||||||
|
inverseConductionInsulation = Mekanism.configuration.get("tier", getBaseTier().getName() + "ConductorConductionInsulation", baseConductionInsulation).getDouble();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void readConfig(ByteBuf dataStream)
|
||||||
|
{
|
||||||
|
inverseConduction = dataStream.readDouble();
|
||||||
|
inverseHeatCapacity = dataStream.readDouble();
|
||||||
|
inverseConductionInsulation = dataStream.readDouble();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void writeConfig(ByteBuf dataStream)
|
||||||
|
{
|
||||||
|
dataStream.writeDouble(inverseConduction);
|
||||||
|
dataStream.writeDouble(inverseHeatCapacity);
|
||||||
|
dataStream.writeDouble(inverseConductionInsulation);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ConductorTier get(BaseTier tier)
|
||||||
|
{
|
||||||
|
for(ConductorTier transmitter : values())
|
||||||
|
{
|
||||||
|
if(transmitter.getBaseTier() == tier)
|
||||||
|
{
|
||||||
|
return transmitter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return BASIC;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void loadConfig()
|
public static void loadConfig()
|
||||||
{
|
{
|
||||||
for(CableTier tier : CableTier.values())
|
for(CableTier tier : CableTier.values())
|
||||||
|
@ -517,6 +589,11 @@ public final class Tier
|
||||||
{
|
{
|
||||||
tier.loadConfig();
|
tier.loadConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(ConductorTier tier : ConductorTier.values())
|
||||||
|
{
|
||||||
|
tier.loadConfig();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void readConfig(ByteBuf dataStream)
|
public static void readConfig(ByteBuf dataStream)
|
||||||
|
@ -555,6 +632,11 @@ public final class Tier
|
||||||
{
|
{
|
||||||
tier.readConfig(dataStream);
|
tier.readConfig(dataStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(ConductorTier tier : ConductorTier.values())
|
||||||
|
{
|
||||||
|
tier.readConfig(dataStream);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void writeConfig(ByteBuf dataStream)
|
public static void writeConfig(ByteBuf dataStream)
|
||||||
|
@ -593,5 +675,10 @@ public final class Tier
|
||||||
{
|
{
|
||||||
tier.writeConfig(dataStream);
|
tier.writeConfig(dataStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(ConductorTier tier : ConductorTier.values())
|
||||||
|
{
|
||||||
|
tier.writeConfig(dataStream);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,6 @@ import java.util.Iterator;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import mekanism.api.Coord4D;
|
import mekanism.api.Coord4D;
|
||||||
import mekanism.common.tile.TileEntityTeleporter;
|
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.nbt.NBTTagList;
|
import net.minecraft.nbt.NBTTagList;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
@ -247,12 +246,12 @@ public class FrequencyManager
|
||||||
else {
|
else {
|
||||||
TileEntity tile = coord.getTileEntity(world);
|
TileEntity tile = coord.getTileEntity(world);
|
||||||
|
|
||||||
if(!(tile instanceof TileEntityTeleporter))
|
if(!(tile instanceof IFrequencyHandler))
|
||||||
{
|
{
|
||||||
iter.remove();
|
iter.remove();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Frequency freq = ((TileEntityTeleporter)tile).frequency;
|
Frequency freq = ((IFrequencyHandler)tile).getFrequency();
|
||||||
|
|
||||||
if(freq == null || !freq.equals(iterFreq))
|
if(freq == null || !freq.equals(iterFreq))
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
package mekanism.common.frequency;
|
||||||
|
|
||||||
|
public interface IFrequencyHandler
|
||||||
|
{
|
||||||
|
public Frequency getFrequency();
|
||||||
|
}
|
|
@ -152,6 +152,12 @@ public class ItemPartTransmitter extends JItemMultiPart
|
||||||
list.add("- " + EnumColor.DARK_RED + LangUtils.localize("tooltip.diversionDesc"));
|
list.add("- " + EnumColor.DARK_RED + LangUtils.localize("tooltip.diversionDesc"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case 18: case 19: case 20: case 21:
|
||||||
|
{
|
||||||
|
list.add(EnumColor.DARK_GREY + LangUtils.localize("tooltip.capableTrans") + ":");
|
||||||
|
list.add("- " + EnumColor.PURPLE + LangUtils.localize("tooltip.heat") + " (Mekanism)");
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -161,7 +167,6 @@ public class ItemPartTransmitter extends JItemMultiPart
|
||||||
{
|
{
|
||||||
for(TransmitterType type : TransmitterType.values())
|
for(TransmitterType type : TransmitterType.values())
|
||||||
{
|
{
|
||||||
if(type == TransmitterType.HEAT_TRANSMITTER) continue; //TODO
|
|
||||||
listToAddTo.add(new ItemStack(item, 1, type.ordinal()));
|
listToAddTo.add(new ItemStack(item, 1, type.ordinal()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,116 +0,0 @@
|
||||||
package mekanism.common.multipart;
|
|
||||||
|
|
||||||
import mekanism.api.IHeatTransfer;
|
|
||||||
import mekanism.common.HeatNetwork;
|
|
||||||
import mekanism.common.util.HeatUtils;
|
|
||||||
import net.minecraft.tileentity.TileEntity;
|
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
|
||||||
import codechicken.lib.colour.ColourRGBA;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by ben on 01/04/15.
|
|
||||||
*/
|
|
||||||
public class MultipartHeatTransmitter extends MultipartTransmitter<IHeatTransfer, HeatNetwork> implements IHeatTransfer
|
|
||||||
{
|
|
||||||
public double temperature = 0;
|
|
||||||
public double clientTemperature = 0;
|
|
||||||
public double heatToAbsorb = 0;
|
|
||||||
|
|
||||||
public HeatMaterial material = HeatMaterial.DEFAULT;
|
|
||||||
|
|
||||||
public MultipartHeatTransmitter(PartHeatTransmitter multiPart)
|
|
||||||
{
|
|
||||||
super(multiPart);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getTemp()
|
|
||||||
{
|
|
||||||
return temperature;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getInverseConductionCoefficient()
|
|
||||||
{
|
|
||||||
return material.inverseConduction;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getInsulationCoefficient(ForgeDirection side)
|
|
||||||
{
|
|
||||||
return material.inverseConductionInsulation;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void transferHeatTo(double heat)
|
|
||||||
{
|
|
||||||
heatToAbsorb += heat;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double[] simulateHeat()
|
|
||||||
{
|
|
||||||
return HeatUtils.simulate(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double applyTemperatureChange()
|
|
||||||
{
|
|
||||||
temperature += material.inverseHeatCapacity * heatToAbsorb;
|
|
||||||
heatToAbsorb = 0;
|
|
||||||
|
|
||||||
if(Math.abs(temperature - clientTemperature) > (temperature / 100))
|
|
||||||
{
|
|
||||||
clientTemperature = temperature;
|
|
||||||
getPart().sendTemp();
|
|
||||||
}
|
|
||||||
|
|
||||||
return temperature;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canConnectHeat(ForgeDirection side)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IHeatTransfer getAdjacent(ForgeDirection side)
|
|
||||||
{
|
|
||||||
if(getPart().connectionMapContainsSide(getPart().getAllCurrentConnections(), side))
|
|
||||||
{
|
|
||||||
TileEntity adj = coord().getFromSide(side).getTileEntity(world());
|
|
||||||
|
|
||||||
if(adj instanceof IHeatTransfer)
|
|
||||||
{
|
|
||||||
return (IHeatTransfer)adj;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public PartHeatTransmitter getPart()
|
|
||||||
{
|
|
||||||
return (PartHeatTransmitter)containingPart;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static enum HeatMaterial
|
|
||||||
{
|
|
||||||
DEFAULT(5, 1, 0, new ColourRGBA(0.2, 0.2, 0.2, 1));
|
|
||||||
|
|
||||||
double inverseConduction;
|
|
||||||
double inverseHeatCapacity;
|
|
||||||
double inverseConductionInsulation;
|
|
||||||
ColourRGBA baseColour;
|
|
||||||
|
|
||||||
private HeatMaterial(double inversek, double inverseC, double insulationInversek, ColourRGBA colour)
|
|
||||||
{
|
|
||||||
inverseConduction = inversek;
|
|
||||||
inverseHeatCapacity = inverseC;
|
|
||||||
inverseConductionInsulation = insulationInversek;
|
|
||||||
baseColour = colour;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,21 +1,18 @@
|
||||||
package mekanism.common.multipart;
|
package mekanism.common.multipart;
|
||||||
|
|
||||||
|
import static mekanism.common.block.BlockMachine.MachineBlock.MACHINE_BLOCK_1;
|
||||||
|
import static mekanism.common.block.BlockMachine.MachineBlock.MACHINE_BLOCK_2;
|
||||||
import mekanism.common.MekanismBlocks;
|
import mekanism.common.MekanismBlocks;
|
||||||
import mekanism.common.Tier;
|
import mekanism.common.Tier;
|
||||||
import mekanism.common.block.BlockMachine.MachineType;
|
import mekanism.common.block.BlockMachine.MachineType;
|
||||||
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import cpw.mods.fml.common.event.FMLInterModComms;
|
|
||||||
|
|
||||||
import codechicken.microblock.BlockMicroMaterial;
|
import codechicken.microblock.BlockMicroMaterial;
|
||||||
import codechicken.microblock.MicroMaterialRegistry;
|
import codechicken.microblock.MicroMaterialRegistry;
|
||||||
import codechicken.multipart.MultiPartRegistry;
|
import codechicken.multipart.MultiPartRegistry;
|
||||||
import codechicken.multipart.MultiPartRegistry.IPartFactory;
|
import codechicken.multipart.MultiPartRegistry.IPartFactory;
|
||||||
import codechicken.multipart.MultipartGenerator;
|
import codechicken.multipart.MultipartGenerator;
|
||||||
import codechicken.multipart.TMultiPart;
|
import codechicken.multipart.TMultiPart;
|
||||||
|
import cpw.mods.fml.common.event.FMLInterModComms;
|
||||||
import static mekanism.common.block.BlockMachine.MachineBlock.MACHINE_BLOCK_1;
|
|
||||||
import static mekanism.common.block.BlockMachine.MachineBlock.MACHINE_BLOCK_2;
|
|
||||||
|
|
||||||
public class MultipartMekanism implements IPartFactory
|
public class MultipartMekanism implements IPartFactory
|
||||||
{
|
{
|
||||||
|
@ -36,7 +33,9 @@ public class MultipartMekanism implements IPartFactory
|
||||||
"mekanism:logistical_transporter_basic", "mekanism:logistical_transporter_advanced",
|
"mekanism:logistical_transporter_basic", "mekanism:logistical_transporter_advanced",
|
||||||
"mekanism:logistical_transporter_elite", "mekanism:logistical_transporter_ultimate",
|
"mekanism:logistical_transporter_elite", "mekanism:logistical_transporter_ultimate",
|
||||||
"mekanism:restrictive_transporter", "mekanism:diversion_transporter",
|
"mekanism:restrictive_transporter", "mekanism:diversion_transporter",
|
||||||
"mekanism:heat_transmitter", "mekanism:glow_panel"});
|
"mekanism:thermodynamic_conductor_basic", "mekanism:thermodynamic_conductor_advanced",
|
||||||
|
"mekanism:thermodynamic_conductor_elite", "mekanism:thermodynamic_conductor_ultimate",
|
||||||
|
"mekanism:glow_panel"});
|
||||||
|
|
||||||
MultipartGenerator.registerPassThroughInterface("mekanism.api.IConfigurable");
|
MultipartGenerator.registerPassThroughInterface("mekanism.api.IConfigurable");
|
||||||
MultipartGenerator.registerPassThroughInterface("mekanism.api.energy.IStrictEnergyAcceptor");
|
MultipartGenerator.registerPassThroughInterface("mekanism.api.energy.IStrictEnergyAcceptor");
|
||||||
|
@ -136,9 +135,21 @@ public class MultipartMekanism implements IPartFactory
|
||||||
{
|
{
|
||||||
return new PartDiversionTransporter();
|
return new PartDiversionTransporter();
|
||||||
}
|
}
|
||||||
else if(name.equals("mekanism:heat_transmitter"))
|
else if(name.equals("mekanism:thermodynamic_conductor_basic"))
|
||||||
{
|
{
|
||||||
return new PartHeatTransmitter();
|
return new PartThermodynamicConductor(Tier.ConductorTier.BASIC);
|
||||||
|
}
|
||||||
|
else if(name.equals("mekanism:thermodynamic_conductor_advanced"))
|
||||||
|
{
|
||||||
|
return new PartThermodynamicConductor(Tier.ConductorTier.ADVANCED);
|
||||||
|
}
|
||||||
|
else if(name.equals("mekanism:thermodynamic_conductor_elite"))
|
||||||
|
{
|
||||||
|
return new PartThermodynamicConductor(Tier.ConductorTier.ELITE);
|
||||||
|
}
|
||||||
|
else if(name.equals("mekanism:thermodynamic_conductor_ultimate"))
|
||||||
|
{
|
||||||
|
return new PartThermodynamicConductor(Tier.ConductorTier.ULTIMATE);
|
||||||
}
|
}
|
||||||
else if(name.equals("mekanism:glow_panel"))
|
else if(name.equals("mekanism:glow_panel"))
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,179 +0,0 @@
|
||||||
package mekanism.common.multipart;
|
|
||||||
|
|
||||||
import codechicken.lib.colour.ColourRGBA;
|
|
||||||
import codechicken.lib.data.MCDataInput;
|
|
||||||
import codechicken.lib.data.MCDataOutput;
|
|
||||||
import codechicken.lib.vec.Vector3;
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
|
||||||
import mekanism.api.IHeatTransfer;
|
|
||||||
import mekanism.api.transmitters.TransmissionType;
|
|
||||||
import mekanism.client.render.RenderPartTransmitter;
|
|
||||||
import mekanism.common.HeatNetwork;
|
|
||||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
|
||||||
import net.minecraft.tileentity.TileEntity;
|
|
||||||
import net.minecraft.util.IIcon;
|
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
public class PartHeatTransmitter extends PartTransmitter<IHeatTransfer, HeatNetwork>
|
|
||||||
{
|
|
||||||
public static TransmitterIcons heatIcons = new TransmitterIcons(1, 2);
|
|
||||||
|
|
||||||
public PartHeatTransmitter()
|
|
||||||
{
|
|
||||||
transmitterDelegate = new MultipartHeatTransmitter(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public HeatNetwork createNewNetwork()
|
|
||||||
{
|
|
||||||
return new HeatNetwork();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public HeatNetwork createNetworkByMerging(Collection networks)
|
|
||||||
{
|
|
||||||
return new HeatNetwork(networks);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getCapacity()
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getBuffer()
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void takeShare() {}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateShare() {}
|
|
||||||
|
|
||||||
public static void registerIcons(IIconRegister register)
|
|
||||||
{
|
|
||||||
heatIcons.registerCenterIcons(register, new String[] {"HeatTransmitter"});
|
|
||||||
heatIcons.registerSideIcons(register, new String[] {"SmallTransmitterVerticalBasic", "SmallTransmitterHorizontalBasic"});
|
|
||||||
//TODO tiers
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IIcon getCenterIcon(boolean opaque)
|
|
||||||
{
|
|
||||||
return heatIcons.getCenterIcon(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IIcon getSideIcon(boolean opaque)
|
|
||||||
{
|
|
||||||
return heatIcons.getSideIcon(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IIcon getSideIconRotated(boolean opaque)
|
|
||||||
{
|
|
||||||
return heatIcons.getSideIcon(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TransmitterType getTransmitterType()
|
|
||||||
{
|
|
||||||
return TransmitterType.HEAT_TRANSMITTER;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isValidAcceptor(TileEntity tile, ForgeDirection side)
|
|
||||||
{
|
|
||||||
return tile instanceof IHeatTransfer && ((IHeatTransfer)tile).canConnectHeat(side.getOpposite());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TransmissionType getTransmissionType()
|
|
||||||
{
|
|
||||||
return TransmissionType.HEAT;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getType()
|
|
||||||
{
|
|
||||||
return "mekanism:heat_transmitter";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean onConfigure(EntityPlayer player, int part, int side)
|
|
||||||
{
|
|
||||||
getTransmitter().temperature += 10000;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
public void renderDynamic(Vector3 pos, float f, int pass)
|
|
||||||
{
|
|
||||||
if(pass == 0)
|
|
||||||
{
|
|
||||||
RenderPartTransmitter.getInstance().renderContents(this, pos);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void load(NBTTagCompound nbtTags)
|
|
||||||
{
|
|
||||||
super.load(nbtTags);
|
|
||||||
|
|
||||||
getTransmitter().temperature = nbtTags.getDouble("temperature");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void save(NBTTagCompound nbtTags)
|
|
||||||
{
|
|
||||||
super.save(nbtTags);
|
|
||||||
|
|
||||||
nbtTags.setDouble("temperature", getTransmitter().temperature);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void sendTemp()
|
|
||||||
{
|
|
||||||
MCDataOutput packet = getWriteStream();
|
|
||||||
packet.writeBoolean(true);
|
|
||||||
packet.writeDouble(getTransmitter().temperature);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void writeDesc(MCDataOutput packet)
|
|
||||||
{
|
|
||||||
packet.writeBoolean(false);
|
|
||||||
|
|
||||||
super.writeDesc(packet);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void readDesc(MCDataInput packet)
|
|
||||||
{
|
|
||||||
if(packet.readBoolean())
|
|
||||||
{
|
|
||||||
getTransmitter().temperature = packet.readDouble();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
super.readDesc(packet);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public ColourRGBA getBaseColour()
|
|
||||||
{
|
|
||||||
return getTransmitter().material.baseColour;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MultipartHeatTransmitter getTransmitter()
|
|
||||||
{
|
|
||||||
return (MultipartHeatTransmitter)transmitterDelegate;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -131,8 +131,14 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart,
|
||||||
return new PartRestrictiveTransporter();
|
return new PartRestrictiveTransporter();
|
||||||
case DIVERSION_TRANSPORTER:
|
case DIVERSION_TRANSPORTER:
|
||||||
return new PartDiversionTransporter();
|
return new PartDiversionTransporter();
|
||||||
case HEAT_TRANSMITTER:
|
case THERMODYNAMIC_CONDUCTOR_BASIC:
|
||||||
return new PartHeatTransmitter();
|
return new PartThermodynamicConductor(Tier.ConductorTier.BASIC);
|
||||||
|
case THERMODYNAMIC_CONDUCTOR_ADVANCED:
|
||||||
|
return new PartThermodynamicConductor(Tier.ConductorTier.ADVANCED);
|
||||||
|
case THERMODYNAMIC_CONDUCTOR_ELITE:
|
||||||
|
return new PartThermodynamicConductor(Tier.ConductorTier.ELITE);
|
||||||
|
case THERMODYNAMIC_CONDUCTOR_ULTIMATE:
|
||||||
|
return new PartThermodynamicConductor(Tier.ConductorTier.ULTIMATE);
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,274 @@
|
||||||
|
package mekanism.common.multipart;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
import mekanism.api.Coord4D;
|
||||||
|
import mekanism.api.IHeatTransfer;
|
||||||
|
import mekanism.api.transmitters.TransmissionType;
|
||||||
|
import mekanism.client.render.RenderPartTransmitter;
|
||||||
|
import mekanism.common.HeatNetwork;
|
||||||
|
import mekanism.common.Tier;
|
||||||
|
import mekanism.common.Tier.BaseTier;
|
||||||
|
import mekanism.common.Tier.ConductorTier;
|
||||||
|
import mekanism.common.util.HeatUtils;
|
||||||
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.IIcon;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
import codechicken.lib.colour.ColourRGBA;
|
||||||
|
import codechicken.lib.data.MCDataInput;
|
||||||
|
import codechicken.lib.data.MCDataOutput;
|
||||||
|
import codechicken.lib.vec.Vector3;
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
public class PartThermodynamicConductor extends PartTransmitter<IHeatTransfer, HeatNetwork> implements IHeatTransfer
|
||||||
|
{
|
||||||
|
public Tier.ConductorTier tier;
|
||||||
|
|
||||||
|
public static TransmitterIcons conductorIcons = new TransmitterIcons(4, 8);
|
||||||
|
|
||||||
|
public double temperature = 0;
|
||||||
|
public double clientTemperature = 0;
|
||||||
|
public double heatToAbsorb = 0;
|
||||||
|
|
||||||
|
public PartThermodynamicConductor(Tier.ConductorTier conductorTier)
|
||||||
|
{
|
||||||
|
super();
|
||||||
|
tier = conductorTier;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HeatNetwork createNewNetwork()
|
||||||
|
{
|
||||||
|
return new HeatNetwork();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HeatNetwork createNetworkByMerging(Collection networks)
|
||||||
|
{
|
||||||
|
return new HeatNetwork(networks);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getCapacity()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object getBuffer()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void takeShare() {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateShare() {}
|
||||||
|
|
||||||
|
public static void registerIcons(IIconRegister register)
|
||||||
|
{
|
||||||
|
conductorIcons.registerCenterIcons(register, new String[] {"ThermodynamicConductorBasic", "ThermodynamicConductorAdvanced",
|
||||||
|
"ThermodynamicConductorElite", "ThermodynamicConductorUltimate"});
|
||||||
|
conductorIcons.registerSideIcons(register, new String[] {"SmallTransmitterVerticalBasic", "SmallTransmitterVerticalAdvanced", "SmallTransmitterVerticalElite", "SmallTransmitterVerticalUltimate",
|
||||||
|
"SmallTransmitterHorizontalBasic", "SmallTransmitterHorizontalAdvanced", "SmallTransmitterHorizontalElite", "SmallTransmitterHorizontalUltimate"});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IIcon getCenterIcon(boolean opaque)
|
||||||
|
{
|
||||||
|
return conductorIcons.getCenterIcon(tier.ordinal());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IIcon getSideIcon(boolean opaque)
|
||||||
|
{
|
||||||
|
return conductorIcons.getSideIcon(tier.ordinal());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IIcon getSideIconRotated(boolean opaque)
|
||||||
|
{
|
||||||
|
return conductorIcons.getSideIcon(4+tier.ordinal());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TransmitterType getTransmitterType()
|
||||||
|
{
|
||||||
|
return tier.type;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isValidAcceptor(TileEntity tile, ForgeDirection side)
|
||||||
|
{
|
||||||
|
return tile instanceof IHeatTransfer && ((IHeatTransfer)tile).canConnectHeat(side.getOpposite());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TransmissionType getTransmissionType()
|
||||||
|
{
|
||||||
|
return TransmissionType.HEAT;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getType()
|
||||||
|
{
|
||||||
|
return "mekanism:thermodynamic_conductor_" + tier.name().toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean onConfigure(EntityPlayer player, int part, int side)
|
||||||
|
{
|
||||||
|
temperature += 10000;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public void renderDynamic(Vector3 pos, float f, int pass)
|
||||||
|
{
|
||||||
|
if(pass == 0)
|
||||||
|
{
|
||||||
|
RenderPartTransmitter.getInstance().renderContents(this, pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void load(NBTTagCompound nbtTags)
|
||||||
|
{
|
||||||
|
super.load(nbtTags);
|
||||||
|
|
||||||
|
temperature = nbtTags.getDouble("temperature");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void save(NBTTagCompound nbtTags)
|
||||||
|
{
|
||||||
|
super.save(nbtTags);
|
||||||
|
|
||||||
|
nbtTags.setDouble("temperature", temperature);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendTemp()
|
||||||
|
{
|
||||||
|
MCDataOutput packet = getWriteStream();
|
||||||
|
packet.writeBoolean(true);
|
||||||
|
packet.writeDouble(temperature);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeDesc(MCDataOutput packet)
|
||||||
|
{
|
||||||
|
packet.writeBoolean(false);
|
||||||
|
|
||||||
|
super.writeDesc(packet);
|
||||||
|
|
||||||
|
packet.writeInt(tier.ordinal());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readDesc(MCDataInput packet)
|
||||||
|
{
|
||||||
|
if(packet.readBoolean())
|
||||||
|
{
|
||||||
|
temperature = packet.readDouble();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
super.readDesc(packet);
|
||||||
|
|
||||||
|
tier = ConductorTier.values()[packet.readInt()];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ColourRGBA getBaseColour()
|
||||||
|
{
|
||||||
|
return tier.baseColour;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getTemp()
|
||||||
|
{
|
||||||
|
return temperature;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getInverseConductionCoefficient()
|
||||||
|
{
|
||||||
|
return tier.inverseConduction;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getInsulationCoefficient(ForgeDirection side)
|
||||||
|
{
|
||||||
|
return tier.inverseConductionInsulation;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void transferHeatTo(double heat)
|
||||||
|
{
|
||||||
|
heatToAbsorb += heat;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double[] simulateHeat()
|
||||||
|
{
|
||||||
|
return HeatUtils.simulate(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double applyTemperatureChange()
|
||||||
|
{
|
||||||
|
temperature += tier.inverseHeatCapacity * heatToAbsorb;
|
||||||
|
heatToAbsorb = 0;
|
||||||
|
|
||||||
|
if(Math.abs(temperature - clientTemperature) > (temperature / 100))
|
||||||
|
{
|
||||||
|
clientTemperature = temperature;
|
||||||
|
sendTemp();
|
||||||
|
}
|
||||||
|
|
||||||
|
return temperature;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canConnectHeat(ForgeDirection side)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IHeatTransfer getAdjacent(ForgeDirection side)
|
||||||
|
{
|
||||||
|
if(connectionMapContainsSide(getAllCurrentConnections(), side))
|
||||||
|
{
|
||||||
|
TileEntity adj = Coord4D.get(tile()).getFromSide(side).getTileEntity(world());
|
||||||
|
|
||||||
|
if(adj instanceof IHeatTransfer)
|
||||||
|
{
|
||||||
|
return (IHeatTransfer)adj;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean upgrade(int tierOrdinal)
|
||||||
|
{
|
||||||
|
if(tier.ordinal() < BaseTier.ULTIMATE.ordinal() && tierOrdinal == tier.ordinal()+1)
|
||||||
|
{
|
||||||
|
tier = ConductorTier.values()[tier.ordinal()+1];
|
||||||
|
|
||||||
|
markDirtyTransmitters();
|
||||||
|
sendDesc = true;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
|
@ -24,7 +24,10 @@ public enum TransmitterType
|
||||||
LOGISTICAL_TRANSPORTER_ULTIMATE("UltimateLogisticalTransporter", BaseTier.ULTIMATE, Size.LARGE, TransmissionType.ITEM, PartLogisticalTransporter.transporterIcons, true, 3, 3, 6, 10),
|
LOGISTICAL_TRANSPORTER_ULTIMATE("UltimateLogisticalTransporter", BaseTier.ULTIMATE, Size.LARGE, TransmissionType.ITEM, PartLogisticalTransporter.transporterIcons, true, 3, 3, 6, 10),
|
||||||
RESTRICTIVE_TRANSPORTER("RestrictiveTransporter", BaseTier.BASIC, Size.LARGE, TransmissionType.ITEM, PartLogisticalTransporter.transporterIcons, false, 4, 8),
|
RESTRICTIVE_TRANSPORTER("RestrictiveTransporter", BaseTier.BASIC, Size.LARGE, TransmissionType.ITEM, PartLogisticalTransporter.transporterIcons, false, 4, 8),
|
||||||
DIVERSION_TRANSPORTER("DiversionTransporter", BaseTier.BASIC, Size.LARGE, TransmissionType.ITEM, PartLogisticalTransporter.transporterIcons, true, 5, 14, 6, 10),
|
DIVERSION_TRANSPORTER("DiversionTransporter", BaseTier.BASIC, Size.LARGE, TransmissionType.ITEM, PartLogisticalTransporter.transporterIcons, true, 5, 14, 6, 10),
|
||||||
HEAT_TRANSMITTER("HeatTransmitter", BaseTier.BASIC, Size.SMALL, TransmissionType.HEAT, PartHeatTransmitter.heatIcons, false, 0, 0);
|
THERMODYNAMIC_CONDUCTOR_BASIC("BasicThermodynamicConductor", BaseTier.BASIC, Size.SMALL, TransmissionType.HEAT, PartThermodynamicConductor.conductorIcons, false, 0, 0),
|
||||||
|
THERMODYNAMIC_CONDUCTOR_ADVANCED("AdvancedThermodynamicConductor", BaseTier.ADVANCED, Size.SMALL, TransmissionType.HEAT, PartThermodynamicConductor.conductorIcons, false, 1, 1),
|
||||||
|
THERMODYNAMIC_CONDUCTOR_ELITE("EliteThermodynamicConductor", BaseTier.ELITE, Size.SMALL, TransmissionType.HEAT, PartThermodynamicConductor.conductorIcons, false, 2, 2),
|
||||||
|
THERMODYNAMIC_CONDUCTOR_ULTIMATE("UltimateThermodynamicConductor", BaseTier.ULTIMATE, Size.SMALL, TransmissionType.HEAT, PartThermodynamicConductor.conductorIcons, false, 3, 3);
|
||||||
|
|
||||||
private String unlocalizedName;
|
private String unlocalizedName;
|
||||||
private Size size;
|
private Size size;
|
||||||
|
|
|
@ -53,7 +53,7 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora
|
||||||
|
|
||||||
public float biomeTemp = 0;
|
public float biomeTemp = 0;
|
||||||
public float temperature = 0;
|
public float temperature = 0;
|
||||||
public float tempToAdd = 0;
|
public float heatToAbsorb = 0;
|
||||||
|
|
||||||
public float lastGain = 0;
|
public float lastGain = 0;
|
||||||
|
|
||||||
|
@ -328,8 +328,8 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora
|
||||||
temperatureSet = true;
|
temperatureSet = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
tempToAdd += getActiveSolars()*general.evaporationSolarMultiplier;
|
heatToAbsorb += getActiveSolars()*general.evaporationSolarMultiplier;
|
||||||
temperature += tempToAdd/(float)height;
|
temperature += heatToAbsorb/(float)height;
|
||||||
|
|
||||||
float biome = biomeTemp-0.5F;
|
float biome = biomeTemp-0.5F;
|
||||||
float base = biome > 0 ? biome*20 : biomeTemp*40;
|
float base = biome > 0 ? biome*20 : biomeTemp*40;
|
||||||
|
@ -342,7 +342,7 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora
|
||||||
|
|
||||||
temperature = (float)Math.min(general.evaporationMaxTemp, temperature + incr/(float)height);
|
temperature = (float)Math.min(general.evaporationMaxTemp, temperature + incr/(float)height);
|
||||||
|
|
||||||
tempToAdd = 0;
|
heatToAbsorb = 0;
|
||||||
|
|
||||||
MekanismUtils.saveChunk(this);
|
MekanismUtils.saveChunk(this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,13 @@
|
||||||
package mekanism.common.tile;
|
package mekanism.common.tile;
|
||||||
|
|
||||||
import cpw.mods.fml.common.FMLCommonHandler;
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import mekanism.api.Chunk3D;
|
import mekanism.api.Chunk3D;
|
||||||
import mekanism.api.Coord4D;
|
import mekanism.api.Coord4D;
|
||||||
import mekanism.common.Mekanism;
|
import mekanism.common.Mekanism;
|
||||||
|
@ -13,6 +17,7 @@ import mekanism.common.block.BlockMachine.MachineType;
|
||||||
import mekanism.common.chunkloading.IChunkLoader;
|
import mekanism.common.chunkloading.IChunkLoader;
|
||||||
import mekanism.common.frequency.Frequency;
|
import mekanism.common.frequency.Frequency;
|
||||||
import mekanism.common.frequency.FrequencyManager;
|
import mekanism.common.frequency.FrequencyManager;
|
||||||
|
import mekanism.common.frequency.IFrequencyHandler;
|
||||||
import mekanism.common.integration.IComputerIntegration;
|
import mekanism.common.integration.IComputerIntegration;
|
||||||
import mekanism.common.network.PacketPortalFX.PortalFXMessage;
|
import mekanism.common.network.PacketPortalFX.PortalFXMessage;
|
||||||
import mekanism.common.network.PacketTileEntity.TileEntityMessage;
|
import mekanism.common.network.PacketTileEntity.TileEntityMessage;
|
||||||
|
@ -35,10 +40,11 @@ import net.minecraftforge.common.ForgeChunkManager;
|
||||||
import net.minecraftforge.common.ForgeChunkManager.Ticket;
|
import net.minecraftforge.common.ForgeChunkManager.Ticket;
|
||||||
import net.minecraftforge.common.ForgeChunkManager.Type;
|
import net.minecraftforge.common.ForgeChunkManager.Type;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
import cpw.mods.fml.common.FMLCommonHandler;
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
import java.util.*;
|
public class TileEntityTeleporter extends TileEntityElectricBlock implements IComputerIntegration, IChunkLoader, IFrequencyHandler
|
||||||
|
|
||||||
public class TileEntityTeleporter extends TileEntityElectricBlock implements IComputerIntegration, IChunkLoader
|
|
||||||
{
|
{
|
||||||
private MinecraftServer server = MinecraftServer.getServer();
|
private MinecraftServer server = MinecraftServer.getServer();
|
||||||
|
|
||||||
|
@ -141,6 +147,12 @@ public class TileEntityTeleporter extends TileEntityElectricBlock implements ICo
|
||||||
ChargeUtils.discharge(0, this);
|
ChargeUtils.discharge(0, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Frequency getFrequency()
|
||||||
|
{
|
||||||
|
return frequency;
|
||||||
|
}
|
||||||
|
|
||||||
public Coord4D getClosest()
|
public Coord4D getClosest()
|
||||||
{
|
{
|
||||||
if(frequency != null)
|
if(frequency != null)
|
||||||
|
|
|
@ -180,6 +180,10 @@ item.MultipartTransmitter.EliteLogisticalTransporter.name=Elite Logistical Trans
|
||||||
item.MultipartTransmitter.UltimateLogisticalTransporter.name=Ultimate Logistical Transporter
|
item.MultipartTransmitter.UltimateLogisticalTransporter.name=Ultimate Logistical Transporter
|
||||||
item.MultipartTransmitter.RestrictiveTransporter.name=Restrictive Transporter
|
item.MultipartTransmitter.RestrictiveTransporter.name=Restrictive Transporter
|
||||||
item.MultipartTransmitter.DiversionTransporter.name=Diversion Transporter
|
item.MultipartTransmitter.DiversionTransporter.name=Diversion Transporter
|
||||||
|
item.MultipartTransmitter.BasicThermodynamicConductor.name=Basic Thermodynamic Conductor
|
||||||
|
item.MultipartTransmitter.AdvancedThermodynamicConductor.name=Advanced Thermodynamic Conductor
|
||||||
|
item.MultipartTransmitter.EliteThermodynamicConductor.name=Elite Thermodynamic Conductor
|
||||||
|
item.MultipartTransmitter.UltimateThermodynamicConductor.name=Ultimate Thermodynamic Conductor
|
||||||
|
|
||||||
//Glow Panel
|
//Glow Panel
|
||||||
item.GlowPanel.name=Glow Panel
|
item.GlowPanel.name=Glow Panel
|
||||||
|
@ -684,6 +688,7 @@ tooltip.insufficientFuel=Insufficient Fuel
|
||||||
tooltip.readyForReaction=Ready for Reaction
|
tooltip.readyForReaction=Ready for Reaction
|
||||||
tooltip.speed=Speed
|
tooltip.speed=Speed
|
||||||
tooltip.and=and
|
tooltip.and=and
|
||||||
|
tooltip.heat=Heat
|
||||||
|
|
||||||
tooltip.portableTank.bucketMode=Bucket Mode
|
tooltip.portableTank.bucketMode=Bucket Mode
|
||||||
|
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 1.7 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
Loading…
Reference in a new issue