Zum Hauptinhalt springen

Implementation Limits

These findings describe the supplied source as reviewed on 2026-10-05. They were identified by static inspection; the plugin source was not modified and no Unreal runtime test was performed.

Version and Platform Claims​

The PDFs use v1.0 and state general UE 5.x/Linux support. Cube_Inventory_rep.uplugin declares VersionName 0.9, EngineVersion 5.7.0 and only Win64. This checkout does not prove additional engine/platform support.


Operation Defects​

FindingSource and consequence
Specific remove ignores its explicit route during executionInventorySubSystem.cpp constructs a target tag, but InventoryManager.cpp ProcessOperationState calls RemoveAmount for every Remove.FromInventory; it resolves the database default component
Public swap wrapper fails validationTransferOwnSlot does not set RequestedAmount, whose default is zero; generic validation rejects it as Invalid amount
SetSlot does not replace the itemInventoryComponent.cpp SetSlot ignores its ItemID parameter and changes only the existing stack amount; equal amounts return immediately, so bypassing the wrapper does not yield a correct swap
Slot over-removal can fail after removalManager RemoveFromSlot removes first, then looks up ItemID after the slot may have been deleted; remainder processing can fail or route through the default database inventory
External transfer uses surprising direction labelsContext/parameter names imply the first tag is source, but the helper pulls from OtherPawn/second tag into RequestingPawn/first tag; configure tags for that actual direction
External rollback is ineffectiveTarget add returns void, AddedAmount is assigned RemovedAmount, and the less-than rollback condition cannot detect failure; context AppliedAmount is the requested count rather than necessarily the clamped count
No general transaction rollbackRunOperation transitions do not implement rollback for every multi-step mutation; merge has only a limited source re-add attempt

Avoid treating these paths as production-safe until corrected and tested in a maintained implementation. A false/Failed result does not guarantee unchanged state.


Authority, Capacity and Weight​

Component interface mutation implementations contain no general authority guard. Split dispatch calls the component directly; MergeSlots also lacks the authority check used by common helper methods. The project must keep all mutation entry points on authority.

Native systemic add fills stacks by ItemID/MaxStackSize without consulting bCanStack. Set MaxStackSize to 1 for nonstacking content. Direct SplitSlot does not check free slot capacity. CapacityType None returns false from the full-add check but can pass the unconstrained partial helper.

Weight capacity calculations assume valid positive Weight when computing partial quantities; zero is a declared master default and can reach a division by zero in that path. AddItemToSlot does not call UpdateInventoryCarryWeight, leaving the replicated carry-weight value stale until another recalculation. Raw interface/array edits can bypass manager capacity checks entirely.


Initialization and Presentation​

  • No public all-databases-ready event exists; DataTablesToLoad is not filled by initialization, so the index-built log cannot establish batch completion.
  • Duplicate ItemIDs are skipped after the first registration; asynchronous load order makes duplicate winner selection unsuitable as a content contract.
  • GetToolTipWidgetClass dereferences ToolTipMap.Find without checking for a missing non-None key. Configure a map entry for every displayed type.
  • UI can be constructed before the master index is ready. Entries do not implement a general retry on database registration.
  • Native server mutations mark Fast Array data dirty but do not broadcast corresponding slot events locally, affecting listen-server UI.
  • Frame visual prediction lacks complete rejection/move restoration when authoritative state does not change.
  • Repeated frame InitAfterBPConstruction can leave old children while rebuilding the entry map. Entry UpdateSlotData adds a delegate repeatedly; verify callback duplication/lifetime behavior.
  • The supported removal notification path is list PreReplicatedRemove. Declared PostReplicatedRemove methods do not alone prove a valid Unreal receive hook; verify aggregate removed-count events in the engine.

Features Not Established by Scaffolding​

Registered Move/Clear/Sort/Resize/Consume/Generate/InternalTransfer tags are not active operation branches. Additional enum states do not implement prediction/reconciliation/rollback phases. RequirementTags, action/trade metadata and empty typed assets do not enforce gameplay behavior. LootboxComponent is not a loot generator, and a native pickup actor or save system is not supplied.

The technical PDF's atomicity, rollback safety, universal authority and no-prediction claims must be read as design intent. The setup and API pages here document the actual current contracts and limitations.