Clear plugin metadata only after onDisable()

Fixes GH-776
This commit is contained in:
Zach Brown
2017-07-15 14:38:16 -05:00
parent 3ecd084ba8
commit 91fbee7d15
6 changed files with 32 additions and 28 deletions

View File

@@ -7,22 +7,26 @@ Metadata is not meant to persist reload as things break badly with non primitive
This will remove metadata on reload so it does not crash everything if a plugin uses it.
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index b8f907038..f7aa5fb8a 100644
index b8f90703..d4de72c8 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -0,0 +0,0 @@ public final class CraftServer implements Server {
world.paperConfig.init(); // Paper
}
+ Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper
pluginManager.clearPlugins();
commandMap.clearCommands();
+
+ // Paper start
+ for (Plugin plugin : pluginManager.getPlugins()) {
+ for (Plugin plugin : pluginClone) {
+ entityMetadata.removeAll(plugin);
+ worldMetadata.removeAll(plugin);
+ playerMetadata.removeAll(plugin);
+ }
+ // Paper end
+
pluginManager.clearPlugins();
commandMap.clearCommands();
resetRecipes();
reloadData();
org.spigotmc.SpigotConfig.registerCommands(); // Spigot
--