Add TE and UE support to multipart cables
This commit is contained in:
parent
5dc8d2fc80
commit
9a4147ab7c
3 changed files with 89 additions and 6 deletions
|
@ -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)
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<EnergyNetwork, Double> implements IEnergySink
|
||||
public class PartUniversalCable extends PartTransmitter<EnergyNetwork, Double> implements IEnergySink, IEnergyHandler, IElectrical
|
||||
{
|
||||
public PartUniversalCable()
|
||||
{
|
||||
|
@ -208,4 +210,84 @@ public class PartUniversalCable extends PartTransmitter<EnergyNetwork, Double> 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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue