Appearance
Troubleshooting and limitations
No runtime containers
A manager component does not create inventory definitions for you. Create valid definition assets and call AddContainerFromDefinition or AddContainersFromCollection on authority.
Check the definition's main container fragment and selected implementation class.
Items do not fit
Check item shape, open container cells, current occupied cells, stack maximum, allowed rotation, and filters. Inspect OutItemsAdded or FRicAddResult.AddedItemCount; a nonzero partial addition is not necessarily the entire request.
When debugging nested inventory, use recursive queries instead of inspecting only the roots.
Client inventory does not update
Check that the owner actor replicates, the manager's containers are attached, and the RPC component has a valid owning connection. Use source references for authoritative work and client-copy references for the predicted view.
Subscribe to synchronization notifications and re-resolve references by GUID. If a chest is being observed, confirm that its state is replicated to the viewing client.
Swap success does not match the result
In this snapshot, URicSwapStrategySwapBoofer.TrySwap and JigsawSwap return false after performing placement attempts. The relocate strategy can return true without completing the swap and lacks a complete verified rollback path.
The predicted swap path can therefore diverge from expectations. Validate or repair your selected strategy before shipping that interaction. These docs describe the limitation; they do not modify the plugin implementation.
A restored disk save loses fields
The runtime snapshots contain nested plain C++ fields without UPROPERTY. A reflected USaveGame wrapper is not sufficient evidence that the complete tree is serialized. Use an explicit adapter and round-trip test indices, tags, GUIDs, nested arrays, and assignments.
Manager restoration requires existing actors and matching stable manager IDs. It skips invalid definitions.
An interaction point cannot be found after moving
Call RefreshSpatialIndex after moving the point. Also check Hidden/Disabled tag state, search strategy, distance, angle, and the trace channel.
The server trusts client point selection for distance and visibility; this is a defined integration boundary, not an additional validation guarantee.
No dynamic icon material
The base visual resolver returns null for a dynamic material. Use the icon texture directly in the UI or implement a resolver subclass.
Gamepad does not move the cursor
The input subsystem tracks input type, but does not create its analog cursor automatically. Integrate the analog cursor explicitly if your game needs it.
Runtime preview leaks or outlives its widget
Keep the preview handle, and call ClosePreview when the panel closes. Preview worlds have their own lifetime. Do not assume that removing the widget alone closes its world.
Copy and transfer semantics
Some inventory subsystem Copy helpers transfer source contents. Read the implementation before using them to produce an independent duplicate. Networked cross-manager transfers can clone and remove objects, so retaining a UObject pointer is not a durable identity mechanism.
Validation scope
The repository documents Win64 and Unreal Engine 5.8 validation and contains tag, resolver, naming, interaction, and replication automation tests. Dedicated-server sessions with connected clients, disk serialization, other platforms, and your own Blueprint integrations still require project testing.
The website build verifies documentation links and output; it does not compile or execute these Unreal Engine examples.