
Research
PyPI Package Disguised as Instagram Growth Tool Harvests User Credentials
A deceptive PyPI package posing as an Instagram growth tool collects user credentials and sends them to third-party bot services.
minecraft-mod-updater
Advanced tools
npm install -g minecraft-mod-updater
minecraft-mod-updater-cli
mcmu-cli
mcmuc
minecraft-mod-updater-gui
mcmu-gui
mcmug
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
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
-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
npm install --save minecraft-mod-updater
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'));
}
FAQs
A Minecraft mod update tool based on Node.js
The npm package minecraft-mod-updater receives a total of 0 weekly downloads. As such, minecraft-mod-updater popularity was classified as not popular.
We found that minecraft-mod-updater demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Research
A deceptive PyPI package posing as an Instagram growth tool collects user credentials and sends them to third-party bot services.
Product
Socket now supports pylock.toml, enabling secure, reproducible Python builds with advanced scanning and full alignment with PEP 751's new standard.
Security News
Research
Socket uncovered two npm packages that register hidden HTTP endpoints to delete all files on command.