Skip to main content
The Deno 2 Release Candidate is here
Learn more
Latest
class PreAkiModLoader
implements IModLoader
Re-export
import { PreAkiModLoader } from "https://deno.land/x/sptaki@1.2.0/loaders/mod.ts";

Constructors

new
PreAkiModLoader(
logger: ILogger,
vfs: VFS,
jsonUtil: JsonUtil,
modCompilerService: ModCompilerService,
localisationService: LocalisationService,
configServer: ConfigServer,
modLoadOrder: ModLoadOrder,
modTypeCheck: ModTypeCheck,
)

Properties

protected
akiConfig: ICoreConfig
protected
readonly
basepath: string
protected
configServer: ConfigServer
protected
container: DependencyContainer
protected
imported: Record<string, IPackageJsonData>
protected
jsonUtil: JsonUtil
protected
localisationService: LocalisationService
protected
logger: ILogger
protected
modCompilerService: ModCompilerService
protected
modLoadOrder: ModLoadOrder
protected
readonly
modOrderPath: string
protected
modTypeCheck: ModTypeCheck
protected
order: Record<string, number>
protected
serverDependencies: Record<string, string>
protected
skippedMods: Set<string>
protected
vfs: VFS

Methods

protected
addModAsync(mod: string, pkg: IPackageJsonData): Promise<void>

Compile mod and add into class property "imported"

protected
areModDependenciesFulfilled(pkg: IPackageJsonData, loadedMods: Map<string, IPackageJsonData>): boolean
protected
autoInstallDependencies(modPath: string, pkg: IPackageJsonData): void
protected
checkForDuplicateMods(modPackageData: Map<string, IPackageJsonData>): void

Check for duplicate mods loaded, show error if any

protected
executeModsAsync(): Promise<void>

Execute each mod found in this.imported

protected
getModsPackageData(mods: string[]): Map<string, IPackageJsonData>

Get packageJson data for mods

protected
getValidMods(mods: string[]): string[]

Returns an array of valid mods.

protected
importModsAsync(): Promise<void>

Is the passed in mod compatible with the running server version

protected
isModCompatible(mod: IPackageJsonData, loadedMods: Map<string, IPackageJsonData>): boolean
protected
shouldSkipMod(pkg: IPackageJsonData): boolean

Checks if a given mod should be loaded or skipped.

protected
sortMods(
prev: string,
next: string,
missingFromOrderJSON: Record<string, boolean>,
): number
protected
validMod(modName: string): boolean

Validate a mod passes a number of checks

Returns a list of mods with preserved load order

getModPath(mod: string): string
load(container: DependencyContainer): Promise<void>
sortModsLoadOrder(): string[]

Read loadorder.json (create if doesnt exist) and return sorted list of mods