diff --git a/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java index f33efcf8a6f..5b5ce3bb98d 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java @@ -504,12 +504,20 @@ private void joinFlow(final User user, final long currentTime, final String mess }); } + final boolean restoreFly = user.isFlyModeEnabled() && user.isAuthorized("essentials.fly"); + if (restoreFly) { + user.getBase().setAllowFlight(true); + if (ess.getSettings().isSendFlyEnableOnJoin()) { + user.sendTl("flyMode", CommonPlaceholders.enableDisable(user.getSource(), true), user.getDisplayName()); + } + } + if (user.isAuthorized("essentials.fly.safelogin")) { user.getBase().setFallDistance(0); if (LocationUtil.shouldFly(ess, user.getLocation())) { user.getBase().setAllowFlight(true); user.getBase().setFlying(true); - if (ess.getSettings().isSendFlyEnableOnJoin()) { + if (!restoreFly && ess.getSettings().isSendFlyEnableOnJoin()) { user.sendTl("flyMode", CommonPlaceholders.enableDisable(user.getSource(), true), user.getDisplayName()); } } diff --git a/Essentials/src/main/java/com/earth2me/essentials/UserData.java b/Essentials/src/main/java/com/earth2me/essentials/UserData.java index 6e280b8942e..2f2a2c8e87b 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/UserData.java +++ b/Essentials/src/main/java/com/earth2me/essentials/UserData.java @@ -469,6 +469,15 @@ public void setGodModeEnabled(final boolean set) { config.save(); } + public boolean isFlyModeEnabled() { + return holder.flyMode(); + } + + public void setFlyModeEnabled(final boolean set) { + holder.flyMode(set); + config.save(); + } + public boolean getMuted() { return holder.muted(); } diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandfly.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandfly.java index c6a38fa4771..c56eaef1588 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandfly.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandfly.java @@ -34,6 +34,8 @@ protected void togglePlayer(final CommandSource sender, final User user, Boolean user.getBase().setFallDistance(0f); user.getBase().setAllowFlight(enabled); + user.setFlyModeEnabled(enabled); + if (!user.getBase().getAllowFlight()) { user.getBase().setFlying(false); } diff --git a/Essentials/src/main/java/com/earth2me/essentials/config/holders/UserConfigHolder.java b/Essentials/src/main/java/com/earth2me/essentials/config/holders/UserConfigHolder.java index 5455376675a..2e278667390 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/config/holders/UserConfigHolder.java +++ b/Essentials/src/main/java/com/earth2me/essentials/config/holders/UserConfigHolder.java @@ -171,6 +171,16 @@ public void godMode(final boolean value) { this.godmode = value; } + private boolean flymode = false; + + public boolean flyMode() { + return this.flymode; + } + + public void flyMode(final boolean value) { + this.flymode = value; + } + private boolean muted = false; public boolean muted() {