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,6 +293,8 @@ public class PartMultimeter extends PartFace implements IConnector<MultimeterNet
|
||||||
{
|
{
|
||||||
FluidTankInfo[] fluidInfo = ((IFluidHandler) tileEntity).getTankInfo(receivingSide);
|
FluidTankInfo[] fluidInfo = ((IFluidHandler) tileEntity).getTankInfo(receivingSide);
|
||||||
|
|
||||||
|
if (fluidInfo != null)
|
||||||
|
{
|
||||||
for (FluidTankInfo info : fluidInfo)
|
for (FluidTankInfo info : fluidInfo)
|
||||||
{
|
{
|
||||||
if (info != null)
|
if (info != null)
|
||||||
|
@ -300,6 +302,7 @@ public class PartMultimeter extends PartFace implements IConnector<MultimeterNet
|
||||||
getNetwork().fluidGraph.queue(info.fluid.amount);
|
getNetwork().fluidGraph.queue(info.fluid.amount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (tileEntity instanceof IPressure)
|
if (tileEntity instanceof IPressure)
|
||||||
{
|
{
|
||||||
|
|
|
@ -21,6 +21,7 @@ import resonantinduction.core.prefab.part.PartFramedConnection;
|
||||||
import resonantinduction.mechanical.Mechanical;
|
import resonantinduction.mechanical.Mechanical;
|
||||||
import universalelectricity.api.energy.IConductor;
|
import universalelectricity.api.energy.IConductor;
|
||||||
import calclavia.lib.utility.WrenchUtility;
|
import calclavia.lib.utility.WrenchUtility;
|
||||||
|
import codechicken.lib.data.MCDataInput;
|
||||||
import codechicken.lib.render.CCRenderState;
|
import codechicken.lib.render.CCRenderState;
|
||||||
import codechicken.lib.render.IconTransformation;
|
import codechicken.lib.render.IconTransformation;
|
||||||
import codechicken.lib.render.RenderUtils;
|
import codechicken.lib.render.RenderUtils;
|
||||||
|
@ -55,9 +56,33 @@ public class PartPipe extends PartFramedConnection<EnumPipeMaterial, IFluidPipe,
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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
|
@Override
|
||||||
|
|
|
@ -25,6 +25,8 @@ public class RenderPipe
|
||||||
|
|
||||||
public void render(PartPipe part, double x, double y, double z, float f)
|
public void render(PartPipe part, double x, double y, double z, float f)
|
||||||
{
|
{
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
|
||||||
FluidStack fluid = part.getInternalTank().getFluid();
|
FluidStack fluid = part.getInternalTank().getFluid();
|
||||||
int capacity = part.getInternalTank().getCapacity();
|
int capacity = part.getInternalTank().getCapacity();
|
||||||
byte renderSides = part.getAllCurrentConnections();
|
byte renderSides = part.getAllCurrentConnections();
|
||||||
|
@ -42,8 +44,8 @@ public class RenderPipe
|
||||||
GL11.glEnable(GL11.GL_BLEND);
|
GL11.glEnable(GL11.GL_BLEND);
|
||||||
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
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.glTranslatef((float) x + 0.35f, (float) y + 0.35f, (float) z + 0.35f);
|
||||||
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.glCallList(displayList[(int) (percentage * (RenderFluidHelper.DISPLAY_STAGES - 1))]);
|
||||||
|
|
||||||
|
@ -63,21 +65,27 @@ public class RenderPipe
|
||||||
|
|
||||||
switch (direction.ordinal())
|
switch (direction.ordinal())
|
||||||
{
|
{
|
||||||
case 4:
|
case 0:
|
||||||
GL11.glTranslatef((float) x + 0F, (float) y + 0.35f, (float) z + 0.3F);
|
GL11.glTranslatef((float) x + 0.35F, (float) y - 0f, (float) z + 0.35F);
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 1:
|
||||||
GL11.glTranslatef((float) x + 0.7F, (float) y + 0.35f, (float) z + 0.3F);
|
GL11.glTranslatef((float) x + 0.35F, (float) y + 0.65f, (float) z + 0.35F);
|
||||||
break;
|
break;
|
||||||
case 2:
|
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;
|
break;
|
||||||
case 3:
|
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;
|
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.glCallList(displayList[(int) (percentage * (RenderFluidHelper.DISPLAY_STAGES - 1))]);
|
||||||
|
|
||||||
GL11.glPopAttrib();
|
GL11.glPopAttrib();
|
||||||
|
@ -85,6 +93,7 @@ public class RenderPipe
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
|
||||||
GL11.glPushMatrix();
|
GL11.glPushMatrix();
|
||||||
GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F);
|
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())
|
if (dir == getDirection())
|
||||||
{
|
{
|
||||||
return 20;
|
return 100;
|
||||||
}
|
}
|
||||||
else if (dir == getDirection().getOpposite())
|
else if (dir == getDirection().getOpposite())
|
||||||
{
|
{
|
||||||
return -25;
|
return -100;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -114,6 +114,15 @@ public class PipeNetwork extends FluidNetwork
|
||||||
if (obj instanceof IPressure)
|
if (obj instanceof IPressure)
|
||||||
{
|
{
|
||||||
int pressure = ((IPressure) obj).getPressure(ForgeDirection.getOrientation(i).getOpposite());
|
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);
|
minPressure = Math.min(pressure, minPressure);
|
||||||
maxPressure = Math.max(pressure, maxPressure);
|
maxPressure = Math.max(pressure, maxPressure);
|
||||||
totalPressure += pressure;
|
totalPressure += pressure;
|
||||||
|
@ -131,9 +140,9 @@ public class PipeNetwork extends FluidNetwork
|
||||||
* Create pressure loss.
|
* Create pressure loss.
|
||||||
*/
|
*/
|
||||||
if (minPressure < 0)
|
if (minPressure < 0)
|
||||||
minPressure++;
|
minPressure += 1;
|
||||||
if (maxPressure > 0)
|
if (maxPressure > 0)
|
||||||
maxPressure--;
|
maxPressure -= 1;
|
||||||
|
|
||||||
sourcePipe.setPressure(Math.max(minPressure, Math.min(maxPressure, totalPressure / findCount + Integer.signum(totalPressure))));
|
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)
|
if (pressureA >= pressureB)
|
||||||
{
|
{
|
||||||
FluidTank tankA = sourcePipe.getInternalTank();
|
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)
|
if (amountA > 0)
|
||||||
{
|
{
|
||||||
|
@ -180,7 +190,7 @@ public class PipeNetwork extends FluidNetwork
|
||||||
if (quantity > 0)
|
if (quantity > 0)
|
||||||
{
|
{
|
||||||
tankA.drain(quantity, true);
|
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