CrimsonInventory
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
| System | Key types | Purpose |
|---|---|---|
| Manager component | UCrimsonInventoryManagerComponent, FCrimsonInventoryEntry | The 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. |
| Layouts | UCrimsonInventoryLayout_FlatSlot, _Grid, _Weight | Pluggable topology. Capacities come from constraint tags, not the layout asset. |
| Nested bags | UCrimsonInventoryItemFragment_Bag, FCrimsonLayoutGroupInfo | A bag item becomes a layout group keyed by its entry id. GetLayoutGroups returns the derived set. |
| Constraints | UCrimsonInventoryConstraint_Slot, _IntTag, _FloatTag, _GridCellRule, _StackLimit, _TypeFilter | Replicated rule objects on ActiveConstraints. Add, remove, or modify at runtime. |
| Item definitions | UCrimsonInventoryItemDefinition, UCrimsonInventoryItemFragment_*, UCrimsonInventoryStateFragment_* | Blueprint-class items with instanced fragments (static data) and state fragments (per-instance replicated state). |
| Routing | UCrimsonInventoryRoutingComponent, FCrimsonInventoryOperationResult | PlayerController component: client entry points, Server_* RPCs with _Validate, access policy, operation feedback. |
| Containers | ACrimsonContainerActorBase, ACrimsonInstancedInventoryActor, UCrimsonInventoryInstanceSubsystem | World chests scoped Shared, PerPlayer, PerParty, or PerMapInstance. |
| Pickups | ACrimsonPickupActorBase, FCrimsonInventoryPickup, ICrimsonPickupable | Replicated world drops with per-slot or take-all pickup. Bags drop with their contents. |
| Currency | FCrimsonCurrencyDefinition, UCrimsonBasicCurrency | Data-table-defined currencies as replicated int64 handlers on the manager. |
| Equipment bridge | UCrimsonInventoryItemFragment_Equippable, SetEntryEquipped, GetPendingEquips | Equipped-state bookkeeping for whatever equipment system you use. No dependency on any equipment plugin. |
| Sorting and filtering | UCrimsonInventorySorter_*, UCrimsonInventoryFilter_* | Composable sort rules and item filters. |
| Save structs | FCrimsonInventorySaveData, FCrimsonInventoryRoutingSaveData | Plain structs from GetSaveData / ApplySaveData. No save-system dependency. |
| Editor tooling | Inventory Dev Tools window | Live inspector with nine tabs. |
Plugin dependencies
Crimson plugins
| Plugin | Why |
|---|---|
| Crimson plugins | None. The plugin is fully standalone. |
Engine modules and plugins
| Module | Why |
|---|---|
GameplayTags | Constraint tags, item type tags, message channels. |
GameplayAbilities | UGameplayAbility, UAbilitySystemComponent for usable items (ICrimsonUsableObject). |
NetCore | FFastArraySerializer for the entry list and tag stacks. |
GameFeatures | UGameFeatureAction base for the data-driven inventory setup actions. |
ModularGameplay | UGameFrameworkComponentManager: actor extension handlers and the Crimson.SystemReady.Inventory readiness feature states. |
DeveloperSettings | UCrimsonInventorySettings. |
UMG | TSoftClassPtr<UUserWidget> on the Visuals and Tooltip fragments. An engine module - no UI plugin dependency. |
IrisCore | Private. Replication support. |
AssetRegistry | Private. Item definition discovery in UCrimsonInventoryStatics. |
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.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.