diff --git a/paper-api/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java b/paper-api/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java index 18f31bff31..9674914762 100644 --- a/paper-api/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java +++ b/paper-api/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java @@ -166,6 +166,7 @@ import com.google.common.collect.ImmutableMap; */ public final class PluginDescriptionFile { private static final Yaml yaml = new Yaml(new SafeConstructor()); + String rawName = null; private String name = null; private String main = null; private String classLoaderOf = null; @@ -228,6 +229,7 @@ public final class PluginDescriptionFile { *
* In the plugin.yml, this entry is named name
.
@@ -799,7 +801,7 @@ public final class PluginDescriptionFile {
private void loadMap(Map, ?> map) throws InvalidDescriptionException {
try {
- name = map.get("name").toString();
+ name = rawName = map.get("name").toString();
if (!name.matches("^[A-Za-z0-9 _.-]+$")) {
throw new InvalidDescriptionException("name '" + name + "' contains invalid characters.");
diff --git a/paper-api/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/paper-api/src/main/java/org/bukkit/plugin/SimplePluginManager.java
index 7d8a281e5b..d2fe422cad 100644
--- a/paper-api/src/main/java/org/bukkit/plugin/SimplePluginManager.java
+++ b/paper-api/src/main/java/org/bukkit/plugin/SimplePluginManager.java
@@ -135,13 +135,28 @@ public final class SimplePluginManager implements PluginManager {
if (name.equalsIgnoreCase("bukkit") || name.equalsIgnoreCase("minecraft") || name.equalsIgnoreCase("mojang")) {
server.getLogger().log(Level.SEVERE, "Could not load '" + file.getPath() + "' in folder '" + directory.getPath() + "': Restricted Name");
continue;
+ } else if (description.rawName.indexOf(' ') != -1) {
+ server.getLogger().warning(String.format(
+ "Plugin `%s' uses the space-character (0x20) in its name `%s' - this is discouraged",
+ description.getFullName(),
+ description.rawName
+ ));
}
} catch (InvalidDescriptionException ex) {
server.getLogger().log(Level.SEVERE, "Could not load '" + file.getPath() + "' in folder '" + directory.getPath() + "'", ex);
continue;
}
- plugins.put(description.getName(), file);
+ File replacedFile = plugins.put(description.getName(), file);
+ if (replacedFile != null) {
+ server.getLogger().severe(String.format(
+ "Ambiguous plugin name `%s' for files `%s' and `%s' in `%s'",
+ description.getName(),
+ file.getPath(),
+ replacedFile.getPath(),
+ directory.getPath()
+ ));
+ }
Collection