Skip to content

Commit c48e620

Browse files
committed
added create server from template and changed template commands
1 parent 0a1578e commit c48e620

File tree

5 files changed

+96
-36
lines changed

5 files changed

+96
-36
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ target/
3535

3636
# test #
3737
data/
38-
lobby/
38+
server*/
3939
templates/
4040
*.json
4141
*.toml

servermanager-node/src/main/java/com/nexoscript/servermanager/node/ServerManagerNode.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,16 @@ public class ServerManagerNode implements IServerManager {
1111

1212
private final Console console;
1313

14-
public static void main(String[] args) {
15-
new ServerManagerNode();
16-
}
17-
1814
public ServerManagerNode() {
1915
this.templateManager = new TemplateManager();
20-
this.actionRunner = new ServerActionRunner(this);
21-
this.shutdownHook();
16+
this.actionRunner = new ServerActionRunner(this, this.templateManager);
2217
this.console = new Console(this.templateManager, this.actionRunner);
2318
this.console.start();
2419
}
2520

2621
public void shutdownHook() {
2722
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
28-
System.out.println("\nProgramm wird beendet. Stoppe alle Server...");
23+
System.out.println("\nProgramm has been exited. Stop all servers...");
2924
this.actionRunner.shutdownAllServers();
3025
}));
3126
}
@@ -41,4 +36,9 @@ public ServerActionRunner getActionRunner() {
4136
public TemplateManager getTemplateManager() {
4237
return templateManager;
4338
}
39+
40+
public static void main(String[] args) {
41+
ServerManagerNode node = new ServerManagerNode();
42+
node.shutdownHook();
43+
}
4444
}

servermanager-node/src/main/java/com/nexoscript/servermanager/node/console/Console.java

Lines changed: 49 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.nexoscript.servermanager.node.console;
22

3+
import java.nio.file.Path;
34
import java.util.Scanner;
45

