resonant-induction/archive/java/resonantinduction/old/client/render/RenderSteamGen.java
2014-01-11 17:44:07 +08:00

114 lines
No EOL
2.8 KiB
Java

package resonantinduction.old.client.render;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import resonantinduction.core.Reference;
import resonantinduction.core.prefab.tile.TileEntityMachine;
import resonantinduction.old.client.model.ModelMachine;
import resonantinduction.old.client.model.ModelSteamGen;
import resonantinduction.old.client.model.ModelSteamTurbine;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class RenderSteamGen extends TileEntitySpecialRenderer
{
public static final ModelSteamTurbine TURBINE_MODEL = new ModelSteamTurbine();
public static final ModelSteamGen STEAM_GEN_MODEL = new ModelSteamGen();
public static final ResourceLocation TURBINE_TEXTURE = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_DIRECTORY + "SmallSteamFan.png");
public static final ResourceLocation STEAM_GEN_TEXTURE = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_DIRECTORY + "SteamGenerator.png");
private static float rot1 = 0;
@Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float size)
{
int meta = tileEntity.worldObj.getBlockMetadata(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord);
int face = meta % 4;
ModelMachine model = getModel(meta);
if (model != null)
{
bindTexture(RenderSteamGen.getTexture(meta));
rot1 = MathHelper.wrapAngleTo180_float(rot1 + 1);
GL11.glPushMatrix();
GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F);
GL11.glScalef(1.0F, -1F, -1F);
if (face == 0)
{
GL11.glRotatef(180f, 0f, 1f, 0f);
}
if (face == 2)
{
GL11.glRotatef(0f, 0f, 1f, 0f);
}
else if (face == 3)
{
GL11.glRotatef(90f, 0f, 1f, 0f);
}
else if (face == 1)
{
GL11.glRotatef(270f, 0f, 1f, 0f);
}
model.render(0.0625F);
if (tileEntity instanceof TileEntityMachine)
{
if (model instanceof ModelSteamTurbine)
{
if (((TileEntityMachine) tileEntity).isFunctioning())
{
GL11.glRotatef(RenderSteamGen.rot1, 0f, 1f, 0f);
}
((ModelSteamTurbine) model).renderFan(0.0625F);
}
}
GL11.glPopMatrix();
}
}
public static ModelMachine getModel(int meta)
{
switch (meta / 4)
{
case 0:
return TURBINE_MODEL;
case 1:
return TURBINE_MODEL;
case 2:
return STEAM_GEN_MODEL;
case 3:
return STEAM_GEN_MODEL;
}
return null;
}
public static ResourceLocation getTexture(int meta)
{
switch (meta / 4)
{
case 0:
return TURBINE_TEXTURE;
case 1:
return TURBINE_TEXTURE;
case 2:
return STEAM_GEN_TEXTURE;
case 3:
return STEAM_GEN_TEXTURE;
}
return null;
}
}