Make /home and /back obey the world perm system.

This will prevent players from moving between words using virtually all essentials commands.
ATM /warp is excepted, because we already have per warp permissions.
Ess3 may see warp permissions altered to: essentials.warp.<world>.<warpname>
This commit is contained in:
KHobbits 2012-05-20 23:58:03 +01:00
parent 1c0838aa5d
commit faa3a5e027
3 changed files with 19 additions and 3 deletions

View file

@ -16,6 +16,11 @@ public class Commandback extends EssentialsCommand
@Override
protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception
{
if (user.getWorld() != user.getLastLocation().getWorld() && ess.getSettings().isWorldTeleportPermissions()
&& !user.isAuthorized("essentials.world." + user.getLastLocation().getWorld().getName()))
{
throw new Exception(_("noPerm", "essentials.world." + user.getLastLocation().getWorld().getName()));
}
final Trade charge = new Trade(this.getName(), ess);
charge.isAffordableFor(user);
user.sendMessage(_("backUsageMsg"));

View file

@ -54,7 +54,7 @@ public class Commandhome extends EssentialsCommand
throw new NoChargeException();
}
}
user.getTeleport().home(player, homeName.toLowerCase(Locale.ENGLISH), charge);
goHome(user, player, homeName.toLowerCase(Locale.ENGLISH), charge);
}
catch (NotEnoughArgumentsException e)
{
@ -80,7 +80,7 @@ public class Commandhome extends EssentialsCommand
}
else if (homes.size() == 1 && player.equals(user))
{
user.getTeleport().home(player, homes.get(0), charge);
goHome(user, player, homes.get(0), charge);
}
else
{
@ -93,4 +93,14 @@ public class Commandhome extends EssentialsCommand
}
throw new NoChargeException();
}
private void goHome(final User user, final User player, final String home, final Trade charge) throws Exception
{
if (user.getWorld() != player.getHome(home).getWorld() && ess.getSettings().isWorldTeleportPermissions()
&& !user.isAuthorized("essentials.world." + player.getHome(home).getWorld().getName()))
{
throw new Exception(_("noPerm", "essentials.world." + player.getHome(home).getWorld().getName()));
}
user.getTeleport().home(player, home, charge);
}
}

View file

@ -284,7 +284,8 @@ death-messages: true
no-god-in-worlds:
# - world_nether
# Set to true to enable per-world permissions for teleporting with /world, /tp ,/tpa and /tpo.
# Set to true to enable per-world permissions for teleporting between worlds with essentials commands
# This applies to /world, /home, /back, /tp[a|o][here|all], but not warps.
# Give someone permission to teleport to a world with essentials.world.<worldname>
world-teleport-permissions: false