From 51337af9f9e9554659114c7afb44cb477de57b40 Mon Sep 17 00:00:00 2001 From: Cheeserolls Date: Sat, 25 Apr 2015 17:16:03 +0100 Subject: [PATCH] Add wasp --- .../biomesoplenty/common/block/BlockHive.java | 5 +- .../common/entities/EntityWasp.java | 379 ++++++++++++++++++ .../common/entities/ModelWasp.java | 187 +++++++++ .../common/entities/RenderWasp.java | 46 +++ .../common/init/ModEntities.java | 3 + .../java/biomesoplenty/core/ClientProxy.java | 4 + .../biomesoplenty/sounds/mob/wasp/hurt.ogg | Bin 0 -> 14387 bytes .../biomesoplenty/sounds/mob/wasp/say.ogg | Bin 0 -> 40650 bytes .../biomesoplenty/textures/entity/wasp.png | Bin 0 -> 2614 bytes 9 files changed, 621 insertions(+), 3 deletions(-) create mode 100644 src/main/java/biomesoplenty/common/entities/EntityWasp.java create mode 100644 src/main/java/biomesoplenty/common/entities/ModelWasp.java create mode 100644 src/main/java/biomesoplenty/common/entities/RenderWasp.java create mode 100644 src/main/resources/assets/biomesoplenty/sounds/mob/wasp/hurt.ogg create mode 100644 src/main/resources/assets/biomesoplenty/sounds/mob/wasp/say.ogg create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/wasp.png diff --git a/src/main/java/biomesoplenty/common/block/BlockHive.java b/src/main/java/biomesoplenty/common/block/BlockHive.java index 6b456db46..1752b85f4 100644 --- a/src/main/java/biomesoplenty/common/block/BlockHive.java +++ b/src/main/java/biomesoplenty/common/block/BlockHive.java @@ -16,7 +16,6 @@ import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockState; import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.passive.EntityChicken; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.util.BlockPos; @@ -24,6 +23,7 @@ import net.minecraft.util.IStringSerializable; import net.minecraft.world.World; import biomesoplenty.api.block.IBOPBlock; import biomesoplenty.api.item.BOPItems; +import biomesoplenty.common.entities.EntityWasp; import biomesoplenty.common.item.ItemBOPBlock; public class BlockHive extends Block implements IBOPBlock @@ -145,8 +145,7 @@ public class BlockHive extends Block implements IBOPBlock switch ((HiveType) state.getValue(VARIANT)) { case EMPTY_HONEYCOMB: - // TODO: EntityWasp wasp = new EntityWasp(worldIn); - EntityChicken wasp = new EntityChicken(worldIn); + EntityWasp wasp = new EntityWasp(worldIn); wasp.setLocationAndAngles((double)pos.getX() + 0.6D, (double)pos.getY(), (double)pos.getZ() + 0.3D, 0.0F, 0.0F); worldIn.spawnEntityInWorld(wasp); break; diff --git a/src/main/java/biomesoplenty/common/entities/EntityWasp.java b/src/main/java/biomesoplenty/common/entities/EntityWasp.java new file mode 100644 index 000000000..ff784ca91 --- /dev/null +++ b/src/main/java/biomesoplenty/common/entities/EntityWasp.java @@ -0,0 +1,379 @@ +/******************************************************************************* + * Copyright 2015, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ + +package biomesoplenty.common.entities; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Random; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityFlying; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.EntityAIBase; +import net.minecraft.entity.ai.EntityAIFindEntityNearestPlayer; +import net.minecraft.entity.ai.EntityMoveHelper; +import net.minecraft.entity.monster.IMob; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.DamageSource; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +public class EntityWasp extends EntityFlying implements IMob { + + public EntityWasp(World worldIn) { + super(worldIn); + this.setSize(0.7F, 0.7F); + + this.moveHelper = new EntityWasp.WaspMoveHelper(); + this.tasks.addTask(3, new EntityWasp.AIWaspRandomFly()); + this.tasks.addTask(4, new EntityWasp.AIWaspAttackTarget()); + this.targetTasks.addTask(1, new EntityAIFindEntityNearestPlayer(this)); + } + + @Override + protected void applyEntityAttributes() + { + super.applyEntityAttributes(); + this.getAttributeMap().registerAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(2.5D); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(10.0D); + this.getEntityAttribute(SharedMonsterAttributes.followRange).setBaseValue(10.0D); + } + + @Override + public boolean attackEntityAsMob(Entity target) + { + float f = (float)this.getEntityAttribute(SharedMonsterAttributes.attackDamage).getAttributeValue(); + return target.attackEntityFrom(DamageSource.causeMobDamage(this), f); + } + + // TODO: sounds don't work yet - need to register them somewhere first I think + @Override + protected String getLivingSound() + { + return "biomesoplenty:mob.wasp.say"; + } + @Override + protected String getHurtSound() + { + return "biomesoplenty:mob.wasp.hurt"; + } + @Override + protected String getDeathSound() + { + return "biomesoplenty:mob.wasp.hurt"; + } + + + // Helper class representing a point in space that the wasp is targeting for some reason + class WaspMoveTargetPos + { + private EntityWasp wasp = EntityWasp.this; + + public double posX; + public double posY; + public double posZ; + public double distX; + public double distY; + public double distZ; + public double dist; + public double aimX; + public double aimY; + public double aimZ; + + public WaspMoveTargetPos() + { + this(0, 0, 0); + } + + public WaspMoveTargetPos(double posX, double posY, double posZ) + { + this.setTarget(posX, posY, posZ); + } + + public void setTarget(double posX, double posY, double posZ) + { + this.posX = posX; + this.posY = posY; + this.posZ = posZ; + this.refresh(); + } + + public void refresh() + { + this.distX = this.posX - this.wasp.posX; + this.distY = this.posY - this.wasp.posY; + this.distZ = this.posZ - this.wasp.posZ; + + this.dist = (double)MathHelper.sqrt_double(this.distX * this.distX + this.distY * this.distY + this.distZ * this.distZ); + + // (aimX,aimY,aimZ) is a unit vector in the direction we want to go + if (this.dist == 0.0D) + { + this.aimX = 0.0D; + this.aimY = 0.0D; + this.aimZ = 0.0D; + } + else + { + this.aimX = this.distX / this.dist; + this.aimY = this.distY / this.dist; + this.aimZ = this.distZ / this.dist; + } + } + + public boolean isBoxBlocked(AxisAlignedBB box) + { + return !this.wasp.worldObj.getCollidingBoundingBoxes(this.wasp, box).isEmpty(); + } + + // check nothing will collide with the wasp in the direction of aim, for howFar units (or until the destination - whichever is closer) + public boolean isPathClear(double howFar) + { + howFar = Math.min(howFar, this.dist); + AxisAlignedBB box = this.wasp.getEntityBoundingBox(); + for (double i = 0.5D; i < howFar; ++i) + { + // check there's nothing in the way + if (this.isBoxBlocked(box.offset(this.aimX * i, this.aimY * i, this.aimZ * i))) + { + return false; + } + } + if (this.isBoxBlocked(box.offset(this.aimX * howFar, this.aimY * howFar, this.aimZ * howFar))) + { + return false; + } + return true; + } + + } + + + class WaspMoveHelper extends EntityMoveHelper + { + // EntityMoveHelper has the boolean 'update' which is set to true when the target is changed, and set to false when a bearing is set + // So it means 'the target has changed but we're not yet heading for it' + // We'll re-use it here with a slightly different interpretation + // Here it will mean 'has a target and not yet arrived' + + private EntityWasp wasp = EntityWasp.this; + private int courseChangeCooldown = 0; + private double closeEnough = 0.3D; + private WaspMoveTargetPos targetPos = new WaspMoveTargetPos(); + + public WaspMoveHelper() + { + super(EntityWasp.this); + } + + @Override + public void setMoveTo(double x, double y, double z, double speedIn) + { + super.setMoveTo(x,y,z,speedIn); + this.targetPos.setTarget(x, y, z); + } + + @Override + public void onUpdateMoveHelper() + { + // if we have arrived at the previous target, or we have no target to aim for, do nothing + if (!this.update) {return;} + + if (this.courseChangeCooldown-- > 0) { + // limit the rate at which we change course + return; + } + this.courseChangeCooldown += this.wasp.getRNG().nextInt(5) + 2; + + // update the target position + this.targetPos.refresh(); + + // accelerate the wasp towards the target + double acceleration = 0.1D; + this.wasp.motionX += this.targetPos.aimX * acceleration; + this.wasp.motionY += this.targetPos.aimY * acceleration; + this.wasp.motionZ += this.targetPos.aimZ * acceleration; + + // rotate to point at target + this.wasp.renderYawOffset = this.wasp.rotationYaw = -((float)Math.atan2(this.targetPos.distX, this.targetPos.distZ)) * 180.0F / (float)Math.PI; + + // occasionally jerk to the side - makes them more difficult to hit + if (this.wasp.getRNG().nextInt(5)==0) + { + float strafeAmount = (this.wasp.getRNG().nextFloat() * 0.4F) - 0.2F; + this.wasp.motionX += (double)(strafeAmount * MathHelper.cos(this.wasp.rotationYaw * (float)Math.PI / 180.0F)); + this.wasp.motionZ += (double)(strafeAmount * MathHelper.sin(this.wasp.rotationYaw * (float)Math.PI / 180.0F)); + } + + // abandon this movement if we have reached the target or there is no longer a clear path to the target + if (!this.targetPos.isPathClear(5.0D)) + { + //System.out.println("Abandoning move target - way is blocked" ); + this.update = false; + } else if (this.targetPos.dist < this.closeEnough) { + //System.out.println("Arrived (close enough) dist:"+this.targetPos.dist); + this.update = false; + } + } + + } + + // AI class for implementing the random flying behaviour + class AIWaspRandomFly extends EntityAIBase + { + private EntityWasp wasp = EntityWasp.this; + private WaspMoveTargetPos targetPos = new WaspMoveTargetPos(); + + public AIWaspRandomFly() + { + this.setMutexBits(1); + } + + // should we choose a new random destination for the wasp to fly to? + // yes, if the wasp doesn't already have a destination + @Override + public boolean shouldExecute() + { + //System.out.println(this.wasp.getMoveHelper().isUpdating()?"has a move target":"no move target"); + return !this.wasp.getMoveHelper().isUpdating(); + } + + @Override + public boolean continueExecuting() {return false;} + + // choose a a new random destination for the wasp to fly to + @Override + public void startExecuting() + { + Random rand = this.wasp.getRNG(); + // pick a random nearby point and see if we can fly to it + if (this.tryGoingRandomDirection(rand, 6.0D)) {return;} + // pick a random closer point to fly to instead + if (this.tryGoingRandomDirection(rand, 2.0D)) {return;} + // try going straight along axes (try all 6 directions in random order) + List directions = Arrays.asList(EnumFacing.values()); + Collections.shuffle(directions); + for (EnumFacing facing : directions) + { + if (this.tryGoingAlongAxis(rand, facing, 1.0D)) {return;} + } + } + + + // note y direction has a slight downward bias to stop them flying too high + public boolean tryGoingRandomDirection(Random rand, double maxDistance) + { + double dirX = ((rand.nextDouble() * 2.0D - 1.0D) * maxDistance); + double dirY = ((rand.nextDouble() * 2.0D - 1.1D) * maxDistance); + double dirZ = ((rand.nextDouble() * 2.0D - 1.0D) * maxDistance); + return this.tryGoing(dirX, dirY, dirZ); + } + + public boolean tryGoingAlongAxis(Random rand, EnumFacing facing, double maxDistance) + { + double dirX = 0.0D; + double dirY = 0.0D; + double dirZ = 0.0D; + switch (facing.getAxis()) + { + case X: + dirX = rand.nextDouble() * facing.getAxisDirection().getOffset() * maxDistance; + break; + case Y: + dirY = rand.nextDouble() * facing.getAxisDirection().getOffset() * maxDistance; + break; + case Z: default: + dirZ = rand.nextDouble() * facing.getAxisDirection().getOffset() * maxDistance; + break; + } + return this.tryGoing(dirX, dirY, dirZ); + } + + public boolean tryGoing(double dirX, double dirY, double dirZ) + { + //System.out.println("("+dirX+","+dirY+","+dirZ+")"); + this.targetPos.setTarget(this.wasp.posX + dirX, this.wasp.posY + dirY, this.wasp.posZ + dirZ); + //System.out.println("Testing random move target distance:"+this.targetPos.dist+" direction:("+this.targetPos.aimX+","+this.targetPos.aimY+","+this.targetPos.aimZ+")"); + boolean result = this.targetPos.isPathClear(5.0F); + if (result) + { + this.wasp.getMoveHelper().setMoveTo(this.targetPos.posX, this.targetPos.posY, this.targetPos.posZ, 1.0D); + } + return result; + } + } + + + // AI class for implementing the behaviour to target and attack players + class AIWaspAttackTarget extends EntityAIBase + { + private EntityWasp wasp = EntityWasp.this; + private int attackTick = 0; + private WaspMoveTargetPos targetPos = new WaspMoveTargetPos(); + + public AIWaspAttackTarget() + { + this.setMutexBits(2); + } + + public boolean attackTargetExists() + { + // see if there's actually a living attack target to aim for + EntityLivingBase attackTarget = this.wasp.getAttackTarget(); + return (attackTarget != null && attackTarget.isEntityAlive()); + } + + @Override + public boolean shouldExecute() + { + // decrement time since last attack + if (this.attackTick > 0) {--this.attackTick;} + + return this.attackTargetExists(); + } + + @Override + public boolean continueExecuting() + { + // decrement time since last attack + if (this.attackTick > 0) {--this.attackTick;} + + if (!this.attackTargetExists()) {return false;} + + // focus attack on target position + EntityLivingBase attackTarget = this.wasp.getAttackTarget(); + this.targetPos.setTarget(attackTarget.posX, attackTarget.posY, attackTarget.posZ); + + // give up if the target is too far away + // double followRange = this.wasp.getEntityAttribute(SharedMonsterAttributes.followRange).getAttributeValue(); + + // damage the target if it's in range, and it has been long enough since the last attack + double damageRange = (double)(this.wasp.width + attackTarget.width); + if (this.attackTick <= 0 && this.targetPos.dist < damageRange) + { + this.wasp.attackEntityAsMob(attackTarget); + this.attackTick = 16; // 16 ticks before next attack + } + + // see if there's a straight path to the target, if there is, aim for it + if (this.targetPos.isPathClear(5.0D)) + { + //System.out.println("Setting attack target"); + this.wasp.getMoveHelper().setMoveTo(attackTarget.posX, attackTarget.posY, attackTarget.posZ, 1.0D); + } + //System.out.println("dist:"+this.targetPos.dist+" damageRange:"+damageRange+" attackTick:"+attackTick); + return true; + } + } + + +} diff --git a/src/main/java/biomesoplenty/common/entities/ModelWasp.java b/src/main/java/biomesoplenty/common/entities/ModelWasp.java new file mode 100644 index 000000000..1037f033e --- /dev/null +++ b/src/main/java/biomesoplenty/common/entities/ModelWasp.java @@ -0,0 +1,187 @@ +/******************************************************************************* + * Copyright 2015, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ + +package biomesoplenty.common.entities; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.util.MathHelper; + +public class ModelWasp extends ModelBase +{ + //fields + + /*Head*/ + ModelRenderer Head; + ModelRenderer Right_Antenna; + ModelRenderer Left_Antenna; + ModelRenderer Nose; + + /*Wings*/ + ModelRenderer Left_Wing; + ModelRenderer Right_Wing; + + /*Body*/ + ModelRenderer Thorax; + ModelRenderer Left_Leg_Back; + ModelRenderer Left_Leg_Middle; + ModelRenderer Left_Leg_Front; + ModelRenderer Right_Leg_Back; + ModelRenderer Right_Leg_Middle; + ModelRenderer Right_Leg_Front; + + /*Stinger*/ + ModelRenderer Abdomen; + ModelRenderer Stinger; + + public ModelWasp() + { + textureWidth = 64; + textureHeight = 32; + + /*Head*/ + Head = new ModelRenderer(this, 46, 0); + Head.addBox(0F, 0F, 0F, 5, 5, 4); + Head.setRotationPoint(0F, -2F, 8F); + Head.setTextureSize(64, 32); + + Right_Antenna = new ModelRenderer(this, 54, 27); + Right_Antenna.addBox(0F, 2F, -8F, 1, 1, 4); + Right_Antenna.setRotationPoint(3F, -3F, 10F); + Right_Antenna.setTextureSize(64, 32); + Right_Antenna.mirror = true; + Head.addChild(Right_Antenna); + + Left_Antenna = new ModelRenderer(this, 54, 27); + Left_Antenna.addBox(0F, 2F, -8F, 1, 1, 4); + Left_Antenna.setRotationPoint(1F, -3F, 10F); + Left_Antenna.setTextureSize(64, 32); + Left_Antenna.mirror = true; + Head.addChild(Left_Antenna); + + Nose = new ModelRenderer(this, 54, 9); + Nose.addBox(0F, 2F, -8F, 3, 4, 2); + Nose.setRotationPoint(1F, 0F, 11F); + Nose.setTextureSize(64, 32); + Nose.mirror = true; + Head.addChild(Nose); + + /*Wings*/ + Left_Wing = new ModelRenderer(this, 24, 26); + Left_Wing.addBox(-7F, 0F, 0F, 8, 1, 5); + Left_Wing.setRotationPoint(0F, -1F, 2F); + Left_Wing.setTextureSize(64, 32); + + Right_Wing = new ModelRenderer(this, 24, 20); + Right_Wing.addBox(0F, 0F, 0F, 8, 1, 5); + Right_Wing.setRotationPoint(4F, -1F, 2F); + Right_Wing.setTextureSize(64, 32); + + /*Body*/ + Thorax = new ModelRenderer(this, 0, 0); + Thorax.addBox(0F, 0F, 0F, 5, 5, 8); + Thorax.setRotationPoint(0F, 0F, 0F); + Thorax.setTextureSize(64, 32); + + Left_Leg_Back = new ModelRenderer(this, 13, 23); + Left_Leg_Back.addBox(0F, 0F, 0F, 1, 4, 1); + Left_Leg_Back.setRotationPoint(-1F, 4F, 1F); + Left_Leg_Back.setTextureSize(64, 32); + Thorax.addChild(Left_Leg_Back); + + Left_Leg_Middle = new ModelRenderer(this, 13, 23); + Left_Leg_Middle.addBox(0F, 0F, 0F, 1, 3, 1); + Left_Leg_Middle.setRotationPoint(-1F, 4F, 4F); + Left_Leg_Middle.setTextureSize(64, 32); + Thorax.addChild(Left_Leg_Middle); + + Left_Leg_Front = new ModelRenderer(this, 13, 23); + Left_Leg_Front.addBox(0F, 0F, 0F, 1, 4, 1); + Left_Leg_Front.setRotationPoint(-1F, 4F, 6F); + Left_Leg_Front.setTextureSize(64, 32); + Thorax.addChild(Left_Leg_Front); + + Right_Leg_Back = new ModelRenderer(this, 13, 23); + Right_Leg_Back.addBox(0F, 0F, 0F, 1, 4, 1); + Right_Leg_Back.setRotationPoint(5F, 4F, 1F); + Right_Leg_Back.setTextureSize(64, 32); + Thorax.addChild(Right_Leg_Back); + + Right_Leg_Middle = new ModelRenderer(this, 13, 23); + Right_Leg_Middle.addBox(0F, 0F, 0F, 1, 3, 1); + Right_Leg_Middle.setRotationPoint(5F, 4F, 4F); + Right_Leg_Middle.setTextureSize(64, 32); + Thorax.addChild(Right_Leg_Middle); + + Right_Leg_Front = new ModelRenderer(this, 13, 23); + Right_Leg_Front.addBox(0F, 0F, 0F, 1, 4, 1); + Right_Leg_Front.setRotationPoint(5F, 4F, 6F); + Right_Leg_Front.setTextureSize(64, 32); + Thorax.addChild(Right_Leg_Front); + + /*Stinger*/ + Abdomen = new ModelRenderer(this, 0, 13); + Abdomen.addBox(0F, 0F, 0F, 3, 3, 2); + Abdomen.setRotationPoint(1F, 2F, -2F); + Abdomen.setTextureSize(64, 32); + + Stinger = new ModelRenderer(this, 0, 18); + Stinger.addBox(-1F, -3F, 2F, 1, 1, 3); + Stinger.setRotationPoint(2F, 4F, -5F); + Stinger.setTextureSize(64, 32); + Abdomen.addChild(Stinger); + } + + @Override + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + this.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + + /*Head*/ + Head.render(f5); + + /*Wings*/ + Left_Wing.render(f5); + Right_Wing.render(f5); + + /*Body*/ + Thorax.render(f5); + + /*float nosespeed = 0.5F * (float)(entity.entityId % 10); + Nose.rotateAngleX = MathHelper.sin((float)entity.ticksExisted * nosespeed) * 2.5F * (float)Math.PI / 180.0F; + Nose.rotateAngleY = 0.0F; + Nose.rotateAngleZ = MathHelper.cos((float)entity.ticksExisted * nosespeed) * 1.5F * (float)Math.PI / 180.0F;*/ + + /*Stinger*/ + Abdomen.render(f5); + } + + @Override + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) + { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + + float headspeed = 0.1F * (float)(entity.ticksExisted % 10); + Head.rotateAngleX = MathHelper.sin(f2 * headspeed) * 2.5F * (float)Math.PI / 180.0F; + Head.rotateAngleZ = MathHelper.cos(f2 * headspeed) * 1.5F * (float)Math.PI / 180.0F; + + float thoraxspeed = 0.075F * (float)(entity.ticksExisted % 10); + Thorax.rotateAngleX = MathHelper.sin(f2 * thoraxspeed) * 2.5F * (float)Math.PI / 180.0F; + Thorax.rotateAngleZ = MathHelper.cos(f2 * thoraxspeed) * 1.5F * (float)Math.PI / 180.0F; + + Right_Wing.rotateAngleY = MathHelper.cos(f2 * 1.7F) * (float)Math.PI * 0.25F; + Left_Wing.rotateAngleY = -Right_Wing.rotateAngleY; + Right_Wing.rotateAngleZ = Right_Wing.rotateAngleY; + Left_Wing.rotateAngleZ = -Right_Wing.rotateAngleY; + + float abdomenspeed = 0.6F * (float)(entity.ticksExisted % 10); + Abdomen.rotateAngleX = MathHelper.sin(f2 * abdomenspeed) * 2.5F * (float)Math.PI / 180.0F; + Abdomen.rotateAngleZ = MathHelper.cos(f2 * abdomenspeed) * 1.5F * (float)Math.PI / 180.0F; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/entities/RenderWasp.java b/src/main/java/biomesoplenty/common/entities/RenderWasp.java new file mode 100644 index 000000000..73054d600 --- /dev/null +++ b/src/main/java/biomesoplenty/common/entities/RenderWasp.java @@ -0,0 +1,46 @@ +/******************************************************************************* + * Copyright 2015, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ + +package biomesoplenty.common.entities; + +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + + +@SideOnly(Side.CLIENT) +public class RenderWasp extends RenderLiving +{ + private static final ResourceLocation waspTextureLocation = new ResourceLocation("biomesoplenty:textures/entity/wasp.png"); + + public RenderWasp(RenderManager renderManager) + { + super(renderManager, new ModelWasp(), 0.5F); + } + + @Override + protected void preRenderCallback(EntityLivingBase entity, float partialTickTime) + { + GL11.glRotatef(180F, 0.0F, 1.0F, 0.0F); + GL11.glTranslatef(0.0F, 0.75F, 0.0F); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) + { + return waspTextureLocation; + } + + +} diff --git a/src/main/java/biomesoplenty/common/init/ModEntities.java b/src/main/java/biomesoplenty/common/init/ModEntities.java index ccb75ab82..c469d0b13 100644 --- a/src/main/java/biomesoplenty/common/init/ModEntities.java +++ b/src/main/java/biomesoplenty/common/init/ModEntities.java @@ -8,6 +8,7 @@ package biomesoplenty.common.init; +import biomesoplenty.common.entities.EntityWasp; import biomesoplenty.common.entities.projectiles.EntityDart; import biomesoplenty.core.BiomesOPlenty; import net.minecraftforge.fml.common.registry.EntityRegistry; @@ -21,6 +22,8 @@ public class ModEntities // TODO: how to set id? EntityRegistry.registerModEntity(EntityDart.class, "dart", 26, BiomesOPlenty.instance, 80, 3, true); + EntityRegistry.registerModEntity(EntityWasp.class, "wasp", 27, BiomesOPlenty.instance, 80, 3, true); + } } \ No newline at end of file diff --git a/src/main/java/biomesoplenty/core/ClientProxy.java b/src/main/java/biomesoplenty/core/ClientProxy.java index 6f5c88764..03fd8ed92 100644 --- a/src/main/java/biomesoplenty/core/ClientProxy.java +++ b/src/main/java/biomesoplenty/core/ClientProxy.java @@ -22,6 +22,8 @@ import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.fml.client.registry.RenderingRegistry; import biomesoplenty.api.block.IBOPBlock; import biomesoplenty.common.config.MiscConfigurationHandler; +import biomesoplenty.common.entities.EntityWasp; +import biomesoplenty.common.entities.RenderWasp; import biomesoplenty.common.entities.projectiles.EntityDart; import biomesoplenty.common.entities.projectiles.RenderDart; @@ -40,6 +42,8 @@ public class ClientProxy extends CommonProxy //Entity rendering and other stuff will go here in future RenderingRegistry.registerEntityRenderingHandler(EntityDart.class, new RenderDart(minecraft.getRenderManager())); + RenderingRegistry.registerEntityRenderingHandler(EntityWasp.class, new RenderWasp(minecraft.getRenderManager())); + } @Override diff --git a/src/main/resources/assets/biomesoplenty/sounds/mob/wasp/hurt.ogg b/src/main/resources/assets/biomesoplenty/sounds/mob/wasp/hurt.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a81a7ab8b568b2331c3715ee2cd0fd49bff19dc3 GIT binary patch literal 14387 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/sounds/mob/wasp/say.ogg b/src/main/resources/assets/biomesoplenty/sounds/mob/wasp/say.ogg new file mode 100644 index 0000000000000000000000000000000000000000..2681e3da6a4e727bbf3cc63d182ba1e29de1e776 GIT binary patch literal 40650 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

Sn(=D&FWsRDpW&5#ju9DS3p65ObeDy0ClCOd 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 Y07x`8RGYa_N&o-=07*qoM6N<$f+?B#dH?_b literal 0 HcmV?d00001