From: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com> Date: Sun, 30 Jun 2024 04:34:06 +0000 (-0700) Subject: Fix ItemMapper whitelist mispredict when inserting or removing items (#29461) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=afe9f3ae85076a028c19202278b0f78664556a48;p=space-station-14.git Fix ItemMapper whitelist mispredict when inserting or removing items (#29461) * Fix ItemMapper whitelist mispredict when inserting or removing items Makes the ItemMapper MapLayerData available on client so that the client can predict whether an inserted/removed item changes the visibility of a sprite layer. * review --------- Co-authored-by: metalgearsloth --- diff --git a/Content.Shared/Storage/Components/SharedMapLayerData.cs b/Content.Shared/Storage/Components/SharedMapLayerData.cs index 6d2f4a7eaf..da176759f7 100644 --- a/Content.Shared/Storage/Components/SharedMapLayerData.cs +++ b/Content.Shared/Storage/Components/SharedMapLayerData.cs @@ -17,21 +17,21 @@ namespace Content.Shared.Storage.Components { public string Layer = string.Empty; - [DataField("whitelist", required: true, serverOnly: true)] - public EntityWhitelist ServerWhitelist { get; set; } = new(); + [DataField(required: true)] + public EntityWhitelist? Whitelist { get; set; } /// /// Minimal amount of entities that are valid for whitelist. /// If it's smaller than minimal amount, layer will be hidden. /// - [DataField("minCount")] + [DataField] public int MinCount = 1; /// /// Max amount of entities that are valid for whitelist. /// If it's bigger than max amount, layer will be hidden. /// - [DataField("maxCount")] + [DataField] public int MaxCount = int.MaxValue; } diff --git a/Content.Shared/Storage/EntitySystems/SharedItemMapperSystem.cs b/Content.Shared/Storage/EntitySystems/SharedItemMapperSystem.cs index 2557f8100c..cfa082a9ee 100644 --- a/Content.Shared/Storage/EntitySystems/SharedItemMapperSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedItemMapperSystem.cs @@ -95,7 +95,7 @@ namespace Content.Shared.Storage.EntitySystems var list = new List(); foreach (var mapLayerData in itemMapper.MapLayers.Values) { - var count = containedLayers.Count(ent => _whitelistSystem.IsWhitelistPass(mapLayerData.ServerWhitelist, ent)); + var count = containedLayers.Count(ent => _whitelistSystem.IsWhitelistPass(mapLayerData.Whitelist, ent)); if (count >= mapLayerData.MinCount && count <= mapLayerData.MaxCount) { list.Add(mapLayerData.Layer);