Work on Thermodynamic Conductors

This commit is contained in:
aidancbrady 2016-02-03 11:08:36 -05:00
parent f19a8f9e64
commit 2bea8ac29a
21 changed files with 451 additions and 331 deletions

View file

@ -10,14 +10,13 @@ import mekanism.client.render.MekanismRenderer.DisplayInteger;
import mekanism.client.render.MekanismRenderer.Model3D;
import mekanism.common.content.transporter.TransporterStack;
import mekanism.common.item.ItemConfigurator;
import mekanism.common.multipart.MultipartTransporter;
import mekanism.common.multipart.PartDiversionTransporter;
import mekanism.common.multipart.PartHeatTransmitter;
import mekanism.common.multipart.PartLogisticalTransporter;
import mekanism.common.multipart.PartMechanicalPipe;
import mekanism.common.multipart.PartPressurizedTube;
import mekanism.common.multipart.PartSidedPipe;
import mekanism.common.multipart.PartSidedPipe.ConnectionType;
import mekanism.common.multipart.PartThermodynamicConductor;
import mekanism.common.multipart.PartUniversalCable;
import mekanism.common.multipart.TransmitterType;
import mekanism.common.multipart.TransmitterType.Size;
@ -271,7 +270,7 @@ public class RenderPartTransmitter implements IIconSelfRegister
pop();
}
public void renderContents(PartHeatTransmitter transmitter, Vector3 pos)
public void renderContents(PartThermodynamicConductor transmitter, Vector3 pos)
{
push();
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));
}
public void renderHeatSide(ForgeDirection side, PartHeatTransmitter cable)
public void renderHeatSide(ForgeDirection side, PartThermodynamicConductor cable)
{
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)
@ -664,7 +663,7 @@ public class RenderPartTransmitter implements IIconSelfRegister
PartMechanicalPipe.registerIcons(register);
PartPressurizedTube.registerIcons(register);
PartLogisticalTransporter.registerIcons(register);
PartHeatTransmitter.registerIcons(register);
PartThermodynamicConductor.registerIcons(register);
}
@Override

View file

@ -1,15 +1,11 @@
package mekanism.common;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.Set;
import mekanism.api.IHeatTransfer;
import mekanism.api.transmitters.DynamicNetwork;
import mekanism.api.transmitters.IGridTransmitter;
import mekanism.api.transmitters.TransmissionType;
import cpw.mods.fml.common.FMLCommonHandler;
public class HeatNetwork extends DynamicNetwork<IHeatTransfer, HeatNetwork>

View file

