using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.EntityList; using Robust.Shared.Console; using Robust.Shared.Prototypes; namespace Content.Server.EntityList { [AdminCommand(AdminFlags.Spawn)] public sealed class SpawnEntityListCommand : IConsoleCommand { public string Command => "spawnentitylist"; public string Description => "Spawns a list of entities around you"; public string Help => $"Usage: {Command} "; public void Execute(IConsoleShell shell, string argStr, string[] args) { if (args.Length != 1) { shell.WriteError($"Invalid arguments.\n{Help}"); return; } if (shell.Player is not { } player) { shell.WriteError(Loc.GetString("shell-cannot-run-command-from-server")); return; } if (player.AttachedEntity is not {} attached) { shell.WriteError(Loc.GetString("shell-only-players-can-run-this-command")); return; } var prototypeManager = IoCManager.Resolve(); if (!prototypeManager.TryIndex(args[0], out EntityListPrototype? prototype)) { shell.WriteError($"No {nameof(EntityListPrototype)} found with id {args[0]}"); return; } var entityManager = IoCManager.Resolve(); var i = 0; foreach (var entity in prototype.Entities(prototypeManager)) { entityManager.SpawnEntity(entity.ID, entityManager.GetComponent(attached).Coordinates); i++; } shell.WriteLine($"Spawned {i} entities."); } } }