It seems like I am only able to override BlueprintNativeEvent functions, but what in the case I want the function to return something? I tired overriding BlueprintCallable but the editor just gives me signature error.
You can’t override C++ functions, blueprint virtual machine can’t manipulate machine code (produced by C++) that is executing in C++. What BlueprintNativeEvent does is create a illusion of it, by injecting C++ code (UHT does that in compilation time) which decides to either execute C++ function or blueprint function in virtual machine.
BlueprintNativeEvent supports return value events if i remember right in fact they are used in GameMode class, events with return value will apper in “Override” button in “Functions” type in the list of stuff in blueprint editor, it creates event blueprint function where you can return stuff.