/******************************************************************************* * 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.model.entity; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; import net.minecraft.util.math.MathHelper; public class ModelGatekeeperMinion extends ModelBase { public ModelRenderer mask1; public ModelRenderer maskpart1; public ModelRenderer maskpart2; public ModelRenderer mask2; public ModelRenderer maskpart3; public ModelRenderer maskpart4; public ModelRenderer head; public ModelRenderer body; public ModelRenderer rightshoulder; public ModelRenderer leftshoulder; public ModelRenderer rightarm1; public ModelRenderer rightarm2; public ModelRenderer leftarm1; public ModelRenderer leftarm2; public ModelRenderer tentacle1; public ModelRenderer tentacle2; public ModelRenderer tentacle3; public ModelRenderer tentacle4; public ModelRenderer rltentacle1; public ModelRenderer rltentacle2; public ModelRenderer rltentacle3; public ModelRenderer rltentacle4; public ModelRenderer lltentacle1; public ModelRenderer lltentacle2; public ModelRenderer lltentacle3; public ModelRenderer lltentacle4; public ModelRenderer lowerbody; public ModelGatekeeperMinion() { textureWidth = 128; textureHeight = 64; mask1 = new ModelRenderer(this, 32, 0); mask1.addBox(-3.4F, -8F, -6F, 6, 8, 1); mask1.setRotationPoint(0F, 0F, 0F); mask1.setTextureSize(128, 64); mask1.mirror = true; setRotation(mask1, 0F, -0.5235988F, 0F); maskpart1 = new ModelRenderer(this, 26, 0); maskpart1.addBox(1.6F, -8F, -7F, 1, 1, 1); maskpart1.setRotationPoint(0F, 0F, 0F); maskpart1.setTextureSize(128, 64); maskpart1.mirror = true; setRotation(maskpart1, 0F, -0.5235988F, 0F); maskpart2 = new ModelRenderer(this, 26, 0); maskpart2.addBox(1.6F, -1F, -7F, 1, 1, 1); maskpart2.setRotationPoint(0F, 0F, 0F); maskpart2.setTextureSize(128, 64); maskpart2.mirror = true; setRotation(maskpart2, 0F, -0.5235988F, 0F); mask2 = new ModelRenderer(this, 32, 0); mask2.addBox(-2.6F, -8F, -6F, 6, 8, 1); mask2.setRotationPoint(0F, 0F, 0F); mask2.setTextureSize(128, 64); mask2.mirror = true; setRotation(mask2, 0F, 0.5235988F, 0F); maskpart3 = new ModelRenderer(this, 26, 0); maskpart3.addBox(-2.6F, -8F, -7F, 1, 1, 1); maskpart3.setRotationPoint(0F, 0F, 0F); maskpart3.setTextureSize(128, 64); maskpart3.mirror = true; setRotation(maskpart3, 0F, 0.5235988F, 0F); maskpart4 = new ModelRenderer(this, 26, 0); maskpart4.addBox(-2.6F, -1F, -7F, 1, 1, 1); maskpart4.setRotationPoint(0F, 0F, 0F); maskpart4.setTextureSize(128, 64); maskpart4.mirror = true; setRotation(maskpart4, 0F, 0.5235988F, 0F); head = new ModelRenderer(this, 0, 0); head.addBox(-4F, -8F, -4F, 8, 8, 8); head.setRotationPoint(0F, -12F, 0F); head.setTextureSize(128, 64); head.mirror = true; setRotation(head, 0F, 0F, 0F); head.addChild(mask1); head.addChild(mask2); head.addChild(maskpart1); head.addChild(maskpart2); head.addChild(maskpart3); head.addChild(maskpart4); body = new ModelRenderer(this, 16, 16); body.addBox(0F, 0F, 0F, 8, 22, 6); body.setRotationPoint(-4F, -12F, -3F); body.setTextureSize(128, 64); body.mirror = true; setRotation(body, 0F, 0F, 0F); rightshoulder = new ModelRenderer(this, 44, 9); rightshoulder.addBox(-7F, -2F, -2F, 7, 4, 6); rightshoulder.setRotationPoint(0.5F, 2F, 2F); rightshoulder.setTextureSize(128, 64); rightshoulder.mirror = true; setRotation(rightshoulder, 0F, 0F, -0.1745329F); body.addChild(rightshoulder); leftshoulder = new ModelRenderer(this, 44, 9); leftshoulder.addBox(0F, -2F, -2F, 7, 4, 6); leftshoulder.setRotationPoint(7.5F, 2F, 2F); leftshoulder.setTextureSize(128, 64); leftshoulder.mirror = true; setRotation(leftshoulder, 0F, 0F, 0.1745329F); body.addChild(leftshoulder); rightarm1 = new ModelRenderer(this, 0, 20); rightarm1.addBox(-4F, -2F, -2F, 4, 8, 4); rightarm1.setRotationPoint(-5F, -8F, 0F); rightarm1.setTextureSize(128, 64); rightarm1.mirror = true; setRotation(rightarm1, -0.3839724F, 0F, 0F); rightarm2 = new ModelRenderer(this, 0, 26); rightarm2.addBox(-4F, 5.5F, -1F, 4, 10, 4); rightarm2.setRotationPoint(0,0,0); rightarm2.setTextureSize(128, 64); rightarm2.mirror = true; setRotation(rightarm2, -0.5585054F - rightarm1.rotateAngleX, 0F, 0F); rightarm1.addChild(rightarm2); leftarm1 = new ModelRenderer(this, 0, 20); leftarm1.addBox(0F, -2F, -2F, 4, 8, 4); leftarm1.setRotationPoint(5F, -8F, 0F); leftarm1.setTextureSize(128, 64); leftarm1.mirror = true; setRotation(leftarm1, -0.3839724F, 0F, 0F); leftarm2 = new ModelRenderer(this, 0, 26); leftarm2.addBox(0F, 5.5F, -1F, 4, 4, 4); leftarm2.setRotationPoint(0,0,0); leftarm2.setTextureSize(128, 64); leftarm2.mirror = true; setRotation(leftarm2, -0.5585054F - leftarm1.rotateAngleX, 0F, 0F); leftarm1.addChild(leftarm2); tentacle1 = new ModelRenderer(this, 0, 46); tentacle1.addBox(-1F, 0F, -1F, 2, 6, 2); tentacle1.setRotationPoint(1F, 9F, 2F); tentacle1.setTextureSize(128, 64); tentacle1.mirror = true; setRotation(tentacle1, 0, 0F, 0F); tentacle2 = new ModelRenderer(this, 0, 46); tentacle2.addBox(-1F, 0F, -1F, 2, 6, 2); tentacle2.setRotationPoint(3F, 9F, 2F); tentacle2.setTextureSize(128, 64); tentacle2.mirror = true; setRotation(tentacle2, 0, 0F, 0F); tentacle3 = new ModelRenderer(this, 0, 46); tentacle3.addBox(-1F, 0F, -1F, 2, 6, 2); tentacle3.setRotationPoint(1F, 9F, 0F); tentacle3.setTextureSize(128, 64); tentacle3.mirror = true; setRotation(tentacle3, 0, 0F, 0F); tentacle4 = new ModelRenderer(this, 0, 46); tentacle4.addBox(-1F, 0F, -1F, 2, 6, 2); tentacle4.setRotationPoint(3F, 9F, 0F); tentacle4.setTextureSize(128, 64); tentacle4.mirror = true; setRotation(tentacle4, 0, 0F, 0F); rltentacle1 = new ModelRenderer(this, 0, 46); rltentacle1.addBox(-1F, 0F, -1F, 2, 6, 2); rltentacle1.setRotationPoint(-3F, 18F, 1F); rltentacle1.setTextureSize(128, 64); rltentacle1.mirror = true; leftarm2.addChild(tentacle1); leftarm2.addChild(tentacle2); leftarm2.addChild(tentacle3); leftarm2.addChild(tentacle4); setRotation(rltentacle1, 0F, 0F, 0F); rltentacle2 = new ModelRenderer(this, 0, 46); rltentacle2.addBox(-1F, 0F, -1F, 2, 6, 2); rltentacle2.setRotationPoint(-3F, 18F, -1F); rltentacle2.setTextureSize(128, 64); rltentacle2.mirror = true; setRotation(rltentacle2, 0F, 0F, 0F); rltentacle3 = new ModelRenderer(this, 0, 46); rltentacle3.addBox(-1F, 0F, -1F, 2, 6, 2); rltentacle3.setRotationPoint(-1F, 18F, 1F); rltentacle3.setTextureSize(128, 64); rltentacle3.mirror = true; setRotation(rltentacle3, 0F, 0F, 0F); rltentacle4 = new ModelRenderer(this, 0, 46); rltentacle4.addBox(-1F, 0F, -1F, 2, 6, 2); rltentacle4.setRotationPoint(-1F, 18F, -1F); rltentacle4.setTextureSize(128, 64); rltentacle4.mirror = true; setRotation(rltentacle4, 0F, 0F, 0F); lltentacle1 = new ModelRenderer(this, 0, 46); lltentacle1.addBox(-1F, 0F, -1F, 2, 6, 2); lltentacle1.setRotationPoint(1F, 18F, 1F); lltentacle1.setTextureSize(128, 64); lltentacle1.mirror = true; setRotation(lltentacle1, 0F, 0F, 0F); lltentacle2 = new ModelRenderer(this, 0, 46); lltentacle2.addBox(-1F, 0F, -1F, 2, 6, 2); lltentacle2.setRotationPoint(1F, 18F, -1F); lltentacle2.setTextureSize(128, 64); lltentacle2.mirror = true; setRotation(lltentacle2, 0F, 0F, 0F); lltentacle3 = new ModelRenderer(this, 0, 46); lltentacle3.addBox(-1F, 0F, -1F, 2, 6, 2); lltentacle3.setRotationPoint(3F, 18F, 1F); lltentacle3.setTextureSize(128, 64); lltentacle3.mirror = true; setRotation(lltentacle3, 0F, 0F, 0F); lltentacle4 = new ModelRenderer(this, 0, 46); lltentacle4.addBox(-1F, 0F, -1F, 2, 6, 2); lltentacle4.setRotationPoint(3F, 18F, -1F); lltentacle4.setTextureSize(128, 64); lltentacle4.mirror = true; setRotation(lltentacle4, 0F, 0F, 0F); lowerbody = new ModelRenderer(this, 8, 44); lowerbody.addBox(0F, 0F, 0F, 8, 8, 4); lowerbody.setRotationPoint(0F, 22F, 1F); lowerbody.setTextureSize(128, 64); lowerbody.mirror = true; setRotation(lowerbody, 0F, 0F, 0F); body.addChild(lowerbody); } @Override public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { super.render(entity, f, f1, f2, f3, f4, f5); setRotationAngles(f, f1, f2, f3, f4, f5, entity); head.render(f5); body.render(f5); rightarm1.render(f5); leftarm1.render(f5); // tentacle1.render(f5); // tentacle2.render(f5); // tentacle3.render(f5); // tentacle4.render(f5); rltentacle1.render(f5); rltentacle2.render(f5); rltentacle3.render(f5); rltentacle4.render(f5); lltentacle1.render(f5); lltentacle2.render(f5); lltentacle3.render(f5); lltentacle4.render(f5); } private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; model.rotateAngleY = y; model.rotateAngleZ = z; } @Override public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { head.rotateAngleY = f3 / (180F / (float)Math.PI); head.rotateAngleX = f4 / (180F / (float)Math.PI); rightarm1.rotateAngleX = MathHelper.cos(f * 0.6662F + (float)Math.PI) * 2.0F * f1 * 0.5F; leftarm1.rotateAngleX = MathHelper.cos(f * 0.6662F) * 2.0F * f1 * 0.5F; rightarm1.rotateAngleZ = 0.0F; leftarm1.rotateAngleZ = 0.0F; tentacle1.offsetX = tentacle1.offsetY = tentacle1.offsetZ = 0.0F; float f16 = 0.03F * (entity.getEntityId() % 10); tentacle1.rotateAngleX = MathHelper.cos(entity.ticksExisted * f16) * 10.5F * (float)Math.PI / 180.0F; tentacle1.rotateAngleY = 0.0F; tentacle1.rotateAngleZ = MathHelper.sin(entity.ticksExisted * f16) * 6.5F * (float)Math.PI / 180.0F; float f17 = 0.03F * (entity.getEntityId() % 10); tentacle2.offsetX = tentacle2.offsetY = tentacle2.offsetZ = 0.0F; tentacle2.rotateAngleX = MathHelper.sin(entity.ticksExisted * f17) * 10.5F * (float)Math.PI / 180.0F; tentacle2.rotateAngleY = 0.0F; tentacle2.rotateAngleZ = MathHelper.cos(entity.ticksExisted * f17) * 6.5F * (float)Math.PI / 180.0F; float f18 = 0.03F * (entity.getEntityId() % 10); tentacle3.offsetX = tentacle3.offsetY = tentacle3.offsetZ = 0.0F; tentacle3.rotateAngleX = MathHelper.sin(entity.ticksExisted * f18) * 10.5F * (float)Math.PI / 180.0F; tentacle3.rotateAngleY = 0.0F; tentacle3.rotateAngleZ = MathHelper.cos(entity.ticksExisted * f18) * 6.5F * (float)Math.PI / 180.0F; float f19 = 0.03F * (entity.getEntityId() % 10); tentacle4.offsetX = tentacle4.offsetY = tentacle4.offsetZ = 0.0F; tentacle4.rotateAngleX = MathHelper.cos(entity.ticksExisted * f19) * 10.5F * (float)Math.PI / 180.0F; tentacle4.rotateAngleY = 0.0F; tentacle4.rotateAngleZ = MathHelper.sin(entity.ticksExisted * f19) * 6.5F * (float)Math.PI / 180.0F; rltentacle1.rotateAngleX = MathHelper.cos(f * 0.6662F) * 1.4F * f1; rltentacle1.rotateAngleZ = MathHelper.cos(f * 0.6662F) * 1.4F * f1; rltentacle1.rotateAngleY = 0.0F; rltentacle2.rotateAngleX = MathHelper.cos(f * 0.6662F + (float)Math.PI) * 1.4F * f1; rltentacle2.rotateAngleZ = MathHelper.cos(f * 0.6662F + (float)Math.PI) * 1.4F * f1; rltentacle2.rotateAngleY = 0.0F; rltentacle3.rotateAngleX = MathHelper.cos(f * 0.6662F + (float)Math.PI) * 1.4F * f1; rltentacle3.rotateAngleZ = MathHelper.cos(f * 0.6662F + (float)Math.PI) * 1.4F * f1; rltentacle3.rotateAngleY = 0.0F; rltentacle4.rotateAngleX = MathHelper.cos(f * 0.6662F) * 1.4F * f1; rltentacle4.rotateAngleZ = MathHelper.cos(f * 0.6662F) * 1.4F * f1; rltentacle4.rotateAngleY = 0.0F; lltentacle1.rotateAngleX = MathHelper.cos(f * 0.6662F) * 1.4F * f1; lltentacle1.rotateAngleZ = -MathHelper.cos(f * 0.6662F) * 1.4F * f1; lltentacle1.rotateAngleY = 0.0F; lltentacle2.rotateAngleX = MathHelper.cos(f * 0.6662F + (float)Math.PI) * 1.4F * f1; lltentacle2.rotateAngleZ = -MathHelper.cos(f * 0.6662F + (float)Math.PI) * 1.4F * f1; lltentacle2.rotateAngleY = 0.0F; lltentacle3.rotateAngleX = MathHelper.cos(f * 0.6662F + (float)Math.PI) * 1.4F * f1; lltentacle3.rotateAngleZ = -MathHelper.cos(f * 0.6662F + (float)Math.PI) * 1.4F * f1; lltentacle3.rotateAngleY = 0.0F; lltentacle4.rotateAngleX = MathHelper.cos(f * 0.6662F) * 1.4F * f1; lltentacle4.rotateAngleZ = -MathHelper.cos(f * 0.6662F) * 1.4F * f1; lltentacle4.rotateAngleY = 0.0F; rightarm1.rotateAngleY = 0.0F; leftarm1.rotateAngleY = 0.0F; float f6; float f7; if (swingProgress > -9990.0F) { f6 = swingProgress; body.rotateAngleY = MathHelper.sin(MathHelper.sqrt(f6) * (float)Math.PI * 2.0F) * 0.2F; rightarm1.rotateAngleY += body.rotateAngleY; leftarm1.rotateAngleY += body.rotateAngleY; f6 = 1.0F - swingProgress; f6 *= f6; f6 *= f6; f6 = 1.0F - f6; f7 = MathHelper.sin(f6 * (float)Math.PI); float f8 = MathHelper.sin(swingProgress * (float)Math.PI) * -(head.rotateAngleX - 0.7F) * 0.75F; rightarm1.rotateAngleX = (float)(rightarm1.rotateAngleX - (f7 * 1.2D + f8)); rightarm1.rotateAngleY += body.rotateAngleY * 2.0F; rightarm1.rotateAngleZ = MathHelper.sin(swingProgress * (float)Math.PI) * -0.4F; leftarm1.rotateAngleX = (float)(leftarm1.rotateAngleX - (f7 * 1.2D + f8)); leftarm1.rotateAngleY += body.rotateAngleY * -2.0F; leftarm1.rotateAngleZ = MathHelper.sin(swingProgress * (float)Math.PI) * 0.4F; } } }