Added a corrupted chicken, which hits very hard but stealths itself in between attacks.

This commit is contained in:
WayofTime 2016-09-20 17:28:58 -04:00
parent 6f5e96bd52
commit 9538e9aa0d
12 changed files with 672 additions and 2 deletions

View file

@ -0,0 +1,15 @@
package WayofTime.bloodmagic.client.render.entity;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraftforge.fml.client.registry.IRenderFactory;
import WayofTime.bloodmagic.entity.mob.EntityCorruptedChicken;
public class CorruptedChickenRenderFactory implements IRenderFactory<EntityCorruptedChicken>
{
@Override
public Render<? super EntityCorruptedChicken> createRenderFor(RenderManager manager)
{
return new RenderCorruptedChicken(manager);
}
}

View file

@ -0,0 +1,37 @@
package WayofTime.bloodmagic.client.render.entity;
import net.minecraft.client.renderer.entity.RenderLiving;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import WayofTime.bloodmagic.client.render.entity.layer.LayerWill;
import WayofTime.bloodmagic.client.render.model.ModelCorruptedChicken;
import WayofTime.bloodmagic.entity.mob.EntityCorruptedChicken;
@SideOnly(Side.CLIENT)
public class RenderCorruptedChicken extends RenderLiving<EntityCorruptedChicken>
{
private static final ResourceLocation CHICKEN_TEXTURES = new ResourceLocation("textures/entity/chicken.png");
public RenderCorruptedChicken(RenderManager renderManagerIn)
{
super(renderManagerIn, new ModelCorruptedChicken(0), 0.3f);
this.addLayer(new LayerWill<EntityCorruptedChicken>(this, new ModelCorruptedChicken(1.1f)));
}
@Override
protected ResourceLocation getEntityTexture(EntityCorruptedChicken entity)
{
return CHICKEN_TEXTURES;
}
@Override
protected float handleRotationFloat(EntityCorruptedChicken livingBase, float partialTicks)
{
float f = livingBase.oFlap + (livingBase.wingRotation - livingBase.oFlap) * partialTicks;
float f1 = livingBase.oFlapSpeed + (livingBase.destPos - livingBase.oFlapSpeed) * partialTicks;
return (MathHelper.sin(f) + 1.0F) * f1;
}
}

View file

@ -27,6 +27,11 @@ public class LayerWill<T extends EntityDemonBase> implements LayerRenderer<T>
{
// if (demon.getPowered())
if (demon.isInvisible())
{
return; //TODO: Make this also check if the demon wants the Will layer
}
boolean flag = demon.isInvisible();
GlStateManager.depthMask(!flag);
this.renderer.bindTexture(RAW_TEXTURE);

View file

@ -0,0 +1,108 @@
package WayofTime.bloodmagic.client.render.model;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.entity.Entity;
import net.minecraft.util.math.MathHelper;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class ModelCorruptedChicken extends ModelBase
{
public ModelRenderer head;
public ModelRenderer body;
public ModelRenderer rightLeg;
public ModelRenderer leftLeg;
public ModelRenderer rightWing;
public ModelRenderer leftWing;
public ModelRenderer bill;
public ModelRenderer chin;
public ModelCorruptedChicken(float scale)
{
this.head = new ModelRenderer(this, 0, 0);
this.head.addBox(-2.0F, -6.0F, -2.0F, 4, 6, 3, scale);
this.head.setRotationPoint(0.0F, 15.0F, -4.0F);
this.bill = new ModelRenderer(this, 14, 0);
this.bill.addBox(-2.0F, -4.0F, -4.0F, 4, 2, 2, scale);
this.bill.setRotationPoint(0.0F, 15.0F, -4.0F);
this.chin = new ModelRenderer(this, 14, 4);
this.chin.addBox(-1.0F, -2.0F, -3.0F, 2, 2, 2, scale);
this.chin.setRotationPoint(0.0F, 15.0F, -4.0F);
this.body = new ModelRenderer(this, 0, 9);
this.body.addBox(-3.0F, -4.0F, -3.0F, 6, 8, 6, scale);
this.body.setRotationPoint(0.0F, 16.0F, 0.0F);
this.rightLeg = new ModelRenderer(this, 26, 0);
this.rightLeg.addBox(-1.0F, 0.0F, -3.0F, 3, 5, 3, scale);
this.rightLeg.setRotationPoint(-2.0F, 19.0F, 1.0F);
this.leftLeg = new ModelRenderer(this, 26, 0);
this.leftLeg.addBox(-1.0F, 0.0F, -3.0F, 3, 5, 3, scale);
this.leftLeg.setRotationPoint(1.0F, 19.0F, 1.0F);
this.rightWing = new ModelRenderer(this, 24, 13);
this.rightWing.addBox(0.0F, 0.0F, -3.0F, 1, 4, 6, scale);
this.rightWing.setRotationPoint(-4.0F, 13.0F, 0.0F);
this.leftWing = new ModelRenderer(this, 24, 13);
this.leftWing.addBox(-1.0F, 0.0F, -3.0F, 1, 4, 6, scale);
this.leftWing.setRotationPoint(4.0F, 13.0F, 0.0F);
}
/**
* Sets the models various rotation angles then renders the model.
*/
public void render(Entity entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scale)
{
this.setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale, entityIn);
if (this.isChild)
{
GlStateManager.pushMatrix();
GlStateManager.translate(0.0F, 5.0F * scale, 2.0F * scale);
this.head.render(scale);
this.bill.render(scale);
this.chin.render(scale);
GlStateManager.popMatrix();
GlStateManager.pushMatrix();
GlStateManager.scale(0.5F, 0.5F, 0.5F);
GlStateManager.translate(0.0F, 24.0F * scale, 0.0F);
this.body.render(scale);
this.rightLeg.render(scale);
this.leftLeg.render(scale);
this.rightWing.render(scale);
this.leftWing.render(scale);
GlStateManager.popMatrix();
} else
{
this.head.render(scale);
this.bill.render(scale);
this.chin.render(scale);
this.body.render(scale);
this.rightLeg.render(scale);
this.leftLeg.render(scale);
this.rightWing.render(scale);
this.leftWing.render(scale);
}
}
/**
* 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 limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor, Entity entityIn)
{
this.head.rotateAngleX = headPitch * 0.017453292F;
this.head.rotateAngleY = netHeadYaw * 0.017453292F;
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(limbSwing * 0.6662F) * 1.4F * limbSwingAmount;
this.leftLeg.rotateAngleX = MathHelper.cos(limbSwing * 0.6662F + (float) Math.PI) * 1.4F * limbSwingAmount;
this.rightWing.rotateAngleZ = ageInTicks;
this.leftWing.rotateAngleZ = -ageInTicks;
}
}