/******************************************************************************* * AbyssalCraft * Copyright (c) 2012 - 2017 Shinoow. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/lgpl-3.0.txt * * Contributors: * Shinoow - implementation ******************************************************************************/ package com.shinoow.abyssalcraft.client.render.entity; import net.minecraft.client.model.ModelCreeper; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.MathHelper; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import com.shinoow.abyssalcraft.common.entity.anti.EntityAntiCreeper; @SideOnly(Side.CLIENT) public class RenderAntiCreeper extends RenderLiving { private static final ResourceLocation creeperTextures = new ResourceLocation("abyssalcraft:textures/model/anti/creeper.png"); public RenderAntiCreeper(RenderManager manager) { super(manager, new ModelCreeper(), 0.5F); } protected void preRenderCallback(EntityAntiCreeper par1EntityAntiCreeper, float par2) { float f1 = par1EntityAntiCreeper.getCreeperFlashIntensity(par2); float f2 = 1.0F + MathHelper.sin(f1 * 100.0F) * f1 * 0.01F; if (f1 < 0.0F) f1 = 0.0F; if (f1 > 1.0F) f1 = 1.0F; f1 *= f1; f1 *= f1; float f3 = (1.0F + f1 * 0.4F) * f2; float f4 = (1.0F + f1 * 0.1F) / f2; GlStateManager.scale(f3, f4, f3); } protected int getColorMultiplier(EntityAntiCreeper par1EntityAntiCreeper, float par2, float par3) { float f2 = par1EntityAntiCreeper.getCreeperFlashIntensity(par3); if ((int)(f2 * 10.0F) % 2 == 0) return 0; else { int i = (int)(f2 * 0.2F * 255.0F); if (i < 0) i = 0; if (i > 255) i = 255; short short1 = 255; short short2 = 255; short short3 = 255; return i << 24 | short1 << 16 | short2 << 8 | short3; } } protected ResourceLocation getEntityTexture(EntityAntiCreeper par1EntityAntiCreeper) { return creeperTextures; } @Override protected void preRenderCallback(EntityLivingBase par1EntityLivingBase, float par2) { this.preRenderCallback((EntityAntiCreeper)par1EntityLivingBase, par2); } @Override protected int getColorMultiplier(EntityLivingBase par1EntityLivingBase, float par2, float par3) { return this.getColorMultiplier((EntityAntiCreeper)par1EntityLivingBase, par2, par3); } @Override protected ResourceLocation getEntityTexture(Entity par1Entity) { return this.getEntityTexture((EntityAntiCreeper)par1Entity); } }