Wow! There’s always a nifty macro hiding away. This should work perfectly for the blueprint side of things - I’m assuming directly changing the property from c++ doesn’t call the mutator function.
That’s correct. The best you can do is making the property private and force C++ to use the same function to interact with that property. But there’ll be no way to force the class itself to go through that setter. It will always be valid for it to set the value directly.