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(); + } } }