1
0

RenameCommand.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using System.Diagnostics.CodeAnalysis;
  2. using Content.Server.Administration;
  3. using Content.Shared.Access.Components;
  4. using Content.Shared.Administration;
  5. using Robust.Server.Player;
  6. using Robust.Shared.Console;
  7. namespace Content.Server.Mind.Commands;
  8. [AdminCommand(AdminFlags.VarEdit)]
  9. public sealed class RenameCommand : LocalizedEntityCommands
  10. {
  11. [Dependency] private readonly IEntityManager _entManager = default!;
  12. [Dependency] private readonly IPlayerManager _playerManager = default!;
  13. [Dependency] private readonly MetaDataSystem _metaSystem = default!;
  14. public override string Command => "rename";
  15. public override void Execute(IConsoleShell shell, string argStr, string[] args)
  16. {
  17. if (args.Length != 2)
  18. {
  19. shell.WriteLine(Help);
  20. return;
  21. }
  22. var name = args[1];
  23. if (name.Length > IdCardConsoleComponent.MaxFullNameLength)
  24. {
  25. shell.WriteLine(Loc.GetString("cmd-rename-too-long"));
  26. return;
  27. }
  28. if (!TryParseUid(args[0], shell, _entManager, out var entityUid))
  29. return;
  30. _metaSystem.SetEntityName(entityUid.Value, name);
  31. }
  32. private bool TryParseUid(string str, IConsoleShell shell,
  33. IEntityManager entMan, [NotNullWhen(true)] out EntityUid? entityUid)
  34. {
  35. if (NetEntity.TryParse(str, out var entityUidNet) && _entManager.TryGetEntity(entityUidNet, out entityUid) && entMan.EntityExists(entityUid))
  36. return true;
  37. if (_playerManager.TryGetSessionByUsername(str, out var session) && session.AttachedEntity.HasValue)
  38. {
  39. entityUid = session.AttachedEntity.Value;
  40. return true;
  41. }
  42. if (session == null)
  43. shell.WriteError(Loc.GetString("cmd-rename-not-found", ("target", str)));
  44. else
  45. shell.WriteError(Loc.GetString("cmd-rename-no-entity", ("target", str)));
  46. entityUid = EntityUid.Invalid;
  47. return false;
  48. }
  49. }