This bug is very specific and pertains to the two shoulder joints present in any R15 character.
Character.RightUpperArm.RightShoulder
Character.RightUpperArm.LeftShoulder
This bug occurs when you try to access the Part0
property of either of these joints right after the CharacterAppearanceLoaded
event has fired on the server. If the arm in which the joint you are trying to access Part0
in has a mesh that is not the default blocky arms then the property will return nil. Otherwise, if you have the default blocky arms then the property will return the proper value (the UpperTorso
) which is the expected behaviour.
As far as I can tell this bug has a 100% replication rate.
- Adjust your avatar such that it is in R15 mode and make sure to equip a custom mesh on at least one of the arms.
- Write some code (in a server script) that will fire the
CharacterAppearanceLoaded
event. - When the event is fired try to access the
Part0
property of the shoulder joint in the arm with the custom mesh. - Alternatively compare the above steps against an avatar without a custom arm mesh.
This is the code I used in a script under the ServerScriptService
:
game:GetService("Players").PlayerAdded:Connect(function(player)
player.CharacterAppearanceLoaded:Connect(function(character)
local humanoid = character:WaitForChild("Humanoid")
if (humanoid.RigType == Enum.HumanoidRigType.R15) then
local rShoulder = character:WaitForChild("RightUpperArm"):WaitForChild("RightShoulder")
local lShoulder = character:WaitForChild("LeftUpperArm"):WaitForChild("LeftShoulder")
print("Right shoulder", rShoulder.Part0)
print("Left shoulder", lShoulder.Part0)
end
end)
end)
Here’s a placefile with the code above if you want to quickly jump in with your R15 avatar. Remember, you need to adjust the arms to a custom mesh to get the bug.
mesh arms bug.rbxl (15.9 KB)
The bug happens in both studio testing (via play button and server emulation) and also on an uploaded game on the client.
Hope that explains it well enough. Let me know if there’s any more questions.