Added a corrupted chicken, which hits very hard but stealths itself in between attacks.
This commit is contained in:
parent
6f5e96bd52
commit
9538e9aa0d
12 changed files with 672 additions and 2 deletions
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue