47 lines
1.5 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|