package micdoodle8.mods.galacticraft.core.client.render.entities.layer; import micdoodle8.mods.galacticraft.core.client.model.ModelPlayerGC; import micdoodle8.mods.galacticraft.core.client.render.entities.RenderPlayerGC; import micdoodle8.mods.galacticraft.core.wrappers.PlayerGearData; import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.RenderPlayer; import net.minecraft.client.renderer.entity.layers.LayerRenderer; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import org.lwjgl.opengl.GL11; public class LayerShield implements LayerRenderer<EntityLivingBase> { private final RenderPlayer renderer; private ModelBiped shieldModel; public LayerShield(RenderPlayer playerRendererIn) { this.renderer = playerRendererIn; this.initModel(); } @Override public boolean shouldCombineTextures() { return false; } @Override public void doRenderLayer(EntityLivingBase entitylivingbaseIn, float f2, float f3, float partialTicks, float f5, float f6, float f7, float scale) { if (!entitylivingbaseIn.isInvisible()) { PlayerGearData gearData = ModelPlayerGC.getGearData((EntityPlayer) entitylivingbaseIn); if (gearData != null) { if (gearData.getShieldController() >= 0) { this.shieldModel.setInvisible(false); this.shieldModel.bipedRightLeg.showModel = true; this.shieldModel.bipedLeftLeg.showModel = true; this.shieldModel.bipedBody.showModel = true; this.shieldModel.bipedRightArm.showModel = true; this.shieldModel.bipedLeftArm.showModel = true; this.shieldModel.bipedHead.showModel = true; this.shieldModel.bipedHeadwear.showModel = true; this.shieldModel.setModelAttributes(this.renderer.getMainModel()); this.shieldModel.setLivingAnimations(entitylivingbaseIn, f2, f3, partialTicks); this.renderer.bindTexture(RenderPlayerGC.thermalPaddingTexture0); GlStateManager.matrixMode(5890); GlStateManager.loadIdentity(); float f = (float) Math.sin((entitylivingbaseIn.ticksExisted + partialTicks) / 20.0F) * 5.0F; GlStateManager.translate(0.0F, f * 0.01F, 0.0F); GlStateManager.matrixMode(5888); GL11.glDisable(GL11.GL_LIGHTING); Minecraft.getMinecraft().renderEngine.bindTexture(RenderPlayerGC.heatShieldTexture); GL11.glEnable(GL11.GL_BLEND); float sTime = (float) ((1.0F - Math.sin((entitylivingbaseIn.ticksExisted + partialTicks) / 10.0F)) * 0.1F + 0.0F); float r = 0.9F * sTime; float g = 0.2F * sTime; float b = 0.9F * sTime; GlStateManager.depthMask(true); GL11.glColor4f(r, g, b, 0.2F); GlStateManager.blendFunc(GL11.GL_ONE, GL11.GL_ONE); this.shieldModel.render(entitylivingbaseIn, f2, f3, f5, f6, f7, scale); GlStateManager.matrixMode(5890); GlStateManager.loadIdentity(); GlStateManager.matrixMode(5888); GL11.glColor4f(1, 1, 1, 1); GL11.glDisable(GL11.GL_BLEND); GL11.glEnable(GL11.GL_ALPHA_TEST); GL11.glEnable(GL11.GL_LIGHTING); } } } } private void initModel() { this.shieldModel = new ModelPlayerGC(1.5F, false); } }