User: rednesto Date: 07 Jul 23 11:54 Revision: 6eb594b79f483ba96b4338b0cdc6c9250d7c7dd4 Summary: Properly handle class names with no package Fixes minecraft-dev/mcdev-error-report#1038 Fixes minecraft-dev/mcdev-error-report#833 TeamCity URL: https://ci.mcdev.io/viewModification.html?tab=vcsModificationFiles&modId=8592&personal=false Index: src/main/kotlin/creator/creator-utils.kt =================================================================== --- src/main/kotlin/creator/creator-utils.kt (revision a8ecce5f714a903ab5ee989502bade8a68e412c0) +++ src/main/kotlin/creator/creator-utils.kt (revision 6eb594b79f483ba96b4338b0cdc6c9250d7c7dd4) @@ -66,8 +66,12 @@ addTemplates(project, "LICENSE" to "${license.id}.txt") } -fun splitPackage(text: String): Pair { +fun splitPackage(text: String): Pair { val index = text.lastIndexOf('.') + if (index == -1) { + return null to text + } + val className = text.substring(index + 1) val packageName = text.substring(0, index) return packageName to className Index: src/main/kotlin/creator/step/FixedAssetsNewProjectWizardStep.kt =================================================================== --- src/main/kotlin/creator/step/FixedAssetsNewProjectWizardStep.kt (revision a8ecce5f714a903ab5ee989502bade8a68e412c0) +++ src/main/kotlin/creator/step/FixedAssetsNewProjectWizardStep.kt (revision 6eb594b79f483ba96b4338b0cdc6c9250d7c7dd4) @@ -51,7 +51,7 @@ abstract class FixedAssetsNewProjectWizardStep(parent: NewProjectWizardStep) : AbstractNewProjectWizardStep(parent) { lateinit var outputDirectory: String private val assets = arrayListOf() - val templateProperties = hashMapOf() + val templateProperties = hashMapOf() private val filesToOpen = hashSetOf() fun addAssets(vararg assets: Any) = addAssets(assets.toList()) @@ -66,9 +66,9 @@ } } - fun addTemplateProperties(vararg properties: Pair) = addTemplateProperties(properties.toMap()) + fun addTemplateProperties(vararg properties: Pair) = addTemplateProperties(properties.toMap()) - fun addTemplateProperties(properties: Map) = templateProperties.putAll(properties) + fun addTemplateProperties(properties: Map) = templateProperties.putAll(properties) fun addFilesToOpen(vararg relativeCanonicalPaths: String) = addFilesToOpen(relativeCanonicalPaths.toList()) Index: src/main/kotlin/platform/forge/creator/asset-steps.kt =================================================================== --- src/main/kotlin/platform/forge/creator/asset-steps.kt (revision a8ecce5f714a903ab5ee989502bade8a68e412c0) +++ src/main/kotlin/platform/forge/creator/asset-steps.kt (revision 6eb594b79f483ba96b4338b0cdc6c9250d7c7dd4) @@ -53,7 +53,8 @@ override fun setupAssets(project: Project) { val mcVersion = data.getUserData(ForgeVersionChainStep.MC_VERSION_KEY) ?: return val forgeVersion = data.getUserData(ForgeVersionChainStep.FORGE_VERSION_KEY) ?: return - val (mainPackageName, mainClassName) = splitPackage(data.getUserData(MainClassStep.KEY) ?: return) + val mainClass = data.getUserData(MainClassStep.KEY) ?: return + val (mainPackageName, mainClassName) = splitPackage(mainClass) val buildSystemProps = findStep>() val modName = data.getUserData(AbstractModNameStep.KEY) ?: return val license = data.getUserData(LicenseStep.KEY) ?: return @@ -113,7 +114,7 @@ assets.addTemplates( project, - "src/main/java/${mainPackageName.replace('.', '/')}/$mainClassName.java" to mainClassTemplate, + "src/main/java/${mainClass.replace('.', '/')}.java" to mainClassTemplate, "src/main/resources/pack.mcmeta" to MinecraftTemplates.PACK_MCMETA_TEMPLATE, "src/main/resources/META-INF/mods.toml" to MinecraftTemplates.MODS_TOML_TEMPLATE, ) @@ -124,11 +125,13 @@ } if (configTemplate != null) { - assets.addTemplates( - project, - "src/main/java/${mainPackageName.replace('.', '/')}/Config.java" to configTemplate, - ) + val configPath = if (mainPackageName != null) { + "src/main/java/${mainPackageName.replace('.', '/')}/Config.java" + } else { + "src/main/java/Config.java" - } + } + assets.addTemplates(project, configPath to configTemplate) + } assets.addLicense(project) } Index: src/main/kotlin/platform/sponge/creator/asset-steps.kt =================================================================== --- src/main/kotlin/platform/sponge/creator/asset-steps.kt (revision a8ecce5f714a903ab5ee989502bade8a68e412c0) +++ src/main/kotlin/platform/sponge/creator/asset-steps.kt (revision 6eb594b79f483ba96b4338b0cdc6c9250d7c7dd4) @@ -39,14 +39,15 @@ override fun setupAssets(project: Project) { val buildSystemProps = findStep>() - val (packageName, className) = splitPackage(data.getUserData(MainClassStep.KEY) ?: return) + val mainClass = data.getUserData(MainClassStep.KEY) ?: return + val (packageName, className) = splitPackage(mainClass) assets.addTemplateProperties( "PLUGIN_ID" to buildSystemProps.artifactId, "PACKAGE" to packageName, "CLASS_NAME" to className, ) - val mainClassFile = "src/main/java/${packageName.replace('.', '/')}/$className.java" + val mainClassFile = "src/main/java/${mainClass.replace('.', '/')}.java" assets.addTemplates( project, mainClassFile to MinecraftTemplates.SPONGE8_MAIN_CLASS_TEMPLATE, Index: src/main/kotlin/platform/velocity/creator/gradle-steps.kt =================================================================== --- src/main/kotlin/platform/velocity/creator/gradle-steps.kt (revision a8ecce5f714a903ab5ee989502bade8a68e412c0) +++ src/main/kotlin/platform/velocity/creator/gradle-steps.kt (revision 6eb594b79f483ba96b4338b0cdc6c9250d7c7dd4) @@ -79,7 +79,11 @@ "PACKAGE" to mainPackage, ) - val buildConstantsJava = "src/main/templates/${mainPackage.replace('.', '/')}/BuildConstants.java" + val buildConstantsJava = if (mainPackage != null) { + "src/main/templates/${mainPackage.replace('.', '/')}/BuildConstants.java" + } else { + "src/main/templates/BuildConstants.java" + } assets.addTemplates( project, "build.gradle" to MinecraftTemplates.VELOCITY_BUILD_GRADLE_TEMPLATE,