🚀 Socket Launch Week 🚀 Day 5: Introducing Socket Fix.Learn More
Socket
Sign inDemoInstall
Socket

minecraft-mod-updater

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

minecraft-mod-updater

A Minecraft mod update tool based on Node.js

1.3.17
latest
Source
npm
Version published
Weekly downloads
16
433.33%
Maintainers
1
Weekly downloads
 
Created
Source

Minecraft Mod Updater

A Minecraft mod update tool based on Node.js

Use it directly

Installation

Using npm

npm install -g minecraft-mod-updater

Command

CLI (Command aliases)

minecraft-mod-updater-cli
mcmu-cli
mcmuc

GUI (Command aliases)

minecraft-mod-updater-gui
mcmu-gui
mcmug

Example

CLI (Parameters are optional)

mcmuc -h
mcmuc -t Manifest -i "./MyModPack/manifest.json" -o "./MyModPack" -k "xxxxxxxxxxxxxxxxxxxxxx" -f
mcmuc -t JarFile -i "./MyModPack/mods" -o "./MyModPack" -v 1.20.1 -l forge -k "xxxxxxxxxxxxxxxxxxxxxx" -f

GUI (Parameters are optional)

mcmug -h
mcmuc -t Manifest -i "./MyModPack/manifest.json" -o "./MyModPack" -k "xxxxxxxxxxxxxxxxxxxxxx" -f
mcmuc -t JarFile -i "./MyModPack/mods" -o "./MyModPack" -v 1.20.1 -l forge -k "xxxxxxxxxxxxxxxxxxxxxx" -f

Parameter (General parameters)

  -t, --type <JarFile | Manifest>            read type is jarFile or manifest
  -i, --input <path>                         path to the input
  -o, --output <path>                        path to the output
  -v, --version <string>                     game version
  -l, --loader <forge | fabric | neoforge>   mod loader platform
  -k, --apiKey <text>                        api key
  -f, --forceDownload                        force download
  -h, --help                                 display help for command

Secondary development

If you need to do secondary development, use the following command:

Installation

Using npm

npm install --save minecraft-mod-updater

Example

import {
    ModJarFileUpdater,
    ModManifestUpdater,
    type ModInfo,
    type ModUpdateStatus,
    ErrorEnum,
    type ErrorType,
    type Parameter
} from 'minecraft-mod-updater';
import {blueBright, greenBright, magentaBright, redBright, yellowBright} from 'chalk';

// Manifest Mode
function manifest(input: string, forceDownload: boolean): void {
    if (existsSync(input)) {
        const modUpdater: ModManifestUpdater = new ModManifestUpdater(input, {
            output,
            apiKey,
            forceDownload
        });
        modUpdater.addEventListener<ModInfo>(EventEnum.DOWNLOADING, (mod: ModInfo): void => info(`${magentaBright('Downloading:')} ${blueBright(mod.fileName)} {(${yellowBright(mod.modId)}) [${redBright(mod.fileID)} => ${greenBright(mod.id)}]} -> ${blueBright(mod.downloadUrl)}`));
        modUpdater.addEventListener<ModInfo>(EventEnum.DOWNLOADED, (mod: ModInfo): void => info(`${greenBright('The download is complete')}: ${blueBright(mod.fileName)}\n`));
        modUpdater.addEventListener<ModInfo>(EventEnum.SKIPPED, (mod: ModInfo): void => warn(`${greenBright('Already the latest version, the update has been skipped')}: ${blueBright(mod.fileName)} (${yellowBright(mod.modId)} [${greenBright(mod.fileID)} == ${greenBright(mod.id)}]) \n`));
        modUpdater.addEventListener<ModUpdateStatus>(EventEnum.FINISHED, (mod: ModUpdateStatus): void => info(mod, '\n', greenBright('The update is complete')));
        modUpdater.addEventListener<ErrorType<ModInfo>>(EventEnum.ERRORED, ({ type, mod }: ErrorType<ModInfo>): void => {
            switch (type) {
                case ErrorEnum.ADDRESS:
                    error(`${redBright('=====Error: Unable to get file address, please download it manually=====')}\nMod ID: ${yellowBright(mod.modId)}\nThe name of the mod file: ${magentaBright(mod.fileName)}\n`);
                    break;
                case ErrorEnum.DOWNLOAD:
                    error(`${redBright('=====Error: Unable to download the file, please download it manually=====')}\nMod ID: ${yellowBright(mod.modId)}\nThe name of the mod file: ${magentaBright(mod.fileName)}\n`);
                    break;
            }
        });
    } else {
        error(redBright('The manifest.json file does not exist, please create it and try again alive to view the help with mcmu -h'));
    }
}

// JarFile Mode
function jarFile(input: string): void {
    const dirPath: string = input.includes('json') ? resolve('./mods'): input;
    if (existsSync(dirPath)) {
        if (!version) {
            error(redBright('The version is not specified, please specify it and try again alive to view the help with mcmu -h'));
            return;
        }
        if (!loader) {
            error(redBright('The modLoader is not specified, please specify it and try again alive to view the help with mcmu -h'));
            return;
        }
        ModJarFileUpdater.fakeModManifestFile.minecraft.version = version;
        ModJarFileUpdater.fakeModManifestFile.minecraft.modLoaders.push({
            'id':  loader,
            'primary': true
        });
        const modJarFileUpdater: ModJarFileUpdater = new ModJarFileUpdater(dirPath);
        modJarFileUpdater.addEventListener(EventNameEnum.INIT, (mod: ModInfo): void => info(`${magentaBright('Init:')} ${blueBright(mod.fileName)} (${yellowBright(mod.modId)})`));
        modJarFileUpdater.addEventListener(EventNameEnum.FINISHED, (): void => {
            manifest(join(resolve('.'), './temp.json'), true);
        });
    } else {
        error(redBright('The mods dir does not exist, please create it and try again alive to view the help with mcmu -h'));
    }
}

switch (type) {
    case 'Manifest':
        manifest(input, forceDownload);
        break;
    case 'JarFile':
        jarFile(input);
        break;
    default:
        error(redBright('The read type is incorrect, please try again alive to view the help with mcmu -h'));
}

Keywords

lZiMUl

FAQs

Package last updated on 24 Mar 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts