mirror of
https://github.com/essentials/Essentials.git
synced 2025-08-27 00:15:23 +02:00
Support new game modes
Add gamemode to settings abstract
This commit is contained in:
@@ -8,57 +8,108 @@ import org.bukkit.GameMode;
|
|||||||
import org.bukkit.command.CommandSender;
|
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)
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean canToggleOthers(final IUser user)
|
||||||
|
{
|
||||||
|
return Permissions.GAMEMODE_OTHERS.isAuthorized(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean isExempt(final CommandSender sender, final IUser player)
|
||||||
|
{
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
setValue(player, null);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setValue(player, matchGameMode(arg));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private GameMode rotateGameMode(final IUser player) {
|
||||||
|
return getValue(player) == GameMode.SURVIVAL ? GameMode.CREATIVE : getValue(player) == GameMode.CREATIVE ? GameMode.ADVENTURE : GameMode.SURVIVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
private GameMode matchGameMode(String modeString) throws NotEnoughArgumentsException
|
||||||
|
{
|
||||||
|
GameMode mode = null;
|
||||||
|
if (modeString.equalsIgnoreCase("gmc") || modeString.equalsIgnoreCase("egmc")
|
||||||
|
|| modeString.contains("creat") || modeString.equalsIgnoreCase("1") || modeString.equalsIgnoreCase("c"))
|
||||||
|
{
|
||||||
|
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();
|
throw new NotEnoughArgumentsException();
|
||||||
}
|
}
|
||||||
|
return mode;
|
||||||
gamemodeOtherPlayers(sender, args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void run(final IUser user, final String commandLabel, final String[] args) throws Exception
|
|
||||||
{
|
|
||||||
if (args.length > 0 && !args[0].trim().isEmpty() && Permissions.GAMEMODE_OTHERS.isAuthorized(user))
|
|
||||||
{
|
|
||||||
gamemodeOtherPlayers(user, args);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
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 void gamemodeOtherPlayers(final CommandSender sender, final String args[])
|
|
||||||
{
|
|
||||||
for (IUser player : ess.getUserMap().matchUsersExcludingHidden(args[0], getPlayerOrNull(sender)))
|
|
||||||
{
|
|
||||||
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()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -34,12 +34,11 @@ public abstract class EssentialsSettingsCommand extends EssentialsCommand
|
|||||||
throw new UnsupportedOperationException("Not supported yet.");
|
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.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected boolean toggleOfflinePlayers()
|
protected boolean toggleOfflinePlayers()
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
@@ -83,11 +82,10 @@ public abstract class EssentialsSettingsCommand extends EssentialsCommand
|
|||||||
informPlayer(user);
|
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(
|
Set<IUser> matches = toggleOfflinePlayers() ? ess.getUserMap().matchUsers(args[0], true) : ess.getUserMap().matchUsersExcludingHidden(
|
||||||
args[0], getPlayerOrNull(
|
args[0], getPlayerOrNull(sender));
|
||||||
sender));
|
|
||||||
|
|
||||||
for (IUser matchPlayer : matches)
|
for (IUser matchPlayer : matches)
|
||||||
{
|
{
|
||||||
|
@@ -1,8 +1,5 @@
|
|||||||
package net.ess3.commands;
|
package net.ess3.commands;
|
||||||
|
|
||||||
import java.util.Set;
|
|
||||||
import org.bukkit.Server;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import net.ess3.api.IUser;
|
import net.ess3.api.IUser;
|
||||||
|
|
||||||
|
|
||||||
@@ -38,7 +35,8 @@ public abstract class EssentialsToggleCommand extends EssentialsSettingsCommand
|
|||||||
{
|
{
|
||||||
setValue(player, !getValue(player));
|
setValue(player, !getValue(player));
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
if (arg.contains("on") || arg.contains("ena") || arg.equalsIgnoreCase("1"))
|
if (arg.contains("on") || arg.contains("ena") || arg.equalsIgnoreCase("1"))
|
||||||
{
|
{
|
||||||
setValue(player, true);
|
setValue(player, true);
|
||||||
|
Reference in New Issue
Block a user