Services
A plugin class declares the services it uses as the parameters of its one public constructor, and the framework supplies them. A class marked PapyrusScriptAttribute receives them the same way.
Shared by Every Plugin
Every plugin receives the same instance.
| Service | Description |
|---|---|
| GameTarget | The game hosted in this process, through which a plugin accesses the player and the game's singleton managers. The framework constructs it and supplies it to a plugin. |
| IConsole | Writes to the game's console, which the player opens with the console key. |
| IConsoleCommands | Runs the console commands the game declares, and reports the arguments one of them declares. |
| ICourier | Sends items to the player by the game's courier. |
| IDebug | The game's debug functions, which surface information while it runs. |
| IGameFileSystem | The files under the game's Data folder, whether loose or packed in a .bsa archive. A loose file is read in preference to an archived one at the same path. |
| IGameSession | The current game, from a new character or a loaded save until the next one. |
| IModEvents | Sends mod events. Every registration for an event's name receives it, including the sending plugin's own. |
| IPluginCollection | A collection of IPlugin. Allows one IPlugin to look up another to access its public members. |
| ISkseLogDirectory | The folder that receives SKSE's logs for the running game, SkyrimForge's own log among them. |
| IUtility | Waits and cooldowns measured by UnpausedTime. |
One for Each Plugin
Each plugin receives an instance of its own. A service that writes a log or saved state writes the plugin's own, stored under the plugin's identity: the full name of its class, or the name PluginIdentityAttribute states.
| Service | Description |
|---|---|
| IAnimationEvents | An actor's animation events, which are the annotations on its animations. Each is raised on the frame the animation arrives at it. |
| IBookMenuPresenter | Shows runtime text in the book menu. |
| ICalendarTimerFactory | Creates timers on the game's calendar that are saved with the game. |
| ICodePatcher | Changes the machine code of the game, or of a native SKSE plugin, where it matches the bytes each patch expects. |
| IConsoleCommandRegistrar | Adds console commands that run managed handlers. |
| ICustomMenuRegistrar | Registers a menu of the plugin's own, which the game then constructs, shows, and drives as it does its own. |
| IDialogueBranchFactory | Creates dialogue branches at runtime, without an .esp file, from DialogueTopic trees. |
| IFollowers | Sets and dismisses the player's follower and animal through the game's DialogueFollower quest (000750BA). |
| IForceGreet | Makes an actor walk to the player and start a conversation, using the game's force-greet package. |
| IFunctionHooks | Hooks a game function at a virtual method table entry, a call instruction, or the function's entry. |
| IGameEvents | The game events the framework exposes to plugins. |
| IGreetingSilencer | Silences the greetings an actor says as a conversation with the player opens and to the player nearby outside one, and the remarks it says unprompted outside a conversation: idle chatter and the lines said on noticing a corpse. |
| ILog | A destination for log lines from the framework or a plugin. |
| IMessageBoxPrompter | Puts a question on the screen and reports which button was pressed. |
| IPapyrusEvents | Publishes events to Papyrus. IPapyrusFunctionRegistrar lets a script call a plugin, and this lets a plugin reach the scripts that registered for it. |
| IPapyrusFunctionRegistrar | Provides a C# implementation for a native Papyrus function, so scripts can call into a plugin. |
| IPerPluginSavedState | A plugin's state between sessions, stored in the SKSE co-save beside the player's save file rather than in a file of the plugin's own. |
| IPlayerLocationEvents | Events for the location the player is in. |
| IPlayerPositionHistory | The positions the player has stood on in the loaded game, and the search for a position near the player to place an actor. |
| IReadableNotes | Makes references readable notes whose pages a plugin writes at runtime. |
| IRuntimeQuestFactory | Creates quests that the journal lists, at runtime and without an .esp file. |
| IScaleformFunctionRegistrar | Puts a function on a Scaleform movie that ActionScript calls and this plugin implements, which is the direction ICustomMenuRegistrar and ScaleformValue do not cover: those reach into a movie, and this lets the movie reach back. |
| ISksePluginMessenger | Sends messages to the other SKSE plugins in the load order and receives what they send. This is one of the two ways a plugin reaches another. The commoner is an exported function the publisher names and the consumer finds through its module, which needs nothing from the framework: NativeLibrary.TryGetExport reaches it and a function pointer calls it. This is the other way, and it is the only one by which another plugin reaches a plugin here unprompted. |
| IStoryEvents | The story manager's events: crafting, arrest, a killing, a relationship changing, and every other kind the game registers. |
| ITaskQueue | Queues work to run at a moment the game is stopped for it, which is how a plugin calls the game from a thread of its own. |
| ITriggerZoneFactory | Creates zones around references that raise events as the player enters and leaves them. |
| IUnvoicedSpeech | Shows dialogue lines that have no voice recording as subtitles under the speaker, with a timed mouth animation. |
| IWorldMapMarkers | Adds markers to the world map at runtime, each a place the player can fast travel to. |
Services from Other Libraries
A library adds services of its own through IPluginServiceSource.