@ -627,6 +627,18 @@ public class Mekanism
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
}));
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
CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.Polyethene, 1, 1), new Object[] {

View file

@ -5,6 +5,7 @@ import mekanism.api.EnumColor;
import mekanism.common.multipart.TransmitterType;
import mekanism.common.util.LangUtils;
import net.minecraft.util.ResourceLocation;
import codechicken.lib.colour.ColourRGBA;
/**
* 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()
{
for(CableTier tier : CableTier.values())
@ -517,6 +589,11 @@ public final class Tier
{
tier.loadConfig();
}
for(ConductorTier tier : ConductorTier.values())
{
tier.loadConfig();
}
}
public static void readConfig(ByteBuf dataStream)
@ -555,6 +632,11 @@ public final class Tier
{
tier.readConfig(dataStream);
}
for(ConductorTier tier : ConductorTier.values())
{
tier.readConfig(dataStream);
}
}
public static void writeConfig(ByteBuf dataStream)
@ -593,5 +675,10 @@ public final class Tier
{
tier.writeConfig(dataStream);
}
for(ConductorTier tier : ConductorTier.values())
{
tier.writeConfig(dataStream);
}
}
}

View file

@ -9,7 +9,6 @@ import java.util.Iterator;
import java.util.Set;
import mekanism.api.Coord4D;
import mekanism.common.tile.TileEntityTeleporter;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity;
@ -247,12 +246,12 @@ public class FrequencyManager
else {
TileEntity tile = coord.getTileEntity(world);
if(!(tile instanceof TileEntityTeleporter))
if(!(tile instanceof IFrequencyHandler))
{
iter.remove();
}
else {
Frequency freq = ((TileEntityTeleporter)tile).frequency;
Frequency freq = ((IFrequencyHandler)tile).getFrequency();
if(freq == null || !freq.equals(iterFreq))
{

View file

@ -0,0 +1,6 @@
package mekanism.common.frequency;
public interface IFrequencyHandler
{
public Frequency getFrequency();
}

View file

@ -152,6 +152,12 @@ public class ItemPartTransmitter extends JItemMultiPart
list.add("- " + EnumColor.DARK_RED + LangUtils.localize("tooltip.diversionDesc"));
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())
{
if(type == TransmitterType.HEAT_TRANSMITTER) continue; //TODO
listToAddTo.add(new ItemStack(item, 1, type.ordinal()));
}
}

View file

@ -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;
}
}
}

View file

@ -1,21 +1,18 @@
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.Tier;
import mekanism.common.block.BlockMachine.MachineType;
import net.minecraft.item.ItemStack;
import cpw.mods.fml.common.event.FMLInterModComms;
import codechicken.microblock.BlockMicroMaterial;
import codechicken.microblock.MicroMaterialRegistry;
import codechicken.multipart.MultiPartRegistry;
import codechicken.multipart.MultiPartRegistry.IPartFactory;
import codechicken.multipart.MultipartGenerator;
import codechicken.multipart.TMultiPart;
import static mekanism.common.block.BlockMachine.MachineBlock.MACHINE_BLOCK_1;
import static mekanism.common.block.BlockMachine.MachineBlock.MACHINE_BLOCK_2;
import cpw.mods.fml.common.event.FMLInterModComms;
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_elite", "mekanism:logistical_transporter_ultimate",
"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.energy.IStrictEnergyAcceptor");
@ -136,9 +135,21 @@ public class MultipartMekanism implements IPartFactory
{
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"))
{

View file

@ -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;
}
}

View file

@ -131,8 +131,14 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart,
return new PartRestrictiveTransporter();
case DIVERSION_TRANSPORTER:
return new PartDiversionTransporter();
case HEAT_TRANSMITTER:
return new PartHeatTransmitter();
case THERMODYNAMIC_CONDUCTOR_BASIC:
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:
return null;
}

View file

@ -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;
}
}

View file

@ -24,7 +24,10 @@ public enum TransmitterType
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),
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 Size size;

View file

@ -53,7 +53,7 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora
public float biomeTemp = 0;
public float temperature = 0;
public float tempToAdd = 0;
public float heatToAbsorb = 0;
public float lastGain = 0;
@ -328,8 +328,8 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora
temperatureSet = true;
}
tempToAdd += getActiveSolars()*general.evaporationSolarMultiplier;
temperature += tempToAdd/(float)height;
heatToAbsorb += getActiveSolars()*general.evaporationSolarMultiplier;
temperature += heatToAbsorb/(float)height;
float biome = biomeTemp-0.5F;
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);
tempToAdd = 0;
heatToAbsorb = 0;
MekanismUtils.saveChunk(this);
}

View file

@ -1,9 +1,13 @@
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 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.Coord4D;
import mekanism.common.Mekanism;
@ -13,6 +17,7 @@ import mekanism.common.block.BlockMachine.MachineType;
import mekanism.common.chunkloading.IChunkLoader;
import mekanism.common.frequency.Frequency;
import mekanism.common.frequency.FrequencyManager;
import mekanism.common.frequency.IFrequencyHandler;
import mekanism.common.integration.IComputerIntegration;
import mekanism.common.network.PacketPortalFX.PortalFXMessage;
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.Type;
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
public class TileEntityTeleporter extends TileEntityElectricBlock implements IComputerIntegration, IChunkLoader, IFrequencyHandler
{
private MinecraftServer server = MinecraftServer.getServer();
@ -141,6 +147,12 @@ public class TileEntityTeleporter extends TileEntityElectricBlock implements ICo
ChargeUtils.discharge(0, this);
}
@Override
public Frequency getFrequency()
{
return frequency;
}
public Coord4D getClosest()
{
if(frequency != null)

View file

@ -180,6 +180,10 @@ item.MultipartTransmitter.EliteLogisticalTransporter.name=Elite Logistical Trans
item.MultipartTransmitter.UltimateLogisticalTransporter.name=Ultimate Logistical Transporter
item.MultipartTransmitter.RestrictiveTransporter.name=Restrictive 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
item.GlowPanel.name=Glow Panel
@ -684,6 +688,7 @@ tooltip.insufficientFuel=Insufficient Fuel
tooltip.readyForReaction=Ready for Reaction
tooltip.speed=Speed
tooltip.and=and
tooltip.heat=Heat
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