diff --git a/common/mekanism/client/render/RenderPartTransmitter.java b/common/mekanism/client/render/RenderPartTransmitter.java index 09b6b80f7..af2be598c 100644 --- a/common/mekanism/client/render/RenderPartTransmitter.java +++ b/common/mekanism/client/render/RenderPartTransmitter.java @@ -308,7 +308,8 @@ public class RenderPartTransmitter implements IIconRegister CCRenderState.reset(); CCRenderState.useModelColours(true); CCRenderState.setBrightness(transmitter.world(), transmitter.x(), transmitter.y(), transmitter.z()); - for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) + + for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { renderSide(side, transmitter); } @@ -333,13 +334,11 @@ public class RenderPartTransmitter implements IIconRegister } public void renderPart(Icon icon, CCModel cc, double x, double y, double z) { - cc.render(0, cc.verts.length, - new Translation(x, y, z), new IconTransformation(icon), null); + cc.render(0, cc.verts.length, new Translation(x, y, z), new IconTransformation(icon), null); } public void renderTransparency(Icon icon, CCModel cc, Colour colour) { - cc.render(0, cc.verts.length, - new Translation(0, 0, 0), new IconTransformation(icon), new ColourMultiplier(colour)); + cc.render(0, cc.verts.length, new Translation(0, 0, 0), new IconTransformation(icon), new ColourMultiplier(colour)); } public Icon getIconForPart(PartTransmitter part) diff --git a/common/mekanism/common/multipart/MultipartMekanism.java b/common/mekanism/common/multipart/MultipartMekanism.java index c75b4e0fe..1fd52e784 100644 --- a/common/mekanism/common/multipart/MultipartMekanism.java +++ b/common/mekanism/common/multipart/MultipartMekanism.java @@ -27,9 +27,11 @@ public class MultipartMekanism implements IPartFactory public void init() { MultiPartRegistry.registerParts(this, new String[]{"mekanism:universal_cable", "mekanism:mechanical_pipe", "mekanism:pressurized_tube"}); + MultipartGenerator.registerPassThroughInterface("mekanism.api.transmitters.ITransmitter"); MultipartGenerator.registerPassThroughInterface("mekanism.common.ITileNetwork"); MultipartGenerator.registerPassThroughInterface("cofh.api.energy.IEnergyHandler"); + MultipartGenerator.registerPassThroughInterface("universalelectricity.core.block.IElectrical"); MultipartGenerator.registerPassThroughInterface("ic2.api.energy.tile.IEnergySink"); } } diff --git a/common/mekanism/common/multipart/PartUniversalCable.java b/common/mekanism/common/multipart/PartUniversalCable.java index 4c2003ddf..f28f89e61 100644 --- a/common/mekanism/common/multipart/PartUniversalCable.java +++ b/common/mekanism/common/multipart/PartUniversalCable.java @@ -22,13 +22,15 @@ import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.MinecraftForge; import universalelectricity.core.block.IElectrical; +import universalelectricity.core.electricity.ElectricityPack; import buildcraft.api.power.IPowerEmitter; import buildcraft.api.power.IPowerReceptor; import codechicken.lib.vec.Vector3; +import cofh.api.energy.IEnergyHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class PartUniversalCable extends PartTransmitter implements IEnergySink +public class PartUniversalCable extends PartTransmitter implements IEnergySink, IEnergyHandler, IElectrical { public PartUniversalCable() { @@ -208,4 +210,84 @@ public class PartUniversalCable extends PartTransmitter i list.add(Object3D.get(tile()).getFromSide(direction).getTileEntity(world())); return getTransmitterNetwork().emit(i*Mekanism.FROM_IC2, list)*Mekanism.TO_IC2; } + + @Override + public float receiveElectricity(ForgeDirection from, ElectricityPack receive, boolean doReceive) + { + ArrayList list = new ArrayList(); + list.add(Object3D.get(tile()).getFromSide(from).getTileEntity(world())); + + if(doReceive && receive != null && receive.getWatts() > 0) + { + return receive.getWatts() - (float)(getTransmitterNetwork().emit(receive.getWatts()*Mekanism.FROM_UE, list)); + } + + return 0; + } + + @Override + public ElectricityPack provideElectricity(ForgeDirection from, ElectricityPack request, boolean doProvide) + { + return null; + } + + @Override + public float getRequest(ForgeDirection direction) + { + ArrayList list = new ArrayList(); + list.add(Object3D.get(tile()).getFromSide(direction).getTileEntity(world())); + return (float)(getTransmitterNetwork().getEnergyNeeded(list)*Mekanism.TO_UE); + } + + @Override + public float getProvide(ForgeDirection direction) + { + return 0; + } + + @Override + public float getVoltage() + { + return 120; + } + + @Override + public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) + { + ArrayList list = new ArrayList(); + list.add(Object3D.get(tile()).getFromSide(from).getTileEntity(world())); + + if(!simulate) + { + return maxReceive - (int)Math.round(getTransmitterNetwork().emit(maxReceive*Mekanism.FROM_TE, list)*Mekanism.TO_TE); + } + + return 0; + } + + @Override + public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) + { + return 0; + } + + @Override + public boolean canInterface(ForgeDirection from) + { + return true; + } + + @Override + public int getEnergyStored(ForgeDirection from) + { + return 0; + } + + @Override + public int getMaxEnergyStored(ForgeDirection from) + { + ArrayList list = new ArrayList(); + list.add(Object3D.get(tile()).getFromSide(from).getTileEntity(world())); + return (int)Math.round(getTransmitterNetwork().getEnergyNeeded(list)*Mekanism.TO_TE); + } }