From f16f91f469b3d160e1838f13f62268cc692f9131 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Fri, 23 Jul 2021 19:51:46 -0400
Subject: [PATCH] Check for outdated Java versions older than 16

---
 .../geysermc/connector/GeyserConnector.java   | 31 +++++++++++++++++++
 connector/src/main/resources/languages        |  2 +-
 2 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/connector/src/main/java/org/geysermc/connector/GeyserConnector.java b/connector/src/main/java/org/geysermc/connector/GeyserConnector.java
index 173e41573..1d5cd3f81 100644
--- a/connector/src/main/java/org/geysermc/connector/GeyserConnector.java
+++ b/connector/src/main/java/org/geysermc/connector/GeyserConnector.java
@@ -379,9 +379,40 @@ public class GeyserConnector {
             logger.warning(LanguageUtils.getLocaleStringLog("geyser.core.movement_warn"));
         }
 
+        checkForOutdatedJava();
+
         newsHandler.handleNews(null, NewsItemAction.ON_SERVER_STARTED);
     }
 
+    private void checkForOutdatedJava() {
+        final int supportedJavaVersion = 16;
+        // Taken from Paper
+        String javaVersion = System.getProperty("java.version");
+        Matcher matcher = Pattern.compile("(?:1\\.)?(\\d+)").matcher(javaVersion);
+        if (!matcher.find()) {
+            getLogger().debug("Could not parse Java version string " + javaVersion);
+            return;
+        }
+
+        String version = matcher.group(1);
+        int majorVersion;
+        try {
+            majorVersion = Integer.parseInt(version);
+        } catch (NumberFormatException e) {
+            getLogger().debug("Could not format as an int: " + version);
+            return;
+        }
+
+        if (majorVersion < supportedJavaVersion) {
+            getLogger().warning("*********************************************");
+            getLogger().warning("");
+            getLogger().warning(LanguageUtils.getLocaleStringLog("geyser.bootstrap.unsupported_java.header"));
+            getLogger().warning(LanguageUtils.getLocaleStringLog("geyser.bootstrap.unsupported_java.message", supportedJavaVersion, javaVersion));
+            getLogger().warning("");
+            getLogger().warning("*********************************************");
+        }
+    }
+
     public void shutdown() {
         bootstrap.getGeyserLogger().info(LanguageUtils.getLocaleStringLog("geyser.core.shutdown"));
         shuttingDown = true;
diff --git a/connector/src/main/resources/languages b/connector/src/main/resources/languages
index c8923b1f7..d0cbd4b61 160000
--- a/connector/src/main/resources/languages
+++ b/connector/src/main/resources/languages
@@ -1 +1 @@
-Subproject commit c8923b1f71c7f66621729be47dec7f911606c6a1
+Subproject commit d0cbd4b616be6c057115fdb13d75866b8452893e