I’m not sure if this is intentional or not, if you call :ChangeState() on a Humanoid that the server controls it will function properly, however if you call :ChangeState() on a humanoid that a player controls, the changes are not replicated to the client. However if you call :ChangeState() on a humanoid that a player controls in a non-FilteringEnabled game, the method acts as it is supposed to.
This makes sense because each client should control their own character, including its parts and Humanoid, so not really a bug?
The behavior of the server changing the state of a client-owned character being different between FE/non-FE is a bug though. FE blocks client>server communication, so there shouldn’t be any difference when it’s server>client.
In my viewpoint the premise of FilteringEnabled is literally that the clients control their character and UI, and the server controls everything else by default, rather than everyone controlling everything in non-FE.
It doesn’t really help either that all the pages on FilteringEnabled on the wiki seem to not have been updated in a while.
This happens FE or not. FE stops certain client>server traffic – that’s all.
FE’s expected behavior isn’t a matter of opinion. It is what is written on the tutorial page in the wiki. The server should be able to do anything it can do in non-FE unless an exception is explicitly stated somewhere.
Either way – if I test this myself I can’t get the Humanoid’s state to change for either FE enabled or disabled.
This code isn’t doing anything on either FE or non-FE:
game.Players.PlayerAdded:connect(
function(plr)
wait(10)
while wait() do
plr.Character.Humanoid:ChangeState(Enum.HumanoidStateType.Seated)
end
end
)
Can OP include a repro file that shows difference in behavior between FE/non-FE?
EDIT: It seems expected behavior that you have to use it locally if I have to believe the header of this page as well:
http://wiki.roblox.com/index.php?title=API:Enum/HumanoidStateType
"When altering the Humanoid of a player, this should be done from a localscript ran by that player."
Shouldn’t this also be on the ChangeState() page as well?
Yes, it should be.