const mojang = require('mojang') const uuidV4 = require('uuid/v4') const path = require('path') const child_process = require('child_process') const ag = require('./assetguard.js') const AdmZip = require('adm-zip') const fs = require('fs') const mkpath = require('mkdirp'); function launchMinecraft(versionData, forgeData, basePath){ const authPromise = mojang.auth('EMAIL', 'PASS', uuidV4(), { name: 'Minecraft', version: 1 }) authPromise.then(function(data){ const args = finalizeArgumentsForge(versionData, forgeData, data, basePath) //TODO make this dynamic const child = child_process.spawn('C:\\Program Files\\Java\\jre1.8.0_131\\bin\\javaw.exe', args) child.stdout.on('data', (data) => { console.log('Minecraft:', data.toString('utf8')) }) child.stderr.on('data', (data) => { console.log('Minecraft:', data.toString('utf8')) }) child.on('close', (code, signal) => { console.log('Exited with code', code) }) }) } function finalizeArgumentsForge(versionData, forgeData, authData, basePath){ const mcArgs = forgeData['minecraftArguments'] const gameProfile = authData['selectedProfile'] const regex = new RegExp('\\${*(.*)}') const argArr = mcArgs.split(' ') const staticArgs = ['-Xmx4G', '-XX:+UseConcMarkSweepGC', '-XX:+CMSIncrementalMode', '-XX:-UseAdaptiveSizePolicy', '-Xmn128M', '-Djava.library.path=' + path.join(basePath, 'natives'), '-cp', classpathArg(versionData, basePath).concat(forgeClasspathArg(forgeData, basePath)).join(';'), forgeData.mainClass] for(let i=0; i -1){ shouldExclude = true } }) if(!shouldExclude){ mkpath.sync(path.join(nativePath, fileName, '..')) fs.writeFile(path.join(nativePath, fileName), zipEntries[i].getData()) } } cpArgs.push(to) } } }) return cpArgs } module.exports = { launchMinecraft }