diff --git a/Cache/sound1.wav b/Cache/sound1.wav index 33496f9..fdf3a4b 100644 Binary files a/Cache/sound1.wav and b/Cache/sound1.wav differ diff --git a/Cache/sound2.wav b/Cache/sound2.wav index 33496f9..fdf3a4b 100644 Binary files a/Cache/sound2.wav and b/Cache/sound2.wav differ diff --git a/Cache/sound3.wav b/Cache/sound3.wav index 33496f9..b046718 100644 Binary files a/Cache/sound3.wav and b/Cache/sound3.wav differ diff --git a/src/main/java/org/rebotted/bot/data/APIData.java b/src/main/java/org/rebotted/bot/data/APIData.java index 8d6d715..1cdd76c 100644 --- a/src/main/java/org/rebotted/bot/data/APIData.java +++ b/src/main/java/org/rebotted/bot/data/APIData.java @@ -1,5 +1,6 @@ package org.rebotted.bot.data; +import org.rebotted.archive.ASMClassLoader; import org.rebotted.archive.ClassArchive; import java.io.File; @@ -9,10 +10,10 @@ public class APIData { private final Class clazz; private final double version; private final File apiPath; - private final ClassLoader classLoader; + private final ASMClassLoader classLoader; private final ClassArchive classArchive; - public APIData(Class clazz, double version, File apiPath, ClassArchive classArchive, ClassLoader classLoader) { + public APIData(Class clazz, double version, File apiPath, ClassArchive classArchive, ASMClassLoader classLoader) { this.clazz = clazz; this.version = version; this.apiPath = apiPath; @@ -36,7 +37,7 @@ public class APIData { return apiPath; } - public ClassLoader getClassLoader() { + public ASMClassLoader getClassLoader() { return classLoader; } diff --git a/src/main/java/org/rebotted/script/loader/ScriptLoader.java b/src/main/java/org/rebotted/script/loader/ScriptLoader.java index 2a998d9..85ec2c8 100644 --- a/src/main/java/org/rebotted/script/loader/ScriptLoader.java +++ b/src/main/java/org/rebotted/script/loader/ScriptLoader.java @@ -1,5 +1,7 @@ package org.rebotted.script.loader; +import org.rebotted.archive.ASMClassLoader; +import org.rebotted.archive.ClassArchive; import org.rebotted.bot.data.APIData; import org.rebotted.directory.DirectoryManager; import org.rebotted.script.scriptdata.ScriptData; @@ -32,13 +34,17 @@ public class ScriptLoader { try { for (File file : DirectoryManager.getInstance().getRootDirectory().getSubDirectory(DirectoryManager.SCRIPTS).getFiles()) { if (file.getAbsolutePath().endsWith(".jar")) { - apiData.getClassArchive().addJar(file); + final ClassArchive classArchive = new ClassArchive(); + classArchive.inheritClassArchive(apiData.getClassArchive()); + classArchive.addJar(file); + final ASMClassLoader classLoader = new ASMClassLoader(classArchive); + classLoader.inheritClassLoader(apiData.getClassLoader()); try (JarInputStream inputStream = new JarInputStream(new FileInputStream(file))) { JarEntry jarEntry; while ((jarEntry = inputStream.getNextJarEntry()) != null) { if (jarEntry.getName().endsWith(".class") && !jarEntry.getName().contains("$")) { final String classPackage = jarEntry.getName().replace(".class", ""); - final Class clazz = apiData.getClassLoader().loadClass(classPackage.replaceAll("/", ".")); + final Class clazz = classLoader.loadClass(classPackage.replaceAll("/", ".")); if (clazz.isAnnotationPresent(ScriptManifest.class)) { final ScriptManifest manifest = clazz.getAnnotation(ScriptManifest.class); final ScriptData scriptData = new ScriptData(clazz, manifest.name(), manifest.description(), manifest.version(), manifest.author(), manifest.category(), file);