package zmaster587.advancedRocketry.client.render.multiblocks;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.AdvancedModelLoader;
import net.minecraftforge.client.model.IModelCustom;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo;
import org.lwjgl.opengl.GL11;
import zmaster587.advancedRocketry.tile.multiblock.machine.TileChemicalReactor;
import zmaster587.libVulpes.block.RotatableBlock;
import zmaster587.libVulpes.render.RenderHelper;
import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine;
public class RendererChemicalReactor extends TileEntitySpecialRenderer {
IModelCustom model;
ResourceLocation texture;
public RendererChemicalReactor(String modelPath, String texturePath) {
texture = new ResourceLocation(texturePath);
model = AdvancedModelLoader.loadModel(new ResourceLocation(modelPath));
}
@Override
public void renderTileEntityAt(TileEntity tile, double x,
double y, double z, float f) {
TileChemicalReactor multiBlockTile = (TileChemicalReactor)tile;
if(!multiBlockTile.canRender())
return;
GL11.glPushMatrix();
//Initial setup
int bright = tile.getWorldObj().getLightBrightnessForSkyBlocks(tile.xCoord, tile.yCoord + 1, tile.zCoord,0);
int brightX = bright % 65536;
int brightY = bright / 65536;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, brightX, brightY);
//Rotate and move the model into position
GL11.glPushMatrix();
GL11.glTranslated(x+.5f, y, z + 0.5f);
ForgeDirection front = RotatableBlock.getFront(tile.getBlockMetadata());
GL11.glRotatef((front.offsetZ == 1 ? 180 : 0) - front.offsetX*90f, 0, 1, 0);
bindTexture(texture);
model.renderOnly("mesh");
GL11.glPopMatrix();
GL11.glTranslated(x+.5f, y, z + 0.5f);
GL11.glRotatef((front.offsetZ == 1 ? 180 : 0) - front.offsetX*90f, 0, 1, 0);
GL11.glTranslated(0f, -0.5f, 1f );
if(multiBlockTile.isRunning())
GL11.glRotated((8*tile.getWorldObj().getTotalWorldTime()) % 360, 1, 0, 0);
model.renderOnly("Cylinder");
GL11.glPopMatrix();
}
}