From 4d8a5951f69072ba43d3cb4b781c1e984b69947f Mon Sep 17 00:00:00 2001 From: LOOHP Date: Fri, 11 Sep 2020 11:46:31 +0800 Subject: [PATCH] Fixed some platforms unable to read limbo version from manifest --- src/com/loohp/limbo/Limbo.java | 22 ++++++++++++++++++++-- src/com/loohp/limbo/Metrics/Metrics.java | 4 +--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/com/loohp/limbo/Limbo.java b/src/com/loohp/limbo/Limbo.java index a7eab3d..6e328db 100644 --- a/src/com/loohp/limbo/Limbo.java +++ b/src/com/loohp/limbo/Limbo.java @@ -15,10 +15,12 @@ import java.nio.channels.ReadableByteChannel; import java.nio.file.Files; import java.util.ArrayList; import java.util.Arrays; +import java.util.Enumeration; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.TreeMap; import java.util.UUID; @@ -102,6 +104,7 @@ public class Limbo { public final String serverImplementationVersion = "1.16.3"; public final int serverImplmentationProtocol = 753; + public final String limboImplementationVersion; private ServerConnection server; private Console console; @@ -140,8 +143,9 @@ public class Limbo { } else { console = new Console(System.in, System.out, System.err); } - - console.sendMessage("Loading Limbo Version " + new BufferedReader(new InputStreamReader(Limbo.class.getClassLoader().getResourceAsStream("META-INF/MANIFEST.MF"))).lines().filter(each -> each.startsWith("Limbo-Version:")).findFirst().orElse("Limbo-Version: unknown").substring(14).trim()); + + limboImplementationVersion = getLimboVersion(); + console.sendMessage("Loading Limbo Version " + limboImplementationVersion); String spName = "server.properties"; File sp = new File(spName); @@ -487,5 +491,19 @@ public class Limbo { e.printStackTrace(); } } + + private String getLimboVersion() throws IOException { + Enumeration manifests = getClass().getClassLoader().getResources("META-INF/MANIFEST.MF"); + while (manifests.hasMoreElements()) { + URL url = manifests.nextElement(); + BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream())); + Optional line = br.lines().filter(each -> each.startsWith("Limbo-Version:")).findFirst(); + br.close(); + if (line.isPresent()) { + return line.get().substring(14).trim(); + } + } + return "Unknown"; + } } diff --git a/src/com/loohp/limbo/Metrics/Metrics.java b/src/com/loohp/limbo/Metrics/Metrics.java index 95ee7b2..02b063b 100644 --- a/src/com/loohp/limbo/Metrics/Metrics.java +++ b/src/com/loohp/limbo/Metrics/Metrics.java @@ -1,12 +1,10 @@ package com.loohp.limbo.Metrics; -import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; -import java.io.InputStreamReader; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; @@ -95,7 +93,7 @@ public class Metrics { } } - limboVersion = new BufferedReader(new InputStreamReader(Limbo.class.getClassLoader().getResourceAsStream("META-INF/MANIFEST.MF"))).lines().filter(each -> each.startsWith("Limbo-Version:")).findFirst().orElse("Limbo-Version: unknown").substring(14).trim(); + limboVersion = Limbo.getInstance().limboImplementationVersion; // Load the data serverUUID = config.get("serverUuid", String.class);