Code/RandomMaterialGroup.cs
using Sandbox;
using System;
[Icon("shuffle")]
public sealed class RandomMaterialGroup : Component
{
	public ModelRenderer Renderer { get; set; }
	protected override void OnStart()
	{
		Components.TryGet<ModelRenderer>(out var modelRenderer, FindMode.InSelf);
		if (modelRenderer is not null)
		{
			Renderer = modelRenderer;
		}
		if (Renderer is not null)
		{
			SetRandomMaterial(Renderer);
		}
	}
	
	public void SetRandomMaterial(ModelRenderer renderer)
	{
		if (renderer is null) return;
		var materialsCount = renderer.Model.MaterialGroupCount;
		if (materialsCount == 0) return;
		var randomMaterialIndex = Random.Shared.Int(0, materialsCount - 1);
		var materialGroup = renderer.Model.GetMaterialGroupName(randomMaterialIndex);
		renderer.MaterialGroup = materialGroup;
	}
}