diff --git a/mechanical/src/main/java/resonantinduction/mechanical/fluid/transport/RenderPump.java b/mechanical/src/main/java/resonantinduction/mechanical/fluid/transport/RenderPump.java index 7c5a11f1..0eedf134 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/fluid/transport/RenderPump.java +++ b/mechanical/src/main/java/resonantinduction/mechanical/fluid/transport/RenderPump.java @@ -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 notRendered = new ArrayList(); + + 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(); } } diff --git a/mechanical/src/main/java/resonantinduction/mechanical/fluid/transport/TilePump.java b/mechanical/src/main/java/resonantinduction/mechanical/fluid/transport/TilePump.java index 5ed43113..49c4a88a 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/fluid/transport/TilePump.java +++ b/mechanical/src/main/java/resonantinduction/mechanical/fluid/transport/TilePump.java @@ -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; + } } diff --git a/mechanical/src/main/java/resonantinduction/mechanical/network/TileMechanical.java b/mechanical/src/main/java/resonantinduction/mechanical/network/TileMechanical.java index f2497e5d..899d857d 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/network/TileMechanical.java +++ b/mechanical/src/main/java/resonantinduction/mechanical/network/TileMechanical.java @@ -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; - torque *= getLoad(); - angularVelocity *= getLoad(); + + 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);