package sourcecoded.quantum.client.renderer.tile; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.entity.item.EntityItem; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.AdvancedModelLoader; import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.common.util.ForgeDirection; import sourcecoded.quantum.Constants; import sourcecoded.quantum.client.renderer.GlowRenderHandler; import sourcecoded.quantum.tile.TileRiftInjector; import sourcecoded.quantum.util.TessUtils; import static org.lwjgl.opengl.GL11.*; public class TESRRiftInjector extends TESRStaticHandler { WavefrontObject model = (WavefrontObject) AdvancedModelLoader.loadModel(new ResourceLocation(Constants.MODID, "model/block/infuser.obj")); ResourceLocation texDark = new ResourceLocation(Constants.MODID, "textures/blocks/infusedStone.png"); ResourceLocation texHaze = new ResourceLocation(Constants.MODID, "textures/blocks/hazeDesaturated.png"); @Override public void renderTile(TileEntity te, double x, double y, double z, float ptt, boolean isStatic, RenderBlocks renderBlocks) { if (!isStatic) { glPushMatrix(); glTranslated(x, y, z); glEnable(GL_BLEND); glDisable(GL_LIGHTING); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); Tessellator tess = Tessellator.instance; TileRiftInjector injector = (TileRiftInjector) te; if (injector != null && injector.hasWorldObj() && injector.currentItem != null) { EntityItem item = new EntityItem(injector.getWorldObj(), 0D, 0D, 0D, injector.currentItem); item.hoverStart = 0.0F; RenderItem.renderInFrame = true; RenderManager.instance.renderEntityWithPosYaw(item, 0.5D, 0.35D, 0.5D, 0F, 0F); RenderItem.renderInFrame = false; } glColor4f(1F, 1F, 1F, 1F); tess.startDrawingQuads(); tess.setColorRGBA_F(1F, 1F, 1F, GlowRenderHandler.instance().brightness); tess.setBrightness(240); this.bindTexture(texHaze); float percentage = 0F; if (injector != null) { try { percentage = (float)injector.getRiftEnergy() / (float)injector.getMaxRiftEnergy(); tess.setColorRGBA_F(injector.colour.rgb[0], injector.colour.rgb[1], injector.colour.rgb[2], GlowRenderHandler.instance().brightness); } catch (ArithmeticException e) { //Divided by 0 } } float minimum = 3.9F/16F; float height = percentage * 4.5F/16F + minimum; TessUtils.drawFace(ForgeDirection.UP, tess, 1/16F, height, 1/16F, 1-1/16F, height, 1-1/16F, 0, 0, 1, 1); tess.draw(); glEnable(GL_LIGHTING); glPopMatrix(); } else { Tessellator tess = Tessellator.instance; x += 0.5; z += 0.5; tess.addTranslation((float) x, (float) y, (float) z); tess.startDrawingQuads(); tess.setColorRGBA_F(1F, 1F, 1F, 1F); brightness(tess); Minecraft.getMinecraft().renderEngine.bindTexture(texDark); model.tessellatePart(tess, "Base"); tess.draw(); tess.addTranslation((float) -x, (float) -y, (float) -z); Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture); } } }