Duplicating a Blueprint converts C++ interface events into Custom Events

Hello,

I have found what appears to be a Blueprint duplication bug involving a C++ interface.

Setup

I have:

  • A C++ interface called EnemyInterface.

  • A C++ Enemy Character class that implements this interface.

  • A Blueprint derived from that Enemy Character.

  • An interface event such as PlayAction implemented inside the Blueprint Event Graph.

The Blueprint implementation performs Blueprint-specific behavior, for example playing an Animation Montage.

The interface event is called from an AI Controller, specifically from a Behavior Tree task, using the interface execution function.

For example:

IEnemyInterface::Execute_PlayAction(EnemyPawn, ActionData);

Everything works correctly in the original Blueprint.

Steps to reproduce

  1. Create a C++ interface with a Blueprint-accessible event such as PlayAction.

  2. Implement the interface in a C++ Character class.

  3. Create a Blueprint derived from that Character.

  4. Implement Event PlayAction in the Blueprint Event Graph.

  5. Add some Blueprint logic to the event, such as Play Anim Montage.

  6. Compile and save the Blueprint.

  7. Duplicate the entire Blueprint asset from the Content Browser using Ctrl+D.

  8. Open the duplicated Blueprint.

Important: I am duplicating the complete Blueprint asset, not the event node inside the Event Graph.

Actual result

In the duplicated Blueprint, Event PlayAction is no longer recognized as an interface event.

It has been converted into a normal Blueprint Custom Event. The Blueprint logic is still present, but the event is no longer connected to the interface implementation.

As a result, calling:

IEnemyInterface::Execute_PlayAction(EnemyPawn, ActionData);

does not execute the copied Blueprint event.

The event must be deleted and implemented again from the Interfaces section before it works correctly.

Expected result

Duplicating a Blueprint class should preserve:

  • Its native parent class.

  • Its implemented or inherited interfaces.

  • The relationship between interface functions and their Blueprint event implementations.

  • All Event Graph logic connected to those events.

The duplicated Blueprint should behave exactly like the original until explicitly modified.

Possible cause

My suspicion is that, during Blueprint duplication or reconstruction, the Event Graph node is validated before the duplicated BlueprintGeneratedClass has completely resolved its inherited interface information.

If Unreal cannot associate the copied event node with the corresponding interface UFunction during that stage, it may preserve the node as a Custom Event instead.

This is only a hypothesis based on the observed behavior.

Additional notes

This does not appear to be the normal restriction that prevents duplicating an individual event node. The complete Blueprint asset is being duplicated.

The native Character inheritance is preserved correctly. Only the connection between the Blueprint event and the C++ interface function is lost.

Engine version: [UE 5.X]

Has anyone else reproduced this issue with a C++ interface implemented or inherited by a Blueprint?

Is there a known fix or workaround apart from deleting and recreating every interface event after duplicating the Blueprint?

i think its a naming collision. you copy the event so it ‘overrides’ the interface with the same name

1 Like

When I copy the class using Ctrl+D, the interface event turns into a standard node (as if it were a custom event).
In other words, the event associated with the interface disappears.

The photo shows the standard event created after copying the class, alongside the interface event (which I had to recreate because it had disappeared).

Note: Issue in 5.5. I´m gonna test in 5.6 y 5.7
Thanks Auran131