Table of Contents

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.