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:





