Call JavaPlugin#onLoad only after all ClassLoader's are created (bukkit)

This commit is contained in:
Frank van der Heijden 2021-08-04 15:55:47 +02:00
parent a84189e290
commit 90b248f321
No known key found for this signature in database
GPG key ID: B808721C2DD5B5B8

View file

@ -58,6 +58,7 @@ public class BukkitPluginManager extends AbstractPluginManager<Plugin, BukkitPlu
public PluginResults<Plugin> loadPluginDescriptions(List<BukkitPluginDescription> descriptions) { public PluginResults<Plugin> loadPluginDescriptions(List<BukkitPluginDescription> descriptions) {
PluginResults<Plugin> pluginResults = new PluginResults<>(); PluginResults<Plugin> pluginResults = new PluginResults<>();
List<Plugin> plugins = new ArrayList<>();
for (BukkitPluginDescription description : descriptions) { for (BukkitPluginDescription description : descriptions) {
String pluginId = description.getId(); String pluginId = description.getId();
@ -82,8 +83,19 @@ public class BukkitPluginManager extends AbstractPluginManager<Plugin, BukkitPlu
} }
if (plugin == null) return pluginResults.addResult(pluginId, Result.INVALID_PLUGIN); if (plugin == null) return pluginResults.addResult(pluginId, Result.INVALID_PLUGIN);
plugins.add(plugin);
Bukkit.getPluginManager().callEvent(new BukkitPluginLoadEvent(plugin, PluginEvent.Stage.PRE)); Bukkit.getPluginManager().callEvent(new BukkitPluginLoadEvent(plugin, PluginEvent.Stage.PRE));
}
for (Plugin plugin : plugins) {
String pluginId = getPluginId(plugin);
try {
plugin.onLoad(); plugin.onLoad();
} catch (Throwable th) {
th.printStackTrace();
return pluginResults.addResult(pluginId, Result.ERROR);
}
Bukkit.getPluginManager().callEvent(new BukkitPluginLoadEvent(plugin, PluginEvent.Stage.POST)); Bukkit.getPluginManager().callEvent(new BukkitPluginLoadEvent(plugin, PluginEvent.Stage.POST));
pluginResults.addResult(pluginId, plugin); pluginResults.addResult(pluginId, plugin);
} }