geforkt von Mirrors/Paper
cb896d4710
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 146a7e4b SPIGOT-5345: Add automatic library support CraftBukkit Changes: b1064c69 Remove sisu annotation processor from jar 32e40866 SPIGOT-6189: Persistent data disappears when calling setFacingDirection on an item frame d189f78b # 827: Trigger vanilla dimension advancements in non-main worlds 5bbb4a65 Add plumbing for automatic library support Spigot Changes: 9fb885e8 Rebuild patches
31 Zeilen
1.6 KiB
Diff
31 Zeilen
1.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Kyle Wood <demonwav@gmail.com>
|
|
Date: Fri, 4 Dec 2020 15:53:19 -0800
|
|
Subject: [PATCH] Enable multi-release plugin jars
|
|
|
|
|
|
diff --git a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
|
|
index 11e5618ff66385574ba04db0942a75227cf8eb0f..c833cee9fddd12afdfe6bde1435559819b9ad656 100644
|
|
--- a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
|
|
+++ b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
|
|
@@ -58,7 +58,18 @@ public final class PluginClassLoader extends URLClassLoader { // Spigot
|
|
this.description = description;
|
|
this.dataFolder = dataFolder;
|
|
this.file = file;
|
|
- this.jar = new JarFile(file);
|
|
+ // Paper - enable multi-release jars for Java 9+
|
|
+ JarFile jarFile;
|
|
+ try {
|
|
+ final java.lang.reflect.Method runtimeVersionMethod = JarFile.class.getMethod("runtimeVersion");
|
|
+ final Object runtimeVersion = runtimeVersionMethod.invoke(null);
|
|
+ @SuppressWarnings("JavaReflectionMemberAccess") final java.lang.reflect.Constructor<JarFile> constructor = JarFile.class.getConstructor(File.class, boolean.class, int.class, runtimeVersion.getClass());
|
|
+ jarFile = constructor.newInstance(file, true, java.util.zip.ZipFile.OPEN_READ, runtimeVersion);
|
|
+ } catch (Exception ignored) {
|
|
+ jarFile = new JarFile(file);
|
|
+ }
|
|
+ this.jar = jarFile;
|
|
+ // Paper end
|
|
this.manifest = jar.getManifest();
|
|
this.url = file.toURI().toURL();
|
|
this.libraryLoader = libraryLoader;
|