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. teleportRequestTimeoutInfo=\u00a76This request will timeout after\u00a7c {0} seconds\u00a76.
teleportTop=\u00a76Teleporting to top. teleportTop=\u00a76Teleporting to top.
teleportationCommencing=\u00a76Teleportation commencing... teleportationCommencing=\u00a76Teleportation commencing...
teleportationDisabled=\u00a76Teleportation disabled. teleportMode=\u00a76Teleportation\u00a7c {0}\u00a76.
teleportationEnabled=\u00a76Teleportation enabled.
teleporting=\u00a76Teleporting... teleporting=\u00a76Teleporting...
teleportingPortal=\u00a76Teleporting via portal. teleportingPortal=\u00a76Teleporting via portal.
tempBanned=Temporarily banned from server for {0} tempBanned=Temporarily banned from server for {0}

View File

@@ -69,6 +69,8 @@ public interface IUser extends OfflinePlayer, CommandSender, IStorageObjectHolde
boolean isGodModeEnabled(); boolean isGodModeEnabled();
boolean isTeleportEnabled();
boolean isIgnoringPlayer(IUser user); boolean isIgnoringPlayer(IUser user);
void setIgnoredPlayer(IUser user, boolean set); void setIgnoredPlayer(IUser user, boolean set);
@@ -89,8 +91,6 @@ public interface IUser extends OfflinePlayer, CommandSender, IStorageObjectHolde
IUser getTeleportRequester(); IUser getTeleportRequester();
boolean toggleTeleportEnabled();
long getTeleportRequestTime(); long getTeleportRequestTime();
boolean gotMailInfo(); boolean gotMailInfo();
@@ -121,6 +121,8 @@ public interface IUser extends OfflinePlayer, CommandSender, IStorageObjectHolde
void setGodModeEnabled(boolean set); void setGodModeEnabled(boolean set);
void setTeleportEnabled(boolean set);
void setVanished(boolean set); void setVanished(boolean set);
boolean checkSignThrottle(int throttle); boolean checkSignThrottle(int throttle);

View File

@@ -7,67 +7,45 @@ import org.bukkit.Server;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
public class Commandfly extends EssentialsCommand public class Commandfly extends EssentialsSettingsCommand
{ {
@Override protected void setValue(final IUser player, final boolean value)
protected void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception
{ {
if (args.length < 1) player.getPlayer().setAllowFlight(value);
if (!player.getPlayer().getAllowFlight())
{ {
throw new NotEnoughArgumentsException(); player.getPlayer().setFlying(false);
} }
flyOtherPlayers(server, sender, args);
} }
@Override protected boolean getValue(final IUser player)
protected void run(final IUser user, final String commandLabel, final String[] args) throws Exception
{ {
if (args.length > 0 && args[0].trim().length() > 2 && Permissions.FLY_OTHERS.isAuthorized(user)) return player.getPlayer().getAllowFlight();
{
flyOtherPlayers(server, user, args);
return;
}
user.getPlayer().setAllowFlight(!user.getPlayer().getAllowFlight());
if (!user.getPlayer().getAllowFlight())
{
user.getPlayer().setFlying(false);
}
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 informSender(final CommandSender sender, final boolean value, final IUser player)
{ {
for (IUser matchPlayer : ess.getUserMap().matchUsersExcludingHidden(args[0], getPlayerOrNull(sender))) if (value) {
{ sender.sendMessage( _("flyMode", _(getValue(player) ? "enabled" : "disabled"), player.getPlayer().getDisplayName()));
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());
}
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);
} }
else {
sender.sendMessage("Can't change fly mode for player " + player.getName());
}
}
protected void informPlayer(final IUser player)
{
final String message = _("flyMode", _(getValue(player) ? "enabled" : "disabled"), player.getPlayer().getDisplayName());
player.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);
} }
} }

View File

@@ -5,63 +5,41 @@ import net.ess3.api.IUser;
import net.ess3.permissions.Permissions; import net.ess3.permissions.Permissions;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
public class Commandgod extends EssentialsSettingsCommand
public class Commandgod extends EssentialsCommand
{ {
@Override protected void setValue(final IUser player, final boolean value)
protected void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception
{ {
if (args.length < 1) player.setGodModeEnabled(value);
{
throw new NotEnoughArgumentsException();
}
godOtherPlayers(sender, args);
} }
@Override protected boolean getValue(final IUser player)
protected void run(final IUser user, final String commandLabel, final String[] args) throws Exception
{ {
if (args.length > 0 && !args[0].trim().isEmpty() && Permissions.GOD_OTHERS.isAuthorized(user)) return player.isGodModeEnabled();
{
godOtherPlayers(user, args);
return;
}
user.setGodModeEnabled(!user.isGodModeEnabled());
user.sendMessage(_("godMode", (user.isGodModeEnabled() ? _("enabled") : _("disabled"))));
} }
private void godOtherPlayers(final CommandSender sender, final String[] args) protected void informSender(final CommandSender sender, final boolean value, final IUser player)
{ {
for (IUser player : ess.getUserMap().matchUsers(args[0], true)) if (value) {
{ sender.sendMessage( _("godMode", _(getValue(player) ? "enabled" : "disabled"), player.getPlayer().getDisplayName()));
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());
}
final boolean enabled = player.isGodModeEnabled();
player.sendMessage(_("godMode", (enabled ? _("enabled") : _("disabled"))));
sender.sendMessage(_("godMode", _(enabled ? "godEnabledFor" : "godDisabledFor", player.getName())));
} }
else {
sender.sendMessage("Can't change god mode for player " + player.getName());
}
}
protected void informPlayer(final IUser player)
{
final String message = _("godMode", _(getValue(player) ? "enabled" : "disabled"), player.getPlayer().getDisplayName());
player.sendMessage(message);
}
protected boolean canToggleOthers(final IUser user)
{
return Permissions.GOD_OTHERS.isAuthorized(user);
}
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; package net.ess3.commands;
import static net.ess3.I18n._; import static net.ess3.I18n._;
import org.bukkit.command.CommandSender;
import net.ess3.api.IUser; import net.ess3.api.IUser;
import net.ess3.permissions.Permissions; 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; player.setTeleportEnabled(value);
if (args.length > 0 && Permissions.TPTOGGLE_OTHERS.isAuthorized(user)) }
{
otherUser = ess.getUserMap().getUser(server.getPlayer(args[0])); protected boolean getValue(final IUser player)
if (otherUser == null) {
{ return player.isTeleportEnabled();
throw new Exception(_("playerNotFound")); }
}
else protected void informSender(final CommandSender sender, final boolean value, final IUser player)
{ {
ess.getUserMap().getUser(server.getPlayer(args[0])).sendMessage(user.toggleTeleportEnabled() if (value) {
? _("teleportationEnabled") sender.sendMessage( _("teleportMode", _(getValue(player) ? "enabled" : "disabled"), player.getPlayer().getDisplayName()));
: _("teleportationDisabled"));
}
} }
else else {
{ sender.sendMessage("Can't change teleport toggle for player " + player.getName());
user.sendMessage(user.toggleTeleportEnabled()
? _("teleportationEnabled")
: _("teleportationDisabled"));
} }
} }
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);
}
} }

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, TPAHERE,
TPOHERE, TPOHERE,
TPTOGGLE_OTHERS, TPTOGGLE_OTHERS,
TPTOGGLE_EXEMPT,
UNLIMITED_OTHERS, UNLIMITED_OTHERS,
WARP_LIST(PermissionDefault.TRUE), WARP_LIST(PermissionDefault.TRUE),
WARP_HIDDEN, WARP_HIDDEN,