CrimsonInventory

Server-authoritative by design
Every mutation runs on the server. Clients never call AddItemDefinition, MoveItemByEntry or any other BlueprintAuthorityOnly function directly - they go through UCrimsonInventoryRoutingComponent on their PlayerController, which owns the validated Server_* RPCs. If your project has no PlayerController-side routing, nothing the player does reaches the inventory. Quick Start wires this up in step 5.

CrimsonInventory is a fully replicated, layout-agnostic inventory. The shape of an inventory (flat slots, a 2D grid, a weight list, or a nested bag) is a UCrimsonInventoryLayout data asset you assign per inventory; the capacities and rules are a runtime-mutable stack of UCrimsonInventoryConstraint objects; items are Blueprint classes composed from fragments. One component, UCrimsonInventoryManagerComponent, serves every case - player backpack, chest, bank, bag inside a bag.

It ships no widgets and no game content. You bring the items, the layouts, and the UI. CrimsonCore ships a complete inventory screen and showcase on top of this plugin (CrimsonCore - requires all Crimson plugins) - see CrimsonCore -> Inventory UI.

What's included

SystemKey typesPurpose
Manager componentUCrimsonInventoryManagerComponent, FCrimsonInventoryEntryThe inventory: a FastArray of entries with stable EntryIds, layout runtime, constraint stack, currencies, save data. Implements ICrimsonItemHost (this plugin's Items/) and fires per-object events.
LayoutsUCrimsonInventoryLayout_FlatSlot, _Grid, _WeightPluggable topology. Capacities come from constraint tags, not the layout asset.
Nested bagsUCrimsonInventoryItemFragment_Bag, FCrimsonLayoutGroupInfoA bag item becomes a layout group keyed by its entry id. GetLayoutGroups returns the derived set.
ConstraintsUCrimsonInventoryConstraint_Slot, _IntTag, _FloatTag, _GridCellRule, _StackLimit, _TypeFilterReplicated rule objects on ActiveConstraints. Add, remove, or modify at runtime.
Item definitionsUCrimsonInventoryItemDefinition, UCrimsonInventoryItemFragment_*, UCrimsonInventoryStateFragment_*Blueprint-class items with instanced fragments (static data) and state fragments (per-instance replicated state).
RoutingUCrimsonInventoryRoutingComponent, FCrimsonInventoryOperationResultPlayerController component: client entry points, Server_* RPCs with _Validate, access policy, operation feedback.
ContainersACrimsonContainerActorBase, ACrimsonInstancedInventoryActor, UCrimsonInventoryInstanceSubsystemWorld chests scoped Shared, PerPlayer, PerParty, or PerMapInstance.
PickupsACrimsonPickupActorBase, FCrimsonInventoryPickup, ICrimsonPickupableReplicated world drops with per-slot or take-all pickup. Bags drop with their contents.
CurrencyFCrimsonCurrencyDefinition, UCrimsonBasicCurrencyData-table-defined currencies as replicated int64 handlers on the manager.
Equipment bridgeUCrimsonInventoryItemFragment_Equippable, SetEntryEquipped, GetPendingEquipsEquipped-state bookkeeping for whatever equipment system you use. No dependency on any equipment plugin.
Sorting and filteringUCrimsonInventorySorter_*, UCrimsonInventoryFilter_*Composable sort rules and item filters.
Save structsFCrimsonInventorySaveData, FCrimsonInventoryRoutingSaveDataPlain structs from GetSaveData / ApplySaveData. No save-system dependency.
Editor toolingInventory Dev Tools windowLive inspector with nine tabs.

Plugin dependencies

Crimson plugins

PluginWhy
Crimson pluginsNone. The plugin is fully standalone.

Engine modules and plugins

ModuleWhy
GameplayTagsConstraint tags, item type tags, message channels.
GameplayAbilitiesUGameplayAbility, UAbilitySystemComponent for usable items (ICrimsonUsableObject).
NetCoreFFastArraySerializer for the entry list and tag stacks.
GameFeaturesUGameFeatureAction base for the data-driven inventory setup actions.
ModularGameplayUGameFrameworkComponentManager: actor extension handlers and the Crimson.SystemReady.Inventory readiness feature states.
DeveloperSettingsUCrimsonInventorySettings.
UMGTSoftClassPtr<UUserWidget> on the Visuals and Tooltip fragments. An engine module - no UI plugin dependency.
IrisCorePrivate. Replication support.
AssetRegistryPrivate. Item definition discovery in UCrimsonInventoryStatics.
Attribution
ICrimsonItemHost (Items/), ICrimsonUsableObject (Usable/) and the tag stacks FCrimsonInventoryTagStack / FCrimsonInventoryFloatTagStack ship with this plugin. The Crimson.Inventory.* gameplay tags are defined natively in this plugin's CrimsonInventoryTags.cpp.
Show Plugin Content
Plugin content is hidden in the Content Browser by default. Click the settings cog and tick Show Plugin Content to see and subclass the plugin's types. This plugin ships no content assets, but CrimsonCore's showcase assets need it.
Using with other Crimson plugins
CrimsonInventory works alone. When you own other Crimson plugins, CrimsonCore contains the full-suite wiring for it in Source/CrimsonCore/{Public,Private}/Integration/Inventory/: UCrimsonCoreInventoryItemInstance (context actions and slot bindings, set through ItemInstanceClass), UCrimsonInventoryIntegrationSubsystem (equipment and action bar) and ACrimsonInteractableContainerActor (interaction). To wire it yourself, see CrimsonCommon -> Concept: Connecting Crimson Plugins; for what CrimsonCore installs, see CrimsonCore -> Concept: The Integration Layer.
Which path do I choose?
New to the plugin: Quick Start builds a player inventory from nothing. Need one feature: each How-To is self-contained and links back to How-To: Get the Building Blocks. Want the model: start with Concept: Entries, Instances and Definitions, then Concept: Layouts and Groups. Already have all Crimson plugins: CrimsonCore -> Inventory UI is the prebuilt screen.