aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core/client
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/gtPlusPlus/core/client')
-rw-r--r--src/Java/gtPlusPlus/core/client/model/ModelGiantChicken.java102
-rw-r--r--src/Java/gtPlusPlus/core/client/renderer/RenderGiantChicken.java116
2 files changed, 218 insertions, 0 deletions
diff --git a/src/Java/gtPlusPlus/core/client/model/ModelGiantChicken.java b/src/Java/gtPlusPlus/core/client/model/ModelGiantChicken.java
new file mode 100644
index 0000000000..c0f5f79018
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/client/model/ModelGiantChicken.java
@@ -0,0 +1,102 @@
+package gtPlusPlus.core.client.model;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+
+import net.minecraft.client.model.ModelChicken;
+import net.minecraft.client.model.ModelRenderer;
+import net.minecraft.entity.Entity;
+import net.minecraft.util.MathHelper;
+import org.lwjgl.opengl.GL11;
+
+@SideOnly(Side.CLIENT)
+public class ModelGiantChicken extends ModelChicken{
+
+ public ModelGiantChicken()
+ {
+ byte b0 = 16;
+ this.head = new ModelRenderer(this, 0, 0);
+ this.head.addBox(-2.0F, -6.0F, -2.0F, 4, 6, 3, 0.0F);
+ this.head.setRotationPoint(0.0F, (float)(-1 + b0), -4.0F);
+ this.bill = new ModelRenderer(this, 14, 0);
+ this.bill.addBox(-2.0F, -4.0F, -4.0F, 4, 2, 2, 0.0F);
+ this.bill.setRotationPoint(0.0F, (float)(-1 + b0), -4.0F);
+ this.chin = new ModelRenderer(this, 14, 4);
+ this.chin.addBox(-1.0F, -2.0F, -3.0F, 2, 2, 2, 0.0F);
+ this.chin.setRotationPoint(0.0F, (float)(-1 + b0), -4.0F);
+ this.body = new ModelRenderer(this, 0, 9);
+ this.body.addBox(-3.0F, -4.0F, -3.0F, 6, 8, 6, 0.0F);
+ this.body.setRotationPoint(0.0F, (float)b0, 0.0F);
+ this.rightLeg = new ModelRenderer(this, 26, 0);
+ this.rightLeg.addBox(-1.0F, 0.0F, -3.0F, 3, 5, 3);
+ this.rightLeg.setRotationPoint(-2.0F, (float)(3 + b0), 1.0F);
+ this.leftLeg = new ModelRenderer(this, 26, 0);
+ this.leftLeg.addBox(-1.0F, 0.0F, -3.0F, 3, 5, 3);
+ this.leftLeg.setRotationPoint(1.0F, (float)(3 + b0), 1.0F);
+ this.rightWing = new ModelRenderer(this, 24, 13);
+ this.rightWing.addBox(0.0F, 0.0F, -3.0F, 1, 4, 6);
+ this.rightWing.setRotationPoint(-4.0F, (float)(-3 + b0), 0.0F);
+ this.leftWing = new ModelRenderer(this, 24, 13);
+ this.leftWing.addBox(-1.0F, 0.0F, -3.0F, 1, 4, 6);
+ this.leftWing.setRotationPoint(4.0F, (float)(-3 + b0), 0.0F);
+ }
+
+ /**
+ * Sets the models various rotation angles then renders the model.
+ */
+ public void render(Entity p_78088_1_, float p_78088_2_, float p_78088_3_, float p_78088_4_, float p_78088_5_, float p_78088_6_, float p_78088_7_)
+ {
+ this.setRotationAngles(p_78088_2_, p_78088_3_, p_78088_4_, p_78088_5_, p_78088_6_, p_78088_7_, p_78088_1_);
+
+ if (this.isChild)
+ {
+ float f6 = 2.0F;
+ GL11.glPushMatrix();
+ GL11.glTranslatef(0.0F, 5.0F * p_78088_7_, 2.0F * p_78088_7_);
+ this.head.render(p_78088_7_);
+ this.bill.render(p_78088_7_);
+ this.chin.render(p_78088_7_);
+ GL11.glPopMatrix();
+ GL11.glPushMatrix();
+ GL11.glScalef(1.0F / f6, 1.0F / f6, 1.0F / f6);
+ GL11.glTranslatef(0.0F, 24.0F * p_78088_7_, 0.0F);
+ this.body.render(p_78088_7_);
+ this.rightLeg.render(p_78088_7_);
+ this.leftLeg.render(p_78088_7_);
+ this.rightWing.render(p_78088_7_);
+ this.leftWing.render(p_78088_7_);
+ GL11.glPopMatrix();
+ }
+ else
+ {
+ this.head.render(p_78088_7_);
+ this.bill.render(p_78088_7_);
+ this.chin.render(p_78088_7_);
+ this.body.render(p_78088_7_);
+ this.rightLeg.render(p_78088_7_);
+ this.leftLeg.render(p_78088_7_);
+ this.rightWing.render(p_78088_7_);
+ this.leftWing.render(p_78088_7_);
+ }
+ }
+
+ /**
+ * Sets the model's various rotation angles. For bipeds, par1 and par2 are used for animating the movement of arms
+ * and legs, where par1 represents the time(so that arms and legs swing back and forth) and par2 represents how
+ * "far" arms and legs can swing at most.
+ */
+ public void setRotationAngles(float p_78087_1_, float p_78087_2_, float p_78087_3_, float p_78087_4_, float p_78087_5_, float p_78087_6_, Entity p_78087_7_)
+ {
+ this.head.rotateAngleX = p_78087_5_ / (180F / (float)Math.PI);
+ this.head.rotateAngleY = p_78087_4_ / (180F / (float)Math.PI);
+ this.bill.rotateAngleX = this.head.rotateAngleX;
+ this.bill.rotateAngleY = this.head.rotateAngleY;
+ this.chin.rotateAngleX = this.head.rotateAngleX;
+ this.chin.rotateAngleY = this.head.rotateAngleY;
+ this.body.rotateAngleX = ((float)Math.PI / 2F);
+ this.rightLeg.rotateAngleX = MathHelper.cos(p_78087_1_ * 0.6662F) * 1.4F * p_78087_2_;
+ this.leftLeg.rotateAngleX = MathHelper.cos(p_78087_1_ * 0.6662F + (float)Math.PI) * 1.4F * p_78087_2_;
+ this.rightWing.rotateAngleZ = p_78087_3_;
+ this.leftWing.rotateAngleZ = -p_78087_3_;
+ }
+} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/core/client/renderer/RenderGiantChicken.java b/src/Java/gtPlusPlus/core/client/renderer/RenderGiantChicken.java
new file mode 100644
index 0000000000..b3d1ce21fc
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/client/renderer/RenderGiantChicken.java
@@ -0,0 +1,116 @@
+package gtPlusPlus.core.client.renderer;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.client.model.ModelBase;
+import net.minecraft.client.renderer.entity.RenderChicken;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLiving;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.passive.EntityChicken;
+import net.minecraft.util.MathHelper;
+import net.minecraft.util.ResourceLocation;
+
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
+
+@SideOnly(Side.CLIENT)
+public class RenderGiantChicken extends RenderChicken {
+
+ /**
+ * Fancy reflective handling of nabbing the original chicken texture object, should save reload the texture to memory. :)
+ */
+ private static final ResourceLocation chickenTexturesEx;
+ static {
+ ResourceLocation mChicken;
+ try {
+ mChicken = (ResourceLocation) ReflectionUtils.getField(RenderGiantChicken.class, "chickenTextures").get(null);
+ }
+ catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException e) {
+ mChicken = new ResourceLocation("textures/entity/chicken.png");
+ }
+ chickenTexturesEx = mChicken;
+ }
+
+ public RenderGiantChicken(ModelBase p_i1252_1_, float p_i1252_2_)
+ {
+ super(p_i1252_1_, p_i1252_2_);
+ }
+
+ /**
+ * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then
+ * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic
+ * (Render<T extends Entity) and this method has signature public void func_76986_a(T entity, double d, double d1,
+ * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that.
+ */
+ public void doRender(EntityChicken p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_)
+ {
+ super.doRender((EntityLiving)p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_);
+ }
+
+ /**
+ * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
+ */
+ protected ResourceLocation getEntityTexture(EntityChicken p_110775_1_)
+ {
+ return chickenTexturesEx;
+ }
+
+ /**
+ * Defines what float the third param in setRotationAngles of ModelBase is
+ */
+ protected float handleRotationFloat(EntityChicken p_77044_1_, float p_77044_2_)
+ {
+ float f1 = p_77044_1_.field_70888_h + (p_77044_1_.field_70886_e - p_77044_1_.field_70888_h) * p_77044_2_;
+ float f2 = p_77044_1_.field_70884_g + (p_77044_1_.destPos - p_77044_1_.field_70884_g) * p_77044_2_;
+ return (MathHelper.sin(f1) + 1.0F) * f2;
+ }
+
+ /**
+ * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then
+ * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic
+ * (Render<T extends Entity) and this method has signature public void func_76986_a(T entity, double d, double d1,
+ * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that.
+ */
+ 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((EntityChicken)p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_);
+ }
+
+ /**
+ * Defines what float the third param in setRotationAngles of ModelBase is
+ */
+ protected float handleRotationFloat(EntityLivingBase p_77044_1_, float p_77044_2_)
+ {
+ return this.handleRotationFloat((EntityChicken)p_77044_1_, p_77044_2_);
+ }
+
+ /**
+ * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then
+ * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic
+ * (Render<T extends Entity) and this method has signature public void func_76986_a(T entity, double d, double d1,
+ * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that.
+ */
+ 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((EntityChicken)p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_);
+ }
+
+ /**
+ * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
+ */
+ protected ResourceLocation getEntityTexture(Entity p_110775_1_)
+ {
+ return this.getEntityTexture((EntityChicken)p_110775_1_);
+ }
+
+ /**
+ * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then
+ * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic
+ * (Render<T extends Entity) and this method has signature public void func_76986_a(T entity, double d, double d1,
+ * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that.
+ */
+ 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((EntityChicken)p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_);
+ }
+} \ No newline at end of file