Skip to content

Commit

Permalink
load all classes from plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
exzork committed Apr 26, 2022
1 parent adb1831 commit 2bd470c
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion src/main/java/emu/grasscutter/plugin/PluginManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
import java.net.URL;
import java.net.URLClassLoader;
import java.util.*;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;

/**
* Manages the server's plugins & the event system.
Expand Down Expand Up @@ -52,13 +54,22 @@ private void loadPlugins() {
try (URLClassLoader loader = new URLClassLoader(new URL[]{url})) {
URL configFile = loader.findResource("plugin.json");
InputStreamReader fileReader = new InputStreamReader(configFile.openStream());

PluginConfig pluginConfig = Grasscutter.getGsonFactory().fromJson(fileReader, PluginConfig.class);
if(!pluginConfig.validate()) {
Utils.logObject(pluginConfig);
Grasscutter.getLogger().warn("Plugin " + plugin.getName() + " has an invalid config file.");
return;
}

JarFile jarFile = new JarFile(plugin);
Enumeration<JarEntry> entries = jarFile.entries();
while(entries.hasMoreElements()) {
JarEntry entry = entries.nextElement();
if(entry.isDirectory() || !entry.getName().endsWith(".class")) continue;
String className = entry.getName().replace(".class", "").replace("/", ".");
Class<?> clazz = loader.loadClass(className);
}

Class<?> pluginClass = loader.loadClass(pluginConfig.mainClass);
Plugin pluginInstance = (Plugin) pluginClass.getDeclaredConstructor().newInstance();
Expand Down

0 comments on commit 2bd470c

Please sign in to comment.