Humanoid.FloorMaterial not filtered well when near others

While doing unrelated tests in Team Create, on the Volcanic Island template, @rakamoni and I discovered that the FloorMaterial property of Humanoid can be influenced by other players if they are near you.

When nearby another player, you will update their Humanoid’s FloorMaterial property if it doesn’t match what your client thinks it should be, and the server will not filter this change. The other player will then see that their FloorMaterial property is incorrect, and change it back. This continues as long as you stand near each other.

We discovered this by standing near the other player in Team Test, and dragging their character over lava. The Volcano Island template has a server Script that lights people on fire if they are standing on lava, which works by subscribing to changes in Humanoid.FloorMaterial.

We’ve created a basic test place which contains a button to change the baseplate’s material. This button is a client-sided GUI and is operated with a LocalScript. This means the change will be filtered out and not replicated to the server. It also contains another LocalScript that prints to the console when your FloorMaterial is changed.

When standing near another player who has a different baseplate material than you, both of your consoles will show your clients fighting with each other to correct your FloorMaterial.

WeakFiltering_FloorMaterial.rbxl (26.3 KB)

8 Likes

If this, for some odd reason, is intended behaviour this at least needs to be documented somewhere to save developers the potential headache I had to deal with.

Some exploiters used this behaviour to cause other clients to change their FloorMaterial to a material that causes instant death. This worked even with FloorMaterial being checked on the server.

2 Likes

I would like to bump this thread because it’s still occurring and the inaccuracy of this is incredible.

My character is floating (since I anchor the PrimaryPart when it detects it to be “Air”) while detecting the FloorMaterial to be “Plastic”:

floormaterial_inaccurate.rbxl (21.9 KB)

1 Like