actionbinder.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. const mojang = require('mojang')
  2. const path = require('path')
  3. const AssetGuard = require(path.join(__dirname, 'assets', 'js', 'assetguard.js'))
  4. const ProcessBuilder = require(path.join(__dirname, 'assets', 'js', 'processbuilder.js'))
  5. const {GAME_DIRECTORY, DEFAULT_CONFIG} = require(path.join(__dirname, 'assets', 'js', 'constants.js'))
  6. document.onreadystatechange = function(){
  7. if (document.readyState === 'interactive'){
  8. // Bind launch button
  9. document.getElementById("launch_button").addEventListener('click', function(e){
  10. console.log('Launching game..')
  11. testdownloads()
  12. })
  13. }
  14. }
  15. testdownloads = async function(){
  16. const content = document.getElementById("launch_content")
  17. const details = document.getElementById("launch_details")
  18. const progress = document.getElementById("launch_progress")
  19. const progress_text = document.getElementById("launch_progress_label")
  20. const det_text = document.getElementById("launch_details_text")
  21. det_text.innerHTML = 'Please wait..'
  22. progress.setAttribute('max', '100')
  23. details.style.display = 'flex'
  24. content.style.display = 'none'
  25. det_text.innerHTML = 'Loading version information..'
  26. const versionData = await AssetGuard.loadVersionData('1.11.2', GAME_DIRECTORY)
  27. progress.setAttribute('value', 20)
  28. progress_text.innerHTML = '20%'
  29. det_text.innerHTML = 'Validating asset integrity..'
  30. await AssetGuard.validateAssets(versionData, GAME_DIRECTORY)
  31. progress.setAttribute('value', 40)
  32. progress_text.innerHTML = '40%'
  33. console.log('assets done')
  34. det_text.innerHTML = 'Validating library integrity..'
  35. await AssetGuard.validateLibraries(versionData, GAME_DIRECTORY)
  36. progress.setAttribute('value', 60)
  37. progress_text.innerHTML = '60%'
  38. console.log('libs done')
  39. det_text.innerHTML = 'Validating miscellaneous file integrity..'
  40. await AssetGuard.validateMiscellaneous(versionData, GAME_DIRECTORY)
  41. progress.setAttribute('value', 80)
  42. progress_text.innerHTML = '80%'
  43. console.log('files done')
  44. det_text.innerHTML = 'Validating server distribution files..'
  45. const serv = await AssetGuard.validateDistribution('WesterosCraft-1.11.2', GAME_DIRECTORY)
  46. progress.setAttribute('value', 100)
  47. progress_text.innerHTML = '100%'
  48. console.log('forge stuff done')
  49. det_text.innerHTML = 'Downloading files..'
  50. AssetGuard.instance.on('totaldlprogress', function(data){
  51. progress.setAttribute('max', data.total)
  52. progress.setAttribute('value', data.acc)
  53. progress_text.innerHTML = parseInt((data.acc/data.total)*100) + '%'
  54. })
  55. AssetGuard.instance.on('dlcomplete', async function(){
  56. det_text.innerHTML = 'Preparing to launch..'
  57. const forgeData = await AssetGuard.loadForgeData('WesterosCraft-1.11.2', GAME_DIRECTORY)
  58. const authUser = await mojang.auth('EMAIL', 'PASS', DEFAULT_CONFIG.getClientToken(), {
  59. name: 'Minecraft',
  60. version: 1
  61. })
  62. let pb = new ProcessBuilder(GAME_DIRECTORY, serv, versionData, forgeData, authUser)
  63. det_text.innerHTML = 'Launching game..'
  64. let proc;
  65. try{
  66. proc = pb.build()
  67. det_text.innerHTML = 'Done. Enjoy the server!'
  68. const tempListener = function(data){
  69. if(data.indexOf('[Client thread/INFO]: -- System Details --') > -1){
  70. details.style.display = 'none'
  71. content.style.display = 'inline-flex'
  72. proc.stdout.removeListener('data', tempListener)
  73. }
  74. }
  75. proc.stdout.on('data', tempListener)
  76. } catch(err) {
  77. //det_text.innerHTML = 'Error: ' + err.message;
  78. det_text.innerHTML = 'Error: See log for details..';
  79. console.log(err)
  80. setTimeout(function(){
  81. details.style.display = 'none'
  82. content.style.display = 'inline-flex'
  83. }, 5000)
  84. }
  85. })
  86. AssetGuard.processDlQueues()
  87. }