summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKHobbits <rob@khobbits.co.uk>2012-12-02 02:20:05 +0000
committerKHobbits <rob@khobbits.co.uk>2012-12-02 02:20:05 +0000
commit517fafab4e2c5eb83e5d374f175140d5029a7af3 (patch)
treecc50402bfc19f25fca6497dccf22028305f21926
parent49fe260f8de1b0f3f0af192db7accd41992a02b2 (diff)
downloadEssentials-517fafab4e2c5eb83e5d374f175140d5029a7af3.tar
Essentials-517fafab4e2c5eb83e5d374f175140d5029a7af3.tar.gz
Essentials-517fafab4e2c5eb83e5d374f175140d5029a7af3.tar.lz
Essentials-517fafab4e2c5eb83e5d374f175140d5029a7af3.tar.xz
Essentials-517fafab4e2c5eb83e5d374f175140d5029a7af3.zip
Support new game modes
Add gamemode to settings abstract
-rw-r--r--Essentials/src/net/ess3/commands/Commandgamemode.java125
-rw-r--r--Essentials/src/net/ess3/commands/EssentialsSettingsCommand.java8
-rw-r--r--Essentials/src/net/ess3/commands/EssentialsToggleCommand.java6
3 files changed, 93 insertions, 46 deletions
diff --git a/Essentials/src/net/ess3/commands/Commandgamemode.java b/Essentials/src/net/ess3/commands/Commandgamemode.java
index c38d0f3a3..f70d4c71d 100644
--- a/Essentials/src/net/ess3/commands/Commandgamemode.java
+++ b/Essentials/src/net/ess3/commands/Commandgamemode.java
@@ -8,57 +8,108 @@ import org.bukkit.GameMode;
import org.bukkit.command.CommandSender;
-public class Commandgamemode extends EssentialsCommand
+public class Commandgamemode extends EssentialsSettingsCommand
{
- @Override
- protected void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception
+
+ protected void setValue(final IUser player, GameMode value)
{
- if (args.length < 1)
- {
- throw new NotEnoughArgumentsException();
+ if (value == null) {
+ value = rotateGameMode(player);
+ }
+ player.getPlayer().setGameMode(value);
+ }
+
+ protected GameMode getValue(final IUser player)
+ {
+ return player.getPlayer().getGameMode();
+ }
+
+ protected void informSender(final CommandSender sender, final boolean value, final IUser player)
+ {
+ if (value) {
+ sender.sendMessage( _("gameMode", getValue(player).toString().toLowerCase(Locale.ENGLISH), player.getPlayer().getDisplayName()));
}
+ else {
+ //TODO: TL this
+ sender.sendMessage("Can't change game mode for player " + player.getName());
+ }
+ }
+
+ protected void informPlayer(final IUser player)
+ {
+ final String message = _("flyMode", getValue(player).toString().toLowerCase(Locale.ENGLISH), player.getPlayer().getDisplayName());
+ player.sendMessage(message);
+ }
- gamemodeOtherPlayers(sender, args);
+ protected boolean canToggleOthers(final IUser user)
+ {
+ return Permissions.GAMEMODE_OTHERS.isAuthorized(user);
}
- @Override
- protected void run(final IUser user, final String commandLabel, final String[] args) throws Exception
+ protected boolean isExempt(final CommandSender sender, final IUser player)
{
- if (args.length > 0 && !args[0].trim().isEmpty() && Permissions.GAMEMODE_OTHERS.isAuthorized(user))
+ return Permissions.GAMEMODE_EXEMPT.isAuthorized(player);
+ }
+
+ protected boolean toggleOfflinePlayers()
+ {
+ return false;
+ }
+
+ protected boolean canMatch(final String arg)
+ {
+ try {
+ matchGameMode(arg);
+ return true;
+ }
+ catch (NotEnoughArgumentsException ex) {
+ return false;
+ }
+ }
+
+ protected void playerMatch(final IUser player, final String arg) throws NotEnoughArgumentsException
+ {
+ if (arg == null)
{
- gamemodeOtherPlayers(user, args);
- return;
+ setValue(player, null);
+ }
+ else {
+ setValue(player, matchGameMode(arg));
}
+ }
- user.getPlayer().setGameMode(user.getPlayer().getGameMode() == GameMode.SURVIVAL ? GameMode.CREATIVE : GameMode.SURVIVAL);
- user.sendMessage(_("gameMode", _(user.getPlayer().getGameMode().toString().toLowerCase(Locale.ENGLISH)), user.getPlayer().getDisplayName()));
+ private GameMode rotateGameMode(final IUser player) {
+ return getValue(player) == GameMode.SURVIVAL ? GameMode.CREATIVE : getValue(player) == GameMode.CREATIVE ? GameMode.ADVENTURE : GameMode.SURVIVAL;
}
- private void gamemodeOtherPlayers(final CommandSender sender, final String args[])
+ private GameMode matchGameMode(String modeString) throws NotEnoughArgumentsException
{
- for (IUser player : ess.getUserMap().matchUsersExcludingHidden(args[0], getPlayerOrNull(sender)))
+ GameMode mode = null;
+ if (modeString.equalsIgnoreCase("gmc") || modeString.equalsIgnoreCase("egmc")
+ || modeString.contains("creat") || modeString.equalsIgnoreCase("1") || modeString.equalsIgnoreCase("c"))
{
- 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"))
- {
- player.getPlayer().setGameMode(GameMode.CREATIVE);
- }
- else
- {
- player.getPlayer().setGameMode(GameMode.SURVIVAL);
- }
- }
- else
- {
- player.getPlayer().setGameMode(player.getPlayer().getGameMode() == GameMode.SURVIVAL ? GameMode.CREATIVE : GameMode.SURVIVAL);
- }
- sender.sendMessage(_("gameMode", _(player.getPlayer().getGameMode().toString().toLowerCase(Locale.ENGLISH)), player.getPlayer().getDisplayName()));
+ mode = GameMode.CREATIVE;
}
+ else if (modeString.equalsIgnoreCase("gms") || modeString.equalsIgnoreCase("egms")
+ || modeString.contains("survi") || modeString.equalsIgnoreCase("0") || modeString.equalsIgnoreCase("s"))
+ {
+ mode = GameMode.SURVIVAL;
+ }
+ else if (modeString.equalsIgnoreCase("gma") || modeString.equalsIgnoreCase("egma")
+ || modeString.contains("advent") || modeString.equalsIgnoreCase("2") || modeString.equalsIgnoreCase("a"))
+ {
+ mode = GameMode.ADVENTURE;
+ }
+ else if (modeString.equalsIgnoreCase("gmt") || modeString.equalsIgnoreCase("egmt")
+ || modeString.contains("toggle") || modeString.contains("cycle") || modeString.equalsIgnoreCase("t"))
+ {
+ mode = null;
+ }
+ else
+ {
+ throw new NotEnoughArgumentsException();
+ }
+ return mode;
}
+
}
diff --git a/Essentials/src/net/ess3/commands/EssentialsSettingsCommand.java b/Essentials/src/net/ess3/commands/EssentialsSettingsCommand.java
index c239ebdd3..8439cea8d 100644
--- a/Essentials/src/net/ess3/commands/EssentialsSettingsCommand.java
+++ b/Essentials/src/net/ess3/commands/EssentialsSettingsCommand.java
@@ -34,12 +34,11 @@ public abstract class EssentialsSettingsCommand extends EssentialsCommand
throw new UnsupportedOperationException("Not supported yet.");
}
- protected void playerMatch(final IUser player, final String arg)
+ protected void playerMatch(final IUser player, final String arg) throws NotEnoughArgumentsException
{
throw new UnsupportedOperationException("Not supported yet.");
}
-
protected boolean toggleOfflinePlayers()
{
return true;
@@ -83,11 +82,10 @@ public abstract class EssentialsSettingsCommand extends EssentialsCommand
informPlayer(user);
}
- private void toggleOtherPlayers(final Server server, final CommandSender sender, final String[] args)
+ private void toggleOtherPlayers(final Server server, final CommandSender sender, final String[] args) throws NotEnoughArgumentsException
{
Set<IUser> matches = toggleOfflinePlayers() ? ess.getUserMap().matchUsers(args[0], true) : ess.getUserMap().matchUsersExcludingHidden(
- args[0], getPlayerOrNull(
- sender));
+ args[0], getPlayerOrNull(sender));
for (IUser matchPlayer : matches)
{
diff --git a/Essentials/src/net/ess3/commands/EssentialsToggleCommand.java b/Essentials/src/net/ess3/commands/EssentialsToggleCommand.java
index 89f84d000..eeac61103 100644
--- a/Essentials/src/net/ess3/commands/EssentialsToggleCommand.java
+++ b/Essentials/src/net/ess3/commands/EssentialsToggleCommand.java
@@ -1,8 +1,5 @@
package net.ess3.commands;
-import java.util.Set;
-import org.bukkit.Server;
-import org.bukkit.command.CommandSender;
import net.ess3.api.IUser;
@@ -38,7 +35,8 @@ public abstract class EssentialsToggleCommand extends EssentialsSettingsCommand
{
setValue(player, !getValue(player));
}
- else {
+ else
+ {
if (arg.contains("on") || arg.contains("ena") || arg.equalsIgnoreCase("1"))
{
setValue(player, true);