56
import com.nexoscript.servermanager.node.server.ServerActionRunner;
@@ -9,7 +10,6 @@ public class Console {
910
private final TemplateManager templateManager;
1011
private final ServerActionRunner actionRunner;
1112
private final Scanner scanner;
12-
1313
private boolean running;
1414

1515
public Console(TemplateManager templateManager, ServerActionRunner actionRunner) {
@@ -20,58 +20,81 @@ public Console(TemplateManager templateManager, ServerActionRunner actionRunner)
2020
}
2121

2222
public void start() {
23-
System.out.println("Multi-Server Manager gestartet. Verwenden Sie 'start', 'stop', 'console', oder 'exit'.");
23+
System.out.println("Server-Manager gestartet. Verwenden Sie 'start', 'stop', 'console', 'template', oder 'exit'.");
2424
while (this.running) {
2525
String input = this.scanner.nextLine();
2626
String[] commandParts = input.split(" ", 4);
27-
if (commandParts.length < 1)
27+
if (commandParts.length < 1) {
2828
continue;
29+
}
2930
String command = commandParts[0].toLowerCase();
3031
switch (command) {
32+
case "create" -> {
33+
if (commandParts.length < 3 || commandParts[1].isBlank() || commandParts[2].isBlank()) {
34+
System.out.println("Verwendung: create <path> <template>");
35+
continue;
36+
}
37+
this.actionRunner.createServer(Path.of(commandParts[1]), commandParts[2]);
38+
}
3139
case "start" -> {
3240
if (commandParts.length < 4) {
3341
System.out.println("Verwendung: start <servername> <path> <jar>");
34-
break;
42+
continue;
3543
}
3644
this.actionRunner.startServer(commandParts[1], commandParts[2], commandParts[3]);
3745
}
3846
case "stop" -> {
3947
if (commandParts.length < 2) {
4048
System.out.println("Verwendung: stop <servername>");
41-
break;
49+
continue;
4250
}
4351
this.actionRunner.stopServer(commandParts[1]);
4452
}
4553
case "console" -> {
4654
if (commandParts.length < 2) {
4755
System.out.println("Verwendung: console <servername>");
48-
break;
56+
continue;
4957
}
5058
this.actionRunner.openConsole(this.scanner, commandParts[1]);
5159
}
52-
case "create-template" -> {
60+
case "template" -> {
5361
if (commandParts.length < 2) {
54-
System.out.println("Verwendung: create-template <name>");
55-
break;
62+
System.out.println("Verwendung: 'create', 'rename', 'delete' oder 'list'");
63+
continue;
5664
}
57-
this.templateManager.createTemplate(commandParts[1]);
58-
System.out.println("Template " + commandParts[1] + " erstellt.");
59-
}
60-
case "rename-template" -> {
61-
if (commandParts.length < 3) {
62-
System.out.println("Verwendung: rename-template <name> <newName>");
63-
break;
64-
}
65-
this.templateManager.renameTemplate(commandParts[1], commandParts[2]);
66-
System.out.println("Template " + commandParts[1] + " zu " + commandParts[2] + " umbenannt.");
67-
}
68-
case "delete-template" -> {
69-
if (commandParts.length < 2) {
70-
System.out.println("Verwendung: delete-template <name>");
71-
break;
65+
switch (commandParts[1].toLowerCase()) {
66+
case "create" -> {
67+
if (commandParts.length < 3 || commandParts[2].isBlank()) {
68+
System.out.println("Verwendung: template create <name>");
69+
continue;
70+
}
71+
this.templateManager.createTemplate(commandParts[2]);
72+
System.out.println("Template " + commandParts[2] + " erstellt.");
73+
}
74+
case "rename" -> {
75+
if (commandParts.length < 4 || commandParts[2].isBlank() || commandParts[3].isBlank()) {
76+
System.out.println("Verwendung: template rename <name> <newName>");
77+
continue;
78+
}
79+
this.templateManager.renameTemplate(commandParts[2], commandParts[3]);
80+
System.out.println("Template " + commandParts[2] + " zu " + commandParts[3] + " umbenannt.");
81+
}
82+
case "delete" -> {
83+
if (commandParts.length < 3 || commandParts[2].isBlank()) {
84+
System.out.println("Verwendung: template delete <name>");
85+
continue;
86+
}
87+
this.templateManager.deleteTemplate(commandParts[2]);
88+
System.out.println("Template " + commandParts[2] + " gelöscht.");
89+
}
90+
case "list" -> {
91+
if (this.templateManager.getTemplates().isEmpty()) {
92+
System.out.println("Keine Templates gefunden.");
93+
continue;
94+
}
95+
this.templateManager.getTemplates().forEach((name, path) -> System.out.printf("- %s -> %s%n", name, path.toString()));
96+
}
7297
}
73-
this.templateManager.deleteTemplate(commandParts[1]);
74-
System.out.println("Template " + commandParts[1] + " gelöscht.");
7598
}
7699
case "exit" -> this.running = false;
77100
default -> System.out.println("Unbekannter Befehl: " + command);

servermanager-node/src/main/java/com/nexoscript/servermanager/node/server/ServerActionRunner.java

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,56 @@
11
package com.nexoscript.servermanager.node.server;
22

33
import com.nexoscript.servermanager.node.ServerManagerNode;
4+
import com.nexoscript.servermanager.node.template.TemplateManager;
45

6+
import java.nio.file.Files;
7+
import java.nio.file.Path;
8+
import java.nio.file.StandardCopyOption;
59
import java.util.ArrayList;
610
import java.util.HashMap;
711
import java.util.Map;
812
import java.util.Scanner;
913

1014
public class ServerActionRunner {
1115
private final ServerManagerNode node;
16+
private final TemplateManager templateManager;
1217
private final Map<String, MinecraftServerProcess> servers;
1318

14-
public ServerActionRunner(ServerManagerNode node) {
19+
public ServerActionRunner(ServerManagerNode node, TemplateManager templateManager) {
1520
this.node = node;
21+
this.templateManager = templateManager;
1622
this.servers = new HashMap<>();
1723
}
1824

19-
public void createServer(String name, String templateName, String executePath) {
25+
public void createServer(Path path, String templateName) {
26+
try {
27+
if (!path.toFile().mkdirs()) {
28+
System.out.println("Konnte Pfad nicht erstellen.");
29+
return;
30+
}
31+
Path templatePath = this.templateManager.getTemplate(templateName);
32+
if (templatePath == null) {
33+
System.out.println("Template Pfad konnte nicht gefunden werden.");
34+
return;
35+
}
36+
System.out.println("[SERVER] Template-Path: " + templatePath);
37+
Files.walk(templatePath).forEach(source -> {
38+
try {
39+
Path destination = path.resolve(templatePath.relativize(source));
40+
41+
if (Files.isDirectory(source)) {
42+
Files.createDirectories(destination);
43+
return;
44+
}
2045

46+
Files.copy(source, destination, StandardCopyOption.REPLACE_EXISTING);
47+
} catch (Exception e) {
48+
System.out.println("Fehler beim Erstellen des Servers mit Pfad '" + path + "': " + e.getMessage());
49+
}
50+
});
51+
} catch (Exception e) {
52+
System.out.println("Fehler beim Erstellen des Servers mit Pfad '" + path.toString() + "': " + e.getMessage());
53+
}
2154
}
2255

2356
public void startServer(String name, String path, String jar) {

servermanager-node/src/main/java/com/nexoscript/servermanager/node/template/TemplateManager.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,4 +141,8 @@ public Path getTemplate(String name) {
141141
}
142142
return null;
143143
}
144+
145+
public Map<String, Path> getTemplates() {
146+
return templates;
147+
}
144148
}

0 commit comments

Comments
 (0)