From 0d2ed60fed605dec8c769228600e0a2264e91d13 Mon Sep 17 00:00:00 2001 From: Kamron Batman <3953314+kamronbatman@users.noreply.github.com> Date: Mon, 2 Jun 2025 22:11:40 -1000 Subject: [PATCH] fix: Fixes null components in BaseAddon (#2208) --- Projects/UOContent/Items/Addons/AddonComponent.cs | 2 +- Projects/UOContent/Items/Addons/BaseAddon.cs | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Projects/UOContent/Items/Addons/AddonComponent.cs b/Projects/UOContent/Items/Addons/AddonComponent.cs index ce155cec9..e19914998 100644 --- a/Projects/UOContent/Items/Addons/AddonComponent.cs +++ b/Projects/UOContent/Items/Addons/AddonComponent.cs @@ -104,7 +104,7 @@ namespace Server.Items } [SerializableField(0)] - [SerializedCommandProperty(AccessLevel.GameMaster)] + [SerializedCommandProperty(AccessLevel.GameMaster, readOnly: true)] public BaseAddon _addon; [SerializableField(1)] diff --git a/Projects/UOContent/Items/Addons/BaseAddon.cs b/Projects/UOContent/Items/Addons/BaseAddon.cs index 340a93065..6b2abbc66 100644 --- a/Projects/UOContent/Items/Addons/BaseAddon.cs +++ b/Projects/UOContent/Items/Addons/BaseAddon.cs @@ -270,7 +270,8 @@ namespace Server.Items foreach (var c in Components) { - c.Delete(); + // Component can become null if the Addon property is somehow deleted, then the component itself is deleted. + c?.Delete(); } } @@ -283,5 +284,12 @@ namespace Server.Items _resource = (CraftResource)reader.ReadEncodedInt(); } } + + [AfterDeserialization] + private void AfterDeserialization() + { + // We have had issues in the past, so let's tidy it up. + _components?.Tidy(); + } } }