From c71f0ee49d49b08b17235be4ed318e53fd53cbe0 Mon Sep 17 00:00:00 2001 From: Matt Caughey Date: Fri, 8 Nov 2013 00:50:23 -0500 Subject: [PATCH] Updated bird AI --- .../biomes/BiomeDecoratorBOP.java | 4 +- common/biomesoplenty/entities/EntityBird.java | 6 +- .../entities/EntityFlyingCreature.java | 95 ++++++++++++++++++ .../textures/blocks/stalactite.png | Bin 382 -> 273 bytes .../textures/blocks/stalagmite.png | Bin 389 -> 281 bytes 5 files changed, 100 insertions(+), 5 deletions(-) create mode 100644 common/biomesoplenty/entities/EntityFlyingCreature.java diff --git a/common/biomesoplenty/biomes/BiomeDecoratorBOP.java b/common/biomesoplenty/biomes/BiomeDecoratorBOP.java index e4290a96a..9c7459b6e 100644 --- a/common/biomesoplenty/biomes/BiomeDecoratorBOP.java +++ b/common/biomesoplenty/biomes/BiomeDecoratorBOP.java @@ -657,8 +657,8 @@ public class BiomeDecoratorBOP extends BiomeDecorator koruPerChunk = 0; waspHivesPerChunk = 0; rootsPerChunk = 9; - stalagmitesPerChunk = 3; - stalactitesPerChunk = 6; + stalagmitesPerChunk = 5; + stalactitesPerChunk = 10; generateLakes = true; generateAsh = false; generateMycelium = false; diff --git a/common/biomesoplenty/entities/EntityBird.java b/common/biomesoplenty/entities/EntityBird.java index 0ce0a03ac..8163b1227 100644 --- a/common/biomesoplenty/entities/EntityBird.java +++ b/common/biomesoplenty/entities/EntityBird.java @@ -27,9 +27,9 @@ public class EntityBird extends EntityFlyingMob if (d3 < 1.0D || d3 > 3600.0D) { - this.waypointX = this.posX + (double)((this.rand.nextFloat() * 2.0F - 1.0F) * 4.0F); - this.waypointY = this.posY + (double)((this.rand.nextFloat() * 2.0F - 1.0F) * 4.0F); - this.waypointZ = this.posZ + (double)((this.rand.nextFloat() * 2.0F - 1.0F) * 4.0F); + this.waypointX = this.posX + (double)((this.rand.nextFloat() * 8.0F - 4.0F) * 6.0F); + this.waypointY = this.posY + (double)((this.rand.nextFloat() * 2.0F - 1.0F) * 6.0F); + this.waypointZ = this.posZ + (double)((this.rand.nextFloat() * 8.0F - 4.0F) * 6.0F); } if (this.courseChangeCooldown-- <= 0) diff --git a/common/biomesoplenty/entities/EntityFlyingCreature.java b/common/biomesoplenty/entities/EntityFlyingCreature.java new file mode 100644 index 000000000..860c433f7 --- /dev/null +++ b/common/biomesoplenty/entities/EntityFlyingCreature.java @@ -0,0 +1,95 @@ +package biomesoplenty.entities; + +import net.minecraft.block.Block; +import net.minecraft.entity.EntityLiving; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +public class EntityFlyingCreature extends EntityLiving +{ + public EntityFlyingCreature(World par1World) + { + super(par1World); + } + + @Override + protected void fall(float par1) {} + + @Override + protected void updateFallState(double par1, boolean par3) {} + + @Override + public void moveEntityWithHeading(float par1, float par2) + { + if (this.isInWater()) + { + this.moveFlying(par1, par2, 0.02F); + this.moveEntity(this.motionX, this.motionY, this.motionZ); + this.motionX *= 0.800000011920929D; + this.motionY *= 0.800000011920929D; + this.motionZ *= 0.800000011920929D; + } + else if (this.handleLavaMovement()) + { + this.moveFlying(par1, par2, 0.02F); + this.moveEntity(this.motionX, this.motionY, this.motionZ); + this.motionX *= 0.5D; + this.motionY *= 0.5D; + this.motionZ *= 0.5D; + } + else + { + float f2 = 0.91F; + + if (this.onGround) + { + f2 = 0.54600006F; + int i = this.worldObj.getBlockId(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.boundingBox.minY) - 1, MathHelper.floor_double(this.posZ)); + + if (i > 0) + { + f2 = Block.blocksList[i].slipperiness * 0.91F; + } + } + + float f3 = 0.16277136F / (f2 * f2 * f2); + this.moveFlying(par1, par2, this.onGround ? 0.1F * f3 : 0.02F); + f2 = 0.91F; + + if (this.onGround) + { + f2 = 0.54600006F; + int j = this.worldObj.getBlockId(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.boundingBox.minY) - 1, MathHelper.floor_double(this.posZ)); + + if (j > 0) + { + f2 = Block.blocksList[j].slipperiness * 0.91F; + } + } + + this.moveEntity(this.motionX, this.motionY, this.motionZ); + this.motionX *= (double)f2; + this.motionY *= (double)f2; + this.motionZ *= (double)f2; + } + + this.prevLimbSwingAmount = this.limbSwingAmount; + double d0 = this.posX - this.prevPosX; + double d1 = this.posZ - this.prevPosZ; + float f4 = MathHelper.sqrt_double(d0 * d0 + d1 * d1) * 4.0F; + + if (f4 > 1.0F) + { + f4 = 1.0F; + } + + this.limbSwingAmount += (f4 - this.limbSwingAmount) * 0.4F; + this.limbSwing += this.limbSwingAmount; + } + + @Override + public boolean isOnLadder() + { + return false; + } +} diff --git a/resources/assets/biomesoplenty/textures/blocks/stalactite.png b/resources/assets/biomesoplenty/textures/blocks/stalactite.png index ce063466d58a9dc06015a0e027972e7e95f34eb3..ee8c0e4dbdc30cbe1da6b861de47072be66b9c3f 100644 GIT binary patch delta 187 zcmV;s07U=(0+9lcB#|)~3c>&Y4#EKyC`y2lQz?IqNklAgp5EtpViz0EPkvU9IQ#90Cqu_UMv)3q{8?w$oOFX!n6 zXx+OC{0p9@GHC&La4uvoPiIIA&|aVy<)Ou`zyoOinabz^aS51Tkfuo9YXM{hZ!E@_ pOU@%={9mw3YVMGlJEZ1!q8uN|htcc~yZHbB002ovPDHLkV1nw?QM&*D delta 295 zcmV+?0oeYL0{#M!Bnkm@Qb$4nuFf3kks%uj!vFvd!vV){sAQ2wDSz!rL_t(IPwkLd z3WPumM7@n4BI3T|28!VQualVO zbzN7Dym7K8XogT8@|zY($QeJ%JOQ&;gtX z55rKMr)hfZMFp>5DQxwzSqEDdACX_qZwP`wIF7!7@uDcw{0Kiv(#I=I~YC%(D=@eQ7L1Ec|@yxJ|MH2?qr07*qoLc8GX$!Rm|ATKirA)(h4! z^kV@G7VvN28CNmGUHn$J0+^VDVa~JwLA(hDV2A}Q2hqC%u|a delta 274 zcmV+t0qy>o0)+#Re1G&wL_t(IPu)^W3WP8Wo#P2EL@El3iikfH6m+48h+8)vIl~Lq zQJ8iy%L#<0d7reUuRn}o80aj2i@L7022m902jqFKB?uwZcpS%Mnx@tu3`4RkOU*G1 zgFMeu5@4Vm0#HRr)0A)p`KtsOvh;uLfw~4}dVwGfzX$w(U#2t}CAq*eUx2$e4T_ z2NPj}{kCl^mi?~=^6~b4XCl6{6v#blB+Qm&A!t|}1OdBF({z#U2KOw>l2>q{5kk-# Yk#XY`!|qGU01E&B07*qoM6N<$g7e&X1ONa4