1
0
mirror of https://github.com/SKCraft/Launcher.git synced 2024-11-30 13:13:58 +01:00

Start implementing experimental curse plugin

This commit is contained in:
Henry Le Grys 2021-03-28 02:57:47 +01:00
parent be299164de
commit a48dbf8ed9
5 changed files with 51 additions and 8 deletions

View File

@ -415,7 +415,7 @@ public class PackageBuilder implements Builder {
// Load plugins // Load plugins
BuilderPluginLoader pluginLoader = new BuilderPluginLoader(); BuilderPluginLoader pluginLoader = new BuilderPluginLoader();
pluginLoader.loadClasses(options.getPluginClasses()); pluginLoader.loadClasses(options.getPluginClasses());
pluginLoader.dispatchAcceptOptions(args); pluginLoader.dispatchAcceptOptions(options, args);
Manifest manifest = new Manifest(); Manifest manifest = new Manifest();
manifest.setMinimumVersion(Manifest.MIN_PROTOCOL_VERSION); manifest.setMinimumVersion(Manifest.MIN_PROTOCOL_VERSION);
@ -442,7 +442,7 @@ public class PackageBuilder implements Builder {
builder.addLoaders(options.getLoadersDir(), options.getLibrariesDir()); builder.addLoaders(options.getLoadersDir(), options.getLibrariesDir());
builder.downloadLibraries(options.getLibrariesDir()); builder.downloadLibraries(options.getLibrariesDir());
pluginLoader.dispatchBuilderFinished(builder); pluginLoader.dispatchBuild(builder);
builder.writeManifest(options.getManifestPath()); builder.writeManifest(options.getManifestPath());

View File

@ -0,0 +1,26 @@
package com.skcraft.launcher.builder.curse;
import com.beust.jcommander.JCommander;
import com.skcraft.launcher.builder.BuilderOptions;
import com.skcraft.launcher.builder.plugin.Builder;
import com.skcraft.launcher.builder.plugin.BuilderPlugin;
import java.io.File;
public class CurseBuildPlugin extends BuilderPlugin {
private CurseOptions options = new CurseOptions();
@Override
public void acceptOptions(BuilderOptions builderOptions, String[] args) {
new JCommander(this.options, args);
if (options.getCachePath() == null) {
options.setCachePath(new File(builderOptions.getInputPath(), "cache"));
}
}
@Override
public void onBuild(Builder builder) {
}
}

View File

@ -0,0 +1,15 @@
package com.skcraft.launcher.builder.curse;
import com.beust.jcommander.Parameter;
import lombok.Data;
import java.io.File;
@Data
public class CurseOptions {
@Parameter(names = "--cache", description = "Path to cache folder where downloaded artifacts are stored.")
private File cachePath;
@Parameter(names = "--import-curse-manifest", description = "Import mods and loaders from a Curse manifest JSON")
private File curseManifestLocation;
}

View File

@ -1,12 +1,13 @@
package com.skcraft.launcher.builder.plugin; package com.skcraft.launcher.builder.plugin;
import com.skcraft.launcher.builder.BuilderOptions;
import com.skcraft.launcher.model.modpack.Manifest; import com.skcraft.launcher.model.modpack.Manifest;
/** /**
* Class that all builder plugins should extend. * Class that all builder plugins should extend.
*/ */
public abstract class BuilderPlugin { public abstract class BuilderPlugin {
public void acceptOptions(String[] args) {} public void acceptOptions(BuilderOptions options, String[] args) {}
public void onManifestCreated(Manifest manifest) {} public void onManifestCreated(Manifest manifest) {}
public void onBuilderFinished(Builder builder) {} public void onBuild(Builder builder) {}
} }

View File

@ -1,6 +1,7 @@
package com.skcraft.launcher.builder.plugin; package com.skcraft.launcher.builder.plugin;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.skcraft.launcher.builder.BuilderOptions;
import com.skcraft.launcher.model.modpack.Manifest; import com.skcraft.launcher.model.modpack.Manifest;
import lombok.extern.java.Log; import lombok.extern.java.Log;
@ -48,9 +49,9 @@ public class BuilderPluginLoader {
return null; return null;
} }
public void dispatchAcceptOptions(String[] args) { public void dispatchAcceptOptions(BuilderOptions options, String[] args) {
for (BuilderPlugin plugin : loadedPlugins) { for (BuilderPlugin plugin : loadedPlugins) {
plugin.acceptOptions(args); plugin.acceptOptions(options, args);
} }
} }
@ -60,9 +61,9 @@ public class BuilderPluginLoader {
} }
} }
public void dispatchBuilderFinished(Builder builder) { public void dispatchBuild(Builder builder) {
for (BuilderPlugin plugin : loadedPlugins) { for (BuilderPlugin plugin : loadedPlugins) {
plugin.onBuilderFinished(builder); plugin.onBuild(builder);
} }
} }
} }