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

Abstract Settings Command class

This commit is contained in:
KHobbits
2012-11-16 02:37:13 +00:00
parent 6b332957c8
commit e382a6c923
7 changed files with 216 additions and 126 deletions

View File

@@ -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}

View File

@@ -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);

View File

@@ -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())
protected boolean canToggleOthers(final IUser user)
{
matchPlayer.getPlayer().setFlying(false);
}
final String message = _("flyMode", _(matchPlayer.getPlayer().getAllowFlight() ? "enabled" : "disabled"), matchPlayer.getPlayer().getDisplayName());
matchPlayer.sendMessage(message);
sender.sendMessage(message);
return Permissions.FLY_OTHERS.isAuthorized(user);
}
protected boolean isExempt(final CommandSender sender, final IUser player)
{
return Permissions.FLY_EXEMPT.isAuthorized(player);
}
}

View File

@@ -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));
}
}

View File

@@ -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)
{
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"));
player.setTeleportEnabled(value);
}
else
protected boolean getValue(final IUser player)
{
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 {
sender.sendMessage("Can't change teleport toggle for player " + player.getName());
}
}
else
protected void informPlayer(final IUser player)
{
user.sendMessage(user.toggleTeleportEnabled()
? _("teleportationEnabled")
: _("teleportationDisabled"));
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);
}
}

View File

@@ -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);
}
}
}

View File

@@ -106,6 +106,7 @@ public enum Permissions implements IPermission
TPAHERE,
TPOHERE,
TPTOGGLE_OTHERS,
TPTOGGLE_EXEMPT,
UNLIMITED_OTHERS,
WARP_LIST(PermissionDefault.TRUE),
WARP_HIDDEN,