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"
| Type | Role |
|---|---|
UEDItemDefinition | The immutable asset. Category, Tags, Fragments, InstanceClass, FindFragment<T>(), HasFragment<T>() |
FEDItemEntry | The struct fast path: DefinitionId, Handle, StackCount, State, DynamicTags, SlotAddress, Instance |
FEDItemHandle | Opaque server-allocated identity. IsValid, NetSerialize, GetTypeHash |
FEDItemStateContainer | Tag-keyed per-stack numbers |
UEDItemInstance | Opt-in per-item UObject; PromoteEntry / DemoteEntry |
FEDItemFactory | Create / Split / Merge / Destroy at the data level |
UEDItemFunctionLibrary | ResolveDefinition, FindItemFragment<T>, GetItemDisplayName, GetItemFootprint, DoesItemCoverCell |
EDStackOps | GetMaxStackSize, 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.
| Group | Members |
|---|---|
| Identity | GetContainerType, GetContainerId, GetOwningActor, HasAuthority, GetMaxSlots, IsUnlimited |
| Read | GetEntries, GetNumEntries, FindEntry, FindEntryByPredicate, GetEntryAtIndex, GetAllItems, ContainsHandle, ContainsDefinition, CountByDefinition, GetTotalItemCount, FindHandlesByDefinition |
| Act (authority) | TryAddItem, TryRemoveItem, TryRemoveItems, TryTransferItem, TryTransferAll, SortInventory |
| Act (anywhere) | RequestTransaction, RequestTransferItem, RequestSort |
| Check | EvaluateAddItem, GetAcceptanceError, CanAcceptEntry, EvaluateRulesForCandidate |
| Rules / layout | GetRules, SetRules, FindRule<T>, HasRule<T>, GetLayoutConfig, SetLayoutConfig, ResolveLayout, ResolvePlacement, RepackEntries |
| Apply ops (transactions only) | AddEntry, RemoveEntry, UpdateEntry, MoveEntry, SetEntrySlotAddress, SetEntryDynamicTags, CaptureSnapshot, RestoreSnapshot |
UEDContainerDefinition — ContainerTag, 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"
| Type | Role |
|---|---|
FEDTransaction | Data-only base |
EEDTransactionError | Reason enum — order frozen, it replicates |
FEDTransactionResult | bSuccess, Error, AffectedItems |
FEDTransactionContext | Instigator, bHasAuthority, HandleAllocator |
IEDTransactionExecutor | Validate / Execute / GetAffectedContainers |
UEDTransactionProcessor | Registry + snapshot rollback |
UEDInventorySubsystem | ExecuteTransaction, AllocateHandle, GetRollStream, SetRollSeed, Get(WorldContext) |
FEDTransactionExecutorRegistry | Where 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
| Module | Entry points |
|---|---|
| Weight | UEDWeightComponent, FEDWeightFragment, FEDWeightLimitRule, UEDInventoryWeightStatics |
| Durability | FEDDurabilityFragment, UEDDurabilityStatics |
| Crafting | UEDCraftingRecipe, UEDCraftingStatics, FEDCraftTransaction |
| Trading | UEDVendorComponent, FEDVendorOffer, FEDValueFragment, UEDTradingStatics, purchase/sale transactions |
| Loot | UEDLootTableAsset, UEDLootStatics, FEDLootRollResult |
| Usable | FEDUsableFragment, UEDUsableStatics, UEDUsableSubsystem, FEDItemUsedEvent |
| Spatial | UEDSpatialStatics, FEDRotateTransaction |
| Networking | UEDInventoryRelevancyComponent, UEDNetworkSettings |
| Equipment · Mutable | UEDMutableEquipmentComponent, 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
FInstancedStructcorrupts serialization. - Every file carries the copyright header.