From e382a6c92338314d138ad62cd5a718ce49758f88 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Fri, 16 Nov 2012 02:37:13 +0000 Subject: Abstract Settings Command class --- Essentials/src/messages.properties | 3 +- Essentials/src/net/ess3/api/IUser.java | 6 +- Essentials/src/net/ess3/commands/Commandfly.java | 74 +++++-------- Essentials/src/net/ess3/commands/Commandgod.java | 70 +++++------- .../src/net/ess3/commands/Commandtptoggle.java | 56 ++++++---- .../ess3/commands/EssentialsSettingsCommand.java | 120 +++++++++++++++++++++ .../src/net/ess3/permissions/Permissions.java | 1 + 7 files changed, 210 insertions(+), 120 deletions(-) create mode 100644 Essentials/src/net/ess3/commands/EssentialsSettingsCommand.java 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, -- cgit v1.2.3