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.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
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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[] {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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))
|
||||
{
|
||||
|
|
|
@ -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"));
|
||||
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()));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
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"))
|
||||
{
|
||||
|
|
|
@ -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();
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -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),
|
||||
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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 |
Loading…
Reference in a new issue