Mekanism-tilera-Edition/common/mekanism/client/FluidClientUpdate.java

61 lines
1.2 KiB
Java
Raw Normal View History

package mekanism.client;
import java.util.ArrayList;
import mekanism.common.IMechanicalPipe;
import mekanism.common.PipeUtils;
import net.minecraft.tileentity.TileEntity;
2013-07-20 18:10:14 +02:00
import net.minecraftforge.fluids.FluidStack;
2013-07-20 18:10:14 +02:00
public class FluidClientUpdate
{
/** List of iterated pipes, to prevent infinite loops. */
public ArrayList<TileEntity> iteratedPipes = new ArrayList<TileEntity>();
/** Pointer pipe of this calculation */
public TileEntity pointer;
2013-07-20 18:10:14 +02:00
/** Type of fluid to distribute */
public FluidStack fluidToSend;
2013-07-20 18:10:14 +02:00
public FluidClientUpdate(TileEntity head, FluidStack fluid)
{
pointer = head;
2013-07-20 18:10:14 +02:00
fluidToSend = fluid;
}
public void loopThrough(TileEntity tile)
{
if(!iteratedPipes.contains(tile))
{
iteratedPipes.add(tile);
}
TileEntity[] pipes = PipeUtils.getConnectedPipes(tile);
for(TileEntity pipe : pipes)
{
if(pipe != null)
{
if(!iteratedPipes.contains(pipe))
{
loopThrough(pipe);
}
}
}
}
public void clientUpdate()
{
loopThrough(pointer);
for(TileEntity tileEntity : iteratedPipes)
{
if(tileEntity instanceof IMechanicalPipe)
{
2013-07-20 18:10:14 +02:00
((IMechanicalPipe)tileEntity).onTransfer(fluidToSend);
}
}
}
}