minecraft_server_manager/server/api/startServer.ts
2025-03-05 09:30:09 +01:00

43 lines
1.4 KiB
TypeScript

import {getJarPath, getServerByName, getServerDirectory} from "~/types/MinecraftServer";
import {execa} from "execa";
export default defineEventHandler(async (event) => {
const body = await readBody(event);
const server_name: string = body.name
const server = getServerByName(server_name);
if(!server) {
return { message: "Server with name " + server_name + " does not exist" };
}
if (server.process) {
return { message: "Minecraft server is already running." };
}
try {
const xmsArg = `-Xms${server.maxMemory}G`
const xmxArg = `-Xmx${server.maxMemory}G`
console.log(`Starting server ${server.name} with ${xmsArg} and ${xmxArg}`);
server.process = execa('java', [xmsArg, xmxArg, '-jar', getJarPath(server), 'nogui'], {
cwd: getServerDirectory(server),
});
server.process.stdout.on('data', (data: string) => {});
server.process.stderr.on('data', (data: string) => {
const errorData = data.toString();
console.log(errorData);
});
server.process.on('exit', (code: string) => {
console.log(`Server exit signal from startServer with code ${code}`);
server.process = null;
})
return { message: "Minecraft server started." };
} catch (error: any) {
return { message: "Failed to start Minecraft server.", error: error.message };
}
});