From 36ec001e8e398a7b57c10ea7d39155112084da8a Mon Sep 17 00:00:00 2001 From: Mariell Hoversholm Date: Fri, 30 Apr 2021 10:15:16 +0200 Subject: [PATCH] Add Bukkit's new `provides` field. (#8) Commit adding this field: https://hub.spigotmc.org/stash/projects/SPIGOT/repos/bukkit/commits/9f2fd967a4f914b849afe6ac287e7a595c035884#src/main/java/org/bukkit/plugin/PluginDescriptionFile.java --- README.md | 2 ++ .../kotlin/net/minecrell/pluginyml/bukkit/BukkitPlugin.kt | 4 ++++ .../net/minecrell/pluginyml/bukkit/BukkitPluginDescription.kt | 1 + 3 files changed, 7 insertions(+) diff --git a/README.md b/README.md index ad2257e..b04cab2 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ bukkit { loadBefore = ['BrokenPlugin'] prefix = 'TEST' defaultPermission = 'OP' // 'TRUE', 'FALSE', 'OP' or 'NOT_OP' + provides = ['TestPluginOldName', 'TestPlug'] commands { test { @@ -106,6 +107,7 @@ bukkit { loadBefore = listOf("BrokenPlugin") prefix = "TEST" defaultPermission = BukkitPluginDescription.Permission.Default.OP // TRUE, FALSE, OP or NOT_OP + provides = listOf("TestPluginOldName", "TestPlug") commands { "test" { diff --git a/src/main/kotlin/net/minecrell/pluginyml/bukkit/BukkitPlugin.kt b/src/main/kotlin/net/minecrell/pluginyml/bukkit/BukkitPlugin.kt index 5e1f09c..d3c1982 100644 --- a/src/main/kotlin/net/minecrell/pluginyml/bukkit/BukkitPlugin.kt +++ b/src/main/kotlin/net/minecrell/pluginyml/bukkit/BukkitPlugin.kt @@ -60,6 +60,10 @@ class BukkitPlugin : PlatformPlugin("Bukkit", "plugin.y if (alias.contains(':')) throw InvalidPluginDescriptionException("Alias '$alias' of '${command.name}' cannot contain ':'") } } + + if (description.provides?.all(VALID_NAME::matches) == false) { + throw InvalidPluginDescriptionException("Invalid plugin provides name: all should match $VALID_NAME") + } } } diff --git a/src/main/kotlin/net/minecrell/pluginyml/bukkit/BukkitPluginDescription.kt b/src/main/kotlin/net/minecrell/pluginyml/bukkit/BukkitPluginDescription.kt index 2aab159..d7e2b2f 100644 --- a/src/main/kotlin/net/minecrell/pluginyml/bukkit/BukkitPluginDescription.kt +++ b/src/main/kotlin/net/minecrell/pluginyml/bukkit/BukkitPluginDescription.kt @@ -47,6 +47,7 @@ class BukkitPluginDescription(project: Project) : Serializable { @JsonProperty("loadbefore") var loadBefore: List? = null var prefix: String? = null @JsonProperty("default-permission") var defaultPermission: Permission.Default? = null + var provides: List? = null // DSL provider for commands and permissions (not serialized) @Transient @JsonIgnore val commands: NamedDomainObjectContainer = project.container(Command::class.java)