summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsnowleo <schneeleo@gmail.com>2012-10-16 22:04:56 +0200
committersnowleo <schneeleo@gmail.com>2012-10-16 22:04:56 +0200
commitef289cb309552a8a7c22c9b2134924832459c814 (patch)
tree2e7cad4055d30a4f95868e6087d34605b53f8ab3
parent3b32012a679c33a49171d68caf4522c58cabbfb6 (diff)
downloadEssentials-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.java11
-rw-r--r--Essentials/src/net/ess3/commands/Commandfly.java9
-rw-r--r--Essentials/src/net/ess3/commands/Commandgamemode.java7
-rw-r--r--Essentials/src/net/ess3/commands/Commandgod.java7
-rw-r--r--Essentials/src/net/ess3/commands/Commandsocialspy.java61
-rw-r--r--Essentials/src/net/ess3/permissions/Permissions.java7
-rw-r--r--Essentials/src/net/ess3/user/UserBase.java8
-rw-r--r--Essentials/src/plugin.yml2
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.