Java tutorial
/******************************************************************************* * Copyright 2015 SteveKunG - More Planets Mod * * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. ******************************************************************************/ package stevekung.mods.moreplanets.planets.diona.render.entities; import java.util.Random; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; import stevekung.mods.moreplanets.planets.diona.entities.EntityEvolvedEnderman; import stevekung.mods.moreplanets.planets.diona.entities.models.ModelEvolvedEnderman; public class RenderEvolvedEnderman extends RenderLiving { private static final ResourceLocation endermanEyesTexture = new ResourceLocation( "diona:textures/model/space_enderman/space_enderman_eyes.png"); private static final ResourceLocation endermanTextures = new ResourceLocation( "diona:textures/model/space_enderman/space_enderman.png"); private ModelEvolvedEnderman endermanModel; private Random rnd = new Random(); public RenderEvolvedEnderman() { super(new ModelEvolvedEnderman(), 0.5F); this.endermanModel = (ModelEvolvedEnderman) super.mainModel; this.setRenderPassModel(this.endermanModel); } public void doRender(EntityEvolvedEnderman p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { this.endermanModel.isCarrying = p_76986_1_.getCarried().getMaterial() != Material.air; this.endermanModel.isAttacking = p_76986_1_.isScreaming(); if (p_76986_1_.isScreaming()) { double var10 = 0.02D; p_76986_2_ += this.rnd.nextGaussian() * var10; p_76986_6_ += this.rnd.nextGaussian() * var10; } super.doRender(p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_); } protected ResourceLocation getEntityTexture(EntityEvolvedEnderman p_110775_1_) { return endermanTextures; } protected void renderEquippedItems(EntityEvolvedEnderman p_77029_1_, float p_77029_2_) { super.renderEquippedItems(p_77029_1_, p_77029_2_); if (p_77029_1_.getCarried().getMaterial() != Material.air) { GL11.glEnable(GL12.GL_RESCALE_NORMAL); GL11.glPushMatrix(); float var3 = 0.5F; GL11.glTranslatef(0.0F, 0.6875F, -0.75F); var3 *= 1.0F; GL11.glRotatef(20.0F, 1.0F, 0.0F, 0.0F); GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F); GL11.glScalef(-var3, -var3, var3); int var4 = p_77029_1_.getBrightnessForRender(p_77029_2_); int var5 = var4 % 65536; int var6 = var4 / 65536; OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, var5 / 1.0F, var6 / 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.bindTexture(TextureMap.locationBlocksTexture); this.field_147909_c.renderBlockAsItem(p_77029_1_.getCarried(), p_77029_1_.getCarryingData(), 1.0F); GL11.glPopMatrix(); GL11.glDisable(GL12.GL_RESCALE_NORMAL); } } protected int shouldRenderPass(EntityEvolvedEnderman p_77032_1_, int p_77032_2_, float p_77032_3_) { if (p_77032_2_ != 0) { return -1; } else { this.bindTexture(endermanEyesTexture); float var4 = 1.0F; GL11.glEnable(GL11.GL_BLEND); GL11.glDisable(GL11.GL_ALPHA_TEST); GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE); GL11.glDisable(GL11.GL_LIGHTING); if (p_77032_1_.isInvisible()) { GL11.glDepthMask(false); } else { GL11.glDepthMask(true); } OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240.0F, 240.0F); GL11.glEnable(GL11.GL_LIGHTING); GL11.glColor4f(1.0F, 1.0F, 1.0F, var4); return 1; } } @Override public void doRender(EntityLiving p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { this.doRender((EntityEvolvedEnderman) p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_); } @Override protected int shouldRenderPass(EntityLivingBase p_77032_1_, int p_77032_2_, float p_77032_3_) { return this.shouldRenderPass((EntityEvolvedEnderman) p_77032_1_, p_77032_2_, p_77032_3_); } @Override protected void renderEquippedItems(EntityLivingBase p_77029_1_, float p_77029_2_) { this.renderEquippedItems((EntityEvolvedEnderman) p_77029_1_, p_77029_2_); } @Override public void doRender(EntityLivingBase p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { this.doRender((EntityEvolvedEnderman) p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_); } @Override protected ResourceLocation getEntityTexture(Entity p_110775_1_) { return this.getEntityTexture((EntityEvolvedEnderman) p_110775_1_); } @Override public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { this.doRender((EntityEvolvedEnderman) p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_); } }