From 9b5fa2846f1171c7b8fc4ba015859cc473442e22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?MC=7E=E8=9B=9F=E9=BE=99?= <1610105206@qq.com> Date: Tue, 23 Jul 2024 15:00:52 +0800 Subject: [PATCH] =?UTF-8?q?Experimental=20|=20=E4=BF=AE=E5=A4=8D&=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E4=BE=B5=E5=85=A5=E5=BC=8F=E7=B1=BB=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E5=99=A8=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../compat/inject/IntrusiveClassLoader.java | 15 --------------- .../compat/inject/IntrusiveCompat.java | 10 ++++++---- .../classloader/IsolatedClassLoader.java | 8 ++++++-- .../java/cn/fd/ratziel/core/env/CoreEnv.java | 2 +- .../Mythic-Dist-5.7.0-20240720.181254-102.jar | Bin 0 -> 16849418 bytes .../fd/ratziel/module/item/nms/RefItemMeta.kt | 10 +++++----- .../fd/ratziel/script/impl/SimpleScript.java | 2 +- 7 files changed, 19 insertions(+), 28 deletions(-) create mode 100644 project/module-item/libs/Mythic-Dist-5.7.0-20240720.181254-102.jar diff --git a/project/module-compat-inject/src/main/java/cn/fd/ratziel/compat/inject/IntrusiveClassLoader.java b/project/module-compat-inject/src/main/java/cn/fd/ratziel/compat/inject/IntrusiveClassLoader.java index 67b5a6b2..9b28921e 100644 --- a/project/module-compat-inject/src/main/java/cn/fd/ratziel/compat/inject/IntrusiveClassLoader.java +++ b/project/module-compat-inject/src/main/java/cn/fd/ratziel/compat/inject/IntrusiveClassLoader.java @@ -23,21 +23,6 @@ public final class IntrusiveClassLoader extends ClassLoader { this.ACCESS_GROUP_NAME = groupName; } - // START::Providers - - private final NavigableMap> providers = Collections.synchronizedNavigableMap(new TreeMap<>()); - - public boolean addProvider(ClassProvider provider, byte priority) { - return providers.computeIfAbsent(priority, key -> Collections.emptyList()).add(provider); - } - - public void removeProvider(ClassProvider provider) { - for (List list : providers.values()) { - list.remove(provider); - } - } - // END::Providers - @Override public Class loadClass(String name) throws ClassNotFoundException { return this.loadClass(name, false); diff --git a/project/module-compat-inject/src/main/java/cn/fd/ratziel/compat/inject/IntrusiveCompat.java b/project/module-compat-inject/src/main/java/cn/fd/ratziel/compat/inject/IntrusiveCompat.java index bb0d032e..f36bade8 100644 --- a/project/module-compat-inject/src/main/java/cn/fd/ratziel/compat/inject/IntrusiveCompat.java +++ b/project/module-compat-inject/src/main/java/cn/fd/ratziel/compat/inject/IntrusiveCompat.java @@ -14,12 +14,14 @@ */ public final class IntrusiveCompat { - private IntrusiveCompat() { + private IntrusiveCompat(ClassLoader pluginClassLoader, ClassLoader globalClassLoader) { + this.PLUGIN_CLASS_LOADER = pluginClassLoader; + this.GLOBAL_CLASS_LOADER = globalClassLoader; } - public static ClassLoader PLUGIN_CLASS_LOADER = IsolatedClassLoader.INSTANCE.getParent(); + public static ClassLoader PLUGIN_CLASS_LOADER; - public static ClassLoader GLOBAL_CLASS_LOADER = PLUGIN_CLASS_LOADER.getParent(); + public static ClassLoader GLOBAL_CLASS_LOADER; public static ClassLoader INTRUSIVE_CLASSLOADER; @@ -35,7 +37,7 @@ private IntrusiveCompat() { } } - private static void inject() throws Throwable { + private void inject() throws Throwable { // 类加载器示例 INTRUSIVE_CLASSLOADER = new IntrusiveClassLoader(GLOBAL_CLASS_LOADER, PLUGIN_GROUP_NAME); // 隔离模式下注入类加载器 diff --git a/project/module-compat-inject/src/main/java/taboolib/common/classloader/IsolatedClassLoader.java b/project/module-compat-inject/src/main/java/taboolib/common/classloader/IsolatedClassLoader.java index a2572385..758992fa 100644 --- a/project/module-compat-inject/src/main/java/taboolib/common/classloader/IsolatedClassLoader.java +++ b/project/module-compat-inject/src/main/java/taboolib/common/classloader/IsolatedClassLoader.java @@ -34,12 +34,16 @@ public static void init(Class clazz) { Object delegateObject = delegateClass.getConstructor().newInstance(); delegateClass.getMethod("init").invoke(delegateObject); // ::Start:: 注入 + // Load Injector Class injectClass = Class.forName("cn.fd.ratziel.compat.inject.IntrusiveCompat", true, INSTANCE); + // Inject Method injectMethod = injectClass.getDeclaredMethod("inject"); - Constructor injectConstructor = injectClass.getDeclaredConstructor(); + Constructor injectConstructor = injectClass.getDeclaredConstructor(ClassLoader.class, ClassLoader.class); injectMethod.setAccessible(true); injectConstructor.setAccessible(true); - injectMethod.invoke(injectConstructor.newInstance()); + ClassLoader pluginClassLoader = INSTANCE.getParent(); + ClassLoader globalClassLoader = pluginClassLoader.getParent(); + injectMethod.invoke(injectConstructor.newInstance(pluginClassLoader, globalClassLoader)); // ::End:: } catch (Exception e) { throw new RuntimeException(e); diff --git a/project/module-core/src/main/java/cn/fd/ratziel/core/env/CoreEnv.java b/project/module-core/src/main/java/cn/fd/ratziel/core/env/CoreEnv.java index 85e5ff7b..3a74064c 100644 --- a/project/module-core/src/main/java/cn/fd/ratziel/core/env/CoreEnv.java +++ b/project/module-core/src/main/java/cn/fd/ratziel/core/env/CoreEnv.java @@ -10,7 +10,7 @@ * @since 2023/8/23 16:20 */ @RuntimeDependencies({ - @RuntimeDependency(value = "!org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.1", test = "!kotlinx.serialization.KSerializer", transitive = false), + @RuntimeDependency(value = "!org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.1", test = "!kotlinx.serialization.StringFormat", transitive = false), @RuntimeDependency(value = "!org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.1", test = "!kotlinx.serialization.json.JsonElement", transitive = false) }) public class CoreEnv { diff --git a/project/module-item/libs/Mythic-Dist-5.7.0-20240720.181254-102.jar b/project/module-item/libs/Mythic-Dist-5.7.0-20240720.181254-102.jar new file mode 100644 index 0000000000000000000000000000000000000000..a2fea950b41041be2931be3ba33fd9ca2f71ff8c GIT binary patch literal 16849418 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