2013-01-02 19:55:29 +01:00
|
|
|
package liquidmechanics.client.render;
|
|
|
|
|
2013-01-05 21:05:53 +01:00
|
|
|
import liquidmechanics.api.helpers.connectionHelper;
|
2013-01-02 19:55:29 +01:00
|
|
|
import liquidmechanics.client.model.ModelLiquidTank;
|
|
|
|
import liquidmechanics.client.model.ModelLiquidTankCorner;
|
|
|
|
import liquidmechanics.common.LiquidMechanics;
|
2013-01-03 18:18:47 +01:00
|
|
|
import liquidmechanics.common.handlers.LiquidData;
|
|
|
|
import liquidmechanics.common.handlers.LiquidHandler;
|
2013-01-02 19:55:29 +01:00
|
|
|
import liquidmechanics.common.tileentity.TileEntityTank;
|
|
|
|
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
|
|
|
import net.minecraft.tileentity.TileEntity;
|
|
|
|
import net.minecraftforge.liquids.LiquidContainerRegistry;
|
|
|
|
|
|
|
|
import org.lwjgl.opengl.GL11;
|
|
|
|
|
|
|
|
public class RenderTank extends TileEntitySpecialRenderer
|
|
|
|
{
|
2013-01-05 01:03:20 +01:00
|
|
|
private LiquidData type = LiquidHandler.air;
|
|
|
|
private ModelLiquidTank model;
|
|
|
|
private ModelLiquidTankCorner modelC;
|
|
|
|
private int pos = 0;
|
2013-01-02 19:55:29 +01:00
|
|
|
|
2013-01-05 01:03:20 +01:00
|
|
|
public RenderTank()
|
|
|
|
{
|
|
|
|
model = new ModelLiquidTank();
|
|
|
|
modelC = new ModelLiquidTankCorner();
|
|
|
|
}
|
2013-01-02 19:55:29 +01:00
|
|
|
|
2013-01-05 01:03:20 +01:00
|
|
|
public void renderAModelAt(TileEntityTank te, double d, double d1, double d2, float f)
|
|
|
|
{
|
2013-01-05 21:05:53 +01:00
|
|
|
int meta = te.getBlockMetadata();
|
|
|
|
pos = Math.min((te.volume / LiquidContainerRegistry.BUCKET_VOLUME), 4);
|
|
|
|
|
2013-01-05 01:03:20 +01:00
|
|
|
GL11.glPushMatrix();
|
|
|
|
GL11.glTranslatef((float) d + 0.5F, (float) d1 + 1.5F, (float) d2 + 0.5F);
|
|
|
|
GL11.glScalef(1.0F, -1F, -1F);
|
2013-01-05 21:05:53 +01:00
|
|
|
|
|
|
|
if (connectionHelper.corner(te) > 0)
|
2013-01-05 01:03:20 +01:00
|
|
|
{
|
2013-01-05 21:05:53 +01:00
|
|
|
bindTextureByName(this.getCornerTexture(meta));
|
|
|
|
int corner = connectionHelper.corner(te);
|
2013-01-05 01:03:20 +01:00
|
|
|
switch (corner)
|
|
|
|
{
|
|
|
|
case 2:
|
|
|
|
GL11.glRotatef(270f, 0f, 1f, 0f);
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
GL11.glRotatef(0f, 0f, 1f, 0f);
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
GL11.glRotatef(90f, 0f, 1f, 0f);
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
GL11.glRotatef(180f, 0f, 1f, 0f);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
modelC.render(0.0625F);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2013-01-05 21:05:53 +01:00
|
|
|
bindTextureByName(this.getTankTexture(meta));
|
2013-01-05 01:03:20 +01:00
|
|
|
model.renderMain(0.0625F);
|
2013-01-05 21:05:53 +01:00
|
|
|
bindTextureByName(this.getGuageTexture(meta, pos));
|
2013-01-05 01:03:20 +01:00
|
|
|
model.renderMeter(te, 0.0625F);
|
|
|
|
}
|
|
|
|
GL11.glPopMatrix();
|
2013-01-02 19:55:29 +01:00
|
|
|
|
2013-01-05 01:03:20 +01:00
|
|
|
}
|
2013-01-02 19:55:29 +01:00
|
|
|
|
2013-01-05 21:05:53 +01:00
|
|
|
public static String getTankTexture(int meta)
|
|
|
|
{
|
|
|
|
String type = "";
|
|
|
|
switch (meta)
|
|
|
|
{
|
|
|
|
case 0:
|
|
|
|
case 1:
|
|
|
|
case 2:
|
|
|
|
case 3:
|
|
|
|
case 4:// default
|
|
|
|
case 5:
|
|
|
|
case 6:
|
|
|
|
case 7:
|
|
|
|
case 8:
|
|
|
|
case 9:
|
|
|
|
case 10:
|
|
|
|
case 11:
|
|
|
|
case 12:
|
|
|
|
case 13:
|
|
|
|
case 14:
|
|
|
|
case 15:
|
|
|
|
default:
|
|
|
|
type = "";
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
return LiquidMechanics.RESOURCE_PATH + "tanks/" + type + "Tank.png";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public static String getGuageTexture(int meta, int pos)
|
|
|
|
{
|
|
|
|
String type = "";
|
|
|
|
switch (meta)
|
|
|
|
{
|
|
|
|
case 0:
|
|
|
|
case 1:
|
|
|
|
case 2:
|
|
|
|
case 3:
|
|
|
|
case 4:// default
|
|
|
|
case 5:
|
|
|
|
case 6:
|
|
|
|
case 7:
|
|
|
|
case 8:
|
|
|
|
case 9:
|
|
|
|
case 10:
|
|
|
|
case 11:
|
|
|
|
case 12:
|
|
|
|
case 13:
|
|
|
|
case 14:
|
|
|
|
case 15:
|
|
|
|
default:
|
|
|
|
type = "";
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
return LiquidMechanics.RESOURCE_PATH + "tanks/guage/" + pos + type + ".png";
|
|
|
|
}
|
|
|
|
|
|
|
|
public static String getCornerTexture(int meta)
|
|
|
|
{
|
|
|
|
String type = "";
|
|
|
|
switch (meta)
|
|
|
|
{
|
|
|
|
case 0:
|
|
|
|
case 1:
|
|
|
|
case 2:
|
|
|
|
case 3:
|
|
|
|
case 4:
|
|
|
|
type = "Water";
|
|
|
|
break;
|
|
|
|
case 5:
|
|
|
|
case 6:
|
|
|
|
case 7:
|
|
|
|
case 8:
|
|
|
|
case 9:
|
|
|
|
case 10:
|
|
|
|
case 11:
|
|
|
|
case 12:
|
|
|
|
case 13:
|
|
|
|
case 14:
|
|
|
|
case 15:
|
|
|
|
default:
|
|
|
|
type = "";
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return LiquidMechanics.RESOURCE_PATH + "tanks/Corner" + type + "png";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2013-01-05 01:03:20 +01:00
|
|
|
@Override
|
|
|
|
public void renderTileEntityAt(TileEntity tileEntity, double var2, double var4, double var6, float var8)
|
|
|
|
{
|
|
|
|
this.renderAModelAt((TileEntityTank) tileEntity, var2, var4, var6, var8);
|
|
|
|
}
|
2013-01-02 19:55:29 +01:00
|
|
|
|
|
|
|
}
|