001 package net.minecraft.src; 002 003 import cpw.mods.fml.common.Side; 004 import cpw.mods.fml.common.asm.SideOnly; 005 import org.lwjgl.opengl.GL11; 006 007 @SideOnly(Side.CLIENT) 008 public class RenderSlime extends RenderLiving 009 { 010 private ModelBase scaleAmount; 011 012 public RenderSlime(ModelBase par1ModelBase, ModelBase par2ModelBase, float par3) 013 { 014 super(par1ModelBase, par3); 015 this.scaleAmount = par2ModelBase; 016 } 017 018 /** 019 * Determines whether Slime Render should pass or not. 020 */ 021 protected int shouldSlimeRenderPass(EntitySlime par1EntitySlime, int par2, float par3) 022 { 023 if (par1EntitySlime.getHasActivePotion()) 024 { 025 return 0; 026 } 027 else if (par2 == 0) 028 { 029 this.setRenderPassModel(this.scaleAmount); 030 GL11.glEnable(GL11.GL_NORMALIZE); 031 GL11.glEnable(GL11.GL_BLEND); 032 GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); 033 return 1; 034 } 035 else 036 { 037 if (par2 == 1) 038 { 039 GL11.glDisable(GL11.GL_BLEND); 040 GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); 041 } 042 043 return -1; 044 } 045 } 046 047 /** 048 * sets the scale for the slime based on getSlimeSize in EntitySlime 049 */ 050 protected void scaleSlime(EntitySlime par1EntitySlime, float par2) 051 { 052 float var3 = (float)par1EntitySlime.getSlimeSize(); 053 float var4 = (par1EntitySlime.field_70812_c + (par1EntitySlime.field_70811_b - par1EntitySlime.field_70812_c) * par2) / (var3 * 0.5F + 1.0F); 054 float var5 = 1.0F / (var4 + 1.0F); 055 GL11.glScalef(var5 * var3, 1.0F / var5 * var3, var5 * var3); 056 } 057 058 /** 059 * Allows the render to do any OpenGL state modifications necessary before the model is rendered. Args: 060 * entityLiving, partialTickTime 061 */ 062 protected void preRenderCallback(EntityLiving par1EntityLiving, float par2) 063 { 064 this.scaleSlime((EntitySlime)par1EntityLiving, par2); 065 } 066 067 /** 068 * Queries whether should render the specified pass or not. 069 */ 070 protected int shouldRenderPass(EntityLiving par1EntityLiving, int par2, float par3) 071 { 072 return this.shouldSlimeRenderPass((EntitySlime)par1EntityLiving, par2, par3); 073 } 074 }