package zmaster587.advancedRocketry.client.render;
import org.lwjgl.opengl.GL11;
import zmaster587.advancedRocketry.api.AdvancedRocketryBlocks;
import zmaster587.advancedRocketry.client.render.multiblocks.RendererCuttingMachine;
import zmaster587.advancedRocketry.inventory.TextureResources;
import zmaster587.advancedRocketry.tile.TileModelRender;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.IItemRenderer;
import net.minecraftforge.client.model.AdvancedModelLoader;
import net.minecraftforge.client.model.IModelCustom;
public class RendererModelBlock extends TileEntitySpecialRenderer implements IItemRenderer {
protected static IModelCustom rocketModel = AdvancedModelLoader.loadModel(new ResourceLocation("advancedrocketry:models/combustion.obj"));
protected static IModelCustom advRocketModel = AdvancedModelLoader.loadModel(new ResourceLocation("advancedrocketry:models/advCombustion.obj"));
protected static ResourceLocation rocketTexture = new ResourceLocation("advancedrocketry:textures/models/combustion.png");
protected static IModelCustom middleTankModel = AdvancedModelLoader.loadModel(new ResourceLocation("advancedrocketry:models/middleTank.obj"));
protected static ResourceLocation middleTankTexture = new ResourceLocation("advancedrocketry:textures/models/tank.png");
protected static IModelCustom endTankModel = AdvancedModelLoader.loadModel(new ResourceLocation("advancedrocketry:models/endTank.obj"));
protected static ResourceLocation endTankTexture = new ResourceLocation("advancedrocketry:textures/models/tank.png");
protected static IModelCustom topTankModel = AdvancedModelLoader.loadModel(new ResourceLocation("advancedrocketry:models/topTank.obj"));
protected static ResourceLocation topTankTexture =new ResourceLocation("advancedrocketry:textures/models/tank.png");
protected static IModelCustom motorModel = AdvancedModelLoader.loadModel(new ResourceLocation("advancedrocketry:models/motor.obj"));
protected static ResourceLocation motorTexture = new ResourceLocation("advancedrocketry:textures/models/motor.png");
protected static IModelCustom sawBladeModel = AdvancedModelLoader.loadModel(new ResourceLocation("advancedrocketry:models/sawBlade.obj"));
protected static ResourceLocation sawBladeTexture = RendererCuttingMachine.texture;
public RendererModelBlock() {
}
@Override
public void renderTileEntityAt(TileEntity tile, double x,
double y, double z, float f) {
TileModelRender rendertile = (TileModelRender)tile;
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5, y+ 0.5, z+ 0.5);
GL11.glRotatef((rendertile.getRotation().offsetX*90) + (rendertile.getRotation().offsetZ == -1 ? 180 : 0), 0, 1, 0);
int modelNum = rendertile.getModel();
TextureManager textureMgr = Minecraft.getMinecraft().getTextureManager();
if(modelNum == TileModelRender.models.ROCKET.ordinal()) {
textureMgr.bindTexture(rocketTexture);
if(rendertile.getRotation().offsetY == 0)
GL11.glRotatef(90,1,0,0);
rocketModel.renderAll();
}
else if(modelNum == TileModelRender.models.ADVROCKET.ordinal()) {
textureMgr.bindTexture(rocketTexture);
if(rendertile.getRotation().offsetY == 0)
GL11.glRotatef(90,1,0,0);
advRocketModel.renderAll();
}
else if(modelNum == TileModelRender.models.TANKMIDDLE.ordinal()) {
textureMgr.bindTexture(middleTankTexture);
middleTankModel.renderAll();
}
else if(modelNum == TileModelRender.models.TANKEND.ordinal()) {
textureMgr.bindTexture(endTankTexture);
endTankModel.renderAll();
}
else if(modelNum == TileModelRender.models.TANKTOP.ordinal()) {
textureMgr.bindTexture(topTankTexture);
topTankModel.renderAll();
}
else if(modelNum == TileModelRender.models.SAWBLADE.ordinal()) {
textureMgr.bindTexture(sawBladeTexture);
sawBladeModel.renderAll();
}
else if(modelNum == TileModelRender.models.MOTOR.ordinal()) {
textureMgr.bindTexture(motorTexture);
motorModel.renderAll();
}
//bindTexture(rendertile.getTexture());
//rendertile.getModel().renderAll();
GL11.glPopMatrix();
}
@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
Block block = Block.getBlockFromItem(item.getItem());
return true;
}
@Override
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item,
ItemRendererHelper helper) {
return false;
}
@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
Block block = Block.getBlockFromItem(item.getItem());
if(type.INVENTORY == type) {
GL11.glPushMatrix();
GL11.glScalef(-10, -10, -10);
GL11.glRotatef(45, 0, 1, 0);
GL11.glRotatef(-25, 1, 0, 0);
GL11.glRotatef(-15, 0, 0, 1);
GL11.glEnable(GL11.GL_LIGHTING);
renderTileEntityAt(block.createTileEntity(null, 0), -2.2f, -2.1f, 0f, 0f);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glPopMatrix();
}
else {
GL11.glPushMatrix();
GL11.glRotatef(25, 0, 0, 1);
GL11.glRotatef(20, 0, 1, 0);
GL11.glScalef(.75f, .75f, .75f);
renderTileEntityAt(block.createTileEntity(null, 0), .5f, -.7, 0f, 0f);
GL11.glPopMatrix();
}
}
}