From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Spottedleaf Date: Mon, 6 Mar 2023 13:14:06 -0800 Subject: [PATCH] Require plugins to be explicitly marked as Folia supported Plugins must add "folia-supported: true" to their plugin.yml otherwise the server will refuse to load them. Since Folia is a major breakage for plugins, the vast majority of plugins will not function correctly on Folia. To prevent user confusion from this, we will refuse to load the plugin and provide a log indicating why - which will be much more helpful than some random error log caused by a breakage. diff --git a/src/main/java/io/papermc/paper/plugin/configuration/PluginMeta.java b/src/main/java/io/papermc/paper/plugin/configuration/PluginMeta.java index bcf91d048d84144f6acf9bfd2095df9ada2e585f..3072f95dc1cafb47c1820dc67c8d24991540fc4a 100644 --- a/src/main/java/io/papermc/paper/plugin/configuration/PluginMeta.java +++ b/src/main/java/io/papermc/paper/plugin/configuration/PluginMeta.java @@ -200,4 +200,12 @@ public interface PluginMeta { @Nullable String getAPIVersion(); + // Folia start - block plugins not marked as supported + /** + * Returns whether the plugin has been marked to be compatible with regionised threading as provided + * by Folia + */ + public boolean isFoliaSupported(); + // Folia end - block plugins not marked as supported + } diff --git a/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java b/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java index c0691a849831f99268fdcb7b0f471f80a1a2a70e..6f1d3935c2c398571c32e1be9786f74ec911c7bd 100644 --- a/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java +++ b/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java @@ -259,6 +259,21 @@ public final class PluginDescriptionFile implements io.papermc.paper.plugin.conf private Set awareness = ImmutableSet.of(); private String apiVersion = null; private List libraries = ImmutableList.of(); + + // Folia start - block plugins not marked as supported + private String foliaSupported; + private static final String FOLIA_SUPPORTED_KEY = "folia-supported"; + + /** + * Returns whether the plugin has been marked to be compatible with regionised threading as provided + * by Folia + */ + @Override + public boolean isFoliaSupported() { + return this.foliaSupported != null && this.foliaSupported.equalsIgnoreCase("true"); + } + // Folia end - block plugins not marked as supported + // Paper start - oh my goddddd /** * Don't use this. @@ -1242,6 +1257,11 @@ public final class PluginDescriptionFile implements io.papermc.paper.plugin.conf if (map.get("prefix") != null) { prefix = map.get("prefix").toString(); } + // Folia start - block plugins not marked as supported + if (map.get(FOLIA_SUPPORTED_KEY) != null) { + foliaSupported = map.get(FOLIA_SUPPORTED_KEY).toString(); + } + // Folia end - block plugins not marked as supported } @NotNull @@ -1318,6 +1338,11 @@ public final class PluginDescriptionFile implements io.papermc.paper.plugin.conf if (prefix != null) { map.put("prefix", prefix); } + // Folia start - block plugins not marked as supported + if (foliaSupported != null) { + map.put(FOLIA_SUPPORTED_KEY, foliaSupported); + } + // Folia end - block plugins not marked as supported return map; }