@@ -2,7 +2,7 @@ const { existsSync } = require("original-fs")
22const { getDirectory, runSync, runAsync, getPath } = require ( "./util" )
33const { join, dirname } = require ( "path" )
44const { spawnSync, spawn, } = require ( "child_process" )
5- const { mkdirSync, readFileSync, statSync, writeFileSync } = require ( "fs" )
5+ const { mkdirSync, readFileSync, statSync, writeFileSync, renameSync , rmdirSync , rm , rmSync , rename , copyFileSync , cp , cpSync , readdirSync } = require ( "fs" )
66const { homedir, platform } = require ( "os" )
77const { downloadJava, getJavaVersion } = require ( "./java" )
88const { arch, env, stdout } = require ( "process" )
@@ -222,18 +222,14 @@ const launch = async (version, account, statusCallback) => {
222222 var jvmArguments = [
223223 `-Xmx${ memory } M` ,
224224 '-Dlog4j2.formatMsgNoLookups=true' ,
225- '-Dfabric.addMods=' + version . mods . map ( mod => {
226- const fileName = mod . split ( '/' ) [ mod . split ( '/' ) . length - 1 ]
227- return join ( dir , 'mods' , fileName )
228- } ) . join ( separator )
225+ '-Dfabric.addMods=' + readdirSync ( join ( dir , 'mods' ) ) . map ( mod => join ( dir , 'mods' , mod ) ) . join ( separator )
229226 ]
230227 meta . arguments . jvm . filter ( arg => ! arg . rules || arg . rules . every ( checkRule ) ) . forEach ( arg => {
231228 if ( arg . value ) {
232229 if ( Array . isArray ( arg . value ) ) for ( value of arg . value ) jvmArguments . push ( value )
233230 else jvmArguments . push ( arg . value )
234231 } else jvmArguments . push ( arg )
235232 } )
236- console . log ( jvmArguments )
237233 var arguments = [ ]
238234 arguments = arguments . concat ( jvmArguments )
239235 arguments . push ( meta . mainClass )
@@ -243,10 +239,19 @@ const launch = async (version, account, statusCallback) => {
243239 else arguments . push ( arg . value )
244240 } else arguments . push ( arg )
245241 } )
242+ if ( existsSync ( join ( getDirectory ( ) , 'tmpmods' ) ) ) rmSync ( join ( getDirectory ( ) , 'tmpmods' ) , { recursive : true , force : true } )
243+ cpSync ( join ( getMinecraftDir ( ) , 'mods' ) , join ( getDirectory ( ) , 'tmpmods' ) , { recursive : true , force : true } )
244+ rmSync ( join ( getMinecraftDir ( ) , 'mods' ) , { recursive : true , force : true } )
246245 spawn ( 'java' , insertValues ( arguments , values ) , {
247246 cwd : getMinecraftDir ( ) ,
248247 env : { PATH : path }
249- } ) . stdout . pipe ( stdout )
248+ } ) . stdout . on ( 'data' , data => {
249+ if ( data . toString ( ) . includes ( 'Loading ' ) &&
250+ data . toString ( ) . includes ( ' mods:' ) ) {
251+ cp ( join ( getDirectory ( ) , 'tmpmods' ) , join ( getMinecraftDir ( ) , 'mods' ) , { recursive : true , force : true } , ( ) => { } )
252+ rm ( join ( getDirectory ( ) , 'tmpmods' ) , { recursive : true , force : true } , ( ) => { } )
253+ }
254+ } ) . pipe ( stdout )
250255 statusCallback ( 'done' )
251256}
252257
0 commit comments