From 016b39726ca6e03ddefa04a36d24a58d4f72f38d Mon Sep 17 00:00:00 2001 From: KHobbits Date: Sun, 2 Feb 2014 16:43:31 +0000 Subject: Restore teleporting to middle of block, when flying and unsafe is enabled. --- Essentials/src/com/earth2me/essentials/Teleport.java | 2 +- .../src/com/earth2me/essentials/utils/LocationUtil.java | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/Teleport.java b/Essentials/src/com/earth2me/essentials/Teleport.java index 4d258156a..45e9a34e3 100644 --- a/Essentials/src/com/earth2me/essentials/Teleport.java +++ b/Essentials/src/com/earth2me/essentials/Teleport.java @@ -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)); } } diff --git a/Essentials/src/com/earth2me/essentials/utils/LocationUtil.java b/Essentials/src/com/earth2me/essentials/utils/LocationUtil.java index 66a2ef581..b142ac3a9 100644 --- a/Essentials/src/com/earth2me/essentials/utils/LocationUtil.java +++ b/Essentials/src/com/earth2me/essentials/utils/LocationUtil.java @@ -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) -- cgit v1.2.3