diff options
author | Chris Ward <chris@chrisgward.com> | 2013-01-09 22:47:27 +1100 |
---|---|---|
committer | Chris Ward <chris@chrisgward.com> | 2013-01-09 22:47:27 +1100 |
commit | e9e3d3b578366989ba39a7d60e64d553489b8cb7 (patch) | |
tree | 441f38ff5664d27405ff74e716824412d7e3055e | |
parent | 70aad4a9549e045023dab765837918efc8c67dab (diff) | |
download | Essentials-e9e3d3b578366989ba39a7d60e64d553489b8cb7.tar Essentials-e9e3d3b578366989ba39a7d60e64d553489b8cb7.tar.gz Essentials-e9e3d3b578366989ba39a7d60e64d553489b8cb7.tar.lz Essentials-e9e3d3b578366989ba39a7d60e64d553489b8cb7.tar.xz Essentials-e9e3d3b578366989ba39a7d60e64d553489b8cb7.zip |
New permission: essentials.fly.safelogin - Players with this command automatically switch to fly mode if they login whilst floating in the air.
c6dd921f0c91006e360067abf6fe349da031eca4
-rw-r--r-- | Essentials/src/net/ess3/listener/EssentialsPlayerListener.java | 22 | ||||
-rw-r--r-- | Essentials/src/net/ess3/permissions/Permissions.java | 1 |
2 files changed, 22 insertions, 1 deletions
diff --git a/Essentials/src/net/ess3/listener/EssentialsPlayerListener.java b/Essentials/src/net/ess3/listener/EssentialsPlayerListener.java index 989ca3867..327e264b4 100644 --- a/Essentials/src/net/ess3/listener/EssentialsPlayerListener.java +++ b/Essentials/src/net/ess3/listener/EssentialsPlayerListener.java @@ -11,6 +11,7 @@ import java.util.regex.Pattern; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Server; +import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -328,6 +329,25 @@ public class EssentialsPlayerListener implements Listener user.sendMessage(_("youHaveNewMail", mail.size())); } } + if(Permissions.FLY_SAFELOGIN.isAuthorized(user)) + { + final Location loc = user.getPlayer().getLocation(); + final World world = loc.getWorld(); + final int x = loc.getBlockX(); + int y = loc.getBlockY(); + final int z = loc.getBlockZ(); + while(LocationUtil.isBlockUnsafe(world, x, y, z) && y > -1) + { + y--; + } + + if(loc.getBlockY() - y > 1 || y < 0) + { + user.getPlayer().setAllowFlight(true); + user.getPlayer().setFlying(true); + user.sendMessage(_("flyMode", _("enabled"), user.getPlayer().getDisplayName())); + } + } } @@ -592,7 +612,7 @@ public class EssentialsPlayerListener implements Listener } if (event.getView().getTopInventory().getType() == InventoryType.WORKBENCH) { - final IUser user = userMap.getUser((Player)event.getWhoClicked()); + final IUser user = userMap.getUser((Player) event.getWhoClicked()); if (user.isRecipeSee()) { event.setCancelled(true); diff --git a/Essentials/src/net/ess3/permissions/Permissions.java b/Essentials/src/net/ess3/permissions/Permissions.java index 869277b77..8006fca24 100644 --- a/Essentials/src/net/ess3/permissions/Permissions.java +++ b/Essentials/src/net/ess3/permissions/Permissions.java @@ -39,6 +39,7 @@ public enum Permissions implements IPermission FEED_OTHERS, FLY_EXEMPT, FLY_OTHERS, + FLY_SAFELOGIN, GAMEMODE_EXEMPT, GAMEMODE_OTHERS, GEOIP_HIDE(PermissionDefault.FALSE), |