Skip to content

Commit 1796c4f

Browse files
committed
added environment variables create
1 parent 8c51449 commit 1796c4f

File tree

3 files changed

+33
-27
lines changed

3 files changed

+33
-27
lines changed

dsm-common/src/main/java/com/nexoscript/dsm/common/server/container/ServerContainer.java

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.io.Closeable;
1313
import java.io.File;
1414
import java.util.UUID;
15+
import java.util.stream.Stream;
1516

1617
public class ServerContainer extends Thread {
1718
private final String prefix;
@@ -24,15 +25,17 @@ public class ServerContainer extends Thread {
2425
private String serverPath;
2526
private int port;
2627
private int memory;
28+
private String[] environmentVariables;
2729

28-
public ServerContainer(String prefix, DockerClient dockerClient, String basePath, String platform, String version, int port, int memory) {
30+
public ServerContainer(String prefix, DockerClient dockerClient, String basePath, String platform, String version, int port, int memory, String[] environmentVariables) {
2931
this.prefix = prefix;
3032
this.dockerClient = dockerClient;
3133
this.basePath = basePath;
3234
this.platform = platform;
3335
this.version = version;
3436
this.port = port;
3537
this.memory = memory;
38+
this.environmentVariables = environmentVariables;
3639
}
3740

3841
public ServerContainer(String prefix, DockerClient dockerClient, String basePath, String containerId, String uniqueId) {
@@ -59,24 +62,21 @@ public String createAndStartContainer() {
5962
ExposedPort containerPort = ExposedPort.tcp(25565);
6063
Ports portBindings = new Ports();
6164
portBindings.bind(containerPort, Ports.Binding.bindPort(this.port));
65+
String[] result = Stream.concat(Stream.of(environmentVariables), Stream.of(
66+
"EULA=TRUE",
67+
"TYPE=" + this.platform.toUpperCase(),
68+
"VERSION=" + this.version,
69+
"MEMORY=" + this.memory + "M",
70+
"ONLINE_MODE=TRUE",
71+
"AIKAR_FLAGS=TRUE"
72+
)).toArray(String[]::new);
6273
CreateContainerResponse container = this.dockerClient.createContainerCmd(imageName)
6374
.withName(containerName)
6475
.withHostConfig(HostConfig.newHostConfig()
6576
.withBinds(new Bind(this.serverPath, serverVolume))
6677
.withPortBindings(portBindings)
6778
.withRestartPolicy(RestartPolicy.alwaysRestart()))
68-
.withEnv(
69-
"EULA=TRUE",
70-
"TYPE=" + this.platform.toUpperCase(),
71-
"VERSION=" + this.version,
72-
"MEMORY=" + this.memory + "M",
73-
"VIEW_DISTANCE=6",
74-
"SIMULATION_DISTANCE=4",
75-
"MAX_PLAYERS=4",
76-
"MOTD=Server hosted by 2weeksmc.com",
77-
"ONLINE_MODE=TRUE",
78-
"AIKAR_FLAGS=TRUE"
79-
)
79+
.withEnv(result)
8080
.exec();
8181
this.containerId = container.getId();
8282
System.out.println(this.containerId);
@@ -134,13 +134,21 @@ public String recreateAndStartContainerFromDirectory(String uniqueId) {
134134
ExposedPort containerPort = ExposedPort.tcp(25565);
135135
Ports portBindings = new Ports();
136136
portBindings.bind(containerPort, Ports.Binding.bindPort(this.port));
137+
String[] result = Stream.concat(Stream.of(environmentVariables), Stream.of(
138+
"EULA=TRUE",
139+
"TYPE=" + this.platform.toUpperCase(),
140+
"VERSION=" + this.version,
141+
"MEMORY=" + this.memory + "M",
142+
"ONLINE_MODE=TRUE",
143+
"AIKAR_FLAGS=TRUE"
144+
)).toArray(String[]::new);
137145
CreateContainerResponse container = this.dockerClient.createContainerCmd("itzg/minecraft-server")
138146
.withName(containerName)
139147
.withHostConfig(HostConfig.newHostConfig()
140148
.withBinds(new Bind(serverPath, serverVolume))
141149
.withPortBindings(portBindings)
142150
.withRestartPolicy(RestartPolicy.alwaysRestart()))
143-
.withEnv("EULA=TRUE", "TYPE=" + this.platform.toUpperCase(), "VERSION=" + this.version, "MEMORY=" + this.memory + "M")
151+
.withEnv(result)
144152
.exec();
145153
this.containerId = container.getId();
146154
this.dockerClient.startContainerCmd(this.containerId).exec();

dsm-common/src/main/java/com/nexoscript/dsm/common/server/manager/ServerManager.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,20 +53,20 @@ public void run() {
5353
this.mapping();
5454
}
5555

56-
public ServerContainer createServerContainer(String platform, String version, int memory) {
56+
public ServerContainer createServerContainer(String platform, String version, int memory, String[] environmentVariables) {
5757
this.mapping();
5858
ServerContainer container = new ServerContainer(this.prefix, this.dockerClient, this.basePath, platform, version,
59-
this.getFreePort(), memory);
59+
this.getFreePort(), memory, environmentVariables);
6060
container.start();
6161
String containerId = container.createAndStartContainer();
6262
this.serverContainers.put(containerId, container);
6363
return container;
6464
}
6565

66-
public ServerContainer recreateServerContainer(String platform, String version, String uniqueId, int memory) {
66+
public ServerContainer recreateServerContainer(String platform, String version, String uniqueId, int memory, String[] environmentVariables) {
6767
this.mapping();
6868
ServerContainer container = new ServerContainer(this.prefix, this.dockerClient, this.basePath, platform, version,
69-
this.getFreePort(), memory);
69+
this.getFreePort(), memory, environmentVariables);
7070
container.start();
7171
String containerId = container.recreateAndStartContainerFromDirectory(uniqueId);
7272
this.serverContainers.put(containerId, container);

dsm-console/src/main/java/com/nexoscript/dsm/console/JLineConsole.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,11 @@ public void start() {
6262
switch (command) {
6363
case "clear" -> this.clear();
6464
case "create-container", "create-con" -> {
65-
if (args.length < 2) {
65+
if (args.length < 4) {
6666
this.print("[FF3333]Need platform and version argument");
6767
continue;
6868
}
69-
this.serverManager.createServerContainer(args[0].toLowerCase(), args[1].toLowerCase(), Integer.parseInt(args[2]));
69+
this.serverManager.createServerContainer(args[0].toLowerCase(), args[1].toLowerCase(), Integer.parseInt(args[2]), args[3].split(";"));
7070
}
7171
case "start-container", "start-con" -> {
7272
if (args.length < 1) {
@@ -76,12 +76,12 @@ public void start() {
7676
this.serverManager.startServerContainer(args[0]);
7777
}
7878
case "recreate-container", "recreate-con" -> {
79-
if (args.length < 3) {
79+
if (args.length < 5) {
8080
this.print("[FF3333]Need uniqueId, platform and version argument");
8181
continue;
8282
}
8383
this.serverManager.recreateServerContainer(args[1].toLowerCase(), args[2].toLowerCase(),
84-
args[0], Integer.parseInt(args[3]));
84+
args[0], Integer.parseInt(args[3]), args[4].split(";"));
8585
}
8686
case "restart-container", "restart-con" -> {
8787
if (args.length < 1) {
@@ -107,11 +107,9 @@ public void start() {
107107
}
108108
this.serverManager.removeServerContainer(args[0]);
109109
}
110-
case "list-containers", "list-cons" -> {
111-
this.serverManager.getContainers()
112-
.forEach(container -> this.print("&e" + container.getNames()[0].replace("/", "") + " - "
113-
+ this.serverManager.getServerStateById(container.getId())));
114-
}
110+
case "list-containers", "list-cons" -> this.serverManager.getContainers()
111+
.forEach(container -> this.print("&e" + container.getNames()[0].replace("/", "") + " - "
112+
+ this.serverManager.getServerStateById(container.getId())));
115113
case "exit", "stop", "shutdown" -> {
116114
this.isRunning = false;
117115
this.print("Stopping server...");

0 commit comments

Comments
 (0)