package fr.elias.client; import fr.elias.common.EntityOresBoss; import net.minecraft.client.model.ModelBase; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.RenderLivingBase; import net.minecraft.client.renderer.entity.layers.LayerRenderer; import net.minecraft.entity.EntityLivingBase; import net.minecraft.util.ResourceLocation; public class LayerBossPhases implements LayerRenderer { protected static final ResourceLocation enchantmentEffectTexture = new ResourceLocation("textures/misc/enchanted_item_glint.png"); private final RenderLivingBase<?> renderer; private final ModelBase modelBoss; public LayerBossPhases(RenderLivingBase<?> rendererIn, ModelBase modelBoss2) { this.renderer = rendererIn; this.modelBoss = modelBoss2; } @Override public void doRenderLayer(EntityLivingBase entitylivingbaseIn, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch, float scale) { this.renderBossPhasesEffect(renderer, entitylivingbaseIn, modelBoss, limbSwing, limbSwingAmount, partialTicks, ageInTicks, netHeadYaw, headPitch, scale); } public static void renderBossPhasesEffect(RenderLivingBase<?> renderLivingBase, EntityLivingBase entityLivingBase, ModelBase model, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch, float scale) { EntityOresBoss entityOresBoss = (EntityOresBoss) entityLivingBase; float f = (float) entityLivingBase.ticksExisted + ageInTicks; renderLivingBase.bindTexture(enchantmentEffectTexture); GlStateManager.enableBlend(); GlStateManager.depthFunc(514); GlStateManager.depthMask(false); float f1 = 0.5F; GlStateManager.color(f1, f1, f1, 1.0F); for (int i = 0; i < 2; ++i) { GlStateManager.disableLighting(); GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_COLOR, GlStateManager.DestFactor.ONE); float f2 = 0.76F; switch (entityOresBoss.getPhase()) { case 2: GlStateManager.color(0.0F, 0.65F * f2, 0.15F * f2, 1.0F); break; case 3: GlStateManager.color(0.8F * f2, 0.15F * f2, 0.15F * f2, 1.0F); break; default: GlStateManager.color(0.0F, 0.0F, 0.0F, 0.0F); break; } GlStateManager.matrixMode(5890); GlStateManager.loadIdentity(); float f3 = 0.33333334F; GlStateManager.scale(f3, f3, f3); GlStateManager.rotate(30.0F - (float) i * 60.0F, 0.0F, 0.0F, 1.0F); GlStateManager.translate(0.0F, f * (0.001F + (float) i * 0.003F) * 20.0F, 0.0F); GlStateManager.matrixMode(5888); model.render(entityLivingBase, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale); } GlStateManager.matrixMode(5890); GlStateManager.loadIdentity(); GlStateManager.matrixMode(5888); GlStateManager.enableLighting(); GlStateManager.depthMask(true); GlStateManager.depthFunc(515); GlStateManager.disableBlend(); } @Override public boolean shouldCombineTextures() { return false; } }