Restore teleporting to middle of block, when flying and unsafe is enabled.

This commit is contained in:
KHobbits 2014-02-02 16:43:31 +00:00
parent 882ebae257
commit 016b39726c
2 changed files with 13 additions and 3 deletions

View File

@ -122,7 +122,7 @@ public class Teleport implements net.ess3.api.ITeleport
{
teleportee.getBase().leaveVehicle();
}
teleportee.getBase().teleport(loc);
teleportee.getBase().teleport(LocationUtil.getRoundedDestination(loc));
}
}

View File

@ -248,6 +248,16 @@ public class LocationUtil
}
return false;
}
// Not needed if using getSafeDestination(loc)
public static Location getRoundedDestination(final Location loc)
{
final World world = loc.getWorld();
int x = loc.getBlockX();
int y = (int)Math.round(loc.getY());
int z = loc.getBlockZ();
return new Location(world, x + 0.5, y, z + 0.5, loc.getYaw(), loc.getPitch());
}
public static Location getSafeDestination(final IUser user, final Location loc) throws Exception
{
@ -259,11 +269,11 @@ public class LocationUtil
{
user.getBase().setFlying(true);
}
return loc;
return getRoundedDestination(loc);
}
return getSafeDestination(loc);
}
public static Location getSafeDestination(final Location loc) throws Exception
{
if (loc == null || loc.getWorld() == null)