/** * Copyright (c) Lambda Innovation Team, 2013 * 版权许可:LambdaCraft 制作小组, 2013. * http://lambdacraft.cn/ * * The mod is open-source. It is distributed under the terms of the * Lambda Innovation Open Source License. It grants rights to read, modify, compile * or run the code. It does *NOT* grant the right to redistribute this software * or its modifications in any form, binary or source, except if expressively * granted by the copyright holder. * * 本Mod是完全开源的,你允许参考、使用、引用其中的任何代码段,但不允许将其用于商业用途,在引用的时候,必须注明原作者。 */ package cn.dawn47.mob.client.model; import org.lwjgl.opengl.GL11; import cn.dawn47.mob.entity.EntityDrone; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; import net.minecraft.util.MathHelper; /** * @author WeAthFolD * */ public class ModelDrone extends ModelBase { // fields ModelRenderer body; ModelRenderer head; ModelRenderer neck; ModelRenderer legfr1; ModelRenderer legfr2; ModelRenderer legfl2; ModelRenderer legfl1; ModelRenderer legbr1; ModelRenderer legbr2; ModelRenderer legbl1; ModelRenderer legbl2; public ModelDrone() { textureWidth = 128; textureHeight = 64; body = new ModelRenderer(this, 45, 0); body.addBox(0F, 0F, 0F, 3, 3, 3); body.setRotationPoint(-2F, 17F, 0F); body.setTextureSize(128, 64); body.mirror = true; head = new ModelRenderer(this, 24, 0); head.addBox(-1.5F, -3F, -4F, 3, 3, 5); head.setRotationPoint(-0.5F, 17F, 2.4F); head.setTextureSize(128, 64); head.mirror = true; setRotation(head, -0.2579783F, 0.0523599F, 0.0174533F); neck = new ModelRenderer(this, 0, 0); neck.addBox(0F, -2F, 0F, 1, 1, 1); neck.setRotationPoint(-1F, 18F, 1F); neck.setTextureSize(128, 64); neck.mirror = true; setRotation(neck, 0F, 0F, 0F); legfr1 = new ModelRenderer(this, 10, 0); legfr1.addBox(-1F, -7F, -1F, 1, 7, 1); legfr1.setRotationPoint(-1F, 20F, 1F); legfr1.setTextureSize(128, 64); legfr1.mirror = true; setRotation(legfr1, 0.4492416F, 0F, -0.6363601F); legfr2 = new ModelRenderer(this, 16, 0); legfr2.addBox(0F, 0F, 0F, 1, 10, 1); legfr2.setRotationPoint(-5F, 14.53333F, -3F); legfr2.setTextureSize(128, 64); legfr2.mirror = true; setRotation(legfr2, 0.0083652F, -0.671487F, 0.2463978F); legfl2 = new ModelRenderer(this, 16, 0); legfl2.addBox(0F, 0F, -1F, 1, 10, 1); legfl2.setRotationPoint(4F, 14F, -1F); legfl2.setTextureSize(128, 64); legfl2.mirror = true; setRotation(legfl2, -0.0083601F, 0.5493075F, -0.2289523F); legfl1 = new ModelRenderer(this, 10, 0); legfl1.addBox(0F, -7F, 0F, 1, 7, 1); legfl1.setRotationPoint(0F, 20F, 0F); legfl1.setTextureSize(128, 64); legfl1.mirror = true; setRotation(legfl1, 0.2921681F, 0F, 0.5948606F); legbr1 = new ModelRenderer(this, 10, 0); legbr1.addBox(0F, -6F, 0F, 1, 7, 1); legbr1.setRotationPoint(-2F, 20F, 2F); legbr1.setTextureSize(128, 64); legbr1.mirror = true; setRotation(legbr1, -0.4583297F, 0F, -0.6724303F); legbr2 = new ModelRenderer(this, 16, 0); legbr2.addBox(0F, 0F, -1F, 1, 10, 1); legbr2.setRotationPoint(-5F, 15F, 5.466667F); legbr2.setTextureSize(128, 64); legbr2.mirror = true; setRotation(legbr2, 0.0083652F, 0.6714805F, 0.2463978F); legbl1 = new ModelRenderer(this, 10, 0); legbl1.addBox(0F, -7F, 0F, 1, 7, 1); legbl1.setRotationPoint(0F, 20F, 1F); legbl1.setTextureSize(128, 64); legbl1.mirror = true; setRotation(legbl1, -0.4932362F, -0.0139626F, 0.6410071F); legbl2 = new ModelRenderer(this, 16, 0); legbl2.addBox(0F, 0F, -1F, 1, 10, 1); legbl2.setRotationPoint(3F, 15F, 5F); legbl2.setTextureSize(128, 64); legbl2.mirror = true; setRotation(legbl2, 0.0083652F, -0.6714805F, -0.2464056F); } @Override public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { setRotationAngles(f, f1, f2, f3, f4, f5, entity); EntityDrone base = (EntityDrone) entity; GL11.glPushMatrix(); body.render(f5); head.render(f5); neck.render(f5); GL11.glPopMatrix(); legfr1.render(f5); legfr2.render(f5); legfl2.render(f5); legfl1.render(f5); legbr1.render(f5); legbr2.render(f5); legbl1.render(f5); legbl2.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 e) { this.head.rotateAngleX = f4 / (180F / (float) Math.PI); this.head.rotateAngleY = f3 / (180F / (float) Math.PI); float r1 = MathHelper.cos(f * 1F + 0.002F) * 0.7F * f1, r2 = MathHelper.sin(f * 1F + 0.002F) * 0.7F * f1; if(!e.onGround) r1 = r2 = 0F; legfl2.rotateAngleZ = r1 - 0.2289523F; legbr2.rotateAngleZ = r1 + 0.2463978F; legfr2.rotateAngleZ = r2 + 0.2463978F; legbl2.rotateAngleZ = r2 - 0.2464056F; } }