GetPropertyChangedSignal( "FloorMaterial" ) firing twice without changing?

A jump mechanic in my game checks for when you land on the ground again; by waiting for when floor material is changed twice (once for when you leave the ground, twice for when you land)

The issue is that the event is going off twice. This has worked fine until today. I haven’t changed anything about my game.

Checking when floor material is changed:

local human = script.Parent:WaitForChild("Humanoid")
human:GetPropertyChangedSignal("FloorMaterial"):Connect(function()
	print(human.FloorMaterial)
end)

Result:
image

This should most likely belong in the engine bugs section, but I can’t post in that category.

You can send a DM to @Bug-Support instead of posting to engine-bugs. I also see this behavior when this script is in StarterCharacterScripts.

As a workaround:

local human = script.Parent:WaitForChild("Humanoid")
local floorMaterial = human.FloorMaterial
human:GetPropertyChangedSignal("FloorMaterial"):Connect(function()
	local old = floorMaterial
	floorMaterial = human.FloorMaterial
	if old == floorMaterial then return end
	
	print(human.FloorMaterial)
end)