ObservatoryFramework Specifies text to display as the name of the setting in the UI instead of the property name. Specifies text to display as the name of the setting in the UI instead of the property name. Name to display Accessor to get/set displayed name. Indicates that the property should not be displayed to the user in the UI. Indicates numeric properly should use a slider control instead of a numeric textbox with roller. Specify backing value used by Dictionary<string, object> to indicate selected option. Specify backing value used by Dictionary<string, object> to indicate selected option. Property name for backing value. Accessor to get/set backing value property name. Specify bounds for numeric inputs. Specify bounds for numeric inputs. Minimum allowed value. Maximum allowed value. Increment between allowed values in slider/roller inputs. Minimum allowed value. Maxunyn allowed value. Increment between allowed values in slider/roller inputs. Provides data for Elite Dangerous journal events. Type of journal entry that triggered event. Will be a class from the Observatory.Framework.Files.Journal namespace derived from JournalBase, or JournalBase itself in the case of an unhandled journal event type. Elite Dangerous journal event, deserialized into a .NET object of the type specified by JournalEventArgs.journalType. Unhandled json values within a journal entry type will be contained in member property:
Dictionary<string, object> AdditionalProperties.
Provides values used as arguments for Observatory notification events. Text typically displayed as header content. SSML representation of Title text.
This value is optional, if omitted the value of NotificationArgs.Title will be used for voice synthesis without markup.
Text typically displayed as body content. SSML representation of Detail text.
This value is optional, if omitted the value of NotificationArgs.Detail will be used for voice synthesis without markup.
Specify window timeout in ms (overrides Core setting). Specify 0 timeout to persist until removed via IObservatoryCore.CancelNotification. Default -1 (use Core setting). Specify window X position as a percentage from upper left corner (overrides Core setting). Default -1.0 (use Core setting). Specify window Y position as a percentage from upper left corner (overrides Core setting). Default -1.0 (use Core setting). Container for exceptions within plugins which cannot be gracefully handled in context, but benefit from having a context-specific user message. Initialze new PluginException with details of the originating plugin and a specific user-facing message for display. Name of plugin from which the exception was thrown. Message to be displayed to user. This property is indicated with strikethrough in Frontier's documentation and may be deprecated. This property is indicated with strikethrough in Frontier's documentation and may be deprecated. Journal "Scan" event generated when directly FSS scanning, from automatic proximity scans, or nav beacon data. Type of scan which generated the event. Possible options include "Detailed", "AutoScan", and "NavBeaconDetail" (non-exhaustive). Name of scanned body. List which reflects Frontier's JSON structure for the "Parents" object. Use of Parent property is recommended instead. "Parents" object rearranged into more intuitive structure for ease of use. Body distance from system arrival point in light-seconds. Indicates if body is tidally locked to another body (parent, child, or binary partner). Whether the planet can be or has been terraformed. Options include "Terraformable", "Terraformed", or "" (non-terraformable or naturally earth-like). Class of planet. Consult your preferred source of journal documentation for all possible values. Descriptive string for body atmosphere, e.g. "hot thick sulfur dioxide atmosphere". Simple string indicating dominant atmosphere type, e.g. "SulfurDioxide". List containing full breakdown of atmospheric components and their relative percentages. Descriptive string for type of volcanism present, or an empty string for none, e.g. "major silicate vapour geysers volcanism". Mass of body in multiples of Earth's mass (5.972e24 kg). Radius of body in metres. Surface gravity in m/s². Average surface temperature in Kelvin. Average surface pressure in Pascals. Whether the body in landable in the player's current version of Elite Dangerous. List containing full breakdown of prospectable surface materials and their relative percentages. Overall composition of body, expressed as percentages of ice, rock, and metal. Rotation period of body in seconds. Axial tilt of body in radians. List of all planetary or stellar ring systems around the body. Description of the minable material abundance.
Possible values inclue "PristineResources", "MajorResources", "CommonResources", "LowResources", and "DepletedResources".
Type of star. Consult your preferred source of journal documentation for all possible values. Subclass of star. Consult your preferred source of journal documentation for all possible values. Mass of star in multiples of The Sun's mass (1.989e30 kg). Absolute magnitude of star. Age of body in millions of years. Yerkes luminosity class of star. Whether the body has been previously discovered by a player. Whether the body has been previously mapped by a player. Barycentre orbital properties, automatically recorded when any member of a multiple-body orbital arrangement is first scanned. Name of star system containing scanned body. 64-bit unique identifier for the current star system. Also known as the system's "ID64". Id number of body within a system. Orbital semi-major axis in metres.
Distance from the body's centre of gravity to the parent's centre of gravity at the most distant point in the orbit.
Orbital eccentricity.
0: perfectly circular, 0 > x > 1: eccentric, 1: parabolic (escape) trajectory.
(You should not ever see 1 or 0.)
Orbital inclination in degrees. Argument of periapsis in degrees. Orbital period in seconds. Longitude of the ascending node in degrees. Mean anomaly in degrees. Faction changed from a simple string to an object with additional state information. If we find a string convert it to an object with null state. The format used for materials changed from an object with a key for each material to an array of objects containing "name" and "percent". Need to handle both if we're going to read historical data. This reads the old format into a class reflecting the new structure. The format used for materials changed from an object with a key for each material to an array of objects containing "name" and "percent". Need to handle both if we're going to read historical data. This reads the old format into a class reflecting the new structure. Converting the ordered array of coordinates from the journal to a named tuple for clarity. Altitude above average radius (sea level) when set. Altitude raycast to ground when unset. Elite Dangerous shipyard.json file. Unique ID of market. Name of station where shipyard is located. Starsystem where shipyard is located. Whether player has access to Horizons content. Whether player has access to the Cobra MkIV. Will never be set to true for CMDR Nuse. List of all ships and prices for them at the current shipyard. Elite Dangerous status.json file. Set of flags representing current player state. Additional set of flags representing current player state. Added in later versions of Elite Dangerous. Current allocation of power distribution (pips) between SYS, ENG, and WEP, in "half pip" increments. Currently selected fire group. UI component currently focused by the player. Fuel remaining in the current ship. Amount of cargo currently carried. Legal status in the current jurisdiction. Current altitude. Check if RadialAltitude is set in StatusFlags to determine if altitude is based on planetary radius (set) or raycast to ground (unset). Latitude of current surface location. Longitude of current surface location. Current heading for surface direction. Body name of current location. Radius of current planet. Oxygen remaining on foot, range from 0.0 - 1.0. Health remaining on foot, range from 0.0 - 1.0. Current environmental temperature in K while on foot. Name of currently selected personal weapon. Current strength of gravity while on foot, in g. Current credit balance of player. Currently set destination. Base plugin interface containing methods common to both notifiers and workers. Note: Not intended to be implemented on its own and will not define a functional plugin. Use IObservatoryWorker, IObservatoryNotifier, or both, as appropriate. This method will be called on startup by Observatory Core when a plugin is first loaded. Passes the Core interface to the plugin. Object implementing Observatory Core's main interface. A reference to this object should be maintained by the plugin for communication back to Core. Full name of the plugin. Displayed in the Core settings tab's plugin list. Short name of the plugin. Used as the tab title for the plugin UI.
Can be omitted, in which case the full Name will be used.
Version string displayed in the Core settings tab's plugin list.
Potentially used for automated version checking. (Not yet implemented)
Reference to plugin UI to display within its tab. Accessors for plugin settings object. Should be initialized with a default state during the plugin constructor. Saving and loading of settings is handled by Observatory Core, and any previously saved settings will be set after plugin instantiation, but before Load() is called. A plugin's settings class is expected to consist of properties with public getters and setters. The settings UI will be automatically generated based on each property type.
The [SettingDisplayName(string name)] attribute can be used to specify a display name, otherwise the name of the property will be used.
Private or internal properties and methods are ignored and can be used for backing values or any other purpose.
If a public property is necessary but not required to be user accessible the [SettingIgnore] property will suppress display.
Interface for worker plugins which process journal data to update their UI or send notifications. Work required on plugin startup — for example object instantiation — can be done in the constructor or Load() method.
Be aware that saved settings will not be available until Load() is called.
Method called when new journal data is processed. Most work done by worker plugins will occur here. Specific type of journal entry being received. Elite Dangerous journal event, deserialized into a .NET object. Unhandled json values within a journal entry type will be contained in member property:
Dictionary<string, object> AdditionalProperties.
Unhandled journal event types will be type JournalBase with all values contained in AdditionalProperties.
Method called when status.json content is updated.
Can be omitted for plugins which do not use this data.
Player status.json content, deserialized into a .NET object.
Method called when the user begins "Read All" journal processing, before any journal events are sent.
Used to track if a "Read All" operation is in progress or not to avoid unnecessary processing or notifications.
Can be omitted for plugins which do not require the distinction.
Method called when "Read All" journal processing completes.
Used to track if a "Read All" operation is in progress or not to avoid unnecessary processing or notifications.
Can be omitted for plugins which do not require the distinction.
Interface for notifier plugins which receive notification events from other plugins for any purpose. Work required on plugin startup — for example object instantiation — can be done in the constructor or Load() method.
Be aware that saved settings will not be available until Load() is called.
Method called when other plugins send notification events to Observatory Core. Details of the notification as sent from the originating worker plugin. Interface passed by Observatory Core to plugins. Primarily used for sending notifications and UI updates back to Core. Send a notification out to all native notifiers and any plugins implementing IObservatoryNotifier. Title text for notification. Detail/body text for notificaiton. Guid associated with the notification during its lifetime. Used as an argument with CancelNotification and UpdateNotification. Send a notification with arguments out to all native notifiers and any plugins implementing IObservatoryNotifier. NotificationArgs object specifying notification content and behaviour. Guid associated with the notification during its lifetime. Used as an argument with CancelNotification and UpdateNotification. Cancel or close an active notification. Guid of notification to be cancelled. Update an active notification with a new set of NotificationsArgs. Timeout values are reset and begin counting again from zero if specified. Guid of notification to be updated. NotificationArgs object specifying updated notification content and behaviour. Add an item to the bottom of the basic UI grid. Reference to the calling plugin's worker interface. Grid item to be added. Object type should match original template item used to create the grid. Clears basic UI grid, removing all items. Reference to the calling plugin's worker interface. Template item used to re-initialise the grid. Requests current Elite Dangerous status.json content. Status object reflecting current Elite Dangerous player status. Version string of Observatory Core. Perform an action on the current Avalonia UI thread. Shared application HttpClient object. Provided so that plugins can adhere to .NET recommended behaviour of a single HttpClient object per application. Class permitting plugins to provide their UI, if any, to Observatory Core. Type of UI used by plugin. UI object used by plugins with UIType.Avalonia. (Untested/not implemented) Collection bound to DataGrid used byu plugins with UIType.Basic. Objects in collection should be of a class defined within the plugin consisting of string properties.
Each object is a single row, and the property names are used as column headers.
Instantiate PluginUI of UIType.Basic. Collection bound to DataGrid used byu plugins with UIType.Basic. Objects in collection should be of a class defined within the plugin consisting of string properties.
Each object is a single row, and the property names are used as column headers.
Instantiate PluginUI of specified UIType. (Untested/not implemented) UIType for plugin. Avalonia control to place in plugin tab. Options for plugin UI types. No UI. Tab will not be added to list. Simple DataGrid, to which items can be added or removed. AvaloniaUI control which is placed in plugin tab. UI used by Observatory Core settings tab.
Not intended for use by plugins.