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)