UNPKG

ori-core-java

Version:

Simple Minecraft library for launching minecraft game written in Typescript.

102 lines (101 loc) 4.09 kB
"use strict"; /** * @author Cosmic-fi */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getFileFromJar = exports.loader = exports.mirrors = exports.getFileHash = exports.isold = exports.getPathLibraries = void 0; const crypto_1 = __importDefault(require("crypto")); const fs_1 = __importDefault(require("fs")); const adm_zip_1 = __importDefault(require("adm-zip")); function getPathLibraries(main, nativeString, forceExt) { let libSplit = main.split(':'); let fileName = libSplit[3] ? `${libSplit[2]}-${libSplit[3]}` : libSplit[2]; let finalFileName = fileName.includes('@') ? fileName.replace('@', '.') : `${fileName}${nativeString || ''}${forceExt || '.jar'}`; let pathLib = `${libSplit[0].replace(/\./g, '/')}/${libSplit[1]}/${libSplit[2].split('@')[0]}`; return { path: pathLib, name: `${libSplit[1]}-${finalFileName}` }; } exports.getPathLibraries = getPathLibraries; async function getFileHash(filePath, algorithm = 'sha1') { let shasum = crypto_1.default.createHash(algorithm); let file = fs_1.default.createReadStream(filePath); file.on('data', data => { shasum.update(data); }); let hash = await new Promise(resolve => { file.on('end', () => { resolve(shasum.digest('hex')); }); }); return hash; } exports.getFileHash = getFileHash; function isold(json) { return json.assets === 'legacy' || json.assets === 'pre-1.6'; } exports.isold = isold; function loader(type) { if (type === 'forge') { return { metaData: 'https://files.minecraftforge.net/net/minecraftforge/forge/maven-metadata.json', meta: 'https://files.minecraftforge.net/net/minecraftforge/forge/${build}/meta.json', promotions: 'https://files.minecraftforge.net/net/minecraftforge/forge/promotions_slim.json', install: 'https://maven.minecraftforge.net/net/minecraftforge/forge/${version}/forge-${version}-installer.jar' }; } else if (type === 'neoforge') { return { metaData: 'https://maven.neoforged.net/api/maven/versions/releases/net/neoforged/forge', install: 'https://maven.neoforged.net/net/neoforged/forge/${version}/forge-${version}-installer.jar' }; } else if (type === 'fabric') { return { metaData: 'https://meta.fabricmc.net/v2/versions', json: 'https://meta.fabricmc.net/v2/versions/loader/${version}/${build}/profile/json' }; } else if (type === 'legacyfabric') { return { metaData: 'https://meta.legacyfabric.net/v2/versions', json: 'https://meta.legacyfabric.net/v2/versions/loader/${version}/${build}/profile/json' }; } else if (type === 'quilt') { return { metaData: 'https://meta.quiltmc.org/v3/versions', json: 'https://meta.quiltmc.org/v3/versions/loader/${version}/${build}/profile/json' }; } } exports.loader = loader; let mirrors = [ "https://maven.minecraftforge.net", "https://maven.neoforged.net/releases", "https://maven.creeperhost.net", "https://libraries.minecraft.net" ]; exports.mirrors = mirrors; async function getFileFromJar(jar, file = null, path = null) { let fileReturn = []; let zip = new adm_zip_1.default(jar); let entries = zip.getEntries(); return await new Promise(resolve => { for (let entry of entries) { if (!entry.isDirectory && !path) { if (entry.entryName == file) fileReturn = entry.getData(); } if (!entry.isDirectory && entry.entryName.includes(path) && path) { fileReturn.push(entry.entryName); } } resolve(fileReturn); }); } exports.getFileFromJar = getFileFromJar;