From a937e67d38c830149c636d4649aaf0dd0e758ee3 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Tue, 1 Sep 2020 12:24:28 +0200 Subject: [PATCH] Add delete entities with prototype id command (#1983) * Add delete entities with prototype id command * Add command to groups * Add feedback and lowercasing --- .../Administration/DeleteEntitiesWithId.cs | 39 +++++++++++++++++++ Resources/Groups/groups.yml | 2 + 2 files changed, 41 insertions(+) create mode 100644 Content.Server/Administration/DeleteEntitiesWithId.cs diff --git a/Content.Server/Administration/DeleteEntitiesWithId.cs b/Content.Server/Administration/DeleteEntitiesWithId.cs new file mode 100644 index 0000000000..b2f3448167 --- /dev/null +++ b/Content.Server/Administration/DeleteEntitiesWithId.cs @@ -0,0 +1,39 @@ +#nullable enable +using Robust.Server.Interfaces.Console; +using Robust.Server.Interfaces.Player; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; + +namespace Content.Server.Administration +{ + public class DeleteEntitiesWithId : IClientCommand + { + public string Command => "deleteewi"; + public string Description => "Deletes entities with the specified prototype ID."; + public string Help => $"Usage: {Command} "; + + public void Execute(IConsoleShell shell, IPlayerSession? player, string[] args) + { + if (args.Length != 1) + { + shell.SendText(player, Help); + return; + } + + var id = args[0].ToLower(); + var entityManager = IoCManager.Resolve(); + var query = new PredicateEntityQuery(e => e.Prototype?.ID.ToLower() == id); + var entities = entityManager.GetEntities(query); + var i = 0; + + foreach (var entity in entities) + { + entity.Delete(); + i++; + } + + shell.SendText(player, $"Deleted all entities with id {id}. Occurrences: {i}"); + } + } +} diff --git a/Resources/Groups/groups.yml b/Resources/Groups/groups.yml index a2bf42796c..f166b7f1c9 100644 --- a/Resources/Groups/groups.yml +++ b/Resources/Groups/groups.yml @@ -105,6 +105,7 @@ - adddamageflag - removedamageflag - godmode + - deleteewi CanViewVar: true CanAdminPlace: true CanAdminMenu: true @@ -203,6 +204,7 @@ - adddamageflag - removedamageflag - godmode + - deleteewi CanViewVar: true CanAdminPlace: true CanScript: true