Skip to main content

C++ reference

The Core surface is frozen: additive changes are free, and anything that alters an existing signature, struct layout, enum order or replication format goes through a written change record first. The plugin's Docs/PublicAPI.md carries the freeze document and the record of every break.

Core — EDInventoryCore

Items

#include "ItemDefinition/EDItemDefinition.h"
#include "Item/EDItemEntry.h"
#include "Item/EDItemFunctionLibrary.h"
TypeRole
UEDItemDefinitionThe immutable asset. Category, Tags, Fragments, InstanceClass, FindFragment<T>(), HasFragment<T>()
FEDItemEntryThe struct fast path: DefinitionId, Handle, StackCount, State, DynamicTags, SlotAddress, Instance
FEDItemHandleOpaque server-allocated identity. IsValid, NetSerialize, GetTypeHash
FEDItemStateContainerTag-keyed per-stack numbers
UEDItemInstanceOpt-in per-item UObject; PromoteEntry / DemoteEntry
FEDItemFactoryCreate / Split / Merge / Destroy at the data level
UEDItemFunctionLibraryResolveDefinition, FindItemFragment<T>, GetItemDisplayName, GetItemFootprint, DoesItemCoverCell
EDStackOpsGetMaxStackSize, CanStackTogether, DrainByDefinition, AddByDefinition

Containers

#include "Container/EDContainer.h"
#include "Container/EDContainerDefinition.h"
#include "Container/EDContainerComponent.h"

UEDContainer carries the action API — see Containers and layouts.

GroupMembers
IdentityGetContainerType, GetContainerId, GetOwningActor, HasAuthority, GetMaxSlots, IsUnlimited
ReadGetEntries, GetNumEntries, FindEntry, FindEntryByPredicate, GetEntryAtIndex, GetAllItems, ContainsHandle, ContainsDefinition, CountByDefinition, GetTotalItemCount, FindHandlesByDefinition
Act (authority)TryAddItem, TryRemoveItem, TryRemoveItems, TryTransferItem, TryTransferAll, SortInventory
Act (anywhere)RequestTransaction, RequestTransferItem, RequestSort
CheckEvaluateAddItem, GetAcceptanceError, CanAcceptEntry, EvaluateRulesForCandidate
Rules / layoutGetRules, SetRules, FindRule<T>, HasRule<T>, GetLayoutConfig, SetLayoutConfig, ResolveLayout, ResolvePlacement, RepackEntries
Apply ops (transactions only)AddEntry, RemoveEntry, UpdateEntry, MoveEntry, SetEntrySlotAddress, SetEntryDynamicTags, CaptureSnapshot, RestoreSnapshot

UEDContainerDefinitionContainerTag, DisplayName, Description, Icon, ContainerTags, ContainerClass, Layout, ItemQuery, Priority, Rules, ResolveSlotCount(Owner), AcceptsItemDefinition(Definition).

UEDContainerComponent — one actor, one container. Config plus GetContainer(), FindContainerByType, GetContainerComponents, and opt-in prediction via GetPredictedContainer / RequestPredictedTransaction.

UEDInventoryRouteComponent (abstract)RequestTransaction, OnTransactionResult, HasAuthority, static FindClientRoute. Both inventory components derive from it.

The inventory

#include "EDInventoryManagerComponent.h"
#include "EDInventoryOwnerInterface.h"

UEDInventoryManagerComponent — see The inventory manager for the grouped list. IEDInventoryOwner has one function, GetInventoryManager.

Transactions

#include "Transactions/EDCoreTransactions.h"
#include "Transactions/EDTransactionProcessor.h"
#include "EDInventorySubsystem.h"
TypeRole
FEDTransactionData-only base
EEDTransactionErrorReason enum — order frozen, it replicates
FEDTransactionResultbSuccess, Error, AffectedItems
FEDTransactionContextInstigator, bHasAuthority, HandleAllocator
IEDTransactionExecutorValidate / Execute / GetAffectedContainers
UEDTransactionProcessorRegistry + snapshot rollback
UEDInventorySubsystemExecuteTransaction, AllocateHandle, GetRollStream, SetRollSeed, Get(WorldContext)
FEDTransactionExecutorRegistryWhere a module contributes its own

