package mekanism.client.render.tileentity;
import mekanism.client.render.FluidRenderer;
import mekanism.client.render.FluidRenderer.RenderData;
import mekanism.client.render.FluidRenderer.ValveRenderData;
import mekanism.client.render.MekanismRenderer;
import mekanism.common.content.tank.SynchronizedTankData.ValveData;
import mekanism.common.tile.TileEntityDynamicTank;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import org.lwjgl.opengl.GL11;
@SideOnly(Side.CLIENT)
public class RenderDynamicTank extends TileEntitySpecialRenderer<TileEntityDynamicTank>
{
@Override
public void renderTileEntityAt(TileEntityDynamicTank tileEntity, double x, double y, double z, float partialTick, int destroyStage)
{
if(tileEntity.clientHasStructure && tileEntity.isRendering && tileEntity.structure != null && tileEntity.structure.fluidStored != null && tileEntity.structure.fluidStored.amount != 0)
{
RenderData data = new RenderData();
data.location = tileEntity.structure.renderLocation;
data.height = tileEntity.structure.volHeight-2;
data.length = tileEntity.structure.volLength;
data.width = tileEntity.structure.volWidth;
data.fluidType = tileEntity.structure.fluidStored.getFluid();
bindTexture(MekanismRenderer.getBlocksTexture());
if(data.location != null && data.height >= 1)
{
FluidRenderer.push();
FluidRenderer.translateToOrigin(data.location);
MekanismRenderer.glowOn(tileEntity.structure.fluidStored.getFluid().getLuminosity());
MekanismRenderer.colorFluid(tileEntity.structure.fluidStored.getFluid());
if(tileEntity.structure.fluidStored.getFluid().isGaseous())
{
GL11.glColor4f(1F, 1F, 1F, Math.min(1, ((float)tileEntity.structure.fluidStored.amount / (float)tileEntity.clientCapacity)+MekanismRenderer.GAS_RENDER_BASE));
FluidRenderer.getTankDisplay(data).render();
}
else {
FluidRenderer.getTankDisplay(data, tileEntity.prevScale).render();
}
MekanismRenderer.glowOff();
MekanismRenderer.resetColor();
FluidRenderer.pop();
for(ValveData valveData : tileEntity.valveViewing)
{
FluidRenderer.push();
FluidRenderer.translateToOrigin(valveData.location);
MekanismRenderer.glowOn(tileEntity.structure.fluidStored.getFluid().getLuminosity());
MekanismRenderer.colorFluid(tileEntity.structure.fluidStored.getFluid());
FluidRenderer.getValveDisplay(ValveRenderData.get(data, valveData)).render();
MekanismRenderer.glowOff();
MekanismRenderer.resetColor();
FluidRenderer.pop();
}
}
}
}
}