@createlumina/mod-parser
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

Mod Parser

Version made for Lumina projects. Original credits goes to Voxelum/minecraft-launcher-core-node

npm version Downloads Install size npm Build Status

Usage

Parse Fabric Mod Metadata

import { readFabricMod, FabricModMetadata } from '@createlumina/mods';
const modJarBinary = fs.readFileSync('your-fabric.jar');
const metadata: FabricModMetadata = await readFabricMod(modJarBinary);

// or directly read from path
const sameMetadata: FabricModMetadata = await readFabricMod('your-fabric.jar');

Parse Forge Mod/Config

Read the forge mod metadata, including @Mod annotation, mcmods.info, and toml metadata.

import { readForgeMod, ForgeModMetadata } from '@createlumina/mods';
const forgeModJarBuff: Buffer;
const metadata: ForgeModMetadata[] = await readForgeMod(forgeModJarBuff);
const modid = metadata[0].modid; // get modid of first mods

If you don't want to read that much (as it will transverse all the file in jar), you can try to use them separately:

import { resolveFileSystem } from '@createlumina/system';
import {
    readForgeModJson,
    readForgeModManifest,
    readForgeModToml,
    ForgeModMetadata,
    readForgeModAsm,
} from '@createlumina/mods';
const forgeModJarBuff: Buffer;
const fs = await resolveFileSystem(forgeModJarBuff);
// read json
// if this is new mod, this will be empty record {}
const metadata: Record<string, ForgeModMetadata> = await readForgeModJson(fs);
// or read `META-INF/MANIFEST.MF`
const manifest: Record<string, string> = await readForgeModManifest(
    fs,
    metadata /* this is optional, to fill the modmetadata if found */,
);
// read new toml
await readForgeModToml(
    fs,
    metadata /* it will fill mods into this param & return it */,
    manifest /* this is optional */,
);
// optional step, if the mod is really unstandard, not have mcmod.info and toml, you can use this
// this can identify optifine and in some case, might detect some coremod
// this will go over all file in your jar, it might hit your perf.
await readForgeModAsm(fs, metadata, { manifest });

Read the forge mod config file (.cfg)

import { ForgeConfig } from '@createlumina/mods';
const modConfigString: string;
const config: ForgeConfig = ForgeConfig.parse(modConfigString);
const serializedBack: string = ForgeConfig.stringify(config);

Parse Liteloader Mod

Read .litemod metadata:

import { LiteloaderModMetadata, readLiteloaderMod } from '@createlumina/mods';
const metadata: LiteloaderModMetadata = await readLiteloaderMod(`${mock}/mods/sample-mod.litemod`);

Package Sidebar

Install

npm i @createlumina/mod-parser

Weekly Downloads

54

Version

1.0.0

License

MIT

Unpacked Size

239 kB

Total Files

19

Last publish

Collaborators

  • padowyt2