Fixed teleport exploit in regards to Archery bonus XP.

This commit is contained in:
GJ 2013-02-02 19:07:05 -05:00
parent b11e28c880
commit 8f17ec96f0

View File

@ -18,10 +18,21 @@ public class ArcheryManager extends SkillManager {
public void distanceXpBonus(LivingEntity target) { public void distanceXpBonus(LivingEntity target) {
Player player = mcMMOPlayer.getPlayer(); Player player = mcMMOPlayer.getPlayer();
Location shooterLocation = player.getEyeLocation(); Location shooterLocation = player.getLocation();
Location targetLocation = target.getLocation(); Location targetLocation = target.getLocation();
if (!shooterLocation.getWorld().equals(targetLocation.getWorld())) {
return;
}
double squaredDistance = shooterLocation.distanceSquared(targetLocation); double squaredDistance = shooterLocation.distanceSquared(targetLocation);
// Cap distance at 100^2 to prevent teleport exploit.
// TODO: Better way to handle this would be great...
if (squaredDistance > 10000) {
squaredDistance = 10000;
}
int bonusXp = (int) (squaredDistance * Archery.distanceXpModifer); int bonusXp = (int) (squaredDistance * Archery.distanceXpModifer);
mcMMOPlayer.addXp(SkillType.ARCHERY, bonusXp); mcMMOPlayer.addXp(SkillType.ARCHERY, bonusXp);
} }