Pump now requires mechanical power
This commit is contained in:
parent
59601d27bb
commit
41b89bed23
3 changed files with 45 additions and 10 deletions
|
@ -1,5 +1,8 @@
|
||||||
package resonantinduction.mechanical.fluid.transport;
|
package resonantinduction.mechanical.fluid.transport;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
@ -24,11 +27,29 @@ public class RenderPump extends TileEntitySpecialRenderer
|
||||||
GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5);
|
GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5);
|
||||||
|
|
||||||
GL11.glRotatef(90, 0, 1, 0);
|
GL11.glRotatef(90, 0, 1, 0);
|
||||||
|
|
||||||
if (tile.worldObj != null)
|
if (tile.worldObj != null)
|
||||||
RenderUtility.rotateBlockBasedOnDirection(tile.getDirection());
|
RenderUtility.rotateBlockBasedOnDirection(tile.getDirection());
|
||||||
|
|
||||||
bindTexture(TEXTURE);
|
bindTexture(TEXTURE);
|
||||||
MODEL.renderAll();
|
|
||||||
|
List<String> notRendered = new ArrayList<String>();
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glRotated(Math.toDegrees(tile.angle), 0, 0, 1);
|
||||||
|
|
||||||
|
for (int i = 1; i <= 12; i++)
|
||||||
|
{
|
||||||
|
String fin = "fin" + i;
|
||||||
|
String innerFin = "innerFin" + i;
|
||||||
|
notRendered.add(fin);
|
||||||
|
notRendered.add(innerFin);
|
||||||
|
MODEL.renderOnly(fin, innerFin);
|
||||||
|
}
|
||||||
|
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
|
||||||
|
MODEL.renderAllExcept(notRendered.toArray(new String[0]));
|
||||||
GL11.glPopMatrix();
|
GL11.glPopMatrix();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,15 +6,14 @@ import net.minecraftforge.fluids.Fluid;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
import net.minecraftforge.fluids.FluidTankInfo;
|
import net.minecraftforge.fluids.FluidTankInfo;
|
||||||
import net.minecraftforge.fluids.IFluidHandler;
|
import net.minecraftforge.fluids.IFluidHandler;
|
||||||
import resonantinduction.api.mechanical.fluid.IFluidPipe;
|
|
||||||
import resonantinduction.api.mechanical.fluid.IPressure;
|
import resonantinduction.api.mechanical.fluid.IPressure;
|
||||||
|
import resonantinduction.mechanical.network.TileMechanical;
|
||||||
import universalelectricity.api.vector.Vector3;
|
import universalelectricity.api.vector.Vector3;
|
||||||
import calclavia.lib.prefab.tile.IRotatable;
|
import calclavia.lib.prefab.tile.IRotatable;
|
||||||
import calclavia.lib.prefab.tile.TileAdvanced;
|
|
||||||
|
|
||||||
public class TilePump extends TileAdvanced implements IFluidHandler, IRotatable, IPressure
|
public class TilePump extends TileMechanical implements IFluidHandler, IRotatable, IPressure
|
||||||
{
|
{
|
||||||
private int pressure;
|
public long maximumPower = 10000;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int fill(ForgeDirection from, FluidStack resource, boolean doFill)
|
public int fill(ForgeDirection from, FluidStack resource, boolean doFill)
|
||||||
|
@ -75,7 +74,6 @@ public class TilePump extends TileAdvanced implements IFluidHandler, IRotatable,
|
||||||
@Override
|
@Override
|
||||||
public void setPressure(int amount)
|
public void setPressure(int amount)
|
||||||
{
|
{
|
||||||
pressure = amount;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -83,14 +81,19 @@ public class TilePump extends TileAdvanced implements IFluidHandler, IRotatable,
|
||||||
{
|
{
|
||||||
if (dir == getDirection())
|
if (dir == getDirection())
|
||||||
{
|
{
|
||||||
return 100;
|
return (int) (((double) getPower() / (double) maximumPower) * 100);
|
||||||
}
|
}
|
||||||
else if (dir == getDirection().getOpposite())
|
else if (dir == getDirection().getOpposite())
|
||||||
{
|
{
|
||||||
return -100;
|
return (int) -(((double) getPower() / (double) maximumPower) * 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canConnect(ForgeDirection from, Object source)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ import resonantinduction.api.mechanical.IMechanical;
|
||||||
import resonantinduction.api.mechanical.IMechanicalNetwork;
|
import resonantinduction.api.mechanical.IMechanicalNetwork;
|
||||||
import resonantinduction.core.ResonantInduction;
|
import resonantinduction.core.ResonantInduction;
|
||||||
import resonantinduction.mechanical.Mechanical;
|
import resonantinduction.mechanical.Mechanical;
|
||||||
|
import resonantinduction.mechanical.fluid.transport.TilePump;
|
||||||
import resonantinduction.mechanical.gear.PartGearShaft;
|
import resonantinduction.mechanical.gear.PartGearShaft;
|
||||||
import universalelectricity.api.vector.Vector3;
|
import universalelectricity.api.vector.Vector3;
|
||||||
import calclavia.lib.network.IPacketReceiver;
|
import calclavia.lib.network.IPacketReceiver;
|
||||||
|
@ -43,9 +44,14 @@ public abstract class TileMechanical extends TileAdvanced implements IMechanical
|
||||||
public void updateEntity()
|
public void updateEntity()
|
||||||
{
|
{
|
||||||
super.updateEntity();
|
super.updateEntity();
|
||||||
|
|
||||||
angle += angularVelocity / 20;
|
angle += angularVelocity / 20;
|
||||||
torque *= getLoad();
|
|
||||||
angularVelocity *= getLoad();
|
if (!worldObj.isRemote)
|
||||||
|
{
|
||||||
|
torque *= getLoad();
|
||||||
|
angularVelocity *= getLoad();
|
||||||
|
}
|
||||||
|
|
||||||
if (Math.abs(prevAngularVelocity - angularVelocity) > 0.01f)
|
if (Math.abs(prevAngularVelocity - angularVelocity) > 0.01f)
|
||||||
{
|
{
|
||||||
|
@ -60,6 +66,11 @@ public abstract class TileMechanical extends TileAdvanced implements IMechanical
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getPower()
|
||||||
|
{
|
||||||
|
return (long) (torque * angularVelocity);
|
||||||
|
}
|
||||||
|
|
||||||
private void sendRotationPacket()
|
private void sendRotationPacket()
|
||||||
{
|
{
|
||||||
PacketHandler.sendPacketToClients(ResonantInduction.PACKET_TILE.getPacket(this, PACKET_VELOCITY, angularVelocity), worldObj, new Vector3(this), 20);
|
PacketHandler.sendPacketToClients(ResonantInduction.PACKET_TILE.getPacket(this, PACKET_VELOCITY, angularVelocity), worldObj, new Vector3(this), 20);
|
||||||
|
|
Loading…
Reference in a new issue