Rules, layouts, observers

#include "Rules/EDCoreRules.h"
#include "Layout/EDCoreLayouts.h"
#include "Container/EDContainerObserverComponent.h"

Rules: FEDContainerRule, FEDLockedRule, FEDForbiddenTagsRule, FEDAllowedTagsRule, FEDRuleContext, FEDRuleEvaluatorRegistry.

Layouts: FEDLayoutConfig, FEDListLayoutConfig, FEDSlotLayoutConfig, FEDGridLayoutConfig, IEDLayout, FEDLayoutRegistry, FEDSlotAddress.

Observers: UEDContainerObserverComponent — override ReevaluateItem, GetTrackedHandles, StopTrackingItem; you get GetSiblingContainers, FindHoldingContainer, RefreshBindings, EnsureBound and teardown.

Stranded items: UEDStrandedItemHandler, UEDStrandedItemHandler_Rehome.

Events and saving

#include "Events/EDInventoryChange.h"
#include "Serialization/EDInventorySave.h"

FEDInventoryChange (ChangeType, Handle, Container), EEDInventoryChangeType, UEDInventoryMessageSubsystem for tag-routed global listeners, and EDInventorySave::SaveContainer / LoadContainer / JSON export.

GAS bridge

UEDGASLinkComponent, FEDGrantsFragment, FEDGrantCondition, FEDEffectGrant, FEDAbilityGrant, FEDAttributeSetGrant, FEDAttributePrerequisite.

Equipment — EDInventoryEquipment

UEDEquipmentManagerComponent (SlotAnchors, AttachFinder, SetExclusiveState, SetItemRoleTags, GetVisualMesh), FEDEquipmentSlotAnchor, UEDEquipmentAttachFinder and its three subclasses, IEDEquipmentAvatar, FEDEquipmentFragment, FEDEquipmentVisualsFragment, UEDEquipmentStatics (MakeEquipmentLayout, GetEquipSlot, IsEquippable).

UI — EDInventoryUI

UEDInventoryViewModel (SetSourceInventory, SetSource, Refresh, GetContainer, GetEntries, Request*, CycleSortMode), UEDInventoryViewBase, and the grid / list / bar / cell / slot / tooltip / context-menu widgets. UEDInventoryDragDropOp, EEDDropSemantic, UEDInventoryUIStatics.

Feature modules

ModuleEntry points
WeightUEDWeightComponent, FEDWeightFragment, FEDWeightLimitRule, UEDInventoryWeightStatics
DurabilityFEDDurabilityFragment, UEDDurabilityStatics
CraftingUEDCraftingRecipe, UEDCraftingStatics, FEDCraftTransaction
TradingUEDVendorComponent, FEDVendorOffer, FEDValueFragment, UEDTradingStatics, purchase/sale transactions
LootUEDLootTableAsset, UEDLootStatics, FEDLootRollResult
UsableFEDUsableFragment, UEDUsableStatics, UEDUsableSubsystem, FEDItemUsedEvent
SpatialUEDSpatialStatics, FEDRotateTransaction
NetworkingUEDInventoryRelevancyComponent, UEDNetworkSettings
Equipment · MutableUEDMutableEquipmentComponent, FEDMutableEquipmentFragment

Conventions

  • Everything is prefixed ED. UED… for objects, FED… for structs, EED… for enums, IED… for interfaces.
  • Plugin modules use Public/ + Private/.
  • Fragments, rules, transactions and layout configs are data only — no virtuals. A vtable in an FInstancedStruct corrupts serialization.
  • Every file carries the copyright header.

Where next