Validation In Blueprint
This page shows how to build special-condition validation entirely in Blueprint.
Option 1: Reusable validation object
Create a Blueprint class derived from:
UEDInteractionConditionValidator
Then override:
ValidateInteraction
Inside that event you receive:
Context(FEDInteractionValidationContext)InOutResult(FEDInteractionValidationResult)
To deny interaction:
- set
InOutResult.bAllowInteractiontofalse - set
InOutResult.DenyReasonto the deny reason you want - optionally set
InOutResult.FailureMessage
Where to assign validators
Global validation
Assign validator objects in:
UEDPlayerInteractionComponent -> GlobalInteractionValidators
Use this for rules that should apply to every interaction for that player/controller.
Examples:
- block all interactions while stunned
- require a global gameplay state
- disable interaction during menu/cutscene mode
Actor-specific validation
Assign validator objects in:
UEDInteractableComponent -> ValidationRules
Use this for interactable-specific checks.
Examples:
- this door needs a key
- this altar requires a quest stage
- this machine needs power enabled
Because these are inline instanced objects, you can tune them per actor Blueprint instance/class.
Foliage-specific validation
Assign validator classes in:
Project Settings -> ED Interaction System -> InteractableFoliage -> ValidationRuleClasses
Use this for foliage-only requirements.
Examples:
- ore requires a pickaxe
- tree requires an axe
- herb requires a harvesting skill
Option 2: Override on the player interaction component
If you have a custom Blueprint subclass of UEDPlayerInteractionComponent, you can override:
ValidateInteractionSpecialConditions
This is useful when:
- the rule depends on player state
- you want centralized project-specific logic
- you want to avoid creating many small validator objects
Useful context fields
Common fields from FEDInteractionValidationContext:
InteractableTagInteractableActorInteractableComponentInstigatorControllerInstigatorPawnbIsFoliageInstanceFoliageInstanceComponentFoliageInstanceTransformInteractionLocationInteractionMethodbHasFoliageDataFoliageData
Recommended deny reasons
Good defaults:
SpecialConditionDeniedByInteractableValidationFailed
You can also reuse other deny reasons if they make sense for your UI flow.