diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java index 7280e65e2..c378841b1 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java @@ -262,6 +262,9 @@ public class EssentialsPlayerListener implements Listener user.sendMessage(_("flyMode", _("enabled"), user.getDisplayName())); } } + user.setFlySpeed(0.1f); + user.setWalkSpeed(0.2f); + } }); } @@ -397,7 +400,7 @@ public class EssentialsPlayerListener implements Listener } @EventHandler(priority = EventPriority.NORMAL) - public void onPlayerChangedWorldHack(final PlayerChangedWorldEvent event) + public void onPlayerChangedWorldFlyReset(final PlayerChangedWorldEvent event) { final User user = ess.getUser(event.getPlayer()); if (user.getGameMode() != GameMode.CREATIVE && !user.isAuthorized("essentials.fly")) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandspeed.java b/Essentials/src/com/earth2me/essentials/commands/Commandspeed.java index c7b44dc68..f95caeafb 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandspeed.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandspeed.java @@ -39,12 +39,12 @@ public class Commandspeed extends EssentialsCommand boolean isBypass = user.isAuthorized("essentials.speed.bypass"); if (args.length == 1) { - isFly = user.isFlying(); + isFly = flyPermCheck(user, user.isFlying()); speed = getMoveSpeed(args[0]); } else { - isFly = isFlyMode(args[0]); + isFly = flyPermCheck(user, isFlyMode(args[0])); speed = getMoveSpeed(args[1]); if (args.length > 2 && user.isAuthorized("essentials.speed.others")) { @@ -52,7 +52,7 @@ public class Commandspeed extends EssentialsCommand return; } } - + if (isFly) { user.setFlySpeed(getRealMoveSpeed(speed, isFly, isBypass)); @@ -81,6 +81,19 @@ public class Commandspeed extends EssentialsCommand } } } + + private Boolean flyPermCheck(User user, boolean input) throws Exception + { + boolean canFly = user.isAuthorized("essentials.speed.fly"); + boolean canWalk = user.isAuthorized("essentials.speed.walk"); + if (input && canFly || !input && canWalk || !canFly && !canWalk) { + return input; + } + else if (canWalk) { + return false; + } + return true; + } private boolean isFlyMode(final String modeString) throws NotEnoughArgumentsException {