How to use the API

First create the following interface in your mod:

public interface INewHorizons
{
    void LoadConfigs(IModBehaviour mod);

    GameObject GetPlanet(string name);

    string GetCurrentStarSystem(); 

    UnityEvent<string> GetChangeStarSystemEvent();

    UnityEvent<string> GetStarSystemLoadedEvent();

    GameObject SpawnObject(GameObject planet, Sector sector, string propToCopyPath, Vector3 position, Vector3 eulerAngles, float scale, bool alignWithNormal);

    string[] GetInstalledAddons();
}

In your main ModBehaviour class you can get the NewHorizons API like so:

public class MyMod : ModBehaviour 
{
    void Start() 
    {
        INewHorizons NewHorizonsAPI = ModHelper.Interaction.GetModApi<INewHorizons>("xen.NewHorizons");
    }
}

You can then use the APIs LoadConfigs() method to load from a "planets" folder, or use the GetPlanet() method to get planets and do whatever with them. Just make sure you create planets in the Start() method or at least before the SolarSystem scene loads, or they will not be created.

The GetChangeStarSystemEvent and GetStarSystemLoadedEvent events let you listen in for when the player starts changing to a new system (called when entering a black hole or using the warp drive) and when the system is fully loaded in, respectively.

You can also use the GetInstalledAddons method to get a list of addons that are installed and enabled.

You can also use SpawnObject to directly copy a base-game GameObject to the specified position and rotation.