Issue with LoadAsset and SpecialMeshes (MeshContentProvider Could Not Fetch)

A script I haven’t updated since 7/13/2025 is now having an odd issue with loading catalog assets and turning them into specialmeshes.
I want to emphasize that this is only affecting NEW servers for my games. Servers that were created less than a few hours ago are having this issue.

Here’s an example catalog mesh, which used to work perfectly; 14033782992
Here’s the code that broke;

function Accessory:ReplaceWithSpecialMesh(humanoid: Humanoid, toReplace: Accessory)
	-- Make sure CatalogID is valid
	local catalogID = Accessory:GetCatalogID(toReplace)
	if catalogID ~= 0 then 
		
		-- Get the accessory asset and necessary information
		local insertedModel = InsertService:LoadAsset(toReplace:GetAttribute("CatalogID"))
		local newAccessory = insertedModel:FindFirstChildWhichIsA("Accessory")
		newAccessory.Handle.CanCollide = false
		newAccessory.Handle.CanTouch = false
		newAccessory.Handle.CanQuery = false
		newAccessory:WaitForChild("Handle")
		local accessoryMesh = newAccessory.Handle:FindFirstChildWhichIsA("SpecialMesh")
		local meshpartInfo = Accessory:GetCurrentMeshPartInfo(toReplace)
		
		-- Replace the meshpart accessory
		toReplace:Destroy()
		humanoid:AddAccessory(newAccessory)
		
		newAccessory.Name = toReplace.Name
		newAccessory.Handle.AccessoryWeld.Part1 = meshpartInfo.ConnectedLimb or newAccessory.Handle.AccessoryWeld.Part1
		newAccessory.Handle.Transparency = meshpartInfo.Transparency
		newAccessory:SetAttribute("LimbName",meshpartInfo.ConnectedLimb.Name)
		newAccessory:SetAttribute("CatalogID",meshpartInfo.CatalogID) 
		local meshAttachment = newAccessory.Handle:FindFirstChildWhichIsA("Attachment")
		meshAttachment.Position = meshpartInfo.AttachmentPosition
		meshAttachment.Orientation = meshpartInfo.AttachmentOrientation
		accessoryMesh.VertexColor = Vector3.new(meshpartInfo.Color.R, meshpartInfo.Color.G, meshpartInfo.Color.B)
		accessoryMesh.Scale = meshpartInfo.Size/meshpartInfo.MeshSize
		
		-- Very important to use rbxthumb as directly using rbxassetid sometimes causes the accessory to be grey
		if meshpartInfo.TextureID then
			meshpartInfo.TextureID = string.gsub(meshpartInfo.TextureID,"rbxassetid://","rbxthumb://type=Asset&id=")
			meshpartInfo.TextureID = meshpartInfo.TextureID.."&w=420&h=420"
		end
		accessoryMesh.TextureId = meshpartInfo.TextureID
		accessoryMesh:SetAttribute("MeshSize",meshpartInfo.MeshSize)
		accessoryMesh:SetAttribute("PartMaterial",tostring(meshpartInfo.Material))
	
		insertedModel:Destroy()
		return newAccessory
	else
		--warn("ReplaceWithSpecialMesh: Invalid CatalogID with Accessory:", toReplace.Name)
	end
end

Here are some before and after images:
Before:


After:

Before:


After:

My hunch is correct.
This is not the solution, this is me pointing out my findings so far.

It seemed this has changed the way catalog accessories are inserted.
My game relies on them being inserted as SpecialMeshes, but LoadAsset now loads it as a MeshPart.

Command Line Code:

local InsertService = game:GetService("InsertService")
local insertedModel = InsertService:LoadAsset(14033782992)
insertedModel.Parent = game.Workspace
insertedModel.pfp.Handle.Anchored = true
insertedModel.pfp.Handle.CFrame = game.Workspace.Tzui.Head.CFrame

Old Servers:


New Servers:

Is there any way to have this amended? Since this pretty much broke a lot of systems for my game in one go.

2 Likes

My group utilizes a similar character customizer system. It was pretty annoying trying to troubleshoot.

It turns out that Roblox added a new setting to the workspace that sets hats/accessories to be meshparts by default. You have to disable it in Studio. It’s called MeshPartHeadsAndAccessories. After disabling it, our customizers went back to regular function.

I ended up patching it myself, but it was fairly frustrating.
The setting has always been there from iirc, and our setting were always on disabled.
I think they changed it so that MeshPartHeadsAndAccessories now affects LoadAsset.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.