initial commit
This commit is contained in:
parent
3c9ee26b06
commit
22186c33b9
1458 changed files with 282792 additions and 0 deletions
121
java/src/game/ai/EntityMoveHelper.java
Executable file
121
java/src/game/ai/EntityMoveHelper.java
Executable file
|
@ -0,0 +1,121 @@
|
|||
package game.ai;
|
||||
|
||||
import game.ExtMath;
|
||||
import game.entity.attributes.Attributes;
|
||||
import game.entity.types.EntityLiving;
|
||||
|
||||
public class EntityMoveHelper
|
||||
{
|
||||
/** The EntityLiving that is being moved */
|
||||
protected EntityLiving entity;
|
||||
protected double posX;
|
||||
protected double posY;
|
||||
protected double posZ;
|
||||
|
||||
/** The speed at which the entity should move */
|
||||
protected double speed;
|
||||
protected boolean update;
|
||||
|
||||
public EntityMoveHelper(EntityLiving entitylivingIn)
|
||||
{
|
||||
this.entity = entitylivingIn;
|
||||
this.posX = entitylivingIn.posX;
|
||||
this.posY = entitylivingIn.posY;
|
||||
this.posZ = entitylivingIn.posZ;
|
||||
}
|
||||
|
||||
public boolean isUpdating()
|
||||
{
|
||||
return this.update;
|
||||
}
|
||||
|
||||
public double getSpeed()
|
||||
{
|
||||
return this.speed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the speed and location to move to
|
||||
*/
|
||||
public void setMoveTo(double x, double y, double z, double speedIn)
|
||||
{
|
||||
this.posX = x;
|
||||
this.posY = y;
|
||||
this.posZ = z;
|
||||
this.speed = speedIn;
|
||||
this.update = true;
|
||||
}
|
||||
|
||||
public void onUpdateMoveHelper()
|
||||
{
|
||||
this.entity.setMoveForward(0.0F);
|
||||
|
||||
if (this.update)
|
||||
{
|
||||
this.update = false;
|
||||
int i = ExtMath.floord(this.entity.getEntityBoundingBox().minY + 0.5D);
|
||||
double d0 = this.posX - this.entity.posX;
|
||||
double d1 = this.posZ - this.entity.posZ;
|
||||
double d2 = this.posY - (double)i;
|
||||
double d3 = d0 * d0 + d2 * d2 + d1 * d1;
|
||||
|
||||
if (d3 >= 2.500000277905201E-7D)
|
||||
{
|
||||
float f = (float)(ExtMath.atan2(d1, d0) * 180.0D / Math.PI) - 90.0F;
|
||||
this.entity.rotYaw = this.limitAngle(this.entity.rotYaw, f, 30.0F);
|
||||
this.entity.setAIMoveSpeed((float)(this.speed * this.entity.getEntityAttribute(Attributes.MOVEMENT_SPEED).getAttributeValue()));
|
||||
|
||||
if (d2 > 0.0D && d0 * d0 + d1 * d1 < 1.0D)
|
||||
{
|
||||
this.entity.getJumpHelper().setJumping();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Limits the given angle to a upper and lower limit.
|
||||
*/
|
||||
protected float limitAngle(float p_75639_1_, float p_75639_2_, float p_75639_3_)
|
||||
{
|
||||
float f = ExtMath.wrapf(p_75639_2_ - p_75639_1_);
|
||||
|
||||
if (f > p_75639_3_)
|
||||
{
|
||||
f = p_75639_3_;
|
||||
}
|
||||
|
||||
if (f < -p_75639_3_)
|
||||
{
|
||||
f = -p_75639_3_;
|
||||
}
|
||||
|
||||
float f1 = p_75639_1_ + f;
|
||||
|
||||
if (f1 < 0.0F)
|
||||
{
|
||||
f1 += 360.0F;
|
||||
}
|
||||
else if (f1 > 360.0F)
|
||||
{
|
||||
f1 -= 360.0F;
|
||||
}
|
||||
|
||||
return f1;
|
||||
}
|
||||
|
||||
public double getX()
|
||||
{
|
||||
return this.posX;
|
||||
}
|
||||
|
||||
public double getY()
|
||||
{
|
||||
return this.posY;
|
||||
}
|
||||
|
||||
public double getZ()
|
||||
{
|
||||
return this.posZ;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue