Fix player quit properly

This commit is contained in:
Shevchik 2014-01-07 03:34:16 +04:00
parent 860ca92d4e
commit 85508db9b2

View File

@ -116,7 +116,7 @@ public class PlayerSitData {
arrow.setPassenger(player); arrow.setPassenger(player);
return arrow; return arrow;
} }
protected void unSitPlayer(final Player player, boolean restoreposition, boolean correctnmspostion) protected void unSitPlayer(final Player player, boolean restoreposition, boolean correctleaveposition)
{ {
final Entity arrow = sit.get(player.getName()); final Entity arrow = sit.get(player.getName());
sit.remove(player.getName()); sit.remove(player.getName());
@ -133,28 +133,9 @@ public class PlayerSitData {
player.setSneaking(false); player.setSneaking(false);
} }
},1); },1);
} else } else if (correctleaveposition)
{ {
if (correctnmspostion) player.teleport(tploc);
{
try {
Method getHandleMethod = player.getClass().getDeclaredMethod("getHandle");
getHandleMethod.setAccessible(true);
Object nmsPlayer = getHandleMethod.invoke(player);
Class<?> entityClass = nmsPlayer.getClass().getSuperclass().getSuperclass().getSuperclass();
Field locXField = entityClass.getDeclaredField("locX");
locXField.setAccessible(true);
locXField.set(nmsPlayer, tploc.getX());
Field locYField = entityClass.getDeclaredField("locY");
locYField.setAccessible(true);
locYField.set(nmsPlayer, tploc.getY());
Field locZField = entityClass.getDeclaredField("locZ");
locZField.setAccessible(true);
locZField.set(nmsPlayer, tploc.getZ());
} catch (Exception e) {
e.printStackTrace();
}
}
} }
sitblock.remove(sitblockbr.get(player.getName())); sitblock.remove(sitblockbr.get(player.getName()));
sitblockbr.remove(player.getName()); sitblockbr.remove(player.getName());