Some pipe fixes and added gravity pressure
This commit is contained in:
parent
f0eed8c32f
commit
3b137cfca7
5 changed files with 69 additions and 22 deletions
|
@ -293,11 +293,14 @@ public class PartMultimeter extends PartFace implements IConnector<MultimeterNet
|
|||
{
|
||||
FluidTankInfo[] fluidInfo = ((IFluidHandler) tileEntity).getTankInfo(receivingSide);
|
||||
|
||||
for (FluidTankInfo info : fluidInfo)
|
||||
if (fluidInfo != null)
|
||||
{
|
||||
if (info != null)
|
||||
if (info.fluid != null)
|
||||
getNetwork().fluidGraph.queue(info.fluid.amount);
|
||||
for (FluidTankInfo info : fluidInfo)
|
||||
{
|
||||
if (info != null)
|
||||
if (info.fluid != null)
|
||||
getNetwork().fluidGraph.queue(info.fluid.amount);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ import resonantinduction.core.prefab.part.PartFramedConnection;
|
|||
import resonantinduction.mechanical.Mechanical;
|
||||
import universalelectricity.api.energy.IConductor;
|
||||
import calclavia.lib.utility.WrenchUtility;
|
||||
import codechicken.lib.data.MCDataInput;
|
||||
import codechicken.lib.render.CCRenderState;
|
||||
import codechicken.lib.render.IconTransformation;
|
||||
import codechicken.lib.render.RenderUtils;
|
||||
|
@ -55,9 +56,33 @@ public class PartPipe extends PartFramedConnection<EnumPipeMaterial, IFluidPipe,
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean doesTick()
|
||||
public void update()
|
||||
{
|
||||
return false;
|
||||
super.update();
|
||||
|
||||
if (!world().isRemote)
|
||||
if (ticks % 20 == 0)
|
||||
sendFluidUpdate();
|
||||
}
|
||||
|
||||
public void sendFluidUpdate()
|
||||
{
|
||||
NBTTagCompound nbt = new NBTTagCompound();
|
||||
tank.writeToNBT(nbt);
|
||||
tile().getWriteStream(this).writeByte(1).writeNBTTagCompound(nbt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(MCDataInput packet, int packetID)
|
||||
{
|
||||
if (packetID == 1)
|
||||
{
|
||||
this.tank.readFromNBT(packet.readNBTTagCompound());
|
||||
}
|
||||
else
|
||||
{
|
||||
super.read(packet, packetID);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -25,6 +25,8 @@ public class RenderPipe
|
|||
|
||||
public void render(PartPipe part, double x, double y, double z, float f)
|
||||
{
|
||||
GL11.glPushMatrix();
|
||||
|
||||
FluidStack fluid = part.getInternalTank().getFluid();
|
||||
int capacity = part.getInternalTank().getCapacity();
|
||||
byte renderSides = part.getAllCurrentConnections();
|
||||
|
@ -42,8 +44,8 @@ public class RenderPipe
|
|||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
GL11.glTranslatef((float) x + 0.3f, (float) y + 0.35f, (float) z + 0.3f);
|
||||
GL11.glScalef(0.4f, 0.3f, 0.4f);
|
||||
GL11.glTranslatef((float) x + 0.35f, (float) y + 0.35f, (float) z + 0.35f);
|
||||
GL11.glScalef(0.3f, 0.3f, 0.3f);
|
||||
|
||||
GL11.glCallList(displayList[(int) (percentage * (RenderFluidHelper.DISPLAY_STAGES - 1))]);
|
||||
|
||||
|
@ -63,21 +65,27 @@ public class RenderPipe
|
|||
|
||||
switch (direction.ordinal())
|
||||
{
|
||||
case 4:
|
||||
GL11.glTranslatef((float) x + 0F, (float) y + 0.35f, (float) z + 0.3F);
|
||||
case 0:
|
||||
GL11.glTranslatef((float) x + 0.35F, (float) y - 0f, (float) z + 0.35F);
|
||||
break;
|
||||
case 5:
|
||||
GL11.glTranslatef((float) x + 0.7F, (float) y + 0.35f, (float) z + 0.3F);
|
||||
case 1:
|
||||
GL11.glTranslatef((float) x + 0.35F, (float) y + 0.65f, (float) z + 0.35F);
|
||||
break;
|
||||
case 2:
|
||||
GL11.glTranslatef((float) x + 0.3F, (float) y + 0.35f, (float) z + 0F);
|
||||
GL11.glTranslatef((float) x + 0.35F, (float) y + 0.35f, (float) z + 0F);
|
||||
break;
|
||||
case 3:
|
||||
GL11.glTranslatef((float) x + 0.3F, (float) y + 0.35f, (float) z + 0.7F);
|
||||
GL11.glTranslatef((float) x + 0.35F, (float) y + 0.35f, (float) z + 0.65F);
|
||||
break;
|
||||
case 4:
|
||||
GL11.glTranslatef((float) x + 0F, (float) y + 0.35f, (float) z + 0.35F);
|
||||
break;
|
||||
case 5:
|
||||
GL11.glTranslatef((float) x + 0.65F, (float) y + 0.35f, (float) z + 0.35F);
|
||||
break;
|
||||
}
|
||||
|
||||
GL11.glScalef(0.4f, 0.3f, 0.4f);
|
||||
GL11.glScalef(0.3f, 0.3f, 0.3f);
|
||||
GL11.glCallList(displayList[(int) (percentage * (RenderFluidHelper.DISPLAY_STAGES - 1))]);
|
||||
|
||||
GL11.glPopAttrib();
|
||||
|
@ -85,6 +93,7 @@ public class RenderPipe
|
|||
}
|
||||
}
|
||||
}
|
||||
GL11.glPopMatrix();
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F);
|
||||
|
|
|
@ -83,11 +83,11 @@ public class TilePump extends TileAdvanced implements IFluidHandler, IRotatable,
|
|||
{
|
||||
if (dir == getDirection())
|
||||
{
|
||||
return 20;
|
||||
return 100;
|
||||
}
|
||||
else if (dir == getDirection().getOpposite())
|
||||
{
|
||||
return -25;
|
||||
return -100;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -114,6 +114,15 @@ public class PipeNetwork extends FluidNetwork
|
|||
if (obj instanceof IPressure)
|
||||
{
|
||||
int pressure = ((IPressure) obj).getPressure(ForgeDirection.getOrientation(i).getOpposite());
|
||||
|
||||
/**
|
||||
* Apply "gravity pressure"
|
||||
*/
|
||||
if (i == 0)
|
||||
pressure -= 25;
|
||||
else if (i == 1)
|
||||
pressure += 25;
|
||||
|
||||
minPressure = Math.min(pressure, minPressure);
|
||||
maxPressure = Math.max(pressure, maxPressure);
|
||||
totalPressure += pressure;
|
||||
|
@ -131,9 +140,9 @@ public class PipeNetwork extends FluidNetwork
|
|||
* Create pressure loss.
|
||||
*/
|
||||
if (minPressure < 0)
|
||||
minPressure++;
|
||||
minPressure += 1;
|
||||
if (maxPressure > 0)
|
||||
maxPressure--;
|
||||
maxPressure -= 1;
|
||||
|
||||
sourcePipe.setPressure(Math.max(minPressure, Math.min(maxPressure, totalPressure / findCount + Integer.signum(totalPressure))));
|
||||
}
|
||||
|
@ -161,10 +170,11 @@ public class PipeNetwork extends FluidNetwork
|
|||
if (pressureA >= pressureB)
|
||||
{
|
||||
FluidTank tankA = sourcePipe.getInternalTank();
|
||||
FluidStack fluidA = tankA.getFluid();
|
||||
|
||||
if (tankA != null)
|
||||
if (tankA != null && fluidA != null)
|
||||
{
|
||||
int amountA = tankA.getFluidAmount();
|
||||
int amountA = fluidA.amount;
|
||||
|
||||
if (amountA > 0)
|
||||
{
|
||||
|
@ -180,7 +190,7 @@ public class PipeNetwork extends FluidNetwork
|
|||
if (quantity > 0)
|
||||
{
|
||||
tankA.drain(quantity, true);
|
||||
tankB.fill(new FluidStack(tankA.getFluid().getFluid(), quantity), true);
|
||||
tankB.fill(new FluidStack(fluidA.getFluid(), quantity), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue