Files
tbd-station-14/Content.Server/Administration/Commands/DeleteComponent.cs
Kyle Tyo 57babe15ee Command resolve mega pr 6 (#38398)
commit progress
2025-06-17 19:22:03 +02:00

47 lines
1.5 KiB
C#

using Content.Shared.Administration;
using Robust.Shared.Console;
namespace Content.Server.Administration.Commands
{
[AdminCommand(AdminFlags.Spawn)]
public sealed class DeleteComponent : LocalizedEntityCommands
{
[Dependency] private readonly IComponentFactory _compFactory = default!;
public override string Command => "deletecomponent";
public override void Execute(IConsoleShell shell, string argStr, string[] args)
{
switch (args.Length)
{
case 0:
shell.WriteLine(Loc.GetString($"shell-need-exactly-one-argument"));
break;
default:
var name = string.Join(" ", args);
if (!_compFactory.TryGetRegistration(name, out var registration))
{
shell.WriteLine(Loc.GetString($"cmd-deletecomponent-no-component-exists", ("name", name)));
break;
}
var componentType = registration.Type;
var components = EntityManager.GetAllComponents(componentType, true);
var i = 0;
foreach (var (uid, component) in components)
{
EntityManager.RemoveComponent(uid, component);
i++;
}
shell.WriteLine(Loc.GetString($"cmd-deletecomponent-success", ("count", i), ("name", name)));
break;
}
}
}
}