diff options
author | snowleo <schneeleo@gmail.com> | 2012-10-16 22:04:56 +0200 |
---|---|---|
committer | snowleo <schneeleo@gmail.com> | 2012-10-16 22:04:56 +0200 |
commit | ef289cb309552a8a7c22c9b2134924832459c814 (patch) | |
tree | 2e7cad4055d30a4f95868e6087d34605b53f8ab3 | |
parent | 3b32012a679c33a49171d68caf4522c58cabbfb6 (diff) | |
download | Essentials-ef289cb309552a8a7c22c9b2134924832459c814.tar Essentials-ef289cb309552a8a7c22c9b2134924832459c814.tar.gz Essentials-ef289cb309552a8a7c22c9b2134924832459c814.tar.lz Essentials-ef289cb309552a8a7c22c9b2134924832459c814.tar.xz Essentials-ef289cb309552a8a7c22c9b2134924832459c814.zip |
Added exempt/offline permissions to fly, god, gamemode and socialspy command. Added more options to socialspy
-rw-r--r-- | Essentials/src/net/ess3/api/IUser.java | 11 | ||||
-rw-r--r-- | Essentials/src/net/ess3/commands/Commandfly.java | 9 | ||||
-rw-r--r-- | Essentials/src/net/ess3/commands/Commandgamemode.java | 7 | ||||
-rw-r--r-- | Essentials/src/net/ess3/commands/Commandgod.java | 7 | ||||
-rw-r--r-- | Essentials/src/net/ess3/commands/Commandsocialspy.java | 61 | ||||
-rw-r--r-- | Essentials/src/net/ess3/permissions/Permissions.java | 7 | ||||
-rw-r--r-- | Essentials/src/net/ess3/user/UserBase.java | 8 | ||||
-rw-r--r-- | Essentials/src/plugin.yml | 2 |
8 files changed, 92 insertions, 20 deletions
diff --git a/Essentials/src/net/ess3/api/IUser.java b/Essentials/src/net/ess3/api/IUser.java index ddfe2b76d..32469fb85 100644 --- a/Essentials/src/net/ess3/api/IUser.java +++ b/Essentials/src/net/ess3/api/IUser.java @@ -39,7 +39,6 @@ public interface IUser extends OfflinePlayer, CommandSender, IStorageObjectHolde Location getHome(Location loc); //boolean isHidden(); - ITeleport getTeleport(); void checkCooldown(UserData.TimestampType cooldownType, double cooldown, boolean set, IPermission bypassPermission) throws CooldownException; @@ -84,8 +83,6 @@ public interface IUser extends OfflinePlayer, CommandSender, IStorageObjectHolde void setMuted(boolean mute); - boolean toggleSocialSpy(); - void requestTeleport(IUser user, boolean b); boolean isTpRequestHere(); @@ -115,17 +112,17 @@ public interface IUser extends OfflinePlayer, CommandSender, IStorageObjectHolde boolean isInvSee(); void setInvSee(boolean invsee); - + boolean isEnderSee(); - + void setEnderSee(boolean endersee); boolean hasInvulnerabilityAfterTeleport(); void setGodModeEnabled(boolean set); - void setVanished(boolean set); - + void setVanished(boolean set); + boolean checkSignThrottle(int throttle); /** diff --git a/Essentials/src/net/ess3/commands/Commandfly.java b/Essentials/src/net/ess3/commands/Commandfly.java index 10025cc12..2ee33a698 100644 --- a/Essentials/src/net/ess3/commands/Commandfly.java +++ b/Essentials/src/net/ess3/commands/Commandfly.java @@ -40,6 +40,11 @@ public class Commandfly extends EssentialsCommand { for (IUser matchPlayer : ess.getUserMap().matchUsersExcludingHidden(args[0], getPlayerOrNull(sender))) { + if (Permissions.FLY_EXEMPT.isAuthorized(matchPlayer)) + { + sender.sendMessage("Can't change fly mode for player " + matchPlayer.getName()); //TODO: I18n + continue; + } if (args.length > 1) { if (args[1].contains("on") || args[1].contains("ena") || args[1].equalsIgnoreCase("1")) @@ -60,7 +65,9 @@ public class Commandfly extends EssentialsCommand { matchPlayer.getPlayer().setFlying(false); } - sender.sendMessage(_("flyMode", _(matchPlayer.getPlayer().getAllowFlight() ? "enabled" : "disabled"), matchPlayer.getPlayer().getDisplayName())); + final String message = _("flyMode", _(matchPlayer.getPlayer().getAllowFlight() ? "enabled" : "disabled"), matchPlayer.getPlayer().getDisplayName()); + matchPlayer.sendMessage(message); + sender.sendMessage(message); } } } diff --git a/Essentials/src/net/ess3/commands/Commandgamemode.java b/Essentials/src/net/ess3/commands/Commandgamemode.java index 92cad1787..c38d0f3a3 100644 --- a/Essentials/src/net/ess3/commands/Commandgamemode.java +++ b/Essentials/src/net/ess3/commands/Commandgamemode.java @@ -37,7 +37,12 @@ public class Commandgamemode extends EssentialsCommand private void gamemodeOtherPlayers(final CommandSender sender, final String args[]) { for (IUser player : ess.getUserMap().matchUsersExcludingHidden(args[0], getPlayerOrNull(sender))) - { + { + if (Permissions.GAMEMODE_EXEMPT.isAuthorized(player)) + { + sender.sendMessage("Can't change gamemode for player " + player.getPlayer().getDisplayName()); //TODO: I18n + continue; + } if (args.length > 1) { if (args[1].contains("creat") || args[1].equalsIgnoreCase("1")) diff --git a/Essentials/src/net/ess3/commands/Commandgod.java b/Essentials/src/net/ess3/commands/Commandgod.java index 97cbdad56..d4460b605 100644 --- a/Essentials/src/net/ess3/commands/Commandgod.java +++ b/Essentials/src/net/ess3/commands/Commandgod.java @@ -36,6 +36,13 @@ public class Commandgod extends EssentialsCommand { for (IUser player : ess.getUserMap().matchUsers(args[0], true)) { + if (player.isOnline() + ? Permissions.GOD_EXEMPT.isAuthorized(player) + : !Permissions.GOD_OFFLINE.isAuthorized(sender)) + { + sender.sendMessage("Can't change god mode for player " + player.getName()); //TODO: I18n + continue; + } if (args.length > 1) { if (args[1].contains("on") || args[1].contains("ena") || args[1].equalsIgnoreCase("1")) diff --git a/Essentials/src/net/ess3/commands/Commandsocialspy.java b/Essentials/src/net/ess3/commands/Commandsocialspy.java index c466af842..3e83aea49 100644 --- a/Essentials/src/net/ess3/commands/Commandsocialspy.java +++ b/Essentials/src/net/ess3/commands/Commandsocialspy.java @@ -2,13 +2,70 @@ package net.ess3.commands; import static net.ess3.I18n._; import net.ess3.api.IUser; +import net.ess3.permissions.Permissions; +import org.bukkit.command.CommandSender; public class Commandsocialspy extends EssentialsCommand { @Override - public void run(final IUser user, final String commandLabel, final String[] args) throws Exception + public void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception { - user.sendMessage("§7SocialSpy " + (user.toggleSocialSpy() ? _("enabled") : _("disabled"))); + if (args.length < 1) + { + throw new NotEnoughArgumentsException(); + } + + socialspyOtherPlayers(sender, args); + } + + @Override + protected void run(final IUser user, final String commandLabel, final String[] args) throws Exception + { + if (args.length > 0 && !args[0].trim().isEmpty() && Permissions.SOCIALSPY_OTHERS.isAuthorized(user)) + { + socialspyOtherPlayers(user, args); + return; + } + + user.getData().setSocialspy(!user.getData().isSocialspy()); + user.queueSave(); + user.sendMessage("§7SocialSpy " + (user.getData().isSocialspy() ? _("enabled") : _("disabled"))); + } + + private void socialspyOtherPlayers(final CommandSender sender, final String[] args) + { + for (IUser player : ess.getUserMap().matchUsers(args[0], true)) + { + if (player.isOnline() + ? Permissions.SOCIALSPY_EXEMPT.isAuthorized(player) + : !Permissions.SOCIALSPY_OFFLINE.isAuthorized(sender)) + { + sender.sendMessage("Can't change socialspy for player " + player.getName()); //TODO: I18n + continue; + } + if (args.length > 1) + { + if (args[1].contains("on") || args[1].contains("ena") || args[1].equalsIgnoreCase("1")) + { + player.getData().setSocialspy(true); + player.queueSave(); + } + else + { + player.getData().setSocialspy(false); + player.queueSave(); + } + } + else + { + player.getData().setSocialspy(!player.getData().isSocialspy()); + player.queueSave(); + } + + final boolean enabled = player.getData().isSocialspy(); + player.sendMessage("§7SocialSpy " + (enabled ? _("enabled") : _("disabled"))); //TODO:I18n + sender.sendMessage("§7SocialSpy " + (enabled ? _("enabled") : _("disabled"))); + } } } diff --git a/Essentials/src/net/ess3/permissions/Permissions.java b/Essentials/src/net/ess3/permissions/Permissions.java index 256154238..20bf64c8b 100644 --- a/Essentials/src/net/ess3/permissions/Permissions.java +++ b/Essentials/src/net/ess3/permissions/Permissions.java @@ -36,11 +36,15 @@ public enum Permissions implements IPermission EXP_SET_OTHERS, EXP_OTHERS, FEED_OTHERS, + FLY_EXEMPT, FLY_OTHERS, + GAMEMODE_EXEMPT, GAMEMODE_OTHERS, GEOIP_HIDE(PermissionDefault.FALSE), GEOIP_SHOW(PermissionDefault.TRUE), GETPOS_OTHERS, + GOD_EXEMPT, + GOD_OFFLINE, GOD_OTHERS, GIVE_ENCHANTED, GIVE_ENCHANTED_UNSAFE(PermissionDefault.FALSE), @@ -83,6 +87,9 @@ public enum Permissions implements IPermission SPAWN_OTHERS, SPEED_BYPASS, SPEED_OTHERS, + SOCIALSPY_EXEMPT, + SOCIALSPY_OFFLINE, + SOCIALSPY_OTHERS, SUDO_EXEMPT, TELEPORT_COOLDOWN_BYPASS, TELEPORT_HIDDEN, diff --git a/Essentials/src/net/ess3/user/UserBase.java b/Essentials/src/net/ess3/user/UserBase.java index abcaf8371..232b0a6e9 100644 --- a/Essentials/src/net/ess3/user/UserBase.java +++ b/Essentials/src/net/ess3/user/UserBase.java @@ -230,14 +230,6 @@ public abstract class UserBase extends AsyncStorageObjectHolder<UserData> implem queueSave(); } - public boolean toggleSocialSpy() - { - boolean ret = !getData().isSocialspy(); - getData().setSocialspy(ret); - queueSave(); - return ret; - } - public boolean toggleTeleportEnabled() { boolean ret = !getData().isTeleportEnabled(); diff --git a/Essentials/src/plugin.yml b/Essentials/src/plugin.yml index 14b2eed7f..aced7fffc 100644 --- a/Essentials/src/plugin.yml +++ b/Essentials/src/plugin.yml @@ -320,7 +320,7 @@ commands: aliases: [esetworth] socialspy: description: Toggles if you can see msg/mail commands in chat. - usage: /<command> + usage: /<command> [player] [on|off] aliases: [esocialspy] spawn: description: Teleport to the spawnpoint. |