Improved server cli slightly.

This commit is contained in:
Andrew Lalis 2022-07-28 12:32:24 +02:00
parent 289ce50552
commit a1c1aad065
2 changed files with 35 additions and 7 deletions

View File

@ -5,10 +5,7 @@ import nl.andrewl.aos_core.model.Team;
import org.joml.Vector3f; import org.joml.Vector3f;
import org.joml.Vector3i; import org.joml.Vector3i;
import java.util.Collection; import java.util.*;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/** /**
* Component that manages the teams on a server. * Component that manages the teams on a server.
@ -32,6 +29,21 @@ public class TeamManager {
return teams.get(id); return teams.get(id);
} }
public Optional<Team> findByIdOrName(String ident) {
for (var team : teams.values()) {
if (team.getName().equals(ident)) return Optional.of(team);
}
try {
int id = Integer.parseInt(ident);
for (var team : teams.values()) {
if (team.getId() == id) return Optional.of(team);
}
return Optional.empty();
} catch (NumberFormatException e) {
return Optional.empty();
}
}
public Collection<Team> getTeams() { public Collection<Team> getTeams() {
return Collections.unmodifiableCollection(teams.values()); return Collections.unmodifiableCollection(teams.values());
} }

View File

@ -15,7 +15,7 @@ import java.util.Comparator;
public class PlayersCommand { public class PlayersCommand {
@CommandLine.ParentCommand ServerCli cli; @CommandLine.ParentCommand ServerCli cli;
@CommandLine.Command(description = "Lists all online players.") @CommandLine.Command(name = "list", description = "Lists all online players.")
public void list() { public void list() {
var playerManager = cli.server.getPlayerManager(); var playerManager = cli.server.getPlayerManager();
Collection<ServerPlayer> players = playerManager.getPlayers(); Collection<ServerPlayer> players = playerManager.getPlayers();
@ -39,11 +39,27 @@ public class PlayersCommand {
} }
} }
@CommandLine.Command(description = "Kicks a player from the server.") @CommandLine.Command(name = "list", description = "Kicks a player from the server.")
public void kick(@CommandLine.Parameters(description = "The id or name of the player to kick.") String playerIdent) { public void kick(
@CommandLine.Parameters(paramLabel = "player", description = "The id or name of the player to kick.") String playerIdent
) {
cli.server.getPlayerManager().findByIdOrName(playerIdent) cli.server.getPlayerManager().findByIdOrName(playerIdent)
.ifPresentOrElse(player -> { .ifPresentOrElse(player -> {
cli.server.getPlayerManager().deregister(player); cli.server.getPlayerManager().deregister(player);
}, () -> cli.out.println("Player not found.")); }, () -> cli.out.println("Player not found."));
} }
@CommandLine.Command(name = "set-team", description = "Sets a player's team.")
public void setTeam(
@CommandLine.Parameters(paramLabel = "player", description = "The id or name of the player to set the team of.", index = "0") String playerIdent,
@CommandLine.Parameters(paramLabel = "team", description = "The id or name of the team to move the player to.", index = "1") String teamIdent
) {
cli.server.getPlayerManager().findByIdOrName(playerIdent)
.ifPresentOrElse(player -> {
cli.server.getTeamManager().findByIdOrName(teamIdent)
.ifPresentOrElse(team -> {
cli.out.println("Not yet implemented.");
}, () -> cli.out.println("Team not found."));
}, () -> cli.out.println("Player not found."));
}
} }