Compare commits
5 Commits
v1.4.1-bet
...
Improved-S
Author | SHA1 | Date | |
---|---|---|---|
b808d48bd3 | |||
c3ea85c20b | |||
c83b5a2edd | |||
ee99312a12 | |||
545e7bacc6 |
@ -370,17 +370,32 @@ public class Server {
|
||||
private String getJavaCommand() {
|
||||
ServerLauncherController controller = ServerLauncherController.getInstance();
|
||||
|
||||
if (serverVersion.toLowerCase().contains("latest")) {
|
||||
if (versionAtLeast("1.17")) {
|
||||
return controller.getJavaCommand();
|
||||
} else {
|
||||
return controller.getOldJavaCommand();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the current server version is at least the given version
|
||||
*
|
||||
* @param version <p>The version to require</p>
|
||||
* @return <p>True if the server version is at least the given version</p>
|
||||
*/
|
||||
private boolean versionAtLeast(String version) {
|
||||
if (serverVersion.toLowerCase().contains("latest")) {
|
||||
return true;
|
||||
} else if (serverVersion.contains(".") && serverVersion.split("\\.").length >= 2) {
|
||||
try {
|
||||
if (Integer.parseInt(serverVersion.split("\\.")[1]) >= 17) {
|
||||
return controller.getJavaCommand();
|
||||
}
|
||||
return Integer.parseInt(serverVersion.split("\\.")[0]) >=
|
||||
Integer.parseInt(version.split("\\.")[0]) &&
|
||||
Integer.parseInt(serverVersion.split("\\.")[1]) >=
|
||||
Integer.parseInt(version.split("\\.")[1]);
|
||||
} catch (NumberFormatException ignored) {
|
||||
}
|
||||
}
|
||||
return controller.getOldJavaCommand();
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -389,17 +404,7 @@ public class Server {
|
||||
* @throws IOException <p>If the process cannot be started</p>
|
||||
*/
|
||||
private void startServerProcess() throws IOException {
|
||||
ProcessBuilder builder;
|
||||
String serverPath;
|
||||
//Decide the path of the .jar file to be executed
|
||||
if (type.getName().equals("Custom")) {
|
||||
serverPath = this.path + File.separator + serverVersion;
|
||||
} else {
|
||||
serverPath = jarDirectory + this.type.getName() + serverVersion + ".jar";
|
||||
}
|
||||
builder = new ProcessBuilder(getJavaCommand(), "-Xmx" + this.maxRam, "-Xms512M",
|
||||
"-Djline.terminal=jline.UnsupportedTerminal", "-Dcom.mojang.eula.agree=true", "-jar", serverPath,
|
||||
"nogui");
|
||||
ProcessBuilder builder = new ProcessBuilder(generateServerProcessArguments());
|
||||
builder.directory(new File(this.path));
|
||||
builder.redirectErrorStream(true);
|
||||
this.process = builder.start();
|
||||
@ -417,6 +422,64 @@ public class Server {
|
||||
}, 10, 500, TimeUnit.MILLISECONDS);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates the process arguments required for starting this Minecraft server
|
||||
*
|
||||
* @return <p>The process arguments required for starting this Minecraft server</p>
|
||||
*/
|
||||
private List<String> generateServerProcessArguments() {
|
||||
//Decide the path of the .jar file to be executed
|
||||
String serverPath;
|
||||
if (type.getName().equalsIgnoreCase("Custom")) {
|
||||
serverPath = this.path + File.separator + serverVersion;
|
||||
} else {
|
||||
serverPath = jarDirectory + this.type.getName() + serverVersion + ".jar";
|
||||
}
|
||||
|
||||
List<String> processArguments = new ArrayList<>(20);
|
||||
processArguments.add(getJavaCommand());
|
||||
processArguments.add("-Xmx" + this.maxRam);
|
||||
processArguments.add("-Xms512M");
|
||||
if (versionAtLeast("1.8") && !getType().isProxy()) {
|
||||
addGarbageCollectorFlags(processArguments);
|
||||
}
|
||||
processArguments.add("-Djline.terminal=jline.UnsupportedTerminal");
|
||||
processArguments.add("-Dcom.mojang.eula.agree=true");
|
||||
processArguments.add("-jar");
|
||||
processArguments.add(serverPath);
|
||||
processArguments.add("nogui");
|
||||
return processArguments;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds garbage collector flags to the server process arguments to improve performance
|
||||
*
|
||||
* @param processArguments <p>The process arguments to add the flags to</p>
|
||||
*/
|
||||
private void addGarbageCollectorFlags(List<String> processArguments) {
|
||||
processArguments.add("-XX:+UseG1GC");
|
||||
processArguments.add("-XX:+ParallelRefProcEnabled");
|
||||
processArguments.add("-XX:MaxGCPauseMillis=200");
|
||||
processArguments.add("-XX:+UnlockExperimentalVMOptions");
|
||||
processArguments.add("-XX:+DisableExplicitGC");
|
||||
processArguments.add("-XX:+AlwaysPreTouch");
|
||||
boolean excessiveRam = Integer.parseInt(this.maxRam.substring(0, this.maxRam.length() - 1)) > 11;
|
||||
processArguments.add("-XX:G1NewSizePercent=" + (excessiveRam ? 40 : 30));
|
||||
processArguments.add("-XX:G1MaxNewSizePercent=" + (excessiveRam ? 50 : 40));
|
||||
processArguments.add("-XX:G1HeapRegionSize=" + (excessiveRam ? "16M" : "8M"));
|
||||
processArguments.add("-XX:G1ReservePercent=" + (excessiveRam ? 15 : 20));
|
||||
processArguments.add("-XX:G1HeapWastePercent=5");
|
||||
processArguments.add("-XX:G1MixedGCCountTarget=4");
|
||||
processArguments.add("-XX:InitiatingHeapOccupancyPercent=" + (excessiveRam ? 20 : 15));
|
||||
processArguments.add("-XX:G1MixedGCLiveThresholdPercent=90");
|
||||
processArguments.add("-XX:G1RSetUpdatingPauseTimePercent=5");
|
||||
processArguments.add("-XX:SurvivorRatio=32");
|
||||
processArguments.add("-XX:+PerfDisableSharedMem");
|
||||
processArguments.add("-XX:MaxTenuringThreshold=1");
|
||||
processArguments.add("-Dusing.aikars.flags=https://mcflags.emc.gs");
|
||||
processArguments.add("-Daikars.new.flags=true");
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates a single console with process output
|
||||
*
|
||||
@ -580,4 +643,5 @@ public class Server {
|
||||
this.getMaxRam()
|
||||
);
|
||||
}
|
||||
|
||||
}
|
@ -16,7 +16,7 @@ public class ServerHandler {
|
||||
* Available ram sizes. For ServerLauncherGUI combo
|
||||
*/
|
||||
private static final String[] ramList = {"512M", "1G", "2G", "3G", "4G", "5G", "6G", "7G", "8G", "9G", "10G",
|
||||
"11G", "12G", "13G", "14G", "15G", "16G"};
|
||||
"11G", "12G", "13G", "14G", "15G", "16G", "17G", "18G", "19G", "20G", "21G", "22G", "23G", "24G"};
|
||||
|
||||
private static boolean stoppingServers = false;
|
||||
private static final ServerLauncherGUI gui = Main.getController().getGUI();
|
||||
|
@ -28,7 +28,7 @@ public final class BackupUtil {
|
||||
private static boolean backupRunning = false;
|
||||
|
||||
private BackupUtil() {
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,2 +1,2 @@
|
||||
beta
|
||||
1.4.1
|
||||
1.4.3
|
|
@ -1,11 +1,11 @@
|
||||
Vanilla;Latest,Snapshot,1.17.1,1.16.5,1.15.2,1.14.4,1.13.2,1.12.2,1.11.2,1.10.2,1.9.4,1.8.9,1.7.10,1.6.4,1.5.2,1.4.7,1.3.2,1.2.5;https://launchermeta.mojang.com/mc/game/version_manifest.json;"release":";";https://s3.amazonaws.com/Minecraft.Download/versions/
|
||||
Vanilla;Latest,Snapshot,1.18.1,1.17.1,1.16.5,1.15.2,1.14.4,1.13.2,1.12.2,1.11.2,1.10.2,1.9.4,1.8.9,1.7.10,1.6.4,1.5.2,1.4.7,1.3.2,1.2.5;https://launchermeta.mojang.com/mc/game/version_manifest.json;"release":";";https://s3.amazonaws.com/Minecraft.Download/versions/
|
||||
Spigot;Latest,1.17.1,1.16.5,1.15.2,1.14.4,1.13.2,1.12.2,1.11.2,1.10.2,1.9.4,1.9.4,1.8.8,1.7.10,1.6.4-R2.1,1.5.2-R1.1,1.4.7-R1.1;https://static.knarcraft.net/archive/downloads/minecraftserverjars/Spigot/;spigot-
|
||||
Paper;1.17.1,1.16.5,1.15.2,1.14.4,1.13.2,1.12.2,1.11.2,1.10.2,1.9.4,1.8.8;https://papermc.io/api/v2/projects/paper/versions/;"builds":[;];https://papermc.io/api/v2/projects/paper/versions/
|
||||
Paper;1.18.1,1.17.1,1.16.5,1.15.2,1.14.4,1.13.2,1.12.2,1.11.2,1.10.2,1.9.4,1.8.8;https://papermc.io/api/v2/projects/paper/versions/;"builds":[;];https://papermc.io/api/v2/projects/paper/versions/
|
||||
#SpongeVanilla;1.12.2,1.11.2,1.10.2,1.8.9;https://dl-api.spongepowered.org/v1/org.spongepowered/spongevanilla/downloads?type=stable&minecraft=;"version":";",;https://repo.spongepowered.org/maven/org/spongepowered/spongevanilla/;/spongevanilla-
|
||||
Craftbukkit;Latest,1.17.1,1.16.5,1.15.2,1.14.4,1.13.2,1.12.2,1.11.2,1.10.2,1.9.4,1.8.8,1.7.10-R0.1,1.6.4-R2.0,1.5.2-R1.0,1.4.6-R0.3,1.3.2-R3.0,1.2.5-R2.0,1.1-R6,1.0.1-R1,b1.8.1,b1.7.3;https://static.knarcraft.net/archive/downloads/minecraftserverjars/Bukkit/;craftbukkit-
|
||||
#SpongeForge;1.12.2,1.11.2,1.10.2;https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads?type=stable&minecraft=;"version":";",;https://repo.spongepowered.org/maven/org/spongepowered/spongeforge/;/spongeforge-
|
||||
MCPCplus;1.6.4,1.6.2,1.5.2,1.4.7;https://static.knarcraft.net/archive/downloads/minecraftserverjars/MCPC+/;mcpcplus
|
||||
Bungee;Latest,1.7.10,1.6.4,1.5.2,1.4.7;https://ci.md-5.net/job/BungeeCord/lastSuccessfulBuild/artifact/bootstrap/target/;Artifacts of BungeeCord #; ;http://ci.md-5.net/job/BungeeCord/lastSuccessfulBuild/artifact/bootstrap/target/BungeeCord.jar;https://static.knarcraft.net/archive/downloads/minecraftserverjars/BungeeCord/;BungeeCord-
|
||||
Waterfall;1.17,1.16,1.15,1.14,1.13,1.12,1.11;https://papermc.io/api/v2/projects/waterfall/versions/;"builds":[;];https://papermc.io/api/v2/projects/waterfall/versions/
|
||||
Waterfall;1.18,1.17,1.16,1.15,1.14,1.13,1.12,1.11;https://papermc.io/api/v2/projects/waterfall/versions/;"builds":[;];https://papermc.io/api/v2/projects/waterfall/versions/
|
||||
Travertine;1.16,1.15,1.14,1.13,1.12;https://papermc.io/api/v2/projects/travertine/versions/;"builds":[;];https://papermc.io/api/v2/projects/travertine/versions/
|
||||
Custom;
|
Can't render this file because it contains an unexpected character in line 1 and column 200.
|
Reference in New Issue
Block a user