928bcc8d3a
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 09943450 Update SnakeYAML version 5515734f SPIGOT-7162: Incorrect description for Entity#getVehicle javadoc 6f82b381 PR-788: Add getHand() to all relevant events CraftBukkit Changes: aaf484f6f SPIGOT-7163: CraftMerchantRecipe doesn't copy demand and specialPrice from BukkitMerchantRecipe 5329dd6fd PR-1107: Add getHand() to all relevant events 93061706e SPIGOT-7045: Ocelots never spawn with babies with spawn reason OCELOT_BABY
91 lines
5.2 KiB
Diff
91 lines
5.2 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Tue, 18 May 2021 10:38:10 -0700
|
|
Subject: [PATCH] List all missing hard depends not just first
|
|
|
|
|
|
diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
|
index 7937e240949bbaeb680098a674d27087e3f6acf8..60988665eb358d5566e9de61aec841db3f79722c 100644
|
|
--- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
|
+++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
|
@@ -258,6 +258,7 @@ public final class SimplePluginManager implements PluginManager {
|
|
|
|
if (dependencies.containsKey(plugin)) {
|
|
Iterator<String> dependencyIterator = dependencies.get(plugin).iterator();
|
|
+ final Set<String> missingHardDependencies = new HashSet<>(dependencies.get(plugin).size()); // Paper - list all missing hard depends
|
|
|
|
while (dependencyIterator.hasNext()) {
|
|
String dependency = dependencyIterator.next();
|
|
@@ -268,6 +269,12 @@ public final class SimplePluginManager implements PluginManager {
|
|
|
|
// We have a dependency not found
|
|
} else if (!plugins.containsKey(dependency) && !pluginsProvided.containsKey(dependency)) {
|
|
+ // Paper start
|
|
+ missingHardDependencies.add(dependency);
|
|
+ }
|
|
+ }
|
|
+ if (!missingHardDependencies.isEmpty()) {
|
|
+ // Paper end
|
|
missingDependency = false;
|
|
pluginIterator.remove();
|
|
softDependencies.remove(plugin);
|
|
@@ -276,9 +283,7 @@ public final class SimplePluginManager implements PluginManager {
|
|
server.getLogger().log(
|
|
Level.SEVERE,
|
|
"Could not load '" + entry.getValue().getPath() + "' in folder '" + entry.getValue().getParentFile().getPath() + "'", // Paper
|
|
- new UnknownDependencyException("Unknown dependency " + dependency + ". Please download and install " + dependency + " to run this plugin."));
|
|
- break;
|
|
- }
|
|
+ new UnknownDependencyException(missingHardDependencies, plugin)); // Paper
|
|
}
|
|
|
|
if (dependencies.containsKey(plugin) && dependencies.get(plugin).isEmpty()) {
|
|
diff --git a/src/main/java/org/bukkit/plugin/UnknownDependencyException.java b/src/main/java/org/bukkit/plugin/UnknownDependencyException.java
|
|
index a80251eff75430863b37db1c131e22593f3fcd5e..7b2e607a21f1173d98ee84581881411176380625 100644
|
|
--- a/src/main/java/org/bukkit/plugin/UnknownDependencyException.java
|
|
+++ b/src/main/java/org/bukkit/plugin/UnknownDependencyException.java
|
|
@@ -26,6 +26,19 @@ public class UnknownDependencyException extends RuntimeException {
|
|
super(message);
|
|
}
|
|
|
|
+ // Paper start
|
|
+ /**
|
|
+ * Create a new {@link UnknownDependencyException} with a message informing
|
|
+ * about which dependencies are missing for what plugin.
|
|
+ *
|
|
+ * @param missingDependencies missing dependencies
|
|
+ * @param pluginName plugin which is missing said dependencies
|
|
+ */
|
|
+ public UnknownDependencyException(final @org.jetbrains.annotations.NotNull java.util.Collection<String> missingDependencies, final @org.jetbrains.annotations.NotNull String pluginName) {
|
|
+ this("Unknown/missing dependency plugins: [" + String.join(", ", missingDependencies) + "]. Please download and install these plugins to run '" + pluginName + "'.");
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
/**
|
|
* Constructs a new UnknownDependencyException based on the given
|
|
* Exception
|
|
diff --git a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
|
|
index 4b54af83ef8fd18696d2d21ed52b61f13bff7988..8ff78fad47f6086aa289e32590f4fbec24b3d500 100644
|
|
--- a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
|
|
+++ b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
|
|
@@ -132,13 +132,19 @@ public final class JavaPluginLoader implements PluginLoader {
|
|
));
|
|
}
|
|
|
|
+ Set<String> missingHardDependencies = new HashSet<>(description.getDepend().size()); // Paper - list all missing hard depends
|
|
for (final String pluginName : description.getDepend()) {
|
|
Plugin current = server.getPluginManager().getPlugin(pluginName);
|
|
|
|
if (current == null) {
|
|
- throw new UnknownDependencyException("Unknown dependency " + pluginName + ". Please download and install " + pluginName + " to run this plugin.");
|
|
+ missingHardDependencies.add(pluginName); // Paper - list all missing hard depends
|
|
}
|
|
}
|
|
+ // Paper start - list all missing hard depends
|
|
+ if (!missingHardDependencies.isEmpty()) {
|
|
+ throw new UnknownDependencyException(missingHardDependencies, description.getFullName());
|
|
+ }
|
|
+ // Paper end
|
|
|
|
server.getUnsafe().checkSupported(description);
|
|
|