1
0
mirror of https://github.com/essentials/Essentials.git synced 2025-08-21 22:06:22 +02:00

2.9 -> 3.0

Adding world pems to the various commands (this should be seperated out to its own method)
This commit is contained in:
ementalo
2012-05-30 13:12:50 +01:00
parent 53d54146d6
commit cea3113df4
19 changed files with 150 additions and 137 deletions

View File

@@ -92,7 +92,7 @@ public interface IUser extends Player, IStorageObjectHolder<UserData>, IReload,
void requestTeleport(IUser user, boolean b); void requestTeleport(IUser user, boolean b);
boolean isTeleportRequestHere(); boolean isTpRequestHere();
IUser getTeleportRequester(); IUser getTeleportRequester();
@@ -115,4 +115,6 @@ public interface IUser extends Player, IStorageObjectHolder<UserData>, IReload,
void resetInvulnerabilityAfterTeleport(); void resetInvulnerabilityAfterTeleport();
void toggleVanished(); void toggleVanished();
void update(final Player base);
} }

View File

@@ -4,6 +4,7 @@ import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.utils.Util; import com.earth2me.essentials.utils.Util;
import com.earth2me.essentials.api.IUser; import com.earth2me.essentials.api.IUser;
import com.earth2me.essentials.permissions.Permissions; import com.earth2me.essentials.permissions.Permissions;
import com.earth2me.essentials.storage.Location;
import com.earth2me.essentials.user.UserData.TimestampType; import com.earth2me.essentials.user.UserData.TimestampType;
import com.earth2me.essentials.utils.DateUtil; import com.earth2me.essentials.utils.DateUtil;
import lombok.Cleanup; import lombok.Cleanup;
@@ -15,16 +16,16 @@ public class Commandseen extends EssentialsCommand
@Override @Override
protected void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception protected void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception
{ {
seen(sender,args,true); seen(sender,args,true, true);
} }
@Override @Override
protected void run(final IUser user, final String commandLabel, final String[] args) throws Exception protected void run(final IUser user, final String commandLabel, final String[] args) throws Exception
{ {
seen(user,args,Permissions.SEEN_BANREASON.isAuthorized(user)); seen(user,args,Permissions.SEEN_BANREASON.isAuthorized(user), Permissions.SEEN_EXTRA.isAuthorized(user));
} }
protected void seen (final CommandSender sender, final String[] args, final boolean show) throws Exception protected void seen (final CommandSender sender, final String[] args, final boolean showBan, final boolean extra) throws Exception
{ {
if (args.length < 1) if (args.length < 1)
{ {
@@ -32,24 +33,28 @@ public class Commandseen extends EssentialsCommand
} }
try try
{ {
IUser u = getPlayer(args, 0); IUser player = getPlayer(args, 0);
player.setDisplayNick(); player.setDisplayNick();
sender.sendMessage(_("seenOnline", u.getDisplayName(), DateUtil.formatDateDiff(u.getTimestamp(TimestampType.LOGIN)))); sender.sendMessage(_("seenOnline", player.getDisplayName(), DateUtil.formatDateDiff(player.getTimestamp(TimestampType.LOGIN))));
if (extra)
{
sender.sendMessage(_("whoisIPAddress", player.getAddress().getAddress().toString()));
}
} }
catch (NoSuchFieldException e) catch (NoSuchFieldException e)
{ {
@Cleanup @Cleanup
IUser u = ess.getUser(args[0]); IUser player = ess.getUser(args[0]);
u.acquireReadLock(); player.acquireReadLock();
if (u == null) if (player == null)
{ {
throw new Exception(_("playerNotFound")); throw new Exception(_("playerNotFound"));
} }
player.setDisplayNick(); player.setDisplayNick();
sender.sendMessage(_("seenOffline", u.getDisplayName(), DateUtil.formatDateDiff(u.getTimestamp(TimestampType.LOGOUT)))); sender.sendMessage(_("seenOffline", player.getName(), DateUtil.formatDateDiff(player.getTimestamp(TimestampType.LOGOUT))));
if (u.isBanned()) if (player.isBanned())
{ {
sender.sendMessage(_("whoisBanned", show ? u.getData().getBan().getReason() : _("true"))); sender.sendMessage(_("whoisBanned", showBan ? player.getData().getBan().getReason() : _("true")));
} }
if (extra) if (extra)
{ {

View File

@@ -2,6 +2,7 @@ package com.earth2me.essentials.commands;
import static com.earth2me.essentials.I18n._; import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.api.IUser; import com.earth2me.essentials.api.IUser;
import com.earth2me.essentials.utils.Util;
public class Commandsetjail extends EssentialsCommand public class Commandsetjail extends EssentialsCommand

View File

@@ -3,8 +3,7 @@ package com.earth2me.essentials.commands;
import static com.earth2me.essentials.I18n._; import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.api.IUser; import com.earth2me.essentials.api.IUser;
import com.earth2me.essentials.api.IWarps; import com.earth2me.essentials.api.IWarps;
import com.earth2me.essentials.Util; import com.earth2me.essentials.permissions.WarpPermissions;
import com.earth2me.essentials.Warps;
import org.bukkit.Location; import org.bukkit.Location;
@@ -35,7 +34,9 @@ public class Commandsetwarp extends EssentialsCommand
{ {
} }
if (warpLoc == null || user.hasPermission("essentials.warp.overwrite." + args[0])) //todo permissions
if (warpLoc == null || WarpPermissions.getPermission("overwrite." + args[0]).isAuthorized(user))
{ {
warps.setWarp(args[0], loc); warps.setWarp(args[0], loc);
} }

View File

@@ -2,6 +2,7 @@ package com.earth2me.essentials.commands;
import com.earth2me.essentials.*; import com.earth2me.essentials.*;
import static com.earth2me.essentials.I18n._; import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.api.ISettings;
import com.earth2me.essentials.bukkit.Mob; import com.earth2me.essentials.bukkit.Mob;
import com.earth2me.essentials.economy.Trade; import com.earth2me.essentials.economy.Trade;
import com.earth2me.essentials.api.IUser; import com.earth2me.essentials.api.IUser;
@@ -9,6 +10,7 @@ import com.earth2me.essentials.permissions.SpawnerPermissions;
import com.earth2me.essentials.utils.LocationUtil; import com.earth2me.essentials.utils.LocationUtil;
import com.earth2me.essentials.utils.Util; import com.earth2me.essentials.utils.Util;
import java.util.Locale; import java.util.Locale;
import lombok.Cleanup;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.CreatureSpawner; import org.bukkit.block.CreatureSpawner;
@@ -39,11 +41,14 @@ public class Commandspawner extends EssentialsCommand
{ {
throw new Exception(_("invalidMob")); throw new Exception(_("invalidMob"));
} }
if (ess.getSettings().getData().getGeneral().getPreventSpawn(mob.getType().toString().toLowerCase(Locale.ENGLISH))) @Cleanup
ISettings settings = ess.getSettings();
settings.acquireReadLock();
if (settings.getData().getGeneral().getPreventSpawn(mob.getType().toString().toLowerCase(Locale.ENGLISH)))
{ {
throw new Exception(_("disabledToSpawnMob")); throw new Exception(_("disabledToSpawnMob"));
} }
if (!user.isAuthorized("essentials.spawner." + mob.name.toLowerCase(Locale.ENGLISH))) if (!SpawnerPermissions.getPermission(mob.name.toLowerCase(Locale.ENGLISH)).isAuthorized(user))
{ {
throw new Exception(_("noPermToSpawnMob")); throw new Exception(_("noPermToSpawnMob"));
} }
@@ -51,24 +56,8 @@ public class Commandspawner extends EssentialsCommand
charge.isAffordableFor(user); charge.isAffordableFor(user);
try try
{ {
String name = args[0];
Mob mob = null;
mob = Mob.fromName(name);
if (mob == null)
{
user.sendMessage(_("invalidMob"));
return;
}
if (!SpawnerPermissions.getPermission(mob.name).isAuthorized(user))
{
throw new Exception(_("unableToSpawnMob"));
}
final Trade charge = new Trade("spawner-" + mob.name.toLowerCase(Locale.ENGLISH), ess);
charge.isAffordableFor(user);
((CreatureSpawner)target.getBlock().getState()).setSpawnedType(mob.getType()); ((CreatureSpawner)target.getBlock().getState()).setSpawnedType(mob.getType());
charge.charge(user);
user.sendMessage(_("setSpawner", mob.name));
} }
catch (Throwable ex) catch (Throwable ex)
{ {

View File

@@ -2,9 +2,11 @@ package com.earth2me.essentials.commands;
import com.earth2me.essentials.Console; import com.earth2me.essentials.Console;
import static com.earth2me.essentials.I18n._; import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.api.ISettings;
import com.earth2me.essentials.economy.Trade; import com.earth2me.essentials.economy.Trade;
import com.earth2me.essentials.api.IUser; import com.earth2me.essentials.api.IUser;
import com.earth2me.essentials.permissions.Permissions; import com.earth2me.essentials.permissions.Permissions;
import com.earth2me.essentials.permissions.WorldPermissions;
import lombok.Cleanup; import lombok.Cleanup;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
@@ -15,6 +17,9 @@ public class Commandtp extends EssentialsCommand
@Override @Override
public void run(final IUser user, final String commandLabel, final String[] args) throws Exception public void run(final IUser user, final String commandLabel, final String[] args) throws Exception
{ {
@Cleanup
ISettings settings = ess.getSettings();
settings.acquireReadLock();
switch (args.length) switch (args.length)
{ {
case 0: case 0:
@@ -28,8 +33,8 @@ public class Commandtp extends EssentialsCommand
{ {
throw new Exception(_("teleportDisabled", player.getDisplayName())); throw new Exception(_("teleportDisabled", player.getDisplayName()));
} }
if (user.getWorld() != player.getWorld() && ess.getSettings().isWorldTeleportPermissions() if (user.getWorld() != player.getWorld() && settings.getData().getGeneral().isWorldTeleportPermissions()
&& !user.isAuthorized("essentials.world." + player.getWorld().getName())) && !WorldPermissions.getPermission(player.getWorld().getName()).isAuthorized(user))
{ {
throw new Exception(_("noPerm", "essentials.world." + player.getWorld().getName())); throw new Exception(_("noPerm", "essentials.world." + player.getWorld().getName()));
} }
@@ -45,18 +50,23 @@ public class Commandtp extends EssentialsCommand
throw new Exception(_("needTpohere")); throw new Exception(_("needTpohere"));
} }
user.sendMessage(_("teleporting")); user.sendMessage(_("teleporting"));
@Cleanup
final IUser target = getPlayer(args, 0); final IUser target = getPlayer(args, 0);
@Cleanup
final IUser toPlayer = getPlayer(args, 1); final IUser toPlayer = getPlayer(args, 1);
if (!target.isTeleportEnabled()) target.acquireReadLock();
toPlayer.acquireReadLock();
if (!target.getData().isTeleportEnabled())
{ {
throw new Exception(_("teleportDisabled", target.getDisplayName())); throw new Exception(_("teleportDisabled", target.getDisplayName()));
} }
if (!toPlayer.isTeleportEnabled()) if (!toPlayer.getData().isTeleportEnabled())
{ {
throw new Exception(_("teleportDisabled", toPlayer.getDisplayName())); throw new Exception(_("teleportDisabled", toPlayer.getDisplayName()));
} }
if (target.getWorld() != toPlayer.getWorld() && ess.getSettings().isWorldTeleportPermissions() if (target.getWorld() != toPlayer.getWorld() && settings.getData().getGeneral().isWorldTeleportPermissions()
&& !user.isAuthorized("essentials.world." + toPlayer.getWorld().getName())) && !WorldPermissions.getPermission(toPlayer.getWorld().getName()).isAuthorized(user))
{ {
throw new Exception(_("noPerm", "essentials.world." + toPlayer.getWorld().getName())); throw new Exception(_("noPerm", "essentials.world." + toPlayer.getWorld().getName()));
} }

View File

@@ -3,6 +3,7 @@ package com.earth2me.essentials.commands;
import static com.earth2me.essentials.I18n._; import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.api.ISettings; import com.earth2me.essentials.api.ISettings;
import com.earth2me.essentials.api.IUser; import com.earth2me.essentials.api.IUser;
import com.earth2me.essentials.permissions.WorldPermissions;
import lombok.Cleanup; import lombok.Cleanup;
@@ -23,25 +24,22 @@ public class Commandtpa extends EssentialsCommand
{ {
throw new Exception(_("teleportDisabled", player.getDisplayName())); throw new Exception(_("teleportDisabled", player.getDisplayName()));
} }
if (user.getWorld() != player.getWorld() && ess.getSettings().isWorldTeleportPermissions() @Cleanup
&& !user.isAuthorized("essentials.world." + player.getWorld().getName())) ISettings settings = ess.getSettings();
settings.acquireReadLock();
if (user.getWorld() != player.getWorld() && ess.getSettings().getData().getGeneral().isWorldTeleportPermissions()
&& !WorldPermissions.getPermission(user.getWorld().getName()).isAuthorized(user))
{ {
throw new Exception(_("noPerm", "essentials.world." + player.getWorld().getName())); throw new Exception(_("noPerm", "essentials.world." + player.getWorld().getName()));
} }
if (!player.isIgnoredPlayer(user.getName())) if (!player.isIgnoringPlayer(user.getName()))
{ {
player.requestTeleport(user, false); player.requestTeleport(user, false);
player.sendMessage(_("teleportRequest", user.getDisplayName())); player.sendMessage(_("teleportRequest", user.getDisplayName()));
player.sendMessage(_("typeTpaccept")); player.sendMessage(_("typeTpaccept"));
player.sendMessage(_("typeTpdeny")); player.sendMessage(_("typeTpdeny"));
int tpaAcceptCancellation = 0; int tpaAcceptCancellation = 0;
ISettings settings = ess.getSettings();
settings.acquireReadLock();
try {
tpaAcceptCancellation = settings.getData().getCommands().getTpa().getTimeout(); tpaAcceptCancellation = settings.getData().getCommands().getTpa().getTimeout();
} finally {
settings.unlock();
}
if (tpaAcceptCancellation != 0) if (tpaAcceptCancellation != 0)
{ {
player.sendMessage(_("teleportRequestTimeoutInfo", tpaAcceptCancellation)); player.sendMessage(_("teleportRequestTimeoutInfo", tpaAcceptCancellation));

View File

@@ -3,6 +3,7 @@ package com.earth2me.essentials.commands;
import static com.earth2me.essentials.I18n._; import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.api.ISettings; import com.earth2me.essentials.api.ISettings;
import com.earth2me.essentials.api.IUser; import com.earth2me.essentials.api.IUser;
import com.earth2me.essentials.permissions.WorldPermissions;
import lombok.Cleanup; import lombok.Cleanup;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@@ -43,8 +44,11 @@ public class Commandtpaall extends EssentialsCommand
{ {
continue; continue;
} }
if (user.getWorld() != player.getWorld() && ess.getSettings().isWorldTeleportPermissions() @Cleanup
&& !user.isAuthorized("essentials.world." + user.getWorld().getName())) ISettings settings = ess.getSettings();
settings.acquireReadLock();
if (user.getWorld() != player.getWorld() && settings.getData().getGeneral().isWorldTeleportPermissions()
&& !WorldPermissions.getPermission(user.getWorld().getName()).isAuthorized(user))
{ {
continue; continue;
} }
@@ -54,16 +58,7 @@ public class Commandtpaall extends EssentialsCommand
player.sendMessage(_("teleportHereRequest", user.getDisplayName())); player.sendMessage(_("teleportHereRequest", user.getDisplayName()));
player.sendMessage(_("typeTpaccept")); player.sendMessage(_("typeTpaccept"));
int tpaAcceptCancellation = 0; int tpaAcceptCancellation = 0;
ISettings settings = ess.getSettings();
settings.acquireReadLock();
try
{
tpaAcceptCancellation = settings.getData().getCommands().getTpa().getTimeout(); tpaAcceptCancellation = settings.getData().getCommands().getTpa().getTimeout();
}
finally
{
settings.unlock();
}
if (tpaAcceptCancellation != 0) if (tpaAcceptCancellation != 0)
{ {
player.sendMessage(_("teleportRequestTimeoutInfo", tpaAcceptCancellation)); player.sendMessage(_("teleportRequestTimeoutInfo", tpaAcceptCancellation));

View File

@@ -1,11 +1,12 @@
package com.earth2me.essentials.commands; package com.earth2me.essentials.commands;
import static com.earth2me.essentials.I18n._; import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.economy.Trade;
import com.earth2me.essentials.api.ISettings; import com.earth2me.essentials.api.ISettings;
import com.earth2me.essentials.api.IUser; import com.earth2me.essentials.api.IUser;
import com.earth2me.essentials.economy.Trade;
import com.earth2me.essentials.permissions.Permissions; import com.earth2me.essentials.permissions.Permissions;
import org.bukkit.OfflinePlayer; import com.earth2me.essentials.permissions.WorldPermissions;
import lombok.Cleanup;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
@@ -14,58 +15,29 @@ public class Commandtpaccept extends EssentialsCommand
@Override @Override
public void run(final IUser user, final String commandLabel, final String[] args) throws Exception public void run(final IUser user, final String commandLabel, final String[] args) throws Exception
{ {
if (user.getTeleportRequester() == null)
{
throw new Exception(_("noPendingRequest"));
}
final IUser target = user.getTeleportRequester(); final IUser target = user.getTeleportRequester();
if (target == null @Cleanup
|| !target.isOnline()
|| (user.isTeleportRequestHere() && !Permissions.TPAHERE.isAuthorized(target))
|| (!user.isTeleportRequestHere() && !Permissions.TPA.isAuthorized(target) && !Permissions.TPAALL.isAuthorized(target)))
{
throw new Exception(_("noPendingRequest"));
}
if (user.isTpRequestHere() && ((!target.isAuthorized("essentials.tpahere") && !target.isAuthorized("essentials.tpaall"))
|| (user.getWorld() != target.getWorld() && ess.getSettings().isWorldTeleportPermissions()
&& !user.isAuthorized("essentials.world." + user.getWorld().getName()))))
{
throw new Exception(_("noPendingRequest"));
}
if (!user.isTpRequestHere() && (!target.isAuthorized("essentials.tpa")
|| (user.getWorld() != target.getWorld() && ess.getSettings().isWorldTeleportPermissions()
&& !user.isAuthorized("essentials.world." + target.getWorld().getName()))))
{
throw new Exception(_("noPendingRequest"));
}
if (args.length > 0 && !target.getName().contains(args[0]))
{
throw new Exception(_("noPendingRequest"));
}
int tpaAcceptCancellation = 0;
ISettings settings = ess.getSettings(); ISettings settings = ess.getSettings();
settings.acquireReadLock(); settings.acquireReadLock();
try if (target == null || !target.isOnline()
|| (args.length > 0 && !target.getName().contains(args[0]))
|| (user.isTpRequestHere() && !Permissions.TPAHERE.isAuthorized(target))
|| (!user.isTpRequestHere() && ((!Permissions.TPA.isAuthorized(target) && !Permissions.TPAALL.isAuthorized(target))
|| (user.getWorld() != target.getWorld()
&& settings.getData().getGeneral().isWorldTeleportPermissions()
&& !WorldPermissions.getPermission(user.getWorld().getName()).isAuthorized(user)))))
{ {
tpaAcceptCancellation = settings.getData().getCommands().getTpa().getTimeout(); throw new Exception(_("noPendingRequest"));
}
finally
{
settings.unlock();
} }
if (tpaAcceptCancellation != 0 && (System.currentTimeMillis() - user.getTeleportRequestTime()) / 1000 > tpaAcceptCancellation) long timeout = settings.getData().getCommands().getTpa().getTimeout();
if (timeout != 0 && (System.currentTimeMillis() - user.getTeleportRequestTime()) / 1000 > timeout)
{ {
user.requestTeleport(null, false); user.requestTeleport(null, false);
throw new Exception(_("requestTimedOut")); throw new Exception(_("requestTimedOut"));
} }
final Trade charge = new Trade(commandName, ess); final Trade charge = new Trade(this.commandName, ess);
if (user.isTpRequestHere()) if (user.isTpRequestHere())
{ {
charge.isAffordableFor(user); charge.isAffordableFor(user);

View File

@@ -3,6 +3,7 @@ package com.earth2me.essentials.commands;
import static com.earth2me.essentials.I18n._; import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.api.ISettings; import com.earth2me.essentials.api.ISettings;
import com.earth2me.essentials.api.IUser; import com.earth2me.essentials.api.IUser;
import com.earth2me.essentials.permissions.WorldPermissions;
import lombok.Cleanup; import lombok.Cleanup;
@@ -23,8 +24,11 @@ public class Commandtpahere extends EssentialsCommand
{ {
throw new Exception(_("teleportDisabled", player.getDisplayName())); throw new Exception(_("teleportDisabled", player.getDisplayName()));
} }
if (user.getWorld() != player.getWorld() && ess.getSettings().isWorldTeleportPermissions() @Cleanup
&& !user.isAuthorized("essentials.world." + user.getWorld().getName())) ISettings settings = ess.getSettings();
settings.acquireReadLock();
if (user.getWorld() != player.getWorld() && ess.getSettings().getData().getGeneral().isWorldTeleportPermissions()
&& !WorldPermissions.getPermission(user.getWorld().getName()).isAuthorized(user))
{ {
throw new Exception(_("noPerm", "essentials.world." + user.getWorld().getName())); throw new Exception(_("noPerm", "essentials.world." + user.getWorld().getName()));
} }
@@ -32,16 +36,9 @@ public class Commandtpahere extends EssentialsCommand
player.sendMessage(_("teleportHereRequest", user.getDisplayName())); player.sendMessage(_("teleportHereRequest", user.getDisplayName()));
player.sendMessage(_("typeTpaccept")); player.sendMessage(_("typeTpaccept"));
int tpaAcceptCancellation = 0; int tpaAcceptCancellation = 0;
ISettings settings = ess.getSettings();
settings.acquireReadLock();
try
{ {
tpaAcceptCancellation = settings.getData().getCommands().getTpa().getTimeout(); tpaAcceptCancellation = settings.getData().getCommands().getTpa().getTimeout();
} }
finally
{
settings.unlock();
}
if (tpaAcceptCancellation != 0) if (tpaAcceptCancellation != 0)
{ {
player.sendMessage(_("teleportRequestTimeoutInfo", tpaAcceptCancellation)); player.sendMessage(_("teleportRequestTimeoutInfo", tpaAcceptCancellation));

View File

@@ -1,7 +1,10 @@
package com.earth2me.essentials.commands; package com.earth2me.essentials.commands;
import static com.earth2me.essentials.I18n._; import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.api.ISettings;
import com.earth2me.essentials.api.IUser; import com.earth2me.essentials.api.IUser;
import com.earth2me.essentials.permissions.WorldPermissions;
import lombok.Cleanup;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
@@ -36,8 +39,12 @@ public class Commandtpall extends EssentialsCommand
{ {
continue; continue;
} }
if (user.getWorld() != player.getWorld() && ess.getSettings().isWorldTeleportPermissions() @Cleanup
&& !user.isAuthorized("essentials.world." + user.getWorld().getName())) ISettings settings = ess.getSettings();
settings.acquireReadLock();
if (user.getWorld() != player.getWorld() && ess.getSettings().getData().getGeneral().isWorldTeleportPermissions()
&& !WorldPermissions.getPermission(user.getWorld().getName()).isAuthorized(user))
{ {
continue; continue;
} }
@@ -49,6 +56,7 @@ public class Commandtpall extends EssentialsCommand
{ {
ess.getCommandHandler().showCommandError(sender, commandName, ex); ess.getCommandHandler().showCommandError(sender, commandName, ex);
} }
} }
} }
} }

View File

@@ -1,8 +1,10 @@
package com.earth2me.essentials.commands; package com.earth2me.essentials.commands;
import static com.earth2me.essentials.I18n._; import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.economy.Trade; import com.earth2me.essentials.api.ISettings;
import com.earth2me.essentials.api.IUser; import com.earth2me.essentials.api.IUser;
import com.earth2me.essentials.economy.Trade;
import com.earth2me.essentials.permissions.WorldPermissions;
import lombok.Cleanup; import lombok.Cleanup;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
@@ -19,12 +21,15 @@ public class Commandtphere extends EssentialsCommand
{ {
throw new Exception(_("teleportDisabled", player.getDisplayName())); throw new Exception(_("teleportDisabled", player.getDisplayName()));
} }
if (user.getWorld() != player.getWorld() && ess.getSettings().isWorldTeleportPermissions() @Cleanup
&& !user.isAuthorized("essentials.world." + user.getWorld().getName())) ISettings settings = ess.getSettings();
settings.acquireReadLock();
if (user.getWorld() != player.getWorld() && ess.getSettings().getData().getGeneral().isWorldTeleportPermissions()
&& !WorldPermissions.getPermission(user.getWorld().getName()).isAuthorized(user))
{ {
throw new Exception(_("noPerm", "essentials.world." + user.getWorld().getName())); throw new Exception(_("noPerm", "essentials.world." + user.getWorld().getName()));
} }
player.getTeleport().teleport(user, new Trade(this.getName(), ess), TeleportCause.COMMAND); player.getTeleport().teleport(user, new Trade(this.commandName, ess), TeleportCause.COMMAND);
user.sendMessage(_("teleporting")); user.sendMessage(_("teleporting"));
player.sendMessage(_("teleporting")); player.sendMessage(_("teleporting"));
throw new NoChargeException(); throw new NoChargeException();

View File

@@ -1,8 +1,11 @@
package com.earth2me.essentials.commands; package com.earth2me.essentials.commands;
import static com.earth2me.essentials.I18n._; import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.api.ISettings;
import com.earth2me.essentials.api.IUser; import com.earth2me.essentials.api.IUser;
import com.earth2me.essentials.permissions.Permissions; import com.earth2me.essentials.permissions.Permissions;
import com.earth2me.essentials.permissions.WorldPermissions;
import lombok.Cleanup;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
@@ -11,6 +14,8 @@ public class Commandtpo extends EssentialsCommand
@Override @Override
public void run(final IUser user, final String commandLabel, final String[] args) throws Exception public void run(final IUser user, final String commandLabel, final String[] args) throws Exception
{ {
@Cleanup
ISettings settings = ess.getSettings();
switch (args.length) switch (args.length)
{ {
case 0: case 0:
@@ -18,21 +23,23 @@ public class Commandtpo extends EssentialsCommand
case 1: case 1:
final IUser player = getPlayer(args, 0, true); final IUser player = getPlayer(args, 0, true);
if (!player.isOnline() || (player.isHidden() && !user.isAuthorized("essentials.teleport.hidden"))) if (!player.isOnline() || (player.isHidden() && !Permissions.TELEPORT_HIDDEN.isAuthorized(player)))
{ {
throw new NoSuchFieldException(_("playerNotFound")); throw new NoSuchFieldException(_("playerNotFound"));
} }
if (user.getWorld() != player.getWorld() && ess.getSettings().isWorldTeleportPermissions() settings.acquireReadLock();
&& !user.isAuthorized("essentials.world." + player.getWorld().getName())) if (user.getWorld() != player.getWorld() && settings.getData().getGeneral().isWorldTeleportPermissions()
&& !WorldPermissions.getPermission(player.getWorld().getName()).isAuthorized(player))
{ {
throw new Exception(_("noPerm", "essentials.world." + player.getWorld().getName())); throw new Exception(_("noPerm", "essentials.world." + player.getWorld().getName()));
} }
user.sendMessage(_("teleporting")); user.sendMessage(_("teleporting"));
user.getTeleport().now(player, false, TeleportCause.COMMAND); user.getTeleport().now(player, false, TeleportCause.COMMAND);
break; break;
default: default:
if (!user.isAuthorized("essentials.tp.others")) if (!Permissions.TELEPORT_OTHERS.isAuthorized(user))
{ {
throw new Exception(_("noPerm", "essentials.tp.others")); throw new Exception(_("noPerm", "essentials.tp.others"));
} }
@@ -41,13 +48,13 @@ public class Commandtpo extends EssentialsCommand
final IUser toPlayer = getPlayer(args, 1, true); final IUser toPlayer = getPlayer(args, 1, true);
if (!target.isOnline() || !toPlayer.isOnline() if (!target.isOnline() || !toPlayer.isOnline()
|| ((target.isHidden() || toPlayer.isHidden()) && !user.isAuthorized("essentials.teleport.hidden"))) || ((target.isHidden() || toPlayer.isHidden()) && !Permissions.TELEPORT_HIDDEN.isAuthorized(user)))
{ {
throw new NoSuchFieldException(_("playerNotFound")); throw new NoSuchFieldException(_("playerNotFound"));
} }
settings.acquireReadLock();
if (target.getWorld() != toPlayer.getWorld() && ess.getSettings().isWorldTeleportPermissions() if (target.getWorld() != toPlayer.getWorld() && ess.getSettings().getData().getGeneral().isWorldTeleportPermissions()
&& !user.isAuthorized("essentials.world." + toPlayer.getWorld().getName())) && !WorldPermissions.getPermission(toPlayer.getWorld().getName()).isAuthorized(user))
{ {
throw new Exception(_("noPerm", "essentials.world." + toPlayer.getWorld().getName())); throw new Exception(_("noPerm", "essentials.world." + toPlayer.getWorld().getName()));
} }

View File

@@ -1,8 +1,11 @@
package com.earth2me.essentials.commands; package com.earth2me.essentials.commands;
import static com.earth2me.essentials.I18n._; import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.api.ISettings;
import com.earth2me.essentials.api.IUser; import com.earth2me.essentials.api.IUser;
import com.earth2me.essentials.permissions.Permissions; import com.earth2me.essentials.permissions.Permissions;
import com.earth2me.essentials.permissions.WorldPermissions;
import lombok.Cleanup;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
@@ -24,13 +27,17 @@ public class Commandtpohere extends EssentialsCommand
{ {
throw new NoSuchFieldException(_("playerNotFound")); throw new NoSuchFieldException(_("playerNotFound"));
} }
@Cleanup
if (user.getWorld() != player.getWorld() && ess.getSettings().isWorldTeleportPermissions() ISettings settings = ess.getSettings();
&& !user.isAuthorized("essentials.world." + user.getWorld().getName())) settings.acquireReadLock();
//todo - common method
if (user.getWorld() != player.getWorld() && settings.getData().getGeneral().isWorldTeleportPermissions()
&& !WorldPermissions.getPermission(user.getWorld().getName()).isAuthorized(player))
{ {
throw new Exception(_("noPerm", "essentials.world." + user.getWorld().getName())); throw new Exception(_("noPerm", "essentials.world." + user.getWorld().getName()));
} }
// Verify permission // Verify permission
if (!player.isHidden() || Permissions.TELEPORT_HIDDEN.isAuthorized(user)) if (!player.isHidden() || Permissions.TELEPORT_HIDDEN.isAuthorized(user))
{ {

View File

@@ -2,6 +2,7 @@ package com.earth2me.essentials.commands;
import static com.earth2me.essentials.I18n._; import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.api.IUser; import com.earth2me.essentials.api.IUser;
import com.earth2me.essentials.permissions.Permissions;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@@ -22,7 +23,7 @@ public class Commandvanish extends EssentialsCommand
{ {
for (Player p : server.getOnlinePlayers()) for (Player p : server.getOnlinePlayers())
{ {
if (!ess.getUser(p).isAuthorized("essentials.vanish.see")) if (!Permissions.VANISH_SEE_OTHERS.isAuthorized(p))
{ {
p.hidePlayer(user); p.hidePlayer(user);
} }

View File

@@ -112,7 +112,7 @@ public class Commandwarp extends EssentialsCommand
private void warpUser(final IUser user, final String name) throws Exception private void warpUser(final IUser user, final String name) throws Exception
{ {
final Trade chargeWarp = new Trade("warp-" + name.toLowerCase(Locale.ENGLISH).replace('_', '-'), ess); final Trade chargeWarp = new Trade("warp-" + name.toLowerCase(Locale.ENGLISH).replace('_', '-'), ess);
final Trade chargeCmd = new Trade(this.getName(), ess); final Trade chargeCmd = new Trade(this.commandName, ess);
final double fullCharge = chargeWarp.getCommandCost(user) + chargeCmd.getCommandCost(user); final double fullCharge = chargeWarp.getCommandCost(user) + chargeCmd.getCommandCost(user);
final Trade charge = new Trade(fullCharge, ess); final Trade charge = new Trade(fullCharge, ess);
charge.isAffordableFor(user); charge.isAffordableFor(user);

View File

@@ -56,6 +56,7 @@ public enum Permissions implements IPermission
REPAIR_ARMOR, REPAIR_ARMOR,
REPAIR_ENCHANTED, REPAIR_ENCHANTED,
SEEN_BANREASON, SEEN_BANREASON,
SEEN_EXTRA,
SETHOME_MULTIPLE, SETHOME_MULTIPLE,
SETHOME_OTHERS, SETHOME_OTHERS,
SLEEPINGIGNORED, SLEEPINGIGNORED,
@@ -63,6 +64,7 @@ public enum Permissions implements IPermission
SUDO_EXEMPT, SUDO_EXEMPT,
TELEPORT_COOLDOWN_BYPASS, TELEPORT_COOLDOWN_BYPASS,
TELEPORT_HIDDEN, TELEPORT_HIDDEN,
TELEPORT_OTHERS,
TELEPORT_TIMER_BYPASS, TELEPORT_TIMER_BYPASS,
TEMPBAN_EXEMPT, TEMPBAN_EXEMPT,
TEMPBAN_OFFLINE, TEMPBAN_OFFLINE,
@@ -74,7 +76,8 @@ public enum Permissions implements IPermission
TPOHERE, TPOHERE,
UNLIMITED_OTHERS, UNLIMITED_OTHERS,
WARP_LIST(PermissionDefault.TRUE), WARP_LIST(PermissionDefault.TRUE),
WARP_OTHERS; WARP_OTHERS,
VANISH_SEE_OTHERS;
private static final String base = "essentials."; private static final String base = "essentials.";
private final String permission; private final String permission;
private final PermissionDefault defaultPerm; private final PermissionDefault defaultPerm;

View File

@@ -73,7 +73,7 @@ public class User extends UserBase implements IUser
@Getter @Getter
private transient IUser teleportRequester; private transient IUser teleportRequester;
@Getter @Getter
private transient boolean teleportRequestHere; private transient boolean tpRequestHere;
@Getter @Getter
private transient final ITeleport teleport; private transient final ITeleport teleport;
@Getter @Getter
@@ -250,7 +250,7 @@ public class User extends UserBase implements IUser
{ {
teleportRequestTime = System.currentTimeMillis(); teleportRequestTime = System.currentTimeMillis();
teleportRequester = player; teleportRequester = player;
teleportRequestHere = here; tpRequestHere = here;
} }
public String getNick(boolean addprefixsuffix) public String getNick(boolean addprefixsuffix)

View File

@@ -19,4 +19,16 @@ public class ProtectHolder extends AsyncStorageObjectHolder<Protect>
{ {
return new File(ess.getDataFolder(), "protect.yml"); return new File(ess.getDataFolder(), "protect.yml");
} }
@Override
public void finishRead()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void finishWrite()
{
throw new UnsupportedOperationException("Not supported yet.");
}
} }