UPROPERTY Specifier 'BlueprintBaseOnly' is not working, this is clearly bug

This way, var ItemClass in BP_ItemActor should only display list of blueprint base.
But still display c++ base class, UItemBase as well

// AItemActor.h
UPROPERTY(EditDefaultOnly, meta =(BlueprintBaseOnly))
TSubclassOf<UItemBase> ItemClass;

I used this just in case, but still not working.

UPROPERTY(EditDefaultOnly, meta =(BlueprintBaseOnly = true))

I found this a long time age, but still not fixed.

UCLASS(Abstract)

i think you want this?

Just found this thread. I can only agree with OP

UPROPERTY(EditAnywhere, meta=(BlueprintBaseOnly, AllowAbstract))
TSubclassOf<class UObject> ParentClass;

as shown here: All UPROPERTY Specifiers · ben🌱ui

does not seem to work. Or maybe we are both using it wrong?

No.

if you make classes based on UItemBase like this
c++ ) UWeapon, UPotion
BP) BP_Item1, BP_Item2

UPROPERTY(EditDefaultOnly)
TSubclassOf<UItemBase> ItemClass;

It will display UWeapon, UPotion, BP_Item1, BP_Item2 in binding list

UPROPERTY(EditDefaultOnly, meta =(BlueprintBaseOnly))
TSubclassOf<UItemBase> ItemClass;

But this way, it should display BP_Item1, BP_Item2 only.

It prevents designer’s mistake bind c++ base like UWeapon, UPotion, but not blueprint base.
According to epic document, this should work, but it doesn’t.

I thought maybe I was doing something wrong, so I tried several methods, but nothing worked.

It’s not just this issue, many specifiers don’t work.

you might be right, i havent tried that,
but as an alternative if you make the base class abstract it wont appear in lists either.

Well, i tried several ways, but all didn’t work, either. it looks clearly bug.
Currently, many of the specifiers in the documentation don’t work.
Hopefully Epic will check them out and fix them.