launchprocess.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. const mojang = require('mojang')
  2. const uuidV4 = require('uuid/v4')
  3. const path = require('path')
  4. const child_process = require('child_process')
  5. exports.launchMinecraft = function(versionData, basePath){
  6. const authPromise = mojang.auth('EMAIL', 'PASS', uuidV4(), {
  7. name: 'Minecraft',
  8. version: 1
  9. })
  10. authPromise.then(function(data){
  11. const hardcodedargs = ''
  12. const args = finalizeArguments(versionData, data, basePath)
  13. console.log(args)
  14. const child = child_process.execFile(basePath)
  15. })
  16. }
  17. finalizeArguments = function(versionData, authData, basePath){
  18. const mcArgs = versionData['minecraftArguments']
  19. const regex = new RegExp('\\${*(.*)}')
  20. const argArr = mcArgs.split(' ')
  21. for(let i=0; i<argArr.length; i++){
  22. if(regex.test(argArr[i])){
  23. const identifier = argArr[i].match(regex)[1]
  24. //console.log(argArr[i].match(regex)[1])
  25. let newVal = argArr[i]
  26. switch(identifier){
  27. case 'auth_player_name':
  28. //TODO make this DYNAMIC
  29. newVal = 'NAME'
  30. break
  31. case 'version_name':
  32. newVal = versionData['id']
  33. break
  34. case 'game_directory':
  35. newVal = basePath
  36. break
  37. case 'assets_root':
  38. newVal = path.join(basePath, 'assets')
  39. break
  40. case 'assets_index_name':
  41. newVal = versionData['assets']
  42. break
  43. case 'auth_uuid':
  44. //TODO make this DYNAMIC
  45. newVal = 'UUID'
  46. break
  47. case 'auth_access_token':
  48. newVal = authData['accessToken']
  49. break
  50. case 'user_type':
  51. //TODO make this DYNAMIC
  52. newVal = 'MOJANG'
  53. break
  54. case 'version_type':
  55. newVal = versionData['type']
  56. break
  57. }
  58. argArr[i] = newVal
  59. }
  60. }
  61. return argArr.join(' ')
  62. }