Fixed gutter rendering extra beams
This commit is contained in:
parent
1e0492eb53
commit
57f362dff2
9 changed files with 80 additions and 56 deletions
|
@ -14,11 +14,10 @@ import net.minecraftforge.fluids.Fluid;
|
|||
import net.minecraftforge.fluids.FluidContainerRegistry;
|
||||
import net.minecraftforge.fluids.FluidRegistry;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.FluidTank;
|
||||
import net.minecraftforge.fluids.FluidTankInfo;
|
||||
import resonantinduction.archaic.fluid.gutter.FluidGravityNode;
|
||||
import resonantinduction.core.Reference;
|
||||
import resonantinduction.core.fluid.TilePressureNode;
|
||||
import resonantinduction.core.grid.fluid.PressureNode;
|
||||
import universalelectricity.api.vector.Vector3;
|
||||
import calclavia.lib.prefab.tile.IRotatable;
|
||||
import calclavia.lib.utility.FluidUtility;
|
||||
|
@ -38,7 +37,7 @@ public class TileGrate extends TilePressureNode implements IRotatable
|
|||
isOpaqueCube = false;
|
||||
normalRender = true;
|
||||
rotationMask = Byte.parseByte("111111", 2);
|
||||
node = new PressureNode(this);
|
||||
node = new FluidGravityNode(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -100,7 +99,8 @@ public class TileGrate extends TilePressureNode implements IRotatable
|
|||
@Override
|
||||
public int fill(ForgeDirection from, FluidStack resource, boolean doFill)
|
||||
{
|
||||
getPressureTank().fill(resource, doFill);
|
||||
int filled = getPressureTank().fill(resource, doFill);
|
||||
System.out.println("FILL");
|
||||
|
||||
if (getPressureTank().getFluidAmount() > 0)
|
||||
{
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
package resonantinduction.archaic.fluid.gutter;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import net.minecraftforge.fluids.IFluidHandler;
|
||||
import resonantinduction.archaic.fluid.grate.TileGrate;
|
||||
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
|
||||
import resonantinduction.core.grid.fluid.FluidPressureNode;
|
||||
import calclavia.lib.utility.WorldUtility;
|
||||
|
||||
public class FluidGravityNode extends FluidPressureNode
|
||||
{
|
||||
public FluidGravityNode(IPressureNodeProvider parent)
|
||||
{
|
||||
super(parent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPressure(ForgeDirection dir)
|
||||
{
|
||||
if (dir == ForgeDirection.UP)
|
||||
return -1;
|
||||
|
||||
if (dir == ForgeDirection.DOWN)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxFlowRate()
|
||||
{
|
||||
return 20;
|
||||
}
|
||||
}
|
|
@ -28,7 +28,7 @@ import resonantinduction.core.Reference;
|
|||
import resonantinduction.core.ResonantInduction;
|
||||
import resonantinduction.core.fluid.TilePressureNode;
|
||||
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
|
||||
import resonantinduction.core.grid.fluid.PressureNode;
|
||||
import resonantinduction.core.grid.fluid.FluidPressureNode;
|
||||
import universalelectricity.api.vector.Vector3;
|
||||
import calclavia.lib.content.module.TileRender;
|
||||
import calclavia.lib.prefab.vector.Cuboid;
|
||||
|
@ -55,7 +55,7 @@ public class TileGutter extends TilePressureNode
|
|||
normalRender = false;
|
||||
bounds = new Cuboid(0, 0, 0, 1, 0.99, 1);
|
||||
|
||||
node = new PressureNode(this)
|
||||
node = new FluidGravityNode(this)
|
||||
{
|
||||
@Override
|
||||
public void recache()
|
||||
|
@ -74,7 +74,7 @@ public class TileGutter extends TilePressureNode
|
|||
{
|
||||
if (tile instanceof IPressureNodeProvider)
|
||||
{
|
||||
PressureNode check = ((IPressureNodeProvider) tile).getNode(PressureNode.class, dir.getOpposite());
|
||||
FluidPressureNode check = ((IPressureNodeProvider) tile).getNode(FluidPressureNode.class, dir.getOpposite());
|
||||
|
||||
if (check != null && canConnect(dir, check) && check.canConnect(dir.getOpposite(), this))
|
||||
{
|
||||
|
@ -102,24 +102,6 @@ public class TileGutter extends TilePressureNode
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPressure(ForgeDirection dir)
|
||||
{
|
||||
if (dir == ForgeDirection.UP)
|
||||
return -1;
|
||||
|
||||
if (dir == ForgeDirection.DOWN)
|
||||
return 2;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxFlowRate()
|
||||
{
|
||||
return 20;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -184,6 +166,10 @@ public class TileGutter extends TilePressureNode
|
|||
{
|
||||
entity.setFire(5);
|
||||
}
|
||||
else
|
||||
{
|
||||
entity.extinguish();
|
||||
}
|
||||
}
|
||||
|
||||
if (entity instanceof EntityItem)
|
||||
|
@ -208,9 +194,9 @@ public class TileGutter extends TilePressureNode
|
|||
{
|
||||
for (Object check : node.getGrid().getNodes())
|
||||
{
|
||||
if (check instanceof PressureNode)
|
||||
if (check instanceof FluidPressureNode)
|
||||
{
|
||||
tanks.add(((PressureNode) check).parent.getPressureTank());
|
||||
tanks.add(((FluidPressureNode) check).parent.getPressureTank());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -220,9 +206,9 @@ public class TileGutter extends TilePressureNode
|
|||
{
|
||||
for (Object check : node.getGrid().getNodes())
|
||||
{
|
||||
if (check instanceof PressureNode)
|
||||
if (check instanceof FluidPressureNode)
|
||||
{
|
||||
((PressureNode) check).parent.onFluidChanged();
|
||||
((FluidPressureNode) check).parent.onFluidChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -346,7 +332,7 @@ public class TileGutter extends TilePressureNode
|
|||
public void render(int meta, byte sides)
|
||||
{
|
||||
RenderUtility.bind(TEXTURE);
|
||||
// RenderUtility.bind(TextureMap.locationBlocksTexture);
|
||||
|
||||
double thickness = 0.055;
|
||||
double height = 0.5;
|
||||
|
||||
|
@ -370,11 +356,14 @@ public class TileGutter extends TilePressureNode
|
|||
*/
|
||||
MODEL.renderOnly("left");
|
||||
}
|
||||
|
||||
|
||||
if (!WorldUtility.isEnabledSide(sides, dir) || !WorldUtility.isEnabledSide(sides, dir.getRotation(ForgeDirection.UP)))
|
||||
{
|
||||
/**
|
||||
* Render strips
|
||||
*/
|
||||
MODEL.renderOnly("backCornerL");
|
||||
}
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ import net.minecraftforge.fluids.IFluidHandler;
|
|||
import resonantinduction.core.ResonantInduction;
|
||||
import resonantinduction.core.grid.INodeProvider;
|
||||
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
|
||||
import resonantinduction.core.grid.fluid.PressureNode;
|
||||
import resonantinduction.core.grid.fluid.FluidPressureNode;
|
||||
import resonantinduction.core.prefab.part.PartFace;
|
||||
import resonantinduction.electrical.Electrical;
|
||||
import resonantinduction.mechanical.energy.grid.MechanicalNode;
|
||||
|
@ -308,7 +308,7 @@ public class PartMultimeter extends PartFace implements IConnector<MultimeterNet
|
|||
|
||||
if (tileEntity instanceof IPressureNodeProvider)
|
||||
{
|
||||
getNetwork().pressureGraph.queue(((IPressureNodeProvider) tileEntity).getNode(PressureNode.class, receivingSide).getPressure(receivingSide));
|
||||
getNetwork().pressureGraph.queue(((IPressureNodeProvider) tileEntity).getNode(FluidPressureNode.class, receivingSide).getPressure(receivingSide));
|
||||
}
|
||||
|
||||
if (tileEntity instanceof ITemperature)
|
||||
|
|
|
@ -13,7 +13,7 @@ import net.minecraftforge.fluids.FluidTankInfo;
|
|||
import net.minecraftforge.fluids.IFluidHandler;
|
||||
import resonantinduction.core.ResonantInduction;
|
||||
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
|
||||
import resonantinduction.core.grid.fluid.PressureNode;
|
||||
import resonantinduction.core.grid.fluid.FluidPressureNode;
|
||||
import resonantinduction.core.prefab.part.PartFramedNode;
|
||||
import resonantinduction.mechanical.Mechanical;
|
||||
import calclavia.lib.utility.WorldUtility;
|
||||
|
@ -28,7 +28,7 @@ import codechicken.multipart.TSlottedPart;
|
|||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public class PartPipe extends PartFramedNode<EnumPipeMaterial, PressureNode, IPressureNodeProvider> implements IPressureNodeProvider, TSlottedPart, JNormalOcclusion, IHollowConnect
|
||||
public class PartPipe extends PartFramedNode<EnumPipeMaterial, FluidPressureNode, IPressureNodeProvider> implements IPressureNodeProvider, TSlottedPart, JNormalOcclusion, IHollowConnect
|
||||
{
|
||||
protected FluidTank tank = new FluidTank(FluidContainerRegistry.BUCKET_VOLUME);
|
||||
private boolean markPacket = true;
|
||||
|
@ -39,7 +39,7 @@ public class PartPipe extends PartFramedNode<EnumPipeMaterial, PressureNode, IPr
|
|||
material = EnumPipeMaterial.values()[typeID];
|
||||
requiresInsulation = false;
|
||||
|
||||
node = new PressureNode(this)
|
||||
node = new FluidPressureNode(this)
|
||||
{
|
||||
@Override
|
||||
public void recache()
|
||||
|
@ -61,7 +61,7 @@ public class PartPipe extends PartFramedNode<EnumPipeMaterial, PressureNode, IPr
|
|||
{
|
||||
if (tile instanceof IPressureNodeProvider)
|
||||
{
|
||||
PressureNode check = ((IPressureNodeProvider) tile).getNode(PressureNode.class, dir.getOpposite());
|
||||
FluidPressureNode check = ((IPressureNodeProvider) tile).getNode(FluidPressureNode.class, dir.getOpposite());
|
||||
|
||||
if (check != null && canConnect(dir, check) && check.canConnect(dir.getOpposite(), this))
|
||||
{
|
||||
|
@ -90,9 +90,9 @@ public class PartPipe extends PartFramedNode<EnumPipeMaterial, PressureNode, IPr
|
|||
@Override
|
||||
public boolean canConnect(ForgeDirection from, Object source)
|
||||
{
|
||||
if (source instanceof PressureNode)
|
||||
if (source instanceof FluidPressureNode)
|
||||
{
|
||||
PressureNode otherNode = (PressureNode) source;
|
||||
FluidPressureNode otherNode = (FluidPressureNode) source;
|
||||
|
||||
if (otherNode.parent instanceof PartPipe)
|
||||
{
|
||||
|
|
|
@ -9,18 +9,18 @@ import net.minecraftforge.fluids.FluidTankInfo;
|
|||
import net.minecraftforge.fluids.IFluidHandler;
|
||||
import resonantinduction.core.grid.Node;
|
||||
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
|
||||
import resonantinduction.core.grid.fluid.PressureNode;
|
||||
import resonantinduction.core.grid.fluid.FluidPressureNode;
|
||||
import resonantinduction.mechanical.energy.grid.TileMechanical;
|
||||
import universalelectricity.api.vector.Vector3;
|
||||
import calclavia.lib.prefab.tile.IRotatable;
|
||||
|
||||
public class TilePump extends TileMechanical implements IPressureNodeProvider, IRotatable
|
||||
{
|
||||
private final PressureNode pressureNode;
|
||||
private final FluidPressureNode pressureNode;
|
||||
|
||||
public TilePump()
|
||||
{
|
||||
pressureNode = new PressureNode(this)
|
||||
pressureNode = new FluidPressureNode(this)
|
||||
{
|
||||
@Override
|
||||
public int getPressure(ForgeDirection dir)
|
||||
|
|
|
@ -9,7 +9,7 @@ import net.minecraftforge.client.model.IModelCustom;
|
|||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import resonantinduction.core.Reference;
|
||||
import resonantinduction.core.grid.fluid.PressureNode;
|
||||
import resonantinduction.core.grid.fluid.FluidPressureNode;
|
||||
import calclavia.lib.render.RenderUtility;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
|
|
@ -8,7 +8,7 @@ import net.minecraftforge.fluids.FluidTank;
|
|||
import net.minecraftforge.fluids.FluidTankInfo;
|
||||
import resonantinduction.core.grid.Node;
|
||||
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
|
||||
import resonantinduction.core.grid.fluid.PressureNode;
|
||||
import resonantinduction.core.grid.fluid.FluidPressureNode;
|
||||
import calclavia.lib.network.IPacketReceiverWithID;
|
||||
|
||||
/**
|
||||
|
@ -18,7 +18,7 @@ import calclavia.lib.network.IPacketReceiverWithID;
|
|||
*/
|
||||
public abstract class TilePressureNode extends TileFluidNode implements IPressureNodeProvider, IPacketReceiverWithID
|
||||
{
|
||||
protected PressureNode node;
|
||||
protected FluidPressureNode node;
|
||||
|
||||
public TilePressureNode(Material material)
|
||||
{
|
||||
|
|
|
@ -15,19 +15,19 @@ import resonantinduction.core.grid.TickingGrid;
|
|||
import universalelectricity.api.vector.Vector3;
|
||||
import codechicken.multipart.TMultiPart;
|
||||
|
||||
public class PressureNode extends Node<IPressureNodeProvider, TickingGrid, Object>
|
||||
public class FluidPressureNode extends Node<IPressureNodeProvider, TickingGrid, Object>
|
||||
{
|
||||
protected byte connectionMap = Byte.parseByte("111111", 2);
|
||||
private int pressure = 0;
|
||||
public int maxFlowRate = 10;
|
||||
public int maxPressure = 10;
|
||||
|
||||
public PressureNode(IPressureNodeProvider parent)
|
||||
public FluidPressureNode(IPressureNodeProvider parent)
|
||||
{
|
||||
super(parent);
|
||||
}
|
||||
|
||||
public PressureNode setConnection(byte connectionMap)
|
||||
public FluidPressureNode setConnection(byte connectionMap)
|
||||
{
|
||||
this.connectionMap = connectionMap;
|
||||
return this;
|
||||
|
@ -57,9 +57,9 @@ public class PressureNode extends Node<IPressureNodeProvider, TickingGrid, Objec
|
|||
Entry<Object, ForgeDirection> entry = it.next();
|
||||
Object obj = entry.getKey();
|
||||
|
||||
if (obj instanceof PressureNode)
|
||||
if (obj instanceof FluidPressureNode)
|
||||
{
|
||||
int pressure = ((PressureNode) obj).getPressure(entry.getValue().getOpposite());
|
||||
int pressure = ((FluidPressureNode) obj).getPressure(entry.getValue().getOpposite());
|
||||
|
||||
minPressure = Math.min(pressure, minPressure);
|
||||
maxPressure = Math.max(pressure, maxPressure);
|
||||
|
@ -98,9 +98,9 @@ public class PressureNode extends Node<IPressureNodeProvider, TickingGrid, Objec
|
|||
Object obj = entry.getKey();
|
||||
ForgeDirection dir = entry.getValue();
|
||||
|
||||
if (obj instanceof PressureNode)
|
||||
if (obj instanceof FluidPressureNode)
|
||||
{
|
||||
PressureNode otherPipe = (PressureNode) obj;
|
||||
FluidPressureNode otherPipe = (FluidPressureNode) obj;
|
||||
|
||||
/**
|
||||
* Move fluid from higher pressure to lower. In this case, move from tankA to
|
||||
|
@ -149,7 +149,7 @@ public class PressureNode extends Node<IPressureNodeProvider, TickingGrid, Objec
|
|||
{
|
||||
IFluidHandler fluidHandler = (IFluidHandler) obj;
|
||||
int pressure = getPressure(dir);
|
||||
int tankPressure = fluidHandler instanceof IPressureNodeProvider ? ((IPressureNodeProvider) fluidHandler).getNode(PressureNode.class, dir.getOpposite()).getPressure(dir.getOpposite()) : 0;
|
||||
int tankPressure = fluidHandler instanceof IPressureNodeProvider ? ((IPressureNodeProvider) fluidHandler).getNode(FluidPressureNode.class, dir.getOpposite()).getPressure(dir.getOpposite()) : 0;
|
||||
FluidTank sourceTank = parent.getPressureTank();
|
||||
|
||||
int transferAmount = (Math.max(pressure, tankPressure) - Math.min(pressure, tankPressure)) * getMaxFlowRate();
|
||||
|
@ -212,7 +212,7 @@ public class PressureNode extends Node<IPressureNodeProvider, TickingGrid, Objec
|
|||
|
||||
if (tile instanceof IPressureNodeProvider)
|
||||
{
|
||||
PressureNode check = ((IPressureNodeProvider) tile).getNode(PressureNode.class, dir.getOpposite());
|
||||
FluidPressureNode check = ((IPressureNodeProvider) tile).getNode(FluidPressureNode.class, dir.getOpposite());
|
||||
|
||||
if (check != null && canConnect(dir, check) && check.canConnect(dir.getOpposite(), this))
|
||||
{
|
||||
|
@ -236,13 +236,13 @@ public class PressureNode extends Node<IPressureNodeProvider, TickingGrid, Objec
|
|||
@Override
|
||||
public boolean canConnect(ForgeDirection from, Object source)
|
||||
{
|
||||
return (source instanceof PressureNode) && (connectionMap & (1 << from.ordinal())) != 0;
|
||||
return (source instanceof FluidPressureNode) && (connectionMap & (1 << from.ordinal())) != 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TickingGrid newGrid()
|
||||
{
|
||||
return new TickingGrid<PressureNode>(this, PressureNode.class);
|
||||
return new TickingGrid<FluidPressureNode>(this, FluidPressureNode.class);
|
||||
}
|
||||
|
||||
@Override
|
Loading…
Reference in a new issue