User: rednesto Date: 01 Apr 23 21:14 Revision: 78680be6a02fe3d7a54a32e62b14dfe7be95e84e Summary: Add option to generate paper-plugin.yml TeamCity URL: http://ci.mcdev.io:80/viewModification.html?tab=vcsModificationFiles&modId=8420&personal=false Index: src/main/kotlin/platform/bukkit/BukkitModule.kt =================================================================== --- src/main/kotlin/platform/bukkit/BukkitModule.kt (revision 2453f87c817345f79b9be1fc45b2bac3ada6eecf) +++ src/main/kotlin/platform/bukkit/BukkitModule.kt (revision 78680be6a02fe3d7a54a32e62b14dfe7be95e84e) @@ -39,7 +39,7 @@ class BukkitModule>(facet: MinecraftFacet, type: T) : AbstractModule(facet) { var pluginYml by nullable { - if (this.type == PlatformType.PAPER) { + if (moduleType is PaperModuleType) { val paperPlugin = facet.findFile("paper-plugin.yml", SourceType.RESOURCE) if (paperPlugin != null) { return@nullable paperPlugin Index: src/main/kotlin/platform/bukkit/creator/asset-steps.kt =================================================================== --- src/main/kotlin/platform/bukkit/creator/asset-steps.kt (revision 2453f87c817345f79b9be1fc45b2bac3ada6eecf) +++ src/main/kotlin/platform/bukkit/creator/asset-steps.kt (revision 78680be6a02fe3d7a54a32e62b14dfe7be95e84e) @@ -46,6 +46,7 @@ val description = data.getUserData(DescriptionStep.KEY) ?: "" val website = data.getUserData(WebsiteStep.KEY) ?: "" val mcVersion = data.getUserData(SimpleMcVersionStep.KEY) ?: return + val bukkitPlatform = data.getUserData(AbstractBukkitPlatformStep.KEY) ?: return val (packageName, className) = splitPackage(mainClass) @@ -93,9 +94,10 @@ assets.addTemplateProperties("API_VERSION" to mcVersion.take(2)) } + val (manifestPath, manifestTemplate) = bukkitPlatform.getManifest() assets.addTemplates( project, - "src/main/resources/plugin.yml" to MinecraftTemplates.BUKKIT_PLUGIN_YML_TEMPLATE, + manifestPath to manifestTemplate, "src/main/java/${mainClass.replace('.', '/')}.java" to MinecraftTemplates.BUKKIT_MAIN_CLASS_TEMPLATE, ) } Index: src/main/kotlin/platform/bukkit/creator/bukkit-platforms.kt =================================================================== --- src/main/kotlin/platform/bukkit/creator/bukkit-platforms.kt (revision 2453f87c817345f79b9be1fc45b2bac3ada6eecf) +++ src/main/kotlin/platform/bukkit/creator/bukkit-platforms.kt (revision 78680be6a02fe3d7a54a32e62b14dfe7be95e84e) @@ -13,8 +13,13 @@ import com.demonwav.mcdev.creator.buildsystem.BuildDependency import com.demonwav.mcdev.creator.buildsystem.BuildRepository import com.demonwav.mcdev.platform.PlatformType +import com.demonwav.mcdev.util.MinecraftTemplates import com.demonwav.mcdev.util.MinecraftVersions import com.demonwav.mcdev.util.SemanticVersion +import com.intellij.openapi.observable.util.bindBooleanStorage +import com.intellij.openapi.ui.validation.AFTER_GRAPH_PROPAGATION +import com.intellij.ui.dsl.builder.Panel +import com.intellij.ui.dsl.builder.bindSelected class SpigotPlatformStep(parent: BukkitPlatformStep) : AbstractBukkitPlatformStep(parent, PlatformType.SPIGOT) { override fun getRepositories(mcVersion: SemanticVersion) = listOf( @@ -38,6 +43,10 @@ ), ) + override fun getManifest(): Pair { + return "src/main/resources/plugin.yml" to MinecraftTemplates.BUKKIT_PLUGIN_YML_TEMPLATE + } + class Factory : BukkitPlatformStep.Factory { override val name = "Spigot" @@ -46,6 +55,23 @@ } class PaperPlatformStep(parent: BukkitPlatformStep) : AbstractBukkitPlatformStep(parent, PlatformType.PAPER) { + + private val usePaperManifestProperty = propertyGraph.property(false) + .bindBooleanStorage("${javaClass.name}.usePaperManifest") + + private val usePaperManifest by usePaperManifestProperty + + override fun setupUI(builder: Panel) { + super.setupUI(builder) + with(builder) { + row("Paper manifest:") { + checkBox("Use paper-plugin.yml") + .bindSelected(usePaperManifestProperty) + .validationRequestor(AFTER_GRAPH_PROPAGATION(propertyGraph)) + } + } + } + override fun getRepositories(mcVersion: SemanticVersion) = listOf( BuildRepository( "papermc-repo", @@ -73,6 +99,14 @@ ) } + override fun getManifest(): Pair { + if (usePaperManifest) { + return "src/main/resources/paper-plugin.yml" to MinecraftTemplates.PAPER_PLUGIN_YML_TEMPLATE + } + + return "src/main/resources/plugin.yml" to MinecraftTemplates.BUKKIT_PLUGIN_YML_TEMPLATE + } + class Factory : BukkitPlatformStep.Factory { override val name = "Paper" Index: src/main/kotlin/platform/bukkit/creator/gradle-steps.kt =================================================================== --- src/main/kotlin/platform/bukkit/creator/gradle-steps.kt (revision 2453f87c817345f79b9be1fc45b2bac3ada6eecf) +++ src/main/kotlin/platform/bukkit/creator/gradle-steps.kt (revision 78680be6a02fe3d7a54a32e62b14dfe7be95e84e) @@ -48,11 +48,13 @@ override fun setupAssets(project: Project) { val buildSystemProps = findStep>() val javaVersion = findStep().preferredJdk.ordinal + val (manifestPath, _) = data.getUserData(AbstractBukkitPlatformStep.KEY)!!.getManifest() assets.addTemplateProperties( "GROUP_ID" to buildSystemProps.groupId, "ARTIFACT_ID" to buildSystemProps.artifactId, "PLUGIN_VERSION" to buildSystemProps.version, "JAVA_VERSION" to javaVersion, + "MANIFEST_NAME" to manifestPath.substringAfterLast('/') ) assets.addTemplates( project, Index: src/main/kotlin/platform/bukkit/creator/ui-steps.kt =================================================================== --- src/main/kotlin/platform/bukkit/creator/ui-steps.kt (revision 2453f87c817345f79b9be1fc45b2bac3ada6eecf) +++ src/main/kotlin/platform/bukkit/creator/ui-steps.kt (revision 78680be6a02fe3d7a54a32e62b14dfe7be95e84e) @@ -93,6 +93,8 @@ abstract fun getDependencies(mcVersion: SemanticVersion): List + abstract fun getManifest(): Pair + companion object { val KEY = Key.create("${AbstractBukkitPlatformStep::class.java.name}.platform") } Index: src/main/kotlin/util/MinecraftTemplates.kt =================================================================== --- src/main/kotlin/util/MinecraftTemplates.kt (revision 2453f87c817345f79b9be1fc45b2bac3ada6eecf) +++ src/main/kotlin/util/MinecraftTemplates.kt (revision 78680be6a02fe3d7a54a32e62b14dfe7be95e84e) @@ -31,6 +31,11 @@ bukkitGroup.addTemplate(FileTemplateDescriptor(BUKKIT_POM_TEMPLATE)) } + FileTemplateGroupDescriptor("Paper", PlatformAssets.PAPER_ICON).let { paperGroup -> + group.addTemplate(paperGroup) + paperGroup.addTemplate(FileTemplateDescriptor(PAPER_PLUGIN_YML_TEMPLATE)) + } + FileTemplateGroupDescriptor("BungeeCord", PlatformAssets.BUNGEECORD_ICON).let { bungeeGroup -> group.addTemplate(bungeeGroup) bungeeGroup.addTemplate(FileTemplateDescriptor(BUNGEECORD_MAIN_CLASS_TEMPLATE)) @@ -165,6 +170,8 @@ const val BUKKIT_SETTINGS_GRADLE_TEMPLATE = "Bukkit settings.gradle" const val BUKKIT_POM_TEMPLATE = "Bukkit pom.xml" + const val PAPER_PLUGIN_YML_TEMPLATE = "Paper paper-plugin.yml" + const val BUNGEECORD_MAIN_CLASS_TEMPLATE = "BungeeCord Main Class.java" const val BUNGEECORD_PLUGIN_YML_TEMPLATE = "BungeeCord bungee.yml" const val BUNGEECORD_BUILD_GRADLE_TEMPLATE = "BungeeCord build.gradle" Index: src/main/resources/fileTemplates/j2ee/bukkit/Bukkit build.gradle.ft =================================================================== --- src/main/resources/fileTemplates/j2ee/bukkit/Bukkit build.gradle.ft (revision 2453f87c817345f79b9be1fc45b2bac3ada6eecf) +++ src/main/resources/fileTemplates/j2ee/bukkit/Bukkit build.gradle.ft (revision 78680be6a02fe3d7a54a32e62b14dfe7be95e84e) @@ -32,7 +32,7 @@ def props = [version: version] inputs.properties props filteringCharset 'UTF-8' - filesMatching('plugin.yml') { + filesMatching('${MANIFEST_NAME}') { expand props } } Index: src/main/resources/fileTemplates/j2ee/bukkit/Paper paper-plugin.yml.ft =================================================================== --- src/main/resources/fileTemplates/j2ee/bukkit/Paper paper-plugin.yml.ft (revision 78680be6a02fe3d7a54a32e62b14dfe7be95e84e) +++ src/main/resources/fileTemplates/j2ee/bukkit/Paper paper-plugin.yml.ft (revision 78680be6a02fe3d7a54a32e62b14dfe7be95e84e) @@ -0,0 +1,30 @@ +name: ${NAME} +version: '${VERSION}' +main: ${MAIN} +#if (${API_VERSION}) +api-version: ${API_VERSION} +#end +#if (${PREFIX}) +prefix: ${PREFIX} +#end +#if (${LOAD}) +load: ${LOAD} +#end +#if (${LOAD_BEFORE}) +loadbefore: ${LOAD_BEFORE} +#end +#if (${DEPEND}) +depend: ${DEPEND} +#end +#if (${SOFT_DEPEND}) +softdepend: ${SOFT_DEPEND} +#end +#if (${AUTHOR_LIST}) +authors: ${AUTHOR_LIST} +#end +#if (${DESCRIPTION}) +description: ${DESCRIPTION} +#end +#if (${WEBSITE}) +website: ${WEBSITE} +#end Index: src/main/resources/fileTemplates/j2ee/bukkit/Paper paper-plugin.yml.html =================================================================== --- src/main/resources/fileTemplates/j2ee/bukkit/Paper paper-plugin.yml.html (revision 78680be6a02fe3d7a54a32e62b14dfe7be95e84e) +++ src/main/resources/fileTemplates/j2ee/bukkit/Paper paper-plugin.yml.html (revision 78680be6a02fe3d7a54a32e62b14dfe7be95e84e) @@ -0,0 +1,15 @@ + + + + +

This is a built-in file template used to create a new paper-plugin.yml for Paper.

+ +