diff --git a/Content.Shared/Cabinet/ItemCabinetComponent.cs b/Content.Shared/Cabinet/ItemCabinetComponent.cs
index 71367e8de6..dcc276e565 100644
--- a/Content.Shared/Cabinet/ItemCabinetComponent.cs
+++ b/Content.Shared/Cabinet/ItemCabinetComponent.cs
@@ -7,7 +7,7 @@ namespace Content.Shared.Cabinet;
///
/// Used for entities that can be opened, closed, and can hold one item. E.g., fire extinguisher cabinets.
///
-[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)]
public sealed partial class ItemCabinetComponent : Component
{
///
diff --git a/Content.Shared/Cabinet/SharedItemCabinetSystem.cs b/Content.Shared/Cabinet/SharedItemCabinetSystem.cs
index 92af6a4f8a..ca496814c7 100644
--- a/Content.Shared/Cabinet/SharedItemCabinetSystem.cs
+++ b/Content.Shared/Cabinet/SharedItemCabinetSystem.cs
@@ -22,6 +22,7 @@ public abstract class SharedItemCabinetSystem : EntitySystem
SubscribeLocalEvent(OnComponentInit);
SubscribeLocalEvent(OnComponentRemove);
SubscribeLocalEvent(OnComponentStartup);
+ SubscribeLocalEvent(OnComponentHandleState);
SubscribeLocalEvent(OnActivateInWorld);
SubscribeLocalEvent>(AddToggleOpenVerb);
@@ -48,6 +49,11 @@ public abstract class SharedItemCabinetSystem : EntitySystem
_itemSlots.SetLock(uid, cabinet.CabinetSlot, !cabinet.Opened);
}
+ private void OnComponentHandleState(Entity ent, ref AfterAutoHandleStateEvent args)
+ {
+ UpdateAppearance(ent, ent);
+ }
+
protected virtual void UpdateAppearance(EntityUid uid, ItemCabinetComponent? cabinet = null)
{
// we don't fuck with appearance data, and instead just manually update the sprite on the client