electric-expansion/src/main/java/electricexpansion/client/render/RenderTransformer.java

92 lines
3.2 KiB
Java

package electricexpansion.client.render;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import electricexpansion.client.model.ModelTransformer;
import electricexpansion.common.tile.TileEntityTransformer;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import universalelectricity.core.vector.Vector3;
@SideOnly(Side.CLIENT)
public class RenderTransformer extends TileEntitySpecialRenderer {
private ModelTransformer model;
private String textureToUse;
public RenderTransformer() {
this.model = new ModelTransformer();
}
@Override
public void renderTileEntityAt(final TileEntity tileEntity, final double x,
final double y, final double z,
final float var5) {
this.textureToUse = "textures/models/";
final String status = ((TileEntityTransformer) tileEntity).stepUp ? "Step Up" : "Step Down";
final EntityPlayer player = (EntityPlayer) Minecraft.getMinecraft().thePlayer;
final MovingObjectPosition movingPosition = player.rayTrace(5.0, 1.0f);
if (movingPosition != null &&
new Vector3(tileEntity).equals(new Vector3(movingPosition))) {
RenderFloatingText.renderFloatingText(status, (float) ((float) x + 0.5),
(float) y - 1.0f,
(float) ((float) z + 0.5));
}
final int metadata = tileEntity.getWorldObj().getBlockMetadata(
tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord);
switch (metadata) {
case 0:
case 1:
case 2:
case 3:
this.textureToUse += "transformer1.png";
break;
case 4:
case 5:
case 6:
case 7:
// case 8:
this.textureToUse += "transformer2.png";
break;
case 8:
case 9:
case 10:
case 11:
// case 12:
this.textureToUse += "transformer3.png";
break;
}
this.bindTexture(
new ResourceLocation("electricexpansion", this.textureToUse));
GL11.glPushMatrix();
GL11.glTranslatef((float) x + 0.5f, (float) y + 1.5f, (float) z + 0.5f);
switch (metadata % 4) {
case 0: {
GL11.glRotatef(270.0f, 0.0f, 1.0f, 0.0f);
break;
}
case 1: {
GL11.glRotatef(90.0f, 0.0f, 1.0f, 0.0f);
break;
}
case 2: {
GL11.glRotatef(0.0f, 0.0f, 1.0f, 0.0f);
break;
}
case 3: {
GL11.glRotatef(180.0f, 0.0f, 1.0f, 0.0f);
break;
}
}
GL11.glScalef(1.0f, -1.0f, -1.0f);
this.model.render(null, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0625f);
GL11.glPopMatrix();
}
}