Implement Velocity changes

This commit is contained in:
2026-06-11 23:50:34 +02:00
parent f5ac006c0c
commit b36464e69e
3 changed files with 19 additions and 8 deletions
@@ -63,7 +63,7 @@ public abstract class Node {
nodes.forEach(consumer); nodes.forEach(consumer);
} }
public abstract ProcessBuilder startServer(String serverJar, File directory, String worldDir, String levelName, int port, String... dParams); public abstract ProcessBuilder startServer(ServerVersion version, File directory, String worldDir, String levelName, int port, String... dParams);
protected abstract ProcessBuilder prepareExecution(String... command); protected abstract ProcessBuilder prepareExecution(String... command);
@@ -97,7 +97,8 @@ public abstract class Node {
return hostname; return hostname;
} }
protected void constructServerstart(File directory, List<String> cmd, String serverJar, String worldDir, String levelName, int port, String... dParams) { protected void constructServerstart(File directory, List<String> cmd, ServerVersion version, String worldDir, String levelName, int port, String... dParams) {
String serverJar = version.getServerJar();
if (JAVA_8.contains(serverJar)) { if (JAVA_8.contains(serverJar)) {
cmd.add("/usr/lib/jvm/openj9-8/bin/java"); cmd.add("/usr/lib/jvm/openj9-8/bin/java");
} else { } else {
@@ -107,6 +108,10 @@ public abstract class Node {
for (String param : dParams) { for (String param : dParams) {
cmd.add("-D" + param); cmd.add("-D" + param);
} }
if (version.isExtendedStartup()) {
cmd.add("-Dpaper.disablePluginRemapping=true");
cmd.add("-javaagent:/jars/AccessWidener.jar=start");
}
cmd.add("-Xshareclasses:nonfatal,name=" + directory.getName()); cmd.add("-Xshareclasses:nonfatal,name=" + directory.getName());
cmd.add("-Xmx768M"); cmd.add("-Xmx768M");
cmd.addAll(OPENJ9_ARGS); cmd.addAll(OPENJ9_ARGS);
@@ -145,9 +150,9 @@ public abstract class Node {
} }
@Override @Override
public ProcessBuilder startServer(String serverJar, File directory, String worldDir, String levelName, int port, String... dParams) { public ProcessBuilder startServer(ServerVersion version, File directory, String worldDir, String levelName, int port, String... dParams) {
List<String> cmd = new ArrayList<>(); List<String> cmd = new ArrayList<>();
constructServerstart(directory, cmd, serverJar, worldDir, levelName, port, dParams); constructServerstart(directory, cmd, version, worldDir, levelName, port, dParams);
ProcessBuilder builder = new ProcessBuilder(cmd); ProcessBuilder builder = new ProcessBuilder(cmd);
builder.directory(directory); builder.directory(directory);
return builder; return builder;
@@ -177,7 +182,7 @@ public abstract class Node {
} }
@Override @Override
public ProcessBuilder startServer(String serverJar, File directory, String worldDir, String levelName, int port, String... dParams) { public ProcessBuilder startServer(ServerVersion version, File directory, String worldDir, String levelName, int port, String... dParams) {
List<String> cmd = new ArrayList<>(); List<String> cmd = new ArrayList<>();
cmd.add("ssh"); cmd.add("ssh");
cmd.add("-L"); cmd.add("-L");
@@ -186,7 +191,7 @@ public abstract class Node {
cmd.add("cd"); cmd.add("cd");
cmd.add(directory.getPath()); cmd.add(directory.getPath());
cmd.add(";"); cmd.add(";");
constructServerstart(directory, cmd, serverJar, worldDir, levelName, port, dParams); constructServerstart(directory, cmd, version, worldDir, levelName, port, dParams);
return new ProcessBuilder(cmd); return new ProcessBuilder(cmd);
} }
@@ -325,7 +325,7 @@ public class ServerStarter {
private void regularStart(String serverName, int port) { private void regularStart(String serverName, int port) {
postStart(constructor.construct(serverName, port, node.startServer( postStart(constructor.construct(serverName, port, node.startServer(
version.getServerJar(), directory, worldDir, worldName, port, arguments.entrySet().stream().map(entry -> entry.getKey() + "=" + entry.getValue()).toArray(String[]::new) version, directory, worldDir, worldName, port, arguments.entrySet().stream().map(entry -> entry.getKey() + "=" + entry.getValue()).toArray(String[]::new)
), worldCleanup, null)); ), worldCleanup, null));
} }
@@ -23,6 +23,7 @@ import com.velocitypowered.api.network.ProtocolVersion;
import de.steamwar.sql.GameModeConfig; import de.steamwar.sql.GameModeConfig;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.io.File; import java.io.File;
import java.util.HashMap; import java.util.HashMap;
@@ -33,6 +34,7 @@ import java.util.regex.Pattern;
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
@RequiredArgsConstructor
public enum ServerVersion { public enum ServerVersion {
SPIGOT_8("spigot-1.8.8.jar", 8, ProtocolVersion.MINECRAFT_1_8), SPIGOT_8("spigot-1.8.8.jar", 8, ProtocolVersion.MINECRAFT_1_8),
SPIGOT_9("spigot-1.9.4.jar", 9, ProtocolVersion.MINECRAFT_1_9), SPIGOT_9("spigot-1.9.4.jar", 9, ProtocolVersion.MINECRAFT_1_9),
@@ -47,7 +49,7 @@ public enum ServerVersion {
PAPER_18("paper-1.18.2.jar", 15, ProtocolVersion.MINECRAFT_1_18_2), PAPER_18("paper-1.18.2.jar", 15, ProtocolVersion.MINECRAFT_1_18_2),
PAPER_19("paper-1.19.3.jar", 19, ProtocolVersion.MINECRAFT_1_19_3), PAPER_19("paper-1.19.3.jar", 19, ProtocolVersion.MINECRAFT_1_19_3),
PAPER_20("paper-1.20.1.jar", 20, ProtocolVersion.MINECRAFT_1_20), PAPER_20("paper-1.20.1.jar", 20, ProtocolVersion.MINECRAFT_1_20),
PAPER_21("paper-1.21.6.jar", 21, ProtocolVersion.MINECRAFT_1_21_6); PAPER_21("paper-1.21.6.jar", 21, ProtocolVersion.MINECRAFT_1_21_6, true);
private static final Map<String, ServerVersion> chatMap = new HashMap<>(); private static final Map<String, ServerVersion> chatMap = new HashMap<>();
@@ -104,6 +106,10 @@ public enum ServerVersion {
private final String serverJar; private final String serverJar;
private final int versionSuffix; private final int versionSuffix;
private final ProtocolVersion protocolVersion; private final ProtocolVersion protocolVersion;
/**
* Adding AccessWidener agent and setting System Property (paper.disablePluginRemapping) to true
*/
private boolean extendedStartup;
public String getWorldFolder(String base) { public String getWorldFolder(String base) {
return base + versionSuffix + "/"; return base + versionSuffix + "/";