Attempting to bind a custom event to a server-only delegate property currently fails to validate after compiling a Blueprint.

Steps to Reproduce
  1. Create a new (blank) C++ project.
  2. Add a new C++ class based on Actor (MyActor).
  3. In Visual Studio, edit MyActor.h so that it appears as follows:
    #pragma once
    #include "CoreMinimal.h"
    #include "GameFramework/Actor.h"
    #include "MyActor.generated.h"
    DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FActorSpawnedEvent, AActor*, Spawner);
    class AMyActor : public AActor
    	// Sets default values for this actor's properties
    	// Called when the game starts or when spawned
    	virtual void BeginPlay() override;
    	// Called every frame
    	virtual void Tick(float DeltaTime) override;
    	UPROPERTY(BlueprintAssignable, BlueprintAuthorityOnly)
    	FActorSpawnedEvent OnActorSpawned;
  4. Recompile the editor and reload (or hot reload, either way is fine).
  5. Create a new Blueprint class based on MyActor (MyActorBP).
  6. In the Blueprint editor, switch to the Event graph.
  7. Drag off of the BeginPlay event and select to create a "Bind Event to OnActorSpawned" node.
  8. Drag off the Event pin and add a custom event.
  9. Compile. Note that an error results "CustomEvent_0 Signature Error: The selected function/event ('CustomEvent_0') is not compatible with this delegate (the delegate is server-only) - try marking the function/event AuthorityOnly." even though the event appears to be server-only due to the icon in the top-right.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-75153 in the post.

Login to Vote

ComponentUE - Gameplay - Blueprint Editor
Affects Versions4.214.224.23
Target Fix4.25
Fix Commit10911432
Main Commit11254295
CreatedMay 24, 2019
ResolvedJan 8, 2020
UpdatedFeb 11, 2020