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;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
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.glRotatef(90, 0, 1, 0);
|
||||
|
||||
if (tile.worldObj != null)
|
||||
RenderUtility.rotateBlockBasedOnDirection(tile.getDirection());
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,15 +6,14 @@ import net.minecraftforge.fluids.Fluid;
|
|||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.FluidTankInfo;
|
||||
import net.minecraftforge.fluids.IFluidHandler;
|
||||
import resonantinduction.api.mechanical.fluid.IFluidPipe;
|
||||
import resonantinduction.api.mechanical.fluid.IPressure;
|
||||
import resonantinduction.mechanical.network.TileMechanical;
|
||||
import universalelectricity.api.vector.Vector3;
|
||||
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
|
||||
public int fill(ForgeDirection from, FluidStack resource, boolean doFill)
|
||||
|
@ -75,7 +74,6 @@ public class TilePump extends TileAdvanced implements IFluidHandler, IRotatable,
|
|||
@Override
|
||||
public void setPressure(int amount)
|
||||
{
|
||||
pressure = amount;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -83,14 +81,19 @@ public class TilePump extends TileAdvanced implements IFluidHandler, IRotatable,
|
|||
{
|
||||
if (dir == getDirection())
|
||||
{
|
||||
return 100;
|
||||
return (int) (((double) getPower() / (double) maximumPower) * 100);
|
||||
}
|
||||
else if (dir == getDirection().getOpposite())
|
||||
{
|
||||
return -100;
|
||||
return (int) -(((double) getPower() / (double) maximumPower) * 100);
|
||||
}
|
||||
|
||||
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.core.ResonantInduction;
|
||||
import resonantinduction.mechanical.Mechanical;
|
||||
import resonantinduction.mechanical.fluid.transport.TilePump;
|
||||
import resonantinduction.mechanical.gear.PartGearShaft;
|
||||
import universalelectricity.api.vector.Vector3;
|
||||
import calclavia.lib.network.IPacketReceiver;
|
||||
|
@ -43,9 +44,14 @@ public abstract class TileMechanical extends TileAdvanced implements IMechanical
|
|||
public void updateEntity()
|
||||
{
|
||||
super.updateEntity();
|
||||
|
||||
angle += angularVelocity / 20;
|
||||
|
||||
if (!worldObj.isRemote)
|
||||
{
|
||||
torque *= getLoad();
|
||||
angularVelocity *= getLoad();
|
||||
}
|
||||
|
||||
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()
|
||||
{
|
||||
PacketHandler.sendPacketToClients(ResonantInduction.PACKET_TILE.getPacket(this, PACKET_VELOCITY, angularVelocity), worldObj, new Vector3(this), 20);
|
||||
|
|
Loading…
Reference in a new issue