diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/LaunchOptions.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/LaunchOptions.java index 88f5e6fb4..b1faa9ff9 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/LaunchOptions.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/LaunchOptions.java @@ -40,6 +40,7 @@ public class LaunchOptions implements Serializable { private String profileName; private List gameArguments = new ArrayList<>(); private List javaArguments = new ArrayList<>(); + private List javaAgents = new ArrayList<>(0); private Integer minMemory; private Integer maxMemory; private Integer metaspace; @@ -114,6 +115,11 @@ public class LaunchOptions implements Serializable { return Collections.unmodifiableList(javaArguments); } + @NotNull + public List getJavaAgents() { + return Collections.unmodifiableList(javaAgents); + } + /** * The minimum memory that the JVM can allocate. */ @@ -310,6 +316,10 @@ public class LaunchOptions implements Serializable { return options.javaArguments; } + public List getJavaAgents() { + return options.javaAgents; + } + /** * The minimum memory that the JVM can allocate. */ @@ -460,6 +470,12 @@ public class LaunchOptions implements Serializable { return this; } + public Builder setJavaAgents(List javaAgents) { + options.javaAgents.clear(); + options.javaAgents.addAll(javaAgents); + return this; + } + public Builder setMinMemory(Integer minMemory) { options.minMemory = minMemory; return this; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java index 55d118e02..1646854ba 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java @@ -259,6 +259,10 @@ public class DefaultLauncher extends Launcher { if (argumentsFromAuthInfo != null && argumentsFromAuthInfo.getJvm() != null && !argumentsFromAuthInfo.getJvm().isEmpty()) res.addAll(Arguments.parseArguments(argumentsFromAuthInfo.getJvm(), configuration)); + for (String javaAgent : options.getJavaAgents()) { + res.add("-javaagent:" + javaAgent); + } + res.add(version.getMainClass()); res.addAll(Arguments.parseStringArguments(version.getMinecraftArguments().map(StringUtils::tokenize).orElseGet(ArrayList::new), configuration));