summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKHobbits <rob@khobbits.co.uk>2012-11-16 02:37:13 +0000
committerKHobbits <rob@khobbits.co.uk>2012-11-16 02:37:13 +0000
commite382a6c92338314d138ad62cd5a718ce49758f88 (patch)
tree030f279c56fd80dae5aa0c3a0de986c20f4b7fa7
parent6b332957c89485ceb375ae25623b9d22c62b9fa6 (diff)
downloadEssentials-e382a6c92338314d138ad62cd5a718ce49758f88.tar
Essentials-e382a6c92338314d138ad62cd5a718ce49758f88.tar.gz
Essentials-e382a6c92338314d138ad62cd5a718ce49758f88.tar.lz
Essentials-e382a6c92338314d138ad62cd5a718ce49758f88.tar.xz
Essentials-e382a6c92338314d138ad62cd5a718ce49758f88.zip
Abstract Settings Command class
-rw-r--r--Essentials/src/messages.properties3
-rw-r--r--Essentials/src/net/ess3/api/IUser.java6
-rw-r--r--Essentials/src/net/ess3/commands/Commandfly.java74
-rw-r--r--Essentials/src/net/ess3/commands/Commandgod.java70
-rw-r--r--Essentials/src/net/ess3/commands/Commandtptoggle.java56
-rw-r--r--Essentials/src/net/ess3/commands/EssentialsSettingsCommand.java120
-rw-r--r--Essentials/src/net/ess3/permissions/Permissions.java1
7 files changed, 210 insertions, 120 deletions
diff --git a/Essentials/src/messages.properties b/Essentials/src/messages.properties
index 664319b05..a618c8535 100644
--- a/Essentials/src/messages.properties
+++ b/Essentials/src/messages.properties
@@ -358,8 +358,7 @@ teleportRequest=\u00a7c{0}\u00a76 has requested to teleport to you.
teleportRequestTimeoutInfo=\u00a76This request will timeout after\u00a7c {0} seconds\u00a76.
teleportTop=\u00a76Teleporting to top.
teleportationCommencing=\u00a76Teleportation commencing...
-teleportationDisabled=\u00a76Teleportation disabled.
-teleportationEnabled=\u00a76Teleportation enabled.
+teleportMode=\u00a76Teleportation\u00a7c {0}\u00a76.
teleporting=\u00a76Teleporting...
teleportingPortal=\u00a76Teleporting via portal.
tempBanned=Temporarily banned from server for {0}
diff --git a/Essentials/src/net/ess3/api/IUser.java b/Essentials/src/net/ess3/api/IUser.java
index 32469fb85..40c3f39c1 100644
--- a/Essentials/src/net/ess3/api/IUser.java
+++ b/Essentials/src/net/ess3/api/IUser.java
@@ -69,6 +69,8 @@ public interface IUser extends OfflinePlayer, CommandSender, IStorageObjectHolde
boolean isGodModeEnabled();
+ boolean isTeleportEnabled();
+
boolean isIgnoringPlayer(IUser user);
void setIgnoredPlayer(IUser user, boolean set);
@@ -89,8 +91,6 @@ public interface IUser extends OfflinePlayer, CommandSender, IStorageObjectHolde
IUser getTeleportRequester();
- boolean toggleTeleportEnabled();
-
long getTeleportRequestTime();
boolean gotMailInfo();
@@ -121,6 +121,8 @@ public interface IUser extends OfflinePlayer, CommandSender, IStorageObjectHolde
void setGodModeEnabled(boolean set);
+ void setTeleportEnabled(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 2ee33a698..d15b44d19 100644
--- a/Essentials/src/net/ess3/commands/Commandfly.java
+++ b/Essentials/src/net/ess3/commands/Commandfly.java
@@ -7,67 +7,45 @@ import org.bukkit.Server;
import org.bukkit.command.CommandSender;
-public class Commandfly extends EssentialsCommand
+public class Commandfly extends EssentialsSettingsCommand
{
- @Override
- protected void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception
+ protected void setValue(final IUser player, final boolean value)
{
- if (args.length < 1)
+ player.getPlayer().setAllowFlight(value);
+ if (!player.getPlayer().getAllowFlight())
{
- throw new NotEnoughArgumentsException();
+ player.getPlayer().setFlying(false);
}
+ }
- flyOtherPlayers(server, sender, args);
+ protected boolean getValue(final IUser player)
+ {
+ return player.getPlayer().getAllowFlight();
}
- @Override
- protected void run(final IUser user, final String commandLabel, final String[] args) throws Exception
+ protected void informSender(final CommandSender sender, final boolean value, final IUser player)
{
- if (args.length > 0 && args[0].trim().length() > 2 && Permissions.FLY_OTHERS.isAuthorized(user))
- {
- flyOtherPlayers(server, user, args);
- return;
+ if (value) {
+ sender.sendMessage( _("flyMode", _(getValue(player) ? "enabled" : "disabled"), player.getPlayer().getDisplayName()));
}
- user.getPlayer().setAllowFlight(!user.getPlayer().getAllowFlight());
- if (!user.getPlayer().getAllowFlight())
- {
- user.getPlayer().setFlying(false);
+ else {
+ sender.sendMessage("Can't change fly mode for player " + player.getName());
}
- user.sendMessage(_("flyMode", _(user.getPlayer().getAllowFlight() ? "enabled" : "disabled"), user.getPlayer().getDisplayName()));
}
- private void flyOtherPlayers(final Server server, final CommandSender sender, final String[] args)
+ protected void informPlayer(final IUser player)
{
- 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"))
- {
- matchPlayer.getPlayer().setAllowFlight(true);
- }
- else
- {
- matchPlayer.getPlayer().setAllowFlight(false);
- }
- }
- else
- {
- matchPlayer.getPlayer().setAllowFlight(!matchPlayer.getPlayer().getAllowFlight());
- }
+ final String message = _("flyMode", _(getValue(player) ? "enabled" : "disabled"), player.getPlayer().getDisplayName());
+ player.sendMessage(message);
+ }
- if (!matchPlayer.getPlayer().getAllowFlight())
- {
- matchPlayer.getPlayer().setFlying(false);
- }
- final String message = _("flyMode", _(matchPlayer.getPlayer().getAllowFlight() ? "enabled" : "disabled"), matchPlayer.getPlayer().getDisplayName());
- matchPlayer.sendMessage(message);
- sender.sendMessage(message);
- }
+ protected boolean canToggleOthers(final IUser user)
+ {
+ return Permissions.FLY_OTHERS.isAuthorized(user);
+ }
+
+ protected boolean isExempt(final CommandSender sender, final IUser player)
+ {
+ return Permissions.FLY_EXEMPT.isAuthorized(player);
}
}
diff --git a/Essentials/src/net/ess3/commands/Commandgod.java b/Essentials/src/net/ess3/commands/Commandgod.java
index d4460b605..32df31bf7 100644
--- a/Essentials/src/net/ess3/commands/Commandgod.java
+++ b/Essentials/src/net/ess3/commands/Commandgod.java
@@ -5,63 +5,41 @@ import net.ess3.api.IUser;
import net.ess3.permissions.Permissions;
import org.bukkit.command.CommandSender;
-
-public class Commandgod extends EssentialsCommand
+public class Commandgod extends EssentialsSettingsCommand
{
- @Override
- protected void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception
+ protected void setValue(final IUser player, final boolean value)
{
- if (args.length < 1)
- {
- throw new NotEnoughArgumentsException();
- }
+ player.setGodModeEnabled(value);
+ }
- godOtherPlayers(sender, args);
+ protected boolean getValue(final IUser player)
+ {
+ return player.isGodModeEnabled();
}
- @Override
- protected void run(final IUser user, final String commandLabel, final String[] args) throws Exception
+ protected void informSender(final CommandSender sender, final boolean value, final IUser player)
{
- if (args.length > 0 && !args[0].trim().isEmpty() && Permissions.GOD_OTHERS.isAuthorized(user))
- {
- godOtherPlayers(user, args);
- return;
+ if (value) {
+ sender.sendMessage( _("godMode", _(getValue(player) ? "enabled" : "disabled"), player.getPlayer().getDisplayName()));
+ }
+ else {
+ sender.sendMessage("Can't change god mode for player " + player.getName());
}
+ }
- user.setGodModeEnabled(!user.isGodModeEnabled());
- user.sendMessage(_("godMode", (user.isGodModeEnabled() ? _("enabled") : _("disabled"))));
+ protected void informPlayer(final IUser player)
+ {
+ final String message = _("godMode", _(getValue(player) ? "enabled" : "disabled"), player.getPlayer().getDisplayName());
+ player.sendMessage(message);
}
- private void godOtherPlayers(final CommandSender sender, final String[] args)
+ protected boolean canToggleOthers(final IUser user)
{
- 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"))
- {
- player.setGodModeEnabled(true);
- }
- else
- {
- player.setGodModeEnabled(false);
- }
- }
- else
- {
- player.setGodModeEnabled(!player.isGodModeEnabled());
- }
+ return Permissions.GOD_OTHERS.isAuthorized(user);
+ }
- final boolean enabled = player.isGodModeEnabled();
- player.sendMessage(_("godMode", (enabled ? _("enabled") : _("disabled"))));
- sender.sendMessage(_("godMode", _(enabled ? "godEnabledFor" : "godDisabledFor", player.getName())));
- }
+ protected boolean isExempt(final CommandSender sender, final IUser player)
+ {
+ return (player.isOnline() ? Permissions.GOD_EXEMPT.isAuthorized(player) : !Permissions.GOD_OFFLINE.isAuthorized(sender));
}
}
diff --git a/Essentials/src/net/ess3/commands/Commandtptoggle.java b/Essentials/src/net/ess3/commands/Commandtptoggle.java
index d3f5cc82a..3e1b17371 100644
--- a/Essentials/src/net/ess3/commands/Commandtptoggle.java
+++ b/Essentials/src/net/ess3/commands/Commandtptoggle.java
@@ -1,35 +1,47 @@
package net.ess3.commands;
import static net.ess3.I18n._;
+import org.bukkit.command.CommandSender;
import net.ess3.api.IUser;
import net.ess3.permissions.Permissions;
-public class Commandtptoggle extends EssentialsCommand
+public class Commandtptoggle extends EssentialsSettingsCommand
{
- @Override
- public void run(final IUser user, final String commandLabel, final String[] args) throws Exception
+
+ protected void setValue(final IUser player, final boolean value)
+ {
+ player.setTeleportEnabled(value);
+ }
+
+ protected boolean getValue(final IUser player)
{
- IUser otherUser = null;
- if (args.length > 0 && Permissions.TPTOGGLE_OTHERS.isAuthorized(user))
- {
- otherUser = ess.getUserMap().getUser(server.getPlayer(args[0]));
- if (otherUser == null)
- {
- throw new Exception(_("playerNotFound"));
- }
- else
- {
- ess.getUserMap().getUser(server.getPlayer(args[0])).sendMessage(user.toggleTeleportEnabled()
- ? _("teleportationEnabled")
- : _("teleportationDisabled"));
- }
+ return player.isTeleportEnabled();
+ }
+
+ protected void informSender(final CommandSender sender, final boolean value, final IUser player)
+ {
+ if (value) {
+ sender.sendMessage( _("teleportMode", _(getValue(player) ? "enabled" : "disabled"), player.getPlayer().getDisplayName()));
}
- else
- {
- user.sendMessage(user.toggleTeleportEnabled()
- ? _("teleportationEnabled")
- : _("teleportationDisabled"));
+ else {
+ sender.sendMessage("Can't change teleport toggle for player " + player.getName());
}
}
+
+ protected void informPlayer(final IUser player)
+ {
+ final String message = _("teleportMode", _(getValue(player) ? "enabled" : "disabled"), player.getPlayer().getDisplayName());
+ player.sendMessage(message);
+ }
+
+ protected boolean canToggleOthers(final IUser user)
+ {
+ return Permissions.TPTOGGLE_OTHERS.isAuthorized(user);
+ }
+
+ protected boolean isExempt(final CommandSender sender, final IUser player)
+ {
+ return Permissions.TPTOGGLE_EXEMPT.isAuthorized(player);
+ }
}
diff --git a/Essentials/src/net/ess3/commands/EssentialsSettingsCommand.java b/Essentials/src/net/ess3/commands/EssentialsSettingsCommand.java
new file mode 100644
index 000000000..f48b087a2
--- /dev/null
+++ b/Essentials/src/net/ess3/commands/EssentialsSettingsCommand.java
@@ -0,0 +1,120 @@
+package net.ess3.commands;
+
+import static net.ess3.I18n._;
+import org.bukkit.Server;
+import org.bukkit.command.CommandSender;
+import net.ess3.api.IUser;
+import net.ess3.permissions.Permissions;
+
+
+public abstract class EssentialsSettingsCommand extends EssentialsCommand
+{
+
+ protected void setValue(final IUser player, final boolean value)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ protected boolean getValue(final IUser player)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ protected void informSender(final CommandSender sender, final boolean value, final IUser player)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ protected void informPlayer(final IUser player)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ protected boolean canToggleOthers(final IUser user)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ protected boolean isExempt(final CommandSender sender, final IUser player)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ protected void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception
+ {
+ if (args.length < 1)
+ {
+ throw new NotEnoughArgumentsException();
+ }
+
+ toggleOtherPlayers(server, sender, args);
+ }
+
+ @Override
+ protected void run(final IUser user, final String commandLabel, final String[] args) throws Exception
+ {
+ if (args.length > 1 && args[0].trim().length() > 2 && canToggleOthers(user))
+ {
+ toggleOtherPlayers(server, user, args);
+ return;
+ }
+ else if (args.length > 0)
+ {
+ if (args[0].equalsIgnoreCase("on") || args[0].startsWith("enable") || args[0].equalsIgnoreCase("1"))
+ {
+ setValue(user, true);
+ }
+ else if (args[0].equalsIgnoreCase("off") || args[0].startsWith("disable") || args[0].equalsIgnoreCase("0"))
+ {
+ setValue(user, true);
+ }
+ else if (args[0].trim().length() > 2 && canToggleOthers(user))
+ {
+ toggleOtherPlayers(server, user, args);
+ return;
+ }
+ }
+ else
+ {
+ setValue(user, !getValue(user));
+ }
+ informPlayer(user);
+ }
+
+ private void toggleOtherPlayers(final Server server, final CommandSender sender, final String[] args)
+ {
+ for (IUser matchPlayer : ess.getUserMap().matchUsersExcludingHidden(args[0], getPlayerOrNull(sender)))
+ {
+ if (isExempt(sender, matchPlayer))
+ {
+ informSender(sender, false, matchPlayer);
+ continue;
+ }
+ if (args.length > 1)
+ {
+ if (args[1].contains("on") || args[1].contains("ena") || args[1].equalsIgnoreCase("1"))
+ {
+ setValue(matchPlayer, true);
+ }
+ else
+ {
+ setValue(matchPlayer, true);
+ ;
+ }
+ }
+ else
+ {
+ setValue(matchPlayer, !getValue(matchPlayer));
+ }
+
+ if (!matchPlayer.getPlayer().getAllowFlight())
+ {
+ matchPlayer.getPlayer().setFlying(false);
+ }
+ informPlayer(matchPlayer);
+ informSender(sender, true, matchPlayer);
+ }
+ }
+
+}
diff --git a/Essentials/src/net/ess3/permissions/Permissions.java b/Essentials/src/net/ess3/permissions/Permissions.java
index 177de4718..089f8b902 100644
--- a/Essentials/src/net/ess3/permissions/Permissions.java
+++ b/Essentials/src/net/ess3/permissions/Permissions.java
@@ -106,6 +106,7 @@ public enum Permissions implements IPermission
TPAHERE,
TPOHERE,
TPTOGGLE_OTHERS,
+ TPTOGGLE_EXEMPT,
UNLIMITED_OTHERS,
WARP_LIST(PermissionDefault.TRUE),
WARP_HIDDEN,