From 07866e47644e010733a2d1be025a27ba4b775bf3 Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Fri, 31 May 2024 15:11:21 +1200 Subject: [PATCH] Prevent Identity.Name NRE exception (#28433) Fix Identity.Name exception --- Content.Client/Inventory/StrippableBoundUserInterface.cs | 5 ++++- Content.Shared/IdentityManagement/Identity.cs | 8 ++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Content.Client/Inventory/StrippableBoundUserInterface.cs b/Content.Client/Inventory/StrippableBoundUserInterface.cs index 33f38688ed..7e50eb1c68 100644 --- a/Content.Client/Inventory/StrippableBoundUserInterface.cs +++ b/Content.Client/Inventory/StrippableBoundUserInterface.cs @@ -21,7 +21,6 @@ using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Shared.Input; using Robust.Shared.Map; -using Robust.Shared.Prototypes; using static Content.Client.Inventory.ClientInventorySystem; using static Robust.Client.UserInterface.Control; @@ -53,9 +52,13 @@ namespace Content.Client.Inventory _inv = EntMan.System(); _cuffable = EntMan.System(); + // TODO update name when identity changes var title = Loc.GetString("strippable-bound-user-interface-stripping-menu-title", ("ownerName", Identity.Name(Owner, EntMan))); _strippingMenu = new StrippingMenu(title, this); _strippingMenu.OnClose += Close; + + // TODO use global entity + // BUIs are opened and closed while applying comp sates, so spawning entities here is probably not the best idea. _virtualHiddenEntity = EntMan.SpawnEntity(HiddenPocketEntityId, MapCoordinates.Nullspace); } diff --git a/Content.Shared/IdentityManagement/Identity.cs b/Content.Shared/IdentityManagement/Identity.cs index 20220e0326..2fb53e3d5a 100644 --- a/Content.Shared/IdentityManagement/Identity.cs +++ b/Content.Shared/IdentityManagement/Identity.cs @@ -15,7 +15,11 @@ public static class Identity /// public static string Name(EntityUid uid, IEntityManager ent, EntityUid? viewer=null) { - var uidName = ent.GetComponent(uid).EntityName; + var meta = ent.GetComponent(uid); + if (meta.EntityLifeStage <= EntityLifeStage.Initializing) + return meta.EntityName; // Identity component and such will not yet have initialized and may throw NREs + + var uidName = meta.EntityName; if (!ent.TryGetComponent(uid, out var identity)) return uidName; @@ -34,7 +38,7 @@ public static class Identity return uidName; } - return uidName + $" ({identName})"; + return $"{uidName} ({identName})"; } ///