diff --git a/worldedit-core/src/main/java/com/boydti/fawe/wrappers/AsyncPlayer.java b/worldedit-core/src/main/java/com/boydti/fawe/wrappers/AsyncPlayer.java index baca0fa1f..1001d64bd 100644 --- a/worldedit-core/src/main/java/com/boydti/fawe/wrappers/AsyncPlayer.java +++ b/worldedit-core/src/main/java/com/boydti/fawe/wrappers/AsyncPlayer.java @@ -143,23 +143,27 @@ public class AsyncPlayer extends PlayerProxy { @Override public void floatAt(int x, int y, int z, boolean alwaysGlass) { - RuntimeException caught = null; - try { - EditSession edit = new EditSessionBuilder(WorldWrapper.unwrap(getWorld())) - .player(unwrap(getBasePlayer())).build(); - edit.setBlock(BlockVector3.at(x, y - 1, z), BlockTypes.GLASS); - edit.flushQueue(); - LocalSession session = Fawe.get().getWorldEdit().getSessionManager().get(this); - if (session != null) { - session.remember(edit, true, getBasePlayer().getLimit().MAX_HISTORY); + if (alwaysGlass || !isAllowedToFly()) { + RuntimeException caught = null; + try { + EditSession edit = + new EditSessionBuilder(WorldWrapper.unwrap(getWorld())).player(unwrap(getBasePlayer())).build(); + edit.setBlock(BlockVector3.at(x, y - 1, z), BlockTypes.GLASS); + edit.flushQueue(); + LocalSession session = Fawe.get().getWorldEdit().getSessionManager().get(this); + if (session != null) { + session.remember(edit, true, getBasePlayer().getLimit().MAX_HISTORY); + } + } catch (RuntimeException e) { + caught = e; } - } catch (RuntimeException e) { - caught = e; - } - setPosition(Vector3.at(x + 0.5, y, z + 0.5)); - if (caught != null) { - throw caught; + if (caught != null) { + throw caught; + } + } else { + setFlying(true); } + trySetPosition(Vector3.at(x + 0.5, y, z + 0.5)); } @Override