using System.Collections.ObjectModel; namespace Phantom.Agent.Minecraft.Java; sealed class JvmArgumentBuilder { private readonly JvmProperties basicProperties; private readonly List<string> customArguments = new (); public JvmArgumentBuilder(JvmProperties basicProperties) { this.basicProperties = basicProperties; } public void Add(string argument) { customArguments.Add(argument); } public void AddProperty(string key, string value) { customArguments.Add("-D" + key + "=\"" + value + "\""); // TODO test quoting? } public void Build(Collection<string> target) { foreach (var property in customArguments) { target.Add(property); } // In case of duplicate JVM arguments, typically the last one wins. target.Add("-Xms" + basicProperties.InitialHeapMegabytes + "M"); target.Add("-Xmx" + basicProperties.MaximumHeapMegabytes + "M"); } }