diff --git a/LaunchServer/src/main/java/pro/gravit/launchserver/command/hash/DownloadClientCommand.java b/LaunchServer/src/main/java/pro/gravit/launchserver/command/hash/DownloadClientCommand.java index b2e28cd2..9da32e9c 100644 --- a/LaunchServer/src/main/java/pro/gravit/launchserver/command/hash/DownloadClientCommand.java +++ b/LaunchServer/src/main/java/pro/gravit/launchserver/command/hash/DownloadClientCommand.java @@ -5,6 +5,7 @@ import org.apache.logging.log4j.Logger; import pro.gravit.launcher.base.Launcher; import pro.gravit.launcher.base.profiles.ClientProfile; +import pro.gravit.launcher.base.profiles.ClientProfileBuilder; import pro.gravit.launcher.base.profiles.ClientProfileVersions; import pro.gravit.launchserver.LaunchServer; import pro.gravit.launchserver.command.Command; @@ -61,9 +62,11 @@ public void invoke(String... args) throws IOException, CommandException { try { JsonElement clientJson = server.mirrorManager.jsonRequest(null, "GET", "clients/%s.json", versionName); clientProfile = Launcher.gsonManager.configGson.fromJson(clientJson, ClientProfile.class); - clientProfile.setTitle(dirName); - clientProfile.setDir(dirName); - clientProfile.setUUID(UUID.randomUUID()); + var builder = new ClientProfileBuilder(clientProfile); + builder.setTitle(dirName); + builder.setDir(dirName); + builder.setUuid(UUID.randomUUID()); + clientProfile = builder.createClientProfile(); if (clientProfile.getServers() != null) { ClientProfile.ServerProfile serverProfile = clientProfile.getDefaultServerProfile(); if (serverProfile != null) { diff --git a/LaunchServer/src/main/java/pro/gravit/launchserver/command/profiles/CloneProfileCommand.java b/LaunchServer/src/main/java/pro/gravit/launchserver/command/profiles/CloneProfileCommand.java index 43e54f85..e943aa05 100644 --- a/LaunchServer/src/main/java/pro/gravit/launchserver/command/profiles/CloneProfileCommand.java +++ b/LaunchServer/src/main/java/pro/gravit/launchserver/command/profiles/CloneProfileCommand.java @@ -4,6 +4,7 @@ import org.apache.logging.log4j.Logger; import pro.gravit.launcher.base.Launcher; import pro.gravit.launcher.base.profiles.ClientProfile; +import pro.gravit.launcher.base.profiles.ClientProfileBuilder; import pro.gravit.launchserver.LaunchServer; import pro.gravit.launchserver.command.Command; import pro.gravit.utils.helper.IOHelper; @@ -44,8 +45,9 @@ public void invoke(String... args) throws Exception { try(Reader reader = IOHelper.newReader(profilePath)) { profile = Launcher.gsonManager.gson.fromJson(reader, ClientProfile.class); } - profile.setTitle(args[1]); - profile.setUUID(UUID.randomUUID()); + var builder = new ClientProfileBuilder(profile); + builder.setTitle(args[1]); + builder.setUuid(UUID.randomUUID()); if(profile.getServers().size() == 1) { profile.getServers().getFirst().name = args[1]; } @@ -61,7 +63,8 @@ public void invoke(String... args) throws Exception { } }); } - profile.setDir(args[1]); + builder.setDir(args[1]); + profile = builder.createClientProfile(); var targetPath = server.profilesDir.resolve(args[1].concat(".json")); try(Writer writer = IOHelper.newWriter(targetPath)) { Launcher.gsonManager.gson.toJson(profile, writer); diff --git a/LaunchServer/src/main/java/pro/gravit/launchserver/command/profiles/SaveProfilesCommand.java b/LaunchServer/src/main/java/pro/gravit/launchserver/command/profiles/SaveProfilesCommand.java index c0f0f5d0..7aba43a4 100644 --- a/LaunchServer/src/main/java/pro/gravit/launchserver/command/profiles/SaveProfilesCommand.java +++ b/LaunchServer/src/main/java/pro/gravit/launchserver/command/profiles/SaveProfilesCommand.java @@ -23,7 +23,6 @@ public SaveProfilesCommand(LaunchServer server) { } public static void saveProfile(ClientProfile profile, Path path) throws IOException { - if (profile.getUUID() == null) profile.setUUID(UUID.randomUUID()); if (profile.getServers().isEmpty()) { ClientProfile.ServerProfile serverProfile = new ClientProfile.ServerProfile(); serverProfile.isDefault = true; diff --git a/Launcher/src/main/java/pro/gravit/launcher/runtime/client/ClientLauncherProcess.java b/Launcher/src/main/java/pro/gravit/launcher/runtime/client/ClientLauncherProcess.java index 4928f57c..aaf4c5be 100644 --- a/Launcher/src/main/java/pro/gravit/launcher/runtime/client/ClientLauncherProcess.java +++ b/Launcher/src/main/java/pro/gravit/launcher/runtime/client/ClientLauncherProcess.java @@ -109,14 +109,14 @@ public static String getPathSeparator() { private void applyClientProfile() { this.systemClassPath.add(IOHelper.getCodeSource(ClientLauncherEntryPoint.class).toAbsolutePath().toString()); - Collections.addAll(this.jvmArgs, this.params.profile.getJvmArgs()); + this.jvmArgs.addAll(this.params.profile.getJvmArgs()); for (OptionalAction a : this.params.actions) { if (a instanceof OptionalActionJvmArgs) { this.jvmArgs.addAll(((OptionalActionJvmArgs) a).args); } } this.systemEnv.put("JAVA_HOME", javaVersion.jvmDir.toString()); - Collections.addAll(this.systemClassPath, this.params.profile.getAlternativeClassPath()); + this.systemClassPath.addAll(this.params.profile.getAlternativeClassPath()); if (params.ram > 0) { this.jvmArgs.add("-Xmx" + params.ram + 'M'); } @@ -128,8 +128,6 @@ private void applyClientProfile() { this.params.oauthExpiredTime = Request.getTokenExpiredTime(); this.params.extendedTokens = Request.getExtendedTokens(); } - this.jvmModules.addAll(this.params.profile.getModules()); - this.jvmModulesPaths.addAll(this.params.profile.getModulePath()); LauncherEngine.modulesManager.invokeEvent(new ClientProcessBuilderCreateEvent(this)); } @@ -148,7 +146,6 @@ public void start(boolean pipeOutput) throws IOException, InterruptedException { processArgs.add("-javaagent:".concat(IOHelper.getCodeSource(ClientLauncherEntryPoint.class).toAbsolutePath().toString())); } else if (params.profile.getClassLoaderConfig() == ClientProfile.ClassLoaderConfig.SYSTEM_ARGS) { systemClassPath.addAll(ClientLauncherEntryPoint.resolveClassPath(new HashSet<>(), workDir, params.actions, params.profile) - .filter(x -> !params.profile.getModulePath().contains(workDir.relativize(x).toString())) .map(Path::toString) .toList()); } diff --git a/LauncherAPI/src/main/java/pro/gravit/launcher/base/profiles/ClientProfile.java b/LauncherAPI/src/main/java/pro/gravit/launcher/base/profiles/ClientProfile.java index 3c268cac..5d55896d 100644 --- a/LauncherAPI/src/main/java/pro/gravit/launcher/base/profiles/ClientProfile.java +++ b/LauncherAPI/src/main/java/pro/gravit/launcher/base/profiles/ClientProfile.java @@ -41,8 +41,6 @@ public final class ClientProfile implements Comparable { @LauncherNetworkAPI private List updateExclusions; @LauncherNetworkAPI - private List updateShared; - @LauncherNetworkAPI private List updateVerify; @LauncherNetworkAPI private Set updateOptional; @@ -51,10 +49,6 @@ public final class ClientProfile implements Comparable { @LauncherNetworkAPI private List classPath; @LauncherNetworkAPI - private List modulePath = new ArrayList<>(); - @LauncherNetworkAPI - private List modules = new ArrayList<>(); - @LauncherNetworkAPI private List altClassPath; @LauncherNetworkAPI private List clientArgs; @@ -89,54 +83,37 @@ public final class ClientProfile implements Comparable { @LauncherNetworkAPI private LaunchOptions.ModuleConf moduleConf; - public ClientProfile() { - update = new ArrayList<>(); - updateExclusions = new ArrayList<>(); - updateShared = new ArrayList<>(); - updateVerify = new ArrayList<>(); - updateOptional = new HashSet<>(); - jvmArgs = new ArrayList<>(); - classPath = new ArrayList<>(); - modulePath = new ArrayList<>(); - altClassPath = new ArrayList<>(); - clientArgs = new ArrayList<>(); - compatClasses = new ArrayList<>(); - properties = new HashMap<>(); - servers = new ArrayList<>(1); - classLoaderConfig = ClassLoaderConfig.LAUNCHER; - flags = new ArrayList<>(); - } - - public ClientProfile(List update, List updateExclusions, List updateShared, List updateVerify, Set updateOptional, List jvmArgs, List classPath, List modulePath, List modules, List altClassPath, List clientArgs, List compatClasses, Map properties, List servers, ClassLoaderConfig classLoaderConfig, List flags, Version version, String assetIndex, String dir, String assetDir, int recommendJavaVersion, int minJavaVersion, int maxJavaVersion, ProfileDefaultSettings settings, int sortIndex, UUID uuid, String title, String info, String mainClass) { + public ClientProfile(String title, UUID uuid, Version version, String info, String dir, int sortIndex, String assetIndex, String assetDir, List update, List updateExclusions, List updateVerify, Set updateOptional, List jvmArgs, List classPath, List altClassPath, List clientArgs, List compatClasses, List loadNatives, Map properties, List servers, ClassLoaderConfig classLoaderConfig, List flags, int recommendJavaVersion, int minJavaVersion, int maxJavaVersion, ProfileDefaultSettings settings, boolean limited, String mainClass, String mainModule, LaunchOptions.ModuleConf moduleConf) { + this.title = title; + this.uuid = uuid; + this.version = version; + this.info = info; + this.dir = dir; + this.sortIndex = sortIndex; + this.assetIndex = assetIndex; + this.assetDir = assetDir; this.update = update; this.updateExclusions = updateExclusions; - this.updateShared = updateShared; this.updateVerify = updateVerify; this.updateOptional = updateOptional; this.jvmArgs = jvmArgs; this.classPath = classPath; - this.modulePath = modulePath; - this.modules = modules; this.altClassPath = altClassPath; this.clientArgs = clientArgs; this.compatClasses = compatClasses; + this.loadNatives = loadNatives; this.properties = properties; this.servers = servers; this.classLoaderConfig = classLoaderConfig; - this.version = version; - this.assetIndex = assetIndex; - this.dir = dir; - this.assetDir = assetDir; + this.flags = flags; this.recommendJavaVersion = recommendJavaVersion; this.minJavaVersion = minJavaVersion; this.maxJavaVersion = maxJavaVersion; this.settings = settings; - this.sortIndex = sortIndex; - this.uuid = uuid; - this.title = title; - this.info = info; + this.limited = limited; this.mainClass = mainClass; - this.flags = flags; + this.mainModule = mainModule; + this.moduleConf = moduleConf; } public ServerProfile getDefaultServerProfile() { @@ -159,34 +136,22 @@ public FileNameMatcher getAssetUpdateMatcher() { return getVersion().compareTo(ClientProfileVersions.MINECRAFT_1_7_10) >= 0 ? ASSET_MATCHER : null; } - public String[] getClassPath() { - return classPath.toArray(new String[0]); + public List getClassPath() { + return Collections.unmodifiableList(classPath); } - public List getModulePath() { - return Collections.unmodifiableList(modulePath); + public List getAlternativeClassPath() { + return Collections.unmodifiableList(altClassPath); } - public List getModules() { - return Collections.unmodifiableList(modules); - } - - public String[] getAlternativeClassPath() { - return altClassPath.toArray(new String[0]); - } - - public String[] getClientArgs() { - return clientArgs.toArray(new String[0]); + public List getClientArgs() { + return Collections.unmodifiableList(clientArgs); } public String getDir() { return dir; } - public void setDir(String dir) { - this.dir = dir; - } - public String getAssetDir() { return assetDir; } @@ -195,24 +160,25 @@ public List getUpdateExclusions() { return Collections.unmodifiableList(updateExclusions); } - public FileNameMatcher getClientUpdateMatcher(/*boolean excludeOptional*/) { + public List getUpdate() { + return Collections.unmodifiableList(update); + } + + public List getUpdateVerify() { + return Collections.unmodifiableList(updateVerify); + } + + public FileNameMatcher getClientUpdateMatcher() { String[] updateArray = update.toArray(new String[0]); String[] verifyArray = updateVerify.toArray(new String[0]); List excludeList; - //if(excludeOptional) - //{ - // excludeList = new ArrayList<>(); - // excludeList.addAll(updateExclusions); - // excludeList.addAll(updateOptional); - //} - //else excludeList = updateExclusions; String[] exclusionsArray = excludeList.toArray(new String[0]); return new FileNameMatcher(updateArray, verifyArray, exclusionsArray); } - public String[] getJvmArgs() { - return jvmArgs.toArray(new String[0]); + public List getJvmArgs() { + return Collections.unmodifiableList(jvmArgs); } public String getMainClass() { @@ -289,10 +255,6 @@ public OptionalFile getOptionalFile(String file) { return null; } - public Collection getShared() { - return updateShared; - } - public int getServerPort() { ServerProfile profile = getDefaultServerProfile(); return profile == null ? 25565 : profile.serverPort; @@ -306,26 +268,14 @@ public String getTitle() { return title; } - public void setTitle(String title) { - this.title = title; - } - public String getInfo() { return info; } - public void setInfo(String info) { - this.info = info; - } - public Version getVersion() { return version; } - public void setVersion(Version version) { - this.version = version; - } - @Deprecated public boolean isUpdateFastCheck() { return true; @@ -340,10 +290,6 @@ public UUID getUUID() { return uuid; } - public void setUUID(UUID uuid) { - this.uuid = uuid; - } - public boolean hasFlag(CompatibilityFlags flag) { return flags.contains(flag); } @@ -413,18 +359,6 @@ public String getProperty(String name) { return properties.get(name); } - public void putProperty(String name, String value) { - properties.put(name, value); - } - - public boolean containsProperty(String name) { - return properties.containsKey(name); - } - - public void clearProperties() { - properties.clear(); - } - public Map getProperties() { return Collections.unmodifiableMap(properties); } @@ -450,10 +384,6 @@ public ClassLoaderConfig getClassLoaderConfig() { return classLoaderConfig; } - public void setClassLoaderConfig(ClassLoaderConfig classLoaderConfig) { - this.classLoaderConfig = classLoaderConfig; - } - public boolean isLimited() { return limited; } diff --git a/LauncherAPI/src/main/java/pro/gravit/launcher/base/profiles/ClientProfileBuilder.java b/LauncherAPI/src/main/java/pro/gravit/launcher/base/profiles/ClientProfileBuilder.java index a518db5c..e13b59f1 100644 --- a/LauncherAPI/src/main/java/pro/gravit/launcher/base/profiles/ClientProfileBuilder.java +++ b/LauncherAPI/src/main/java/pro/gravit/launcher/base/profiles/ClientProfileBuilder.java @@ -1,136 +1,112 @@ package pro.gravit.launcher.base.profiles; import pro.gravit.launcher.base.profiles.optional.OptionalFile; +import pro.gravit.utils.launch.LaunchOptions; import java.util.*; public class ClientProfileBuilder { - private List update = new ArrayList<>(); - private List updateExclusions = new ArrayList<>(); - private List updateShared = new ArrayList<>(); - private List updateVerify = new ArrayList<>(); - private Set updateOptional = new HashSet<>(); - private List jvmArgs = new ArrayList<>(); - private List classPath = new ArrayList<>(); - private List modulePath = new ArrayList<>(); - private List modules = new ArrayList<>(); - private List altClassPath = new ArrayList<>(); - private List clientArgs = new ArrayList<>(); - private List compatClasses = new ArrayList<>(); - private Map properties = new HashMap<>(); - private List servers = new ArrayList<>(); - private ClientProfile.ClassLoaderConfig classLoaderConfig = ClientProfile.ClassLoaderConfig.LAUNCHER; - private List flags = new ArrayList<>(); - private ClientProfile.Version version; - private String assetIndex; - private String dir; - private String assetDir; - private int recommendJavaVersion = 8; - private int minJavaVersion = 8; - private int maxJavaVersion = 999; - private ClientProfile.ProfileDefaultSettings settings = new ClientProfile.ProfileDefaultSettings(); - private int sortIndex; - private UUID uuid; private String title; + private UUID uuid; + private ClientProfile.Version version; private String info; + private String dir; + private int sortIndex; + private String assetIndex; + private String assetDir; + private List update; + private List updateExclusions; + private List updateVerify; + private Set updateOptional; + private List jvmArgs; + private List classPath; + private List altClassPath; + private List clientArgs; + private List compatClasses; + private List loadNatives; + private Map properties; + private List servers; + private ClientProfile.ClassLoaderConfig classLoaderConfig; + private List flags; + private int recommendJavaVersion; + private int minJavaVersion; + private int maxJavaVersion; + private ClientProfile.ProfileDefaultSettings settings; + private boolean limited; private String mainClass; + private String mainModule; + private LaunchOptions.ModuleConf moduleConf; - public void setUpdate(List update) { - this.update = update; + public ClientProfileBuilder() { + this.update = new ArrayList<>(); + this.updateExclusions = new ArrayList<>(); + this.updateVerify = new ArrayList<>(); + this.updateOptional = new HashSet<>(); + this.jvmArgs = new ArrayList<>(); + this.classPath = new ArrayList<>(); + this.altClassPath = new ArrayList<>(); + this.clientArgs = new ArrayList<>(); + this.compatClasses = new ArrayList<>(); + this.loadNatives = new ArrayList<>(); + this.properties = new HashMap<>(); + this.servers = new ArrayList<>(); + this.flags = new ArrayList<>(); } - public ClientProfileBuilder setUpdateExclusions(List updateExclusions) { - this.updateExclusions = updateExclusions; + public ClientProfileBuilder(ClientProfile profile) { + this.title = profile.getTitle(); + this.uuid = profile.getUUID(); + this.version = profile.getVersion(); + this.info = profile.getInfo(); + this.dir = profile.getDir(); + this.sortIndex = profile.getSortIndex(); + this.assetIndex = profile.getAssetIndex(); + this.assetDir = profile.getAssetDir(); + this.update = new ArrayList<>(profile.getUpdate()); + this.updateExclusions = new ArrayList<>(profile.getUpdateExclusions()); + this.updateVerify = new ArrayList<>(profile.getUpdateVerify()); + this.updateOptional = new HashSet<>(profile.getOptional()); + this.jvmArgs = new ArrayList<>(profile.getJvmArgs()); + this.classPath = new ArrayList<>(profile.getClassPath()); + this.altClassPath = new ArrayList<>(profile.getAlternativeClassPath()); + this.clientArgs = new ArrayList<>(profile.getClientArgs()); + this.compatClasses = new ArrayList<>(profile.getCompatClasses()); + this.loadNatives = new ArrayList<>(profile.getLoadNatives()); + this.properties = new HashMap<>(profile.getProperties()); + this.servers = new ArrayList<>(profile.getServers()); + this.flags = new ArrayList<>(profile.getFlags()); + this.recommendJavaVersion = profile.getRecommendJavaVersion(); + this.minJavaVersion = profile.getMinJavaVersion(); + this.maxJavaVersion = profile.getMaxJavaVersion(); + this.settings = profile.getSettings(); + this.limited = profile.isLimited(); + this.mainClass = profile.getMainClass(); + this.mainModule = profile.getMainModule(); + this.moduleConf = profile.getModuleConf(); + } + + public ClientProfileBuilder setTitle(String title) { + this.title = title; return this; } - public ClientProfileBuilder setUpdateShared(List updateShared) { - this.updateShared = updateShared; + public ClientProfileBuilder setUuid(UUID uuid) { + this.uuid = uuid; return this; } - public void setUpdateVerify(List updateVerify) { - this.updateVerify = updateVerify; - } - - public void setUpdateOptional(Set updateOptional) { - this.updateOptional = updateOptional; - } - - public void setJvmArgs(List jvmArgs) { - this.jvmArgs = jvmArgs; - } - - public void setClassPath(List classPath) { - this.classPath = classPath; - } - - public void setAltClassPath(List altClassPath) { - this.altClassPath = altClassPath; - } - - public void setClientArgs(List clientArgs) { - this.clientArgs = clientArgs; - } - - public ClientProfileBuilder setCompatClasses(List compatClasses) { - this.compatClasses = compatClasses; - return this; - } - - public ClientProfileBuilder setProperties(Map properties) { - this.properties = properties; - return this; - } - - public void setServers(List servers) { - this.servers = servers; - } - - public void setClassLoaderConfig(ClientProfile.ClassLoaderConfig classLoaderConfig) { - this.classLoaderConfig = classLoaderConfig; - } - - public void setVersion(ClientProfile.Version version) { + public ClientProfileBuilder setVersion(ClientProfile.Version version) { this.version = version; + return this; } - public void setAssetIndex(String assetIndex) { - this.assetIndex = assetIndex; + public ClientProfileBuilder setInfo(String info) { + this.info = info; + return this; } - public void setDir(String dir) { + public ClientProfileBuilder setDir(String dir) { this.dir = dir; - } - - public void setAssetDir(String assetDir) { - this.assetDir = assetDir; - } - - public void setRecommendJavaVersion(int recommendJavaVersion) { - this.recommendJavaVersion = recommendJavaVersion; - } - - public ClientProfileBuilder setModulePath(List modulePath) { - this.modulePath = modulePath; - return this; - } - - public ClientProfileBuilder setModules(List modules) { - this.modules = modules; - return this; - } - - public void setMinJavaVersion(int minJavaVersion) { - this.minJavaVersion = minJavaVersion; - } - - public void setMaxJavaVersion(int maxJavaVersion) { - this.maxJavaVersion = maxJavaVersion; - } - - public ClientProfileBuilder setSettings(ClientProfile.ProfileDefaultSettings settings) { - this.settings = settings; return this; } @@ -139,20 +115,140 @@ public ClientProfileBuilder setSortIndex(int sortIndex) { return this; } - public void setUuid(UUID uuid) { - this.uuid = uuid; + public ClientProfileBuilder setAssetIndex(String assetIndex) { + this.assetIndex = assetIndex; + return this; } - public void setTitle(String title) { - this.title = title; + public ClientProfileBuilder setAssetDir(String assetDir) { + this.assetDir = assetDir; + return this; } - public void setInfo(String info) { - this.info = info; + public ClientProfileBuilder setUpdate(List update) { + this.update = update; + return this; } - public void setMainClass(String mainClass) { - this.mainClass = mainClass; + public ClientProfileBuilder update(String value) { + this.update.add(value); + return this; + } + + public ClientProfileBuilder setUpdateExclusions(List updateExclusions) { + this.updateExclusions = updateExclusions; + return this; + } + + public ClientProfileBuilder updateExclusions(String value) { + this.updateExclusions.add(value); + return this; + } + + public ClientProfileBuilder setUpdateVerify(List updateVerify) { + this.updateVerify = updateVerify; + return this; + } + + public ClientProfileBuilder updateVerify(String value) { + this.updateVerify.add(value); + return this; + } + + public ClientProfileBuilder setUpdateOptional(Set updateOptional) { + this.updateOptional = updateOptional; + return this; + } + + public ClientProfileBuilder updateOptional(OptionalFile value) { + this.updateOptional.add(value); + return this; + } + + public ClientProfileBuilder setJvmArgs(List jvmArgs) { + this.jvmArgs = jvmArgs; + return this; + } + + public ClientProfileBuilder jvmArg(String value) { + this.jvmArgs.add(value); + return this; + } + + + public ClientProfileBuilder setClassPath(List classPath) { + this.classPath = classPath; + return this; + } + + public ClientProfileBuilder classPath(String value) { + this.classPath.add(value); + return this; + } + + public ClientProfileBuilder setAltClassPath(List altClassPath) { + this.altClassPath = altClassPath; + return this; + } + + public ClientProfileBuilder altClassPath(String value) { + this.altClassPath.add(value); + return this; + } + + public ClientProfileBuilder setClientArgs(List clientArgs) { + this.clientArgs = clientArgs; + return this; + } + + public ClientProfileBuilder clientArg(String value) { + this.clientArgs.add(value); + return this; + } + + public ClientProfileBuilder setCompatClasses(List compatClasses) { + this.compatClasses = compatClasses; + return this; + } + + public ClientProfileBuilder compatClass(String value) { + this.compatClasses.add(value); + return this; + } + + public ClientProfileBuilder setLoadNatives(List loadNatives) { + this.loadNatives = loadNatives; + return this; + } + + public ClientProfileBuilder loadNatives(String value) { + this.loadNatives.add(value); + return this; + } + + public ClientProfileBuilder setProperties(Map properties) { + this.properties = properties; + return this; + } + + public ClientProfileBuilder property(String name, String value) { + this.properties.put(name, value); + return this; + } + + public ClientProfileBuilder setServers(List servers) { + this.servers = servers; + return this; + } + + public ClientProfileBuilder server(ClientProfile.ServerProfile value) { + this.servers.add(value); + return this; + } + + public ClientProfileBuilder setClassLoaderConfig(ClientProfile.ClassLoaderConfig classLoaderConfig) { + this.classLoaderConfig = classLoaderConfig; + return this; } public ClientProfileBuilder setFlags(List flags) { @@ -160,7 +256,52 @@ public ClientProfileBuilder setFlags(List flag return this; } + public ClientProfileBuilder flag(ClientProfile.CompatibilityFlags value) { + this.flags.add(value); + return this; + } + + public ClientProfileBuilder setRecommendJavaVersion(int recommendJavaVersion) { + this.recommendJavaVersion = recommendJavaVersion; + return this; + } + + public ClientProfileBuilder setMinJavaVersion(int minJavaVersion) { + this.minJavaVersion = minJavaVersion; + return this; + } + + public ClientProfileBuilder setMaxJavaVersion(int maxJavaVersion) { + this.maxJavaVersion = maxJavaVersion; + return this; + } + + public ClientProfileBuilder setSettings(ClientProfile.ProfileDefaultSettings settings) { + this.settings = settings; + return this; + } + + public ClientProfileBuilder setLimited(boolean limited) { + this.limited = limited; + return this; + } + + public ClientProfileBuilder setMainClass(String mainClass) { + this.mainClass = mainClass; + return this; + } + + public ClientProfileBuilder setMainModule(String mainModule) { + this.mainModule = mainModule; + return this; + } + + public ClientProfileBuilder setModuleConf(LaunchOptions.ModuleConf moduleConf) { + this.moduleConf = moduleConf; + return this; + } + public ClientProfile createClientProfile() { - return new ClientProfile(update, updateExclusions, updateShared, updateVerify, updateOptional, jvmArgs, classPath, modulePath, modules, altClassPath, clientArgs, compatClasses, properties, servers, classLoaderConfig, flags, version, assetIndex, dir, assetDir, recommendJavaVersion, minJavaVersion, maxJavaVersion, settings, sortIndex, uuid, title, info, mainClass); + return new ClientProfile(title, uuid, version, info, dir, sortIndex, assetIndex, assetDir, update, updateExclusions, updateVerify, updateOptional, jvmArgs, classPath, altClassPath, clientArgs, compatClasses, loadNatives, properties, servers, classLoaderConfig, flags, recommendJavaVersion, minJavaVersion, maxJavaVersion, settings, limited, mainClass, mainModule, moduleConf); } } \ No newline at end of file diff --git a/LauncherAPI/src/main/java/pro/gravit/launcher/base/profiles/optional/actions/OptionalActionClassPath.java b/LauncherAPI/src/main/java/pro/gravit/launcher/base/profiles/optional/actions/OptionalActionClassPath.java index 51a09abf..af2c0675 100644 --- a/LauncherAPI/src/main/java/pro/gravit/launcher/base/profiles/optional/actions/OptionalActionClassPath.java +++ b/LauncherAPI/src/main/java/pro/gravit/launcher/base/profiles/optional/actions/OptionalActionClassPath.java @@ -1,17 +1,19 @@ package pro.gravit.launcher.base.profiles.optional.actions; +import java.util.List; + public class OptionalActionClassPath extends OptionalAction { - public String[] args; + public List args; public boolean useAltClasspath = false; public OptionalActionClassPath() { } - public OptionalActionClassPath(String[] args) { + public OptionalActionClassPath(List args) { this.args = args; } - public OptionalActionClassPath(String[] args, boolean useAltClasspath) { + public OptionalActionClassPath(List args, boolean useAltClasspath) { this.args = args; this.useAltClasspath = useAltClasspath; } diff --git a/LauncherClient/src/main/java/pro/gravit/launcher/client/ClientLauncherEntryPoint.java b/LauncherClient/src/main/java/pro/gravit/launcher/client/ClientLauncherEntryPoint.java index eb476436..d084f9d5 100644 --- a/LauncherClient/src/main/java/pro/gravit/launcher/client/ClientLauncherEntryPoint.java +++ b/LauncherClient/src/main/java/pro/gravit/launcher/client/ClientLauncherEntryPoint.java @@ -120,7 +120,6 @@ private static void realMain(String[] args) throws Throwable { LogHelper.debug("Verifying ClientLauncher sign and classpath"); Set ignoredPath = new HashSet<>(); List classpath = resolveClassPath(ignoredPath, clientDir, params.actions, params.profile) - .filter(x -> !profile.getModulePath().contains(clientDir.relativize(x).toString())) .collect(Collectors.toCollection(ArrayList::new)); if(LogHelper.isDevEnabled()) { for(var e : classpath) { @@ -253,11 +252,11 @@ public static void verifyHDir(Path dir, HashedDir hdir, FileNameMatcher matcher, } } - private static LinkedList resolveClassPathList(Set ignorePaths, Path clientDir, String... classPath) throws IOException { + private static LinkedList resolveClassPathList(Set ignorePaths, Path clientDir, List classPath) throws IOException { return resolveClassPathStream(ignorePaths, clientDir, classPath).collect(Collectors.toCollection(LinkedList::new)); } - private static Stream resolveClassPathStream(Set ignorePaths, Path clientDir, String... classPath) throws IOException { + private static Stream resolveClassPathStream(Set ignorePaths, Path clientDir, List classPath) throws IOException { Stream.Builder builder = Stream.builder(); for (String classPathEntry : classPath) { Path path = clientDir.resolve(IOHelper.toPath(classPathEntry.replace(IOHelper.CROSS_SEPARATOR, IOHelper.PLATFORM_SEPARATOR))); @@ -301,7 +300,7 @@ private static void launch(ClientProfile profile, ClientParams params) throws Th params.addClientLegacyArgs(args); System.setProperty("minecraft.applet.TargetDirectory", params.clientDir); } - Collections.addAll(args, profile.getClientArgs()); + args.addAll(profile.getClientArgs()); for (OptionalAction action : params.actions) { if (action instanceof OptionalActionClientArgs) { args.addAll(((OptionalActionClientArgs) action).args); diff --git a/LauncherCore/src/main/java/pro/gravit/utils/Version.java b/LauncherCore/src/main/java/pro/gravit/utils/Version.java index ee50e0c1..4f32b9b9 100644 --- a/LauncherCore/src/main/java/pro/gravit/utils/Version.java +++ b/LauncherCore/src/main/java/pro/gravit/utils/Version.java @@ -6,9 +6,9 @@ public final class Version implements Comparable { public static final int MAJOR = 5; public static final int MINOR = 6; - public static final int PATCH = 1; + public static final int PATCH = 2; public static final int BUILD = 1; - public static final Version.Type RELEASE = Type.STABLE; + public static final Version.Type RELEASE = Type.DEV; public final int major; public final int minor; public final int patch; diff --git a/build.gradle b/build.gradle index 3e0cff99..1ca08833 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ id 'org.openjfx.javafxplugin' version '0.1.0' apply false } group = 'pro.gravit.launcher' -version = '5.6.1' +version = '5.6.2-SNAPSHOT' apply from: 'props.gradle'