UAbilitySystemInterface marked with CannotImplementInterfaceInBlueprint

Zhi’s answer is correct, but to add more context as the person who made this change originally:

Blueprint-implemented native events are fairly slow. The way they work is described in the full interfaces documentation, but essentially it auto-generates a static function that works similarly to how GetAbilitySystemComponentFromActor does. So if you changed GetAbilitySystemComponent to a Native Event it would basically double the cost for no benefit.

There’s also no need for the native event to exist in the first place because GetAbilitySystemComponent on UAbilitySystemBlueprintLibrary is callable from blueprint and will get you the actor’s component if you only have one. Nothing should be using IAbilitySystemInterface directly (although I do see one call in an experimental plugin that I will look to fix), it’s only meant to be used by that one function as an optimization. We can make that more clear in the comments