@Override protected void jump() { this.motionY = 0.52D / WorldUtil.getGravityFactor(this); if (this.motionY < 0.26D) this.motionY = 0.26D; if (this.isPotionActive(Potion.jump)) { this.motionY += (this.getActivePotionEffect(Potion.jump).getAmplifier() + 1) * 0.1F; } if (this.isSprinting()) { float f = this.rotationYaw * 0.017453292F; this.motionX -= MathHelper.sin(f) * 0.2F; this.motionZ += MathHelper.cos(f) * 0.2F; } this.isAirBorne = true; ForgeHooks.onLivingJump(this); }
/** Moves the entity based on the specified heading. Args: strafe, forward */ public void moveEntityWithHeading(float p_70612_1_, float p_70612_2_) { if (this.riddenByEntity != null && this.riddenByEntity instanceof EntityLivingBase && this.isHorseSaddled()) { this.prevRotationYaw = this.rotationYaw = this.riddenByEntity.rotationYaw; this.rotationPitch = this.riddenByEntity.rotationPitch * 0.5F; this.setRotation(this.rotationYaw, this.rotationPitch); this.rotationYawHead = this.renderYawOffset = this.rotationYaw; p_70612_1_ = ((EntityLivingBase) this.riddenByEntity).moveStrafing * 0.5F; p_70612_2_ = ((EntityLivingBase) this.riddenByEntity).moveForward; if (p_70612_2_ <= 0.0F) { p_70612_2_ *= 0.25F; this.gallopTime = 0; } if (this.onGround && this.jumpPower == 0.0F && this.isRearing() && !this.field_110294_bI) { p_70612_1_ = 0.0F; p_70612_2_ = 0.0F; } if (this.jumpPower > 0.0F && !this.isHorseJumping() && this.onGround) { this.motionY = this.getHorseJumpStrength() * (double) this.jumpPower; if (this.isPotionActive(Potion.jump)) { this.motionY += (double) ((float) (this.getActivePotionEffect(Potion.jump).getAmplifier() + 1) * 0.1F); } this.setHorseJumping(true); this.isAirBorne = true; if (p_70612_2_ > 0.0F) { float f2 = MathHelper.sin(this.rotationYaw * (float) Math.PI / 180.0F); float f3 = MathHelper.cos(this.rotationYaw * (float) Math.PI / 180.0F); this.motionX += (double) (-0.4F * f2 * this.jumpPower); this.motionZ += (double) (0.4F * f3 * this.jumpPower); this.playSound("mob.horse.jump", 0.4F, 1.0F); } this.jumpPower = 0.0F; net.minecraftforge.common.ForgeHooks.onLivingJump(this); } this.stepHeight = 1.0F; this.jumpMovementFactor = this.getAIMoveSpeed() * 0.1F; if (!this.worldObj.isRemote) { this.setAIMoveSpeed( (float) this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).getAttributeValue()); super.moveEntityWithHeading(p_70612_1_, p_70612_2_); } if (this.onGround) { this.jumpPower = 0.0F; this.setHorseJumping(false); } this.prevLimbSwingAmount = this.limbSwingAmount; double d1 = this.posX - this.prevPosX; double d0 = this.posZ - this.prevPosZ; float f4 = MathHelper.sqrt_double(d1 * d1 + d0 * d0) * 4.0F; if (f4 > 1.0F) { f4 = 1.0F; } this.limbSwingAmount += (f4 - this.limbSwingAmount) * 0.4F; this.limbSwing += this.limbSwingAmount; } else { this.stepHeight = 0.5F; this.jumpMovementFactor = 0.02F; super.moveEntityWithHeading(p_70612_1_, p_70612_2_); } }