From 824110c9bc8907fc068a2f80728e49e05b1922a9 Mon Sep 17 00:00:00 2001 From: samue Date: Tue, 7 Sep 2021 20:09:09 +0100 Subject: [PATCH 1/5] Improved Update Folder behaviour, it now replaces based on the plugin name rather than the file name. The name of the file after the replacement is the name of the file in the update folder. --- .../0332-Update-Folder-Uses-Plugin-Name.patch | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 patches/api/0332-Update-Folder-Uses-Plugin-Name.patch diff --git a/patches/api/0332-Update-Folder-Uses-Plugin-Name.patch b/patches/api/0332-Update-Folder-Uses-Plugin-Name.patch new file mode 100644 index 000000000000..0c784b2922b2 --- /dev/null +++ b/patches/api/0332-Update-Folder-Uses-Plugin-Name.patch @@ -0,0 +1,82 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: samue +Date: Tue, 7 Sep 2021 18:11:37 +0100 +Subject: [PATCH] Update-Folder-Uses-Plugin-Name + + +diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java +index 0e25119564dfa9cb12f3c5dc5f653d7f2c147a9d..6ba0cc987a59def5817619b94e0ae2222c788812 100644 +--- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java ++++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java +@@ -399,7 +399,7 @@ public final class SimplePluginManager implements PluginManager { + public synchronized Plugin loadPlugin(@NotNull File file) throws InvalidPluginException, UnknownDependencyException { + Validate.notNull(file, "File cannot be null"); + +- checkUpdate(file); ++ file = checkUpdate(file); + + Set filters = fileAssociations.keySet(); + Plugin result = null; +@@ -410,7 +410,6 @@ public final class SimplePluginManager implements PluginManager { + + if (match.find()) { + PluginLoader loader = fileAssociations.get(filter); +- + result = loader.loadPlugin(file); + } + } +@@ -426,15 +425,49 @@ public final class SimplePluginManager implements PluginManager { + return result; + } + +- private void checkUpdate(@NotNull File file) { ++ /** ++ * Replaces a plugin with a plugin of the same plugin name in the update folder. ++ * @param file ++ * @throws InvalidPluginException ++ */ ++ private File checkUpdate(@NotNull File file) throws InvalidPluginException { + if (updateDirectory == null || !updateDirectory.isDirectory()) { +- return; ++ return file; ++ } ++ PluginLoader pluginLoader = getPluginLoader(file); ++ try { ++ String pluginName = pluginLoader.getPluginDescription(file).getName(); ++ for (File updateFile : updateDirectory.listFiles()) { ++ if (updateFile.isFile()) { ++ PluginLoader updatePluginLoader = getPluginLoader(updateFile); ++ String updatePluginName = updatePluginLoader.getPluginDescription(updateFile).getName(); ++ if (pluginName.equals(updatePluginName)) { ++ if (FileUtil.copy(updateFile, file)) { ++ File newName = new File(file.getParentFile(), updateFile.getName()); ++ file.renameTo(newName); ++ updateFile.delete(); ++ return newName; ++ } ++ } ++ } ++ } ++ } ++ catch (InvalidDescriptionException e) { ++ throw new InvalidPluginException(e); + } ++ return file; ++ } + +- File updateFile = new File(updateDirectory, file.getName()); +- if (updateFile.isFile() && FileUtil.copy(updateFile, file)) { +- updateFile.delete(); ++ @Nullable ++ private PluginLoader getPluginLoader(File file) throws InvalidPluginException { ++ Set filters = fileAssociations.keySet(); ++ for (Pattern filter : filters) { ++ Matcher match = filter.matcher(file.getName()); ++ if (match.find()) { ++ return fileAssociations.get(filter); ++ } + } ++ return null; + } + + /** From c459b378a022921e311cb73235a93181860b99dc Mon Sep 17 00:00:00 2001 From: samue Date: Tue, 7 Sep 2021 20:42:39 +0100 Subject: [PATCH 2/5] Added Paper comments --- patches/api/0332-Update-Folder-Uses-Plugin-Name.patch | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/patches/api/0332-Update-Folder-Uses-Plugin-Name.patch b/patches/api/0332-Update-Folder-Uses-Plugin-Name.patch index 0c784b2922b2..a10d7be11104 100644 --- a/patches/api/0332-Update-Folder-Uses-Plugin-Name.patch +++ b/patches/api/0332-Update-Folder-Uses-Plugin-Name.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Update-Folder-Uses-Plugin-Name diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java -index 0e25119564dfa9cb12f3c5dc5f653d7f2c147a9d..6ba0cc987a59def5817619b94e0ae2222c788812 100644 +index 0e25119564dfa9cb12f3c5dc5f653d7f2c147a9d..890fb7c90c762b4a0864a6752c23506e9d6a8ffc 100644 --- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java +++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java @@ -399,7 +399,7 @@ public final class SimplePluginManager implements PluginManager { @@ -13,7 +13,7 @@ index 0e25119564dfa9cb12f3c5dc5f653d7f2c147a9d..6ba0cc987a59def5817619b94e0ae222 Validate.notNull(file, "File cannot be null"); - checkUpdate(file); -+ file = checkUpdate(file); ++ file = checkUpdate(file); //Paper - update the reference in case checkUpdate renamed it Set filters = fileAssociations.keySet(); Plugin result = null; @@ -25,11 +25,12 @@ index 0e25119564dfa9cb12f3c5dc5f653d7f2c147a9d..6ba0cc987a59def5817619b94e0ae222 result = loader.loadPlugin(file); } } -@@ -426,15 +425,49 @@ public final class SimplePluginManager implements PluginManager { +@@ -426,16 +425,52 @@ public final class SimplePluginManager implements PluginManager { return result; } - private void checkUpdate(@NotNull File file) { ++ //Paper start - Update Folder Uses Plugin Name to replace + /** + * Replaces a plugin with a plugin of the same plugin name in the update folder. + * @param file @@ -78,5 +79,7 @@ index 0e25119564dfa9cb12f3c5dc5f653d7f2c147a9d..6ba0cc987a59def5817619b94e0ae222 } + return null; } ++ //Paper end /** + * Checks if the given plugin is loaded and returns it when applicable From 6daabaf7f8057084b514b970cfab3a58805f39cc Mon Sep 17 00:00:00 2001 From: samue Date: Tue, 7 Sep 2021 21:55:22 +0100 Subject: [PATCH 3/5] Ignore null plugin loaders as this means the file extension isn't valid --- patches/api/0332-Update-Folder-Uses-Plugin-Name.patch | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/patches/api/0332-Update-Folder-Uses-Plugin-Name.patch b/patches/api/0332-Update-Folder-Uses-Plugin-Name.patch index a10d7be11104..163b503d2b6c 100644 --- a/patches/api/0332-Update-Folder-Uses-Plugin-Name.patch +++ b/patches/api/0332-Update-Folder-Uses-Plugin-Name.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Update-Folder-Uses-Plugin-Name diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java -index 0e25119564dfa9cb12f3c5dc5f653d7f2c147a9d..890fb7c90c762b4a0864a6752c23506e9d6a8ffc 100644 +index 0e25119564dfa9cb12f3c5dc5f653d7f2c147a9d..26fa23f72a10d96701560554e7cbf6b89806a1ad 100644 --- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java +++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java @@ -399,7 +399,7 @@ public final class SimplePluginManager implements PluginManager { @@ -25,7 +25,7 @@ index 0e25119564dfa9cb12f3c5dc5f653d7f2c147a9d..890fb7c90c762b4a0864a6752c23506e result = loader.loadPlugin(file); } } -@@ -426,16 +425,52 @@ public final class SimplePluginManager implements PluginManager { +@@ -426,16 +425,53 @@ public final class SimplePluginManager implements PluginManager { return result; } @@ -47,6 +47,7 @@ index 0e25119564dfa9cb12f3c5dc5f653d7f2c147a9d..890fb7c90c762b4a0864a6752c23506e + for (File updateFile : updateDirectory.listFiles()) { + if (updateFile.isFile()) { + PluginLoader updatePluginLoader = getPluginLoader(updateFile); ++ if (updatePluginLoader == null) continue; + String updatePluginName = updatePluginLoader.getPluginDescription(updateFile).getName(); + if (pluginName.equals(updatePluginName)) { + if (FileUtil.copy(updateFile, file)) { @@ -69,7 +70,7 @@ index 0e25119564dfa9cb12f3c5dc5f653d7f2c147a9d..890fb7c90c762b4a0864a6752c23506e - if (updateFile.isFile() && FileUtil.copy(updateFile, file)) { - updateFile.delete(); + @Nullable -+ private PluginLoader getPluginLoader(File file) throws InvalidPluginException { ++ private PluginLoader getPluginLoader(File file) { + Set filters = fileAssociations.keySet(); + for (Pattern filter : filters) { + Matcher match = filter.matcher(file.getName()); From 665fb2a9bbadfff50e956632d46b142847397b19 Mon Sep 17 00:00:00 2001 From: samue Date: Tue, 7 Sep 2021 22:00:14 +0100 Subject: [PATCH 4/5] Added spaces to beginning of paper comments --- .../api/0332-Update-Folder-Uses-Plugin-Name.patch | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/patches/api/0332-Update-Folder-Uses-Plugin-Name.patch b/patches/api/0332-Update-Folder-Uses-Plugin-Name.patch index 163b503d2b6c..7e6ea2aa82d9 100644 --- a/patches/api/0332-Update-Folder-Uses-Plugin-Name.patch +++ b/patches/api/0332-Update-Folder-Uses-Plugin-Name.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Update-Folder-Uses-Plugin-Name diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java -index 0e25119564dfa9cb12f3c5dc5f653d7f2c147a9d..26fa23f72a10d96701560554e7cbf6b89806a1ad 100644 +index 0e25119564dfa9cb12f3c5dc5f653d7f2c147a9d..3e3ec3de79b0ea4ed99ea354403ccc92510f60f1 100644 --- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java +++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java @@ -399,7 +399,7 @@ public final class SimplePluginManager implements PluginManager { @@ -13,7 +13,7 @@ index 0e25119564dfa9cb12f3c5dc5f653d7f2c147a9d..26fa23f72a10d96701560554e7cbf6b8 Validate.notNull(file, "File cannot be null"); - checkUpdate(file); -+ file = checkUpdate(file); //Paper - update the reference in case checkUpdate renamed it ++ file = checkUpdate(file); // Paper - update the reference in case checkUpdate renamed it Set filters = fileAssociations.keySet(); Plugin result = null; @@ -30,7 +30,7 @@ index 0e25119564dfa9cb12f3c5dc5f653d7f2c147a9d..26fa23f72a10d96701560554e7cbf6b8 } - private void checkUpdate(@NotNull File file) { -+ //Paper start - Update Folder Uses Plugin Name to replace ++ // Paper start - Update Folder Uses Plugin Name to replace + /** + * Replaces a plugin with a plugin of the same plugin name in the update folder. + * @param file @@ -59,10 +59,10 @@ index 0e25119564dfa9cb12f3c5dc5f653d7f2c147a9d..26fa23f72a10d96701560554e7cbf6b8 + } + } + } -+ } + } + catch (InvalidDescriptionException e) { + throw new InvalidPluginException(e); - } ++ } + return file; + } @@ -80,7 +80,7 @@ index 0e25119564dfa9cb12f3c5dc5f653d7f2c147a9d..26fa23f72a10d96701560554e7cbf6b8 } + return null; } -+ //Paper end ++ // Paper end /** * Checks if the given plugin is loaded and returns it when applicable From 2dc20f4420b325f9c769ccf269db80120c1c2a7e Mon Sep 17 00:00:00 2001 From: samue Date: Tue, 7 Sep 2021 23:23:22 +0100 Subject: [PATCH 5/5] readded new line to minimise diff --- .../api/0332-Update-Folder-Uses-Plugin-Name.patch | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/patches/api/0332-Update-Folder-Uses-Plugin-Name.patch b/patches/api/0332-Update-Folder-Uses-Plugin-Name.patch index 7e6ea2aa82d9..395a20f6cd67 100644 --- a/patches/api/0332-Update-Folder-Uses-Plugin-Name.patch +++ b/patches/api/0332-Update-Folder-Uses-Plugin-Name.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Update-Folder-Uses-Plugin-Name diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java -index 0e25119564dfa9cb12f3c5dc5f653d7f2c147a9d..3e3ec3de79b0ea4ed99ea354403ccc92510f60f1 100644 +index 0e25119564dfa9cb12f3c5dc5f653d7f2c147a9d..e8b3e3bdebb447a12f67642cd914d52cbee10c65 100644 --- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java +++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java @@ -399,7 +399,7 @@ public final class SimplePluginManager implements PluginManager { @@ -17,15 +17,7 @@ index 0e25119564dfa9cb12f3c5dc5f653d7f2c147a9d..3e3ec3de79b0ea4ed99ea354403ccc92 Set filters = fileAssociations.keySet(); Plugin result = null; -@@ -410,7 +410,6 @@ public final class SimplePluginManager implements PluginManager { - - if (match.find()) { - PluginLoader loader = fileAssociations.get(filter); -- - result = loader.loadPlugin(file); - } - } -@@ -426,16 +425,53 @@ public final class SimplePluginManager implements PluginManager { +@@ -426,16 +426,53 @@ public final class SimplePluginManager implements PluginManager { return result; }