@@ -67,6 +67,9 @@ public void step(Step step) {}
67
67
@ Override
68
68
public void init () {}
69
69
};
70
+
71
+ /** Default logger */
72
+ public static final ILogger DEFAULT_LOGGER = new Logger ("[FlowUpdater]" , new File ("." , "updater/latest.log" ));
70
73
71
74
/**
72
75
* Basic constructor to construct a new {@link FlowUpdater}.
@@ -78,31 +81,20 @@ public void init() {}
78
81
* @param postExecutions Post executions are called after update.
79
82
*/
80
83
private FlowUpdater (IVanillaVersion version , ILogger logger , boolean silentUpdate ,
81
- IProgressCallback callback , List <ExternalFile > externalFiles , List <Runnable > postExecutions )
84
+ IProgressCallback callback , List <ExternalFile > externalFiles , List <Runnable > postExecutions , IForgeVersion forgeVersion )
82
85
{
83
86
this .logger = logger ;
87
+ this .version = version ;
88
+ this .logFile = this .logger .getLogFile ();
84
89
this .externalFiles = externalFiles ;
85
90
this .postExecutions = postExecutions ;
91
+ this .forgeVersion = forgeVersion ;
86
92
this .isSilent = silentUpdate ;
87
- this .logFile = this .logger .getLogFile ();
88
- try
89
- {
90
- if (!this .logFile .exists ())
91
- {
92
- this .logFile .getParentFile ().mkdirs ();
93
- this .logFile .createNewFile ();
94
- }
95
- }
96
- catch (IOException e )
97
- {
98
- e .printStackTrace ();
99
- }
100
- this .logger .info (String .format ("------------------------- FlowUpdater for Minecraft %s v%s -------------------------" , version .getName (), "1.1.6" ));
101
- this .version = version ;
102
93
this .downloadInfos = new DownloadInfos ();
103
94
this .callback = callback ;
104
95
this .callback .init ();
105
96
this .vanillaReader = new VanillaReader (this .version , this .logger , this .isSilent , this .callback , this .downloadInfos );
97
+ this .logger .info (String .format ("------------------------- FlowUpdater for Minecraft %s v%s -------------------------" , this .version .getName (), "1.1.6" ));
106
98
}
107
99
108
100
/**
@@ -126,7 +118,9 @@ public void update(File dir, boolean downloadServer) throws IOException
126
118
127
119
if (this .getForgeVersion () != null )
128
120
{
129
- this .forgeVersion .install (dir );
121
+ if (!this .forgeVersion .isForgeAlreadyInstalled (dir ))
122
+ this .forgeVersion .install (dir );
123
+ else this .logger .info ("Detected forge ! Skipping installation..." );
130
124
this .forgeVersion .installMods (new File (dir , "mods/" ));
131
125
}
132
126
}
@@ -238,7 +232,9 @@ public DownloadInfos getDownloadInfos()
238
232
/**
239
233
* Necessary if you want install a Forge version.
240
234
* @param forgeVersion Forge version to install.
235
+ * @deprecated Prefer use {@link FlowUpdaterBuilder#withForgeVersion(IForgeVersion)}
241
236
*/
237
+ @ Deprecated
242
238
public void setForgeVersion (IForgeVersion forgeVersion )
243
239
{
244
240
this .forgeVersion = forgeVersion ;
@@ -250,12 +246,13 @@ public void setForgeVersion(IForgeVersion forgeVersion)
250
246
*/
251
247
public static class FlowUpdaterBuilder
252
248
{
253
- private BuilderArgument <IVanillaVersion > versionArgument = new BuilderArgument <IVanillaVersion >(null ).required ();
254
- private BuilderArgument <ILogger > loggerArgument = new BuilderArgument <ILogger >(null ).required ();
255
- private BuilderArgument <Boolean > silentUpdateArgument = new BuilderArgument <Boolean >(null ).optional ();
256
- private BuilderArgument <IProgressCallback > progressCallbackArgument = new BuilderArgument <IProgressCallback >(null ).optional ();
257
- private BuilderArgument <List <ExternalFile >> externalFilesArgument = new BuilderArgument <List <ExternalFile >>(null ).optional ();
258
- private BuilderArgument <List <Runnable >> postExecutionsArgument = new BuilderArgument <List <Runnable >>(null ).optional ();
249
+ private final BuilderArgument <IVanillaVersion > versionArgument = new BuilderArgument <IVanillaVersion >(null ).required ();
250
+ private final BuilderArgument <ILogger > loggerArgument = new BuilderArgument <ILogger >(null ).required ();
251
+ private final BuilderArgument <Boolean > silentUpdateArgument = new BuilderArgument <Boolean >(null ).optional ();
252
+ private final BuilderArgument <IProgressCallback > progressCallbackArgument = new BuilderArgument <IProgressCallback >(null ).optional ();
253
+ private final BuilderArgument <List <ExternalFile >> externalFilesArgument = new BuilderArgument <List <ExternalFile >>(null ).optional ();
254
+ private final BuilderArgument <List <Runnable >> postExecutionsArgument = new BuilderArgument <List <Runnable >>(null ).optional ();
255
+ private final BuilderArgument <IForgeVersion > forgeVersionArgument = new BuilderArgument <IForgeVersion >(null ).optional ();
259
256
260
257
public FlowUpdaterBuilder withVersion (IVanillaVersion version )
261
258
{
@@ -281,30 +278,40 @@ public FlowUpdaterBuilder withProgressCallback(IProgressCallback callback)
281
278
return this ;
282
279
}
283
280
284
- public FlowUpdaterBuilder withExternaFiles (ArrayList <ExternalFile > externalFiles )
281
+ public FlowUpdaterBuilder withExternaFiles (List <ExternalFile > externalFiles )
285
282
{
286
283
this .externalFilesArgument .set (externalFiles );
287
284
return this ;
288
285
}
289
286
290
- public FlowUpdaterBuilder witPostExecutions ( ArrayList <Runnable > postExecutions )
287
+ public FlowUpdaterBuilder withPostExecutions ( List <Runnable > postExecutions )
291
288
{
292
289
this .postExecutionsArgument .set (postExecutions );
293
290
return this ;
294
291
}
295
292
293
+ /**
294
+ * Necessary if you want install a Forge version.
295
+ * @param forgeVersion Forge version to install.
296
+ */
297
+ public FlowUpdaterBuilder withForgeVersion (IForgeVersion forgeVersion )
298
+ {
299
+ this .forgeVersionArgument .set (forgeVersion );
300
+ return this ;
301
+ }
302
+
296
303
public FlowUpdater build () throws BuilderArgumentException
297
304
{
298
305
assert this .versionArgument .get () != null ;
299
306
final ILogger logger = this .loggerArgument .get () != null ?
300
- this .loggerArgument .get () :
301
- new Logger ("[FlowUpdater]" , new File ("." , "updater/latest.log" ));
307
+ this .loggerArgument .get () : DEFAULT_LOGGER ;
302
308
return new FlowUpdater (this .versionArgument .get (),
303
309
logger ,
304
310
this .silentUpdateArgument .get (),
305
311
this .progressCallbackArgument .get () != null ? this .progressCallbackArgument .get () : NULL_CALLBACK ,
306
312
this .externalFilesArgument .get () != null ? this .externalFilesArgument .get () : new ArrayList <>(),
307
- this .postExecutionsArgument .get () != null ? this .postExecutionsArgument .get () : new ArrayList <>());
313
+ this .postExecutionsArgument .get () != null ? this .postExecutionsArgument .get () : new ArrayList <>(),
314
+ this .forgeVersionArgument .get ());
308
315
}
309
316
}
310
317
}
0 commit comments