package openblocks.client.renderer.tileentity;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.entity.Entity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import openblocks.common.TrophyHandler.Trophy;
import openblocks.common.tileentity.TileEntityTrophy;
import openmods.utils.BlockUtils;
import openmods.utils.render.RenderUtils;
import org.lwjgl.opengl.GL11;
public class TileEntityTrophyRenderer extends TileEntitySpecialRenderer {
@Override
public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float partialTick) {
TileEntityTrophy trophy = (TileEntityTrophy)tileentity;
Trophy type = trophy.getTrophy();
if (type != null) {
float angle = BlockUtils.getRotationFromOrientation(trophy.getOrientation());
renderTrophy(type, x + 0.5, y, z + 0.5, angle);
}
}
public static void renderTrophy(Trophy type, double x, double y, double z, float angle) {
Entity entity = type.getEntity();
if (entity != null) {
GL11.glPushMatrix();
GL11.glTranslated(x, y + type.getVerticalOffset() + 0.2, z);
GL11.glRotatef(angle, 0, 1, 0);
final double ratio = type.getScale();
GL11.glScaled(ratio, ratio, ratio);
World renderWorld = RenderUtils.getRenderWorld();
if (renderWorld != null) {
Render renderer = RenderManager.instance.getEntityRenderObject(entity);
// yeah we don't care about fonts, but we do care that the
// renderManager is available
if (renderer != null && renderer.getFontRendererFromRenderManager() != null) {
GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS);
RenderUtils.enableLightmap();
synchronized (entity) {
entity.worldObj = renderWorld;
renderer.doRender(entity, 0, 0, 0, 0, 0);
entity.worldObj = null;
}
GL11.glPopAttrib();
}
}
GL11.glPopMatrix();
}
}
}