From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Kyle Wood Date: Wed, 2 Dec 2020 21:58:45 -0800 Subject: [PATCH] Add warning for servers not running on Java 11 diff --git a/src/main/java/io/papermc/paper/util/PaperJvmChecker.java b/src/main/java/io/papermc/paper/util/PaperJvmChecker.java new file mode 100644 index 0000000000000000000000000000000000000000..c6ea429819c07e7f4bc257cad73463a030767825 --- /dev/null +++ b/src/main/java/io/papermc/paper/util/PaperJvmChecker.java @@ -0,0 +1,48 @@ +package io.papermc.paper.util; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class PaperJvmChecker { + + private static int getJvmVersion() { + String javaVersion = System.getProperty("java.version"); + final Matcher matcher = Pattern.compile("(?:1\\.)?(\\d+)").matcher(javaVersion); + if (!matcher.find()) { + LogManager.getLogger().warn("Failed to determine Java version; Could not parse: {}", javaVersion); + return -1; + } + + final String version = matcher.group(1); + try { + return Integer.parseInt(version); + } catch (final NumberFormatException e) { + LogManager.getLogger().warn("Failed to determine Java version; Could not parse {} from {}", version, javaVersion, e); + return -1; + } + } + + public static void checkJvm() { + if (getJvmVersion() < 11) { + final Logger logger = LogManager.getLogger(); + logger.warn("************************************************************"); + logger.warn("* WARNING - YOU ARE RUNNING AN OUTDATED VERSION OF JAVA."); + logger.warn("* PAPER WILL STOP BEING COMPATIBLE WITH THIS VERSION OF"); + logger.warn("* JAVA WHEN MINECRAFT 1.17 IS RELEASED."); + logger.warn("*"); + logger.warn("* Please update the version of Java you use to run Paper"); + logger.warn("* to at least Java 11. When Paper for Minecraft 1.17 is"); + logger.warn("* released support for versions of Java before 11 will"); + logger.warn("* be dropped."); + logger.warn("*"); + logger.warn("* Current Java version: {}", System.getProperty("java.version")); + logger.warn("*"); + logger.warn("* Check this forum post for more information: "); + logger.warn("* https://papermc.io/java11"); + logger.warn("************************************************************"); + } + } +} diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java index 8e5dcab795b1158e2ee957ac4532f5bdf00b6376..f5d21fd1dc74faa0414b793d8f146d2e6e4d3fd2 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -179,6 +179,7 @@ import org.bukkit.event.server.ServerLoadEvent; import co.aikar.timings.MinecraftTimings; // Paper import org.spigotmc.SlackActivityAccountant; // Spigot +import io.papermc.paper.util.PaperJvmChecker; // Paper public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant implements IMojangStatistics, ICommandListener, AutoCloseable { @@ -1063,6 +1064,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant