package zmaster587.advancedRocketry.client.render.multiblocks;
import org.lwjgl.opengl.GL11;
import zmaster587.advancedRocketry.tile.multiblock.TileObservatory;
import zmaster587.advancedRocketry.util.Debugger;
import zmaster587.libVulpes.block.RotatableBlock;
import zmaster587.libVulpes.tile.multiblock.TileMultiPowerConsumer;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.AdvancedModelLoader;
import net.minecraftforge.client.model.IModelCustom;
import net.minecraftforge.common.util.ForgeDirection;
public class RendererObservatory extends TileEntitySpecialRenderer {
IModelCustom model = AdvancedModelLoader.loadModel(new ResourceLocation("advancedrocketry:models/observatory.obj"));
ResourceLocation texture = new ResourceLocation("advancedrocketry:textures/models/T1Observatory.png");
private static int bodyList;
public RendererObservatory() {
GL11.glNewList(bodyList = GL11.glGenLists(1), GL11.GL_COMPILE);
model.renderOnly("body");
GL11.glEndList();
}
@Override
public void renderTileEntityAt(TileEntity tile, double x,
double y, double z, float f) {
TileObservatory multiBlockTile = (TileObservatory)tile;
if(!multiBlockTile.canRender())
return;
GL11.glPushMatrix();
//Initial setup
int bright = tile.getWorldObj().getLightBrightnessForSkyBlocks(tile.xCoord, tile.yCoord + 2, tile.zCoord,0);
int brightX = bright % 65536;
int brightY = bright / 65536;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, brightX, brightY);
//Rotate and move the model into position
ForgeDirection front = RotatableBlock.getFront(tile.getBlockMetadata());//tile.getWorldObj().getBlockMetadata(tile.xCoord, tile.yCoord, tile.zCoord));
GL11.glTranslated(x + .5, y, z + .5);
GL11.glRotatef((front.offsetX == 1 ? 180 : 0) + front.offsetZ*90f, 0, 1, 0);
GL11.glTranslated(2, -1, 0);
bindTexture(texture);
float offset = multiBlockTile.getOpenProgress();
if(offset != 0f) {
if(Debugger.renderList)
GL11.glCallList(bodyList);
else
model.renderOnly("Base");
model.renderPart("Scope");
model.renderPart("Axis");
GL11.glPushMatrix();
GL11.glTranslatef(0, 0, -offset);
model.renderOnly("CasingXMinus");
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glTranslatef(0,0,offset);
model.renderOnly("CasingXPlus");
GL11.glPopMatrix();
}
else {
if(Debugger.renderList)
GL11.glCallList(bodyList);
else
model.renderOnly("Base");
model.renderOnly("CasingXMinus");
model.renderOnly("CasingXPlus");
}
GL11.glPopMatrix();
}
}