Improved collision "i.e. actually made a non-retarded position update" for the Scroll of Icarus.
This commit is contained in:
parent
3f8a455b90
commit
383be360ff
|
@ -86,7 +86,8 @@ public class ItemFlightScroll extends ItemSoulBreathContainer implements IMeshPr
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
|
//TODO: Add an effect where it "draws back" like a bow in order to cast Levitation on a mob.
|
||||||
|
//Only Levitated mobs can be grabbed.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -269,8 +270,10 @@ public class ItemFlightScroll extends ItemSoulBreathContainer implements IMeshPr
|
||||||
double offsetX = offset.x;
|
double offsetX = offset.x;
|
||||||
double offsetY = offset.y;
|
double offsetY = offset.y;
|
||||||
double offsetZ = offset.z;
|
double offsetZ = offset.z;
|
||||||
double ownerSpeed = Math.sqrt(owner.motionX * owner.motionX + owner.motionY + owner.motionY + owner.motionZ + owner.motionZ);
|
double ownerSpeed = Math.sqrt(owner.motionX * owner.motionX + owner.motionY * owner.motionY + owner.motionZ * owner.motionZ);
|
||||||
double maxFollowSpeed = Math.max(ownerSpeed * 1.5, 0.5d);
|
// double ownerSpeed = Math.sqrt((owner.posX - owner.prevPosX) * (owner.posX - owner.prevPosX) + (owner.posY - owner.prevPosY) * (owner.posY - owner.prevPosY) + (owner.posZ - owner.prevPosZ) * (owner.posZ - owner.prevPosZ));
|
||||||
|
|
||||||
|
double speed = Math.max(ownerSpeed * 20, 2); //May just want to call it a day and set this to "2"
|
||||||
|
|
||||||
livingEntity.addPotionEffect(new PotionEffect(MobEffects.LEVITATION, 20, 0, false, true));
|
livingEntity.addPotionEffect(new PotionEffect(MobEffects.LEVITATION, 20, 0, false, true));
|
||||||
|
|
||||||
|
@ -278,10 +281,13 @@ public class ItemFlightScroll extends ItemSoulBreathContainer implements IMeshPr
|
||||||
double wantedY = owner.posY + offsetY;
|
double wantedY = owner.posY + offsetY;
|
||||||
double wantedZ = owner.posZ + offsetZ;
|
double wantedZ = owner.posZ + offsetZ;
|
||||||
|
|
||||||
// livingEntity.posX = wantedX;
|
Vector3d vec = new Vector3d(wantedX - livingEntity.posX, wantedY - livingEntity.posY, wantedZ - livingEntity.posZ);
|
||||||
// livingEntity.posY = wantedY;
|
double vecDistance = Math.sqrt(vec.dot(vec));
|
||||||
// livingEntity.posZ = wantedZ;
|
speed = Math.min(vecDistance, speed);
|
||||||
livingEntity.setPosition(wantedX, wantedY, wantedZ);
|
|
||||||
|
vec.normalize();
|
||||||
|
|
||||||
|
livingEntity.setVelocity(vec.x * speed, vec.y * speed, vec.z * speed);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onEffectUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected)
|
public void onEffectUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected)
|
||||||
|
|
Loading…
Reference in a new issue