FoundryLibraryAssets.cs
using Sandbox;
namespace PaintballBaddies;

/// <summary>Official CC0 venue fixtures resolved by s&box's cloud asset pipeline.</summary>
public static class FoundryLibraryAssets
{
    // Publishing embeds the assets at these relative paths. A player does not
    // have the editor's cloud-package lookup cache, so prefer the shipped files.
    // Keep literal Cloud calls as fallbacks and publisher dependency declarations.
    public static Model WallLight => PackagedModel("models/props/industrial_wall_light/industrial_wall_light.vmdl",
        () => Cloud.Model("https://sbox.game/facepunch/industrial_wall_light"));
    public static Model ElectricalPanel => PackagedModel("models/props/electrical_panels_industrial/electrical_industrial_panel_1.vmdl",
        () => Cloud.Model("https://sbox.game/facepunch/electricalindustrialpanel1"));
    public static Material ResinFloor => Cloud.Material("https://sbox.game/facepunch/floorresinablend");
    public static Model VentGrille => PackagedModel("models/sbox_props/airducts/airduct_a_vent_64x32.vmdl",
        () => Cloud.Model("https://sbox.game/facepunch/airduct_a_vent_64x32"));
    public static Model Sandbag => PackagedModel("models/sbox_props/folding_construction_sign/sandbag.vmdl",
        () => Cloud.Model("https://sbox.game/facepunch/sandbag"));

    private static Model PackagedModel(string path, System.Func<Model> cloud)
    {
        var model=Model.Load(path);
        return model.IsValid() && !model.IsError ? model : cloud();
    }
}