diff --git a/build.gradle.kts b/build.gradle.kts index 84ffd6f9b..24b56d630 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,17 +14,12 @@ import org.gradle.internal.os.OperatingSystem import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { - kotlin("jvm") version "1.6.10" + kotlin("jvm") version "1.6.20" java mcdev groovy idea - val ijPluginVersion = if (System.getProperty("mcdev.localdev").toBoolean()) { - "1.1.3" - } else { - "1.3.0" - } - id("org.jetbrains.intellij") version ijPluginVersion + id("org.jetbrains.intellij") version "1.5.2" id("org.cadixdev.licenser") version "0.6.1" id("org.jlleitschuh.gradle.ktlint") version "10.0.0" } @@ -41,9 +36,7 @@ val jflex by configurations val jflexSkeleton by configurations val grammarKit by configurations -val gradleToolingExtension: Configuration by configurations.creating { - extendsFrom(idea) -} +val gradleToolingExtension: Configuration by configurations.creating val testLibs: Configuration by configurations.creating { isTransitive = false } @@ -107,13 +100,13 @@ dependencies { extension = "nbt" } } - testLibs(project(":mixin-test-data")) + testLibs(projects.mixinTestData) // For non-SNAPSHOT versions (unless Jetbrains fixes this...) find the version with: // afterEvaluate { println(intellij.ideaDependency.get().buildNumber.substring(intellij.type.get().length + 1)) } + gradleToolingExtension(libs.groovy) gradleToolingExtension(libs.gradleToolingExtension) gradleToolingExtension(libs.annotations) - gradleToolingExtension(libs.groovy) testImplementation(libs.junit.api) testRuntimeOnly(libs.junit.entine) @@ -155,7 +148,7 @@ tasks.publishPlugin { } tasks.runPluginVerifier { - ideVersions.addAll("IC-2022.1") + ideVersions.addAll("IC-$ideaVersionName") } java { @@ -173,7 +166,7 @@ tasks.withType().configureEach { tasks.withType().configureEach { kotlinOptions { jvmTarget = JavaVersion.VERSION_11.toString() - freeCompilerArgs = listOf("-Xjvm-default=enable") + freeCompilerArgs = listOf("-Xjvm-default=all") } } diff --git a/gradle.properties b/gradle.properties index 3b7d784e7..75506fee7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,7 +14,7 @@ kotlin.code.style=official ideaVersion = 221-EAP-SNAPSHOT ideaVersionName = 2022.1 -coreVersion = 1.5.18 +coreVersion = 1.5.19 downloadIdeaSources = true pluginTomlVersion = 221.3427.87 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 7454180f2..41d9927a4 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2e6e5897b..aa991fcea 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/readme.md b/readme.md index 5f8ef6d57..f556c8ebb 100644 --- a/readme.md +++ b/readme.md @@ -36,7 +36,7 @@ Minecraft Development for IntelliJ -Info and Documentation [![Current Release](https://img.shields.io/badge/release-1.5.18-orange.svg?style=flat-square)](https://plugins.jetbrains.com/plugin/8327) +Info and Documentation [![Current Release](https://img.shields.io/badge/release-1.5.19-orange.svg?style=flat-square)](https://plugins.jetbrains.com/plugin/8327) ---------------------- diff --git a/settings.gradle.kts b/settings.gradle.kts index 5cbf684aa..08cd609b4 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -12,6 +12,6 @@ rootProject.name = "MinecraftDev" gradle.startParameter.showStacktrace = ShowStacktrace.ALWAYS_FULL -enableFeaturePreview("VERSION_CATALOGS") +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") include("mixin-test-data") diff --git a/src/main/kotlin/creator/BuildSystemWizardStep.kt b/src/main/kotlin/creator/BuildSystemWizardStep.kt index 10333e57b..08fd921df 100644 --- a/src/main/kotlin/creator/BuildSystemWizardStep.kt +++ b/src/main/kotlin/creator/BuildSystemWizardStep.kt @@ -39,8 +39,10 @@ class BuildSystemWizardStep(private val creator: MinecraftProjectCreator) : Modu buildSystemBox.removeAllItems() buildSystemBox.isEnabled = true + val creatorConfig = creator.config ?: return + val types = BuildSystemType.values().filter { type -> - creator.configs.all { type.creatorType.isInstance(it) } + type.creatorType.isInstance(creatorConfig) } for (type in types) { @@ -59,26 +61,7 @@ class BuildSystemWizardStep(private val creator: MinecraftProjectCreator) : Modu buildSystemBox.selectedIndex = 0 - // We prefer Gradle, so if it's included, choose it - // If Gradle is not included, luck of the draw - if (creator.configs.any { it.preferredBuildSystem == BuildSystemType.GRADLE }) { - buildSystemBox.selectedItem = BuildSystemType.GRADLE - return - } - - val counts = creator.configs.asSequence() - .mapNotNull { it.preferredBuildSystem } - .groupingBy { it } - .eachCount() - - val maxValue = counts.maxByOrNull { it.value }?.value ?: return - counts.asSequence() - .filter { it.value == maxValue } - .map { it.key } - .firstOrNull() - ?.let { mostPopularType -> - buildSystemBox.selectedItem = mostPopularType - } + creatorConfig.preferredBuildSystem?.let { buildSystemBox.selectedItem = it } } override fun updateDataModel() { diff --git a/src/main/kotlin/creator/MinecraftModuleWizardStep.kt b/src/main/kotlin/creator/MinecraftModuleWizardStep.kt index fbfa2f61c..2274da2e3 100644 --- a/src/main/kotlin/creator/MinecraftModuleWizardStep.kt +++ b/src/main/kotlin/creator/MinecraftModuleWizardStep.kt @@ -57,7 +57,6 @@ abstract class MinecraftModuleWizardStep : ModuleWizardStep() { protected fun basicUpdateStep( creator: MinecraftProjectCreator, - config: ProjectConfig, pluginNameField: JTextField, mainClassField: JTextField ) { @@ -66,14 +65,6 @@ abstract class MinecraftModuleWizardStep : ModuleWizardStep() { val name = WordUtils.capitalize(buildSystem.artifactId.replace('-', ' ')) pluginNameField.text = name - if (creator.configs.indexOf(config) != 0) { - pluginNameField.isEditable = false - } - mainClassField.text = generateClassName(buildSystem, name) - - if (creator.configs.size > 1) { - mainClassField.text = mainClassField.text + config.type.normalName - } } } diff --git a/src/main/kotlin/creator/MinecraftProjectCreator.kt b/src/main/kotlin/creator/MinecraftProjectCreator.kt index c37adcbfa..1a8b907f3 100644 --- a/src/main/kotlin/creator/MinecraftProjectCreator.kt +++ b/src/main/kotlin/creator/MinecraftProjectCreator.kt @@ -21,15 +21,13 @@ import com.intellij.openapi.progress.ProgressIndicator import com.intellij.openapi.progress.ProgressManager import com.intellij.openapi.progress.Task import com.intellij.openapi.vfs.VfsUtil -import java.nio.file.Files import java.nio.file.Path -import java.util.Locale class MinecraftProjectCreator { var buildSystem: BuildSystem? = null - val configs = LinkedHashSet() + var config: ProjectConfig? = null fun create(root: Path, module: Module) { val build = buildSystem ?: throw IllegalStateException("buildSystem not initialized") @@ -94,67 +92,16 @@ class MinecraftProjectCreator { VfsUtil.markDirtyAndRefresh(false, true, true, root.virtualFileOrError) } - build.configure(configs, root) + val config = this@MinecraftProjectCreator.config ?: return - if (configs.size == 1) { - val config = configs.first() - val log = newLog(config, workLog) - if (!build.buildCreator(config, root, module).getSingleModuleSteps().run(indicator, log)) { - return - } - config.type.type.performCreationSettingSetup(module.project) - CreatorStep.runAllReformats() - } else { - val types = configs.map { it.type } - newLog(build.javaClass.name + "::multiModuleBaseSteps", workLog).let { log -> - if (!build.multiModuleBaseSteps(module, types, root).run(indicator, log)) { - return - } - } - - val postMultiModuleAwares = mutableListOf() - - for (config in configs) { - val log = newLog(config, workLog) - - val dirName = config.type.normalName.lowercase(Locale.ENGLISH) - val newArtifactId = "${build.artifactId}-$dirName" - val dir = Files.createDirectories(root.resolve(newArtifactId)) - - val newBuild = build.createSub(newArtifactId) - val creator = newBuild.buildCreator(config, dir, module) - if (!creator.getMultiModuleSteps(root).run(indicator, log)) { - return - } - config.type.type.performCreationSettingSetup(module.project) - if (creator is PostMultiModuleAware) { - postMultiModuleAwares += creator - } - } - - val commonArtifactId = "${build.artifactId}-common" - val commonDir = Files.createDirectories(root.resolve(commonArtifactId)) - val commonBuild = build.createSub(commonArtifactId) + build.configure(config, root) - newLog(commonBuild.javaClass.name + "::multiModuleCommonSteps", workLog).let { log -> - if (!commonBuild.multiModuleCommonSteps(module, commonDir).run(indicator, log)) { - return - } - } - - CreatorStep.runAllReformats() - - newLog(build.javaClass.name + "::multiModuleBaseFinalizer", workLog).let { log -> - build.multiModuleBaseFinalizer(module, root).run(indicator, log) - } - - for (postMultiModuleAware in postMultiModuleAwares) { - val log = newLog(postMultiModuleAware, workLog) - if (!postMultiModuleAware.getPostMultiModuleSteps(root).run(indicator, log)) { - return - } - } + val log = newLog(config, workLog) + if (!build.buildCreator(config, root, module).getSteps().run(indicator, log)) { + return } + config.type.type.performCreationSettingSetup(module.project) + CreatorStep.runAllReformats() // Tell IntelliJ about everything we've done invokeLater { diff --git a/src/main/kotlin/creator/PlatformChooserWizardStep.kt b/src/main/kotlin/creator/PlatformChooserWizardStep.kt index e63e13cb8..9ffdb0a57 100644 --- a/src/main/kotlin/creator/PlatformChooserWizardStep.kt +++ b/src/main/kotlin/creator/PlatformChooserWizardStep.kt @@ -11,7 +11,6 @@ package com.demonwav.mcdev.creator import com.demonwav.mcdev.asset.PlatformAssets -import com.demonwav.mcdev.creator.buildsystem.BuildSystemType import com.demonwav.mcdev.platform.PlatformType import com.demonwav.mcdev.platform.architectury.creator.ArchitecturyProjectConfig import com.demonwav.mcdev.platform.bukkit.creator.BukkitProjectConfig @@ -22,70 +21,32 @@ import com.demonwav.mcdev.platform.liteloader.creator.LiteLoaderProjectConfig import com.demonwav.mcdev.platform.sponge.creator.SpongeProjectConfig import com.demonwav.mcdev.platform.velocity.creator.VelocityProjectConfig import com.intellij.ide.util.projectWizard.ModuleWizardStep -import com.intellij.openapi.ui.popup.Balloon -import com.intellij.openapi.ui.popup.JBPopupFactory -import com.intellij.ui.LightColors -import com.intellij.ui.awt.RelativePoint +import com.intellij.ui.components.JBRadioButton import com.intellij.util.ui.UIUtil -import javax.swing.JCheckBox +import javax.swing.ButtonGroup import javax.swing.JComponent import javax.swing.JLabel import javax.swing.JPanel class PlatformChooserWizardStep(private val creator: MinecraftProjectCreator) : ModuleWizardStep() { - private lateinit var chooserPanel: JPanel private lateinit var panel: JPanel + private lateinit var projectButtons: ButtonGroup private lateinit var spongeIcon: JLabel - private lateinit var bukkitPluginCheckBox: JCheckBox - private lateinit var spigotPluginCheckBox: JCheckBox - private lateinit var paperPluginCheckBox: JCheckBox - private lateinit var spongePluginCheckBox: JCheckBox - private lateinit var forgeModCheckBox: JCheckBox - private lateinit var fabricModCheckBox: JCheckBox - private lateinit var architecturyModCheckBox: JCheckBox - private lateinit var bungeeCordPluginCheckBox: JCheckBox - private lateinit var waterfallPluginCheckBox: JCheckBox - private lateinit var velocityPluginCheckBox: JCheckBox - private lateinit var liteLoaderModCheckBox: JCheckBox + private lateinit var bukkitPluginButton: JBRadioButton + private lateinit var spigotPluginButton: JBRadioButton + private lateinit var paperPluginButton: JBRadioButton + private lateinit var spongePluginButton: JBRadioButton + private lateinit var forgeModButton: JBRadioButton + private lateinit var fabricModButton: JBRadioButton + private lateinit var architecturyModButton: JBRadioButton + private lateinit var bungeeCordPluginButton: JBRadioButton + private lateinit var waterfallPluginButton: JBRadioButton + private lateinit var velocityPluginButton: JBRadioButton + private lateinit var liteLoaderModButton: JBRadioButton override fun getComponent(): JComponent { - // Set types - bukkitPluginCheckBox.addActionListener { - toggle( - bukkitPluginCheckBox, - spigotPluginCheckBox, - paperPluginCheckBox - ) - } - spigotPluginCheckBox.addActionListener { - toggle( - spigotPluginCheckBox, - bukkitPluginCheckBox, - paperPluginCheckBox - ) - } - paperPluginCheckBox.addActionListener { - toggle( - paperPluginCheckBox, - bukkitPluginCheckBox, - spigotPluginCheckBox - ) - } - forgeModCheckBox.addActionListener { toggle(forgeModCheckBox, liteLoaderModCheckBox, architecturyModCheckBox) } - fabricModCheckBox.addActionListener { toggle(fabricModCheckBox, architecturyModCheckBox) } - architecturyModCheckBox.addActionListener { - toggle( - architecturyModCheckBox, - fabricModCheckBox, - forgeModCheckBox - ) - } - liteLoaderModCheckBox.addActionListener { toggle(liteLoaderModCheckBox, forgeModCheckBox) } - bungeeCordPluginCheckBox.addActionListener { toggle(bungeeCordPluginCheckBox, waterfallPluginCheckBox) } - waterfallPluginCheckBox.addActionListener { toggle(waterfallPluginCheckBox, bungeeCordPluginCheckBox) } - if (UIUtil.isUnderDarcula()) { spongeIcon.icon = PlatformAssets.SPONGE_ICON_2X_DARK } else { @@ -95,94 +56,35 @@ class PlatformChooserWizardStep(private val creator: MinecraftProjectCreator) : return panel } - private fun toggle(one: JCheckBox, vararg others: JCheckBox) { - if (one.isSelected) { - others.forEach { it.isSelected = false } - } - } - override fun updateDataModel() { - creator.configs.clear() - creator.configs.addAll(buildConfigs()) + creator.config = buildConfig() } override fun validate(): Boolean { - val currentConfigs = buildConfigs() - val validBuildSystemTypes = BuildSystemType.values() - .count { type -> currentConfigs.all { type.creatorType.isInstance(it) } } - - if (validBuildSystemTypes == 0) { - val message = "This project configuration is not valid, please choose a different set of platforms" - val balloon = JBPopupFactory.getInstance() - .createHtmlTextBalloonBuilder(message, null, LightColors.RED, null) - .setHideOnAction(true) - .setHideOnClickOutside(true) - .setHideOnKeyOutside(true) - .createBalloon() - - balloon.show(RelativePoint.getSouthOf(chooserPanel), Balloon.Position.atRight) - return false + updateDataModel() + val isValid = projectButtons.selection != null + if (isValid && creator.config == null) { + throw IllegalStateException( + "A project button does not have an associated config! Make sure to add your button to buildConfig()" + ) } - - return bukkitPluginCheckBox.isSelected || - spigotPluginCheckBox.isSelected || - paperPluginCheckBox.isSelected || - spongePluginCheckBox.isSelected || - forgeModCheckBox.isSelected || - fabricModCheckBox.isSelected || - architecturyModCheckBox.isSelected || - liteLoaderModCheckBox.isSelected || - bungeeCordPluginCheckBox.isSelected || - waterfallPluginCheckBox.isSelected || - velocityPluginCheckBox.isSelected + return isValid } - private fun buildConfigs(): LinkedHashSet { - val result = LinkedHashSet() - if (bukkitPluginCheckBox.isSelected) { - result += BukkitProjectConfig(PlatformType.BUKKIT) - } - - if (spigotPluginCheckBox.isSelected) { - result += BukkitProjectConfig(PlatformType.SPIGOT) + private fun buildConfig(): ProjectConfig? { + return when { + bukkitPluginButton.isSelected -> BukkitProjectConfig(PlatformType.BUKKIT) + spigotPluginButton.isSelected -> BukkitProjectConfig(PlatformType.SPIGOT) + paperPluginButton.isSelected -> BukkitProjectConfig(PlatformType.PAPER) + spongePluginButton.isSelected -> SpongeProjectConfig() + forgeModButton.isSelected -> ForgeProjectConfig() + fabricModButton.isSelected -> FabricProjectConfig() + architecturyModButton.isSelected -> ArchitecturyProjectConfig() + liteLoaderModButton.isSelected -> LiteLoaderProjectConfig() + bungeeCordPluginButton.isSelected -> BungeeCordProjectConfig(PlatformType.BUNGEECORD) + waterfallPluginButton.isSelected -> BungeeCordProjectConfig(PlatformType.WATERFALL) + velocityPluginButton.isSelected -> VelocityProjectConfig() + else -> null } - - if (paperPluginCheckBox.isSelected) { - result += BukkitProjectConfig(PlatformType.PAPER) - } - - if (spongePluginCheckBox.isSelected) { - result += SpongeProjectConfig() - } - - if (forgeModCheckBox.isSelected) { - result += ForgeProjectConfig() - } - - if (fabricModCheckBox.isSelected) { - result += FabricProjectConfig() - } - - if (architecturyModCheckBox.isSelected) { - result += ArchitecturyProjectConfig() - } - - if (liteLoaderModCheckBox.isSelected) { - result += LiteLoaderProjectConfig() - } - - if (bungeeCordPluginCheckBox.isSelected) { - result += BungeeCordProjectConfig(PlatformType.BUNGEECORD) - } - - if (waterfallPluginCheckBox.isSelected) { - result += BungeeCordProjectConfig(PlatformType.WATERFALL) - } - - if (velocityPluginCheckBox.isSelected) { - result += VelocityProjectConfig() - } - - return result } } diff --git a/src/main/kotlin/creator/ProjectChooserWizardStep.form b/src/main/kotlin/creator/ProjectChooserWizardStep.form index 1abc2dadd..2a70ee3d3 100644 --- a/src/main/kotlin/creator/ProjectChooserWizardStep.form +++ b/src/main/kotlin/creator/ProjectChooserWizardStep.form @@ -28,7 +28,7 @@ - + @@ -98,7 +98,7 @@ - + @@ -106,7 +106,7 @@ - + @@ -114,7 +114,7 @@ - + @@ -122,7 +122,7 @@ - + @@ -130,7 +130,7 @@ - + @@ -138,7 +138,7 @@ - + @@ -155,7 +155,7 @@ - + @@ -185,7 +185,7 @@ - + @@ -193,7 +193,7 @@ - + @@ -215,7 +215,7 @@ - + @@ -232,7 +232,7 @@ - + @@ -247,7 +247,7 @@ - + @@ -258,6 +258,17 @@ + + + + + + + + + + + diff --git a/src/main/kotlin/creator/ProjectCreator.kt b/src/main/kotlin/creator/ProjectCreator.kt index 014022c10..9eaa4be22 100644 --- a/src/main/kotlin/creator/ProjectCreator.kt +++ b/src/main/kotlin/creator/ProjectCreator.kt @@ -12,7 +12,6 @@ package com.demonwav.mcdev.creator import com.demonwav.mcdev.creator.buildsystem.BuildSystem import com.intellij.openapi.module.Module -import java.nio.file.Path /** * This class represents a specific configuration for a project to be created. Typically these configurations represent @@ -35,13 +34,7 @@ interface ProjectCreator { * Returns the [CreatorStep]s which should be executed in order to create the project configuration represented by * this [ProjectCreator]. */ - fun getSingleModuleSteps(): Iterable - - /** - * Returns the [CreatorStep]s which should be executed in order to create the submodule project configuration - * represented by this [ProjectCreator]. - */ - fun getMultiModuleSteps(projectBaseDir: Path): Iterable + fun getSteps(): Iterable } typealias JavaClassTextMapper = (packageName: String, className: String) -> String @@ -69,16 +62,3 @@ abstract class BaseProjectCreator( return packageName to className } } - -/** - * Implement this interface on your [ProjectCreator] if you need to do extra setup work after all modules are built - * and the project is imported, e.g. if some of the creation needs to be done in smart mode. Only gets used in - * multi-project builds; single-module builds are expected to run these tasks themselves in the correct order, such - * that they happen after the project is imported. - * - * Note: just because this interface can be used to utilize smart mode, doesn't mean that the steps will be called in - * smart mode. If a step needs smart mode, it should wait for it itself. - */ -interface PostMultiModuleAware { - fun getPostMultiModuleSteps(projectBaseDir: Path): Iterable -} diff --git a/src/main/kotlin/creator/ProjectSetupFinalizerWizardStep.kt b/src/main/kotlin/creator/ProjectSetupFinalizerWizardStep.kt index 547b7dce6..5727b542a 100644 --- a/src/main/kotlin/creator/ProjectSetupFinalizerWizardStep.kt +++ b/src/main/kotlin/creator/ProjectSetupFinalizerWizardStep.kt @@ -14,7 +14,6 @@ import com.demonwav.mcdev.creator.buildsystem.gradle.GradleBuildSystem import com.demonwav.mcdev.creator.buildsystem.gradle.GradleCreator import com.demonwav.mcdev.util.SemanticVersion import com.demonwav.mcdev.util.VersionRange -import com.demonwav.mcdev.util.until import com.intellij.ide.util.projectWizard.ModuleWizardStep import com.intellij.ide.util.projectWizard.WizardContext import com.intellij.openapi.observable.properties.GraphPropertyImpl.Companion.graphProperty @@ -24,7 +23,6 @@ import com.intellij.openapi.projectRoots.JavaSdkVersion import com.intellij.openapi.projectRoots.Sdk import com.intellij.openapi.roots.ui.configuration.JdkComboBox import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel -import com.intellij.openapi.ui.MultiLineLabelUI import com.intellij.ui.SortedComboBoxModel import com.intellij.ui.components.Label import com.intellij.ui.layout.Row @@ -32,6 +30,7 @@ import com.intellij.ui.layout.RowBuilder import com.intellij.ui.layout.panel import com.intellij.util.ui.UIUtil import javax.swing.JComponent +import org.gradle.util.GradleVersion class ProjectSetupFinalizerWizardStep( val creator: MinecraftProjectCreator, @@ -136,8 +135,8 @@ class JdkProjectSetupFinalizer : ProjectSetupFinalizer { private var minimumVersion: JavaSdkVersion = JavaSdkVersion.JDK_1_8 private fun highestJDKVersionRequired(creator: MinecraftProjectCreator): JavaSdkVersion? { - val highestJavaVersionRequired = creator.configs.maxOfOrNull { it.javaVersion } ?: return null - return JavaSdkVersion.fromJavaVersion(highestJavaVersionRequired).also { + val javaVersionRequired = creator.config?.javaVersion ?: return null + return JavaSdkVersion.fromJavaVersion(javaVersionRequired).also { minimumVersion = it ?: JavaSdkVersion.JDK_1_8 } } @@ -208,25 +207,17 @@ class JdkProjectSetupFinalizer : ProjectSetupFinalizer { class GradleProjectSetupFinalizer : ProjectSetupFinalizer { - private val errorLabel = Label("", fontColor = UIUtil.FontColor.BRIGHTER) - .apply { - icon = UIUtil.getErrorIcon() - setUI(MultiLineLabelUI()) - isVisible = false - } private val model = SortedComboBoxModel(Comparator.naturalOrder()) private val propertyGraph = PropertyGraph("GradleProjectSetupFinalizer graph") var gradleVersion: SemanticVersion by propertyGraph.graphProperty { SemanticVersion.release() } - private var configs: Collection = emptyList() - private var incompatibleConfigs: List = emptyList() + private var config: ProjectConfig? = null private var gradleVersionRange: VersionRange? = null override val title: String = "Gradle" override fun RowBuilder.buildComponent(creator: MinecraftProjectCreator, context: WizardContext) { - row(errorLabel) {} row("Gradle version:") { comboBox(model, ::gradleVersion) .enabled(false) // TODO load compatible Gradle versions list @@ -239,59 +230,27 @@ class GradleProjectSetupFinalizer : ProjectSetupFinalizer { } override fun validateConfigs(creator: MinecraftProjectCreator, context: WizardContext): Boolean { - configs = creator.configs - incompatibleConfigs = emptyList() + config = creator.config if (creator.buildSystem !is GradleBuildSystem) { - updateUi() return true } - val incompatibleConfigs = mutableListOf() - val range = creator.configs.fold(SemanticVersion.release() until null) { acc, config -> - val range = (config as? GradleCreator)?.compatibleGradleVersions ?: return@fold acc - val intersection = acc.intersect(range) - if (intersection == null) { - incompatibleConfigs.add(config) - return@fold acc - } - intersection - } + val range = (creator.config as? GradleCreator)?.compatibleGradleVersions gradleVersionRange = range - this.incompatibleConfigs = incompatibleConfigs - updateUi() - // TODO get the compatible versions available if possible - gradleVersion = range.lower + gradleVersion = range?.upper ?: SemanticVersion.parse(GradleVersion.current().version) model.clear() model.add(gradleVersion) model.selectedItem = gradleVersion - return this.incompatibleConfigs.isEmpty() - } - - private fun updateUi() { - if (incompatibleConfigs.isEmpty()) { - errorLabel.text = "" - errorLabel.isVisible = false - return - } - - val problemsList = incompatibleConfigs.joinToString(separator = "") { config -> - val configName = config.javaClass.simpleName.removeSuffix("ProjectConfig") - val compatibleGradleVersions = (config as GradleCreator).compatibleGradleVersions - "\n- $configName requires $compatibleGradleVersions" - } - val compatibleConfigsList = configs.subtract(incompatibleConfigs) - .joinToString { it.javaClass.simpleName.removeSuffix("ProjectConfig") } - errorLabel.text = "$compatibleConfigsList require Gradle $gradleVersionRange but:$problemsList" - errorLabel.isVisible = true + return true } override fun validateChanges(creator: MinecraftProjectCreator, context: WizardContext): Boolean { if (creator.buildSystem !is GradleBuildSystem) { return true } - return gradleVersionRange != null && incompatibleConfigs.isEmpty() && gradleVersion.parts.isNotEmpty() + return gradleVersionRange != null && gradleVersion.parts.isNotEmpty() } override fun apply(creator: MinecraftProjectCreator, context: WizardContext) { diff --git a/src/main/kotlin/creator/buildsystem/BuildSystem.kt b/src/main/kotlin/creator/buildsystem/BuildSystem.kt index 9b5cb19b4..7f5daae56 100644 --- a/src/main/kotlin/creator/buildsystem/BuildSystem.kt +++ b/src/main/kotlin/creator/buildsystem/BuildSystem.kt @@ -11,6 +11,7 @@ package com.demonwav.mcdev.creator.buildsystem import com.demonwav.mcdev.creator.CreatorStep +import com.demonwav.mcdev.creator.ProjectConfig import com.demonwav.mcdev.creator.ProjectCreator import com.demonwav.mcdev.creator.buildsystem.gradle.GradleBuildSystem import com.demonwav.mcdev.creator.buildsystem.gradle.GradleCreator @@ -37,7 +38,7 @@ abstract class BuildSystem( abstract val type: BuildSystemType abstract fun buildCreator(obj: Any, rootDirectory: Path, module: Module): ProjectCreator - open fun configure(list: Collection, rootDirectory: Path) {} + open fun configure(config: ProjectConfig, rootDirectory: Path) {} var repositories: MutableList = mutableListOf() var dependencies: MutableList = mutableListOf() diff --git a/src/main/kotlin/creator/buildsystem/gradle/GradleBuildSystem.kt b/src/main/kotlin/creator/buildsystem/gradle/GradleBuildSystem.kt index a8e5e135d..c65ce596e 100644 --- a/src/main/kotlin/creator/buildsystem/gradle/GradleBuildSystem.kt +++ b/src/main/kotlin/creator/buildsystem/gradle/GradleBuildSystem.kt @@ -12,6 +12,7 @@ package com.demonwav.mcdev.creator.buildsystem.gradle import com.demonwav.mcdev.creator.CreateDirectoriesStep import com.demonwav.mcdev.creator.CreatorStep +import com.demonwav.mcdev.creator.ProjectConfig import com.demonwav.mcdev.creator.ProjectCreator import com.demonwav.mcdev.creator.buildsystem.BuildSystem import com.demonwav.mcdev.creator.buildsystem.BuildSystemTemplate @@ -78,11 +79,9 @@ class GradleBuildSystem( return obj.buildGradleCreator(rootDirectory, module, this) } - override fun configure(list: Collection, rootDirectory: Path) { - for (obj in list) { - if (obj is GradleCreator) { - obj.configureRootGradle(rootDirectory, this) - } + override fun configure(config: ProjectConfig, rootDirectory: Path) { + if (config is GradleCreator) { + config.configureRootGradle(rootDirectory, this) } } diff --git a/src/main/kotlin/creator/buildsystem/maven/MavenBuildSystem.kt b/src/main/kotlin/creator/buildsystem/maven/MavenBuildSystem.kt index 7ad7a9145..c2443da21 100644 --- a/src/main/kotlin/creator/buildsystem/maven/MavenBuildSystem.kt +++ b/src/main/kotlin/creator/buildsystem/maven/MavenBuildSystem.kt @@ -12,6 +12,7 @@ package com.demonwav.mcdev.creator.buildsystem.maven import com.demonwav.mcdev.creator.CreateDirectoriesStep import com.demonwav.mcdev.creator.CreatorStep +import com.demonwav.mcdev.creator.ProjectConfig import com.demonwav.mcdev.creator.ProjectCreator import com.demonwav.mcdev.creator.buildsystem.BuildSystem import com.demonwav.mcdev.creator.buildsystem.BuildSystemTemplate @@ -88,11 +89,9 @@ class MavenBuildSystem( return obj.buildMavenCreator(rootDirectory, module, this) } - override fun configure(list: Collection, rootDirectory: Path) { - for (obj in list) { - if (obj is MavenCreator) { - obj.configureRootMaven(rootDirectory, this) - } + override fun configure(config: ProjectConfig, rootDirectory: Path) { + if (config is MavenCreator) { + config.configureRootMaven(rootDirectory, this) } } } diff --git a/src/main/kotlin/facet/MinecraftFacetDetector.kt b/src/main/kotlin/facet/MinecraftFacetDetector.kt index fd04a32bc..bd5cb5b8a 100644 --- a/src/main/kotlin/facet/MinecraftFacetDetector.kt +++ b/src/main/kotlin/facet/MinecraftFacetDetector.kt @@ -134,7 +134,7 @@ class MinecraftFacetDetector : StartupActivity { LibraryDetectionManager.getInstance().processProperties( libraryFiles, object : LibraryDetectionManager.LibraryPropertiesProcessor { - override fun

?> processProperties( + override fun

> processProperties( kind: LibraryKind, properties: P ): Boolean { diff --git a/src/main/kotlin/platform/architectury/creator/ArchitecturyProjectCreator.kt b/src/main/kotlin/platform/architectury/creator/ArchitecturyProjectCreator.kt index 099c402c9..49123b8a5 100644 --- a/src/main/kotlin/platform/architectury/creator/ArchitecturyProjectCreator.kt +++ b/src/main/kotlin/platform/architectury/creator/ArchitecturyProjectCreator.kt @@ -14,7 +14,6 @@ import com.demonwav.mcdev.creator.BaseProjectCreator import com.demonwav.mcdev.creator.BasicJavaClassStep import com.demonwav.mcdev.creator.CreateDirectoriesStep import com.demonwav.mcdev.creator.CreatorStep -import com.demonwav.mcdev.creator.PostMultiModuleAware import com.demonwav.mcdev.creator.buildsystem.BuildSystem import com.demonwav.mcdev.creator.buildsystem.gradle.BasicGradleFinalizerStep import com.demonwav.mcdev.creator.buildsystem.gradle.GradleBuildSystem @@ -51,7 +50,7 @@ class ArchitecturyProjectCreator( private val rootModule: Module, private val buildSystem: GradleBuildSystem, private val config: ArchitecturyProjectConfig -) : BaseProjectCreator(rootModule, buildSystem), PostMultiModuleAware { +) : BaseProjectCreator(rootModule, buildSystem) { private val commonModule: Module = project.runWriteTaskInSmartMode { ModuleManager.getInstance(rootModule.project) @@ -66,26 +65,26 @@ class ArchitecturyProjectCreator( .newModule(rootDirectory.resolve("fabric"), ModuleType.get(rootModule).id) } - override fun getSingleModuleSteps(): Iterable { + override fun getSteps(): Iterable { val steps = mutableListOf() steps += ArchitecturyCommonProjectCreator( rootDirectory.resolve("common"), commonModule, buildSystem, config - ).getSingleModuleSteps() + ).getSteps() steps += ArchitecturyForgeProjectCreator( rootDirectory.resolve("forge"), forgeModule, buildSystem, config - ).getSingleModuleSteps() + ).getSteps() steps += ArchitecturyFabricProjectCreator( rootDirectory.resolve("fabric"), fabricModule, buildSystem, config - ).getSingleModuleSteps() + ).getSteps() steps += listOf( SimpleGradleSetupStep( project, @@ -106,47 +105,6 @@ class ArchitecturyProjectCreator( return steps } - override fun getMultiModuleSteps(projectBaseDir: Path): Iterable { - val steps = mutableListOf() - steps += ArchitecturyCommonProjectCreator( - rootDirectory.resolve("common"), - commonModule, - buildSystem, - config - ).getMultiModuleSteps(projectBaseDir) - steps += ArchitecturyForgeProjectCreator( - rootDirectory.resolve("forge"), - forgeModule, - buildSystem, - config - ).getMultiModuleSteps(projectBaseDir) - steps += ArchitecturyFabricProjectCreator( - rootDirectory.resolve("fabric"), - fabricModule, - buildSystem, - config - ).getMultiModuleSteps(projectBaseDir) - steps += listOf( - SimpleGradleSetupStep( - project, - rootDirectory, - buildSystem, - GradleFiles( - ArchitecturyTemplate.applyMultiModuleBuildGradle(project, buildSystem, config), - ArchitecturyTemplate.applyMultiModuleGradleProp(project, buildSystem, config), - ArchitecturyTemplate.applySettingsGradle(project, buildSystem, config) - ) - ), - GenRunsStep(project, rootDirectory), - CleanUpStep(rootDirectory) - ) - return steps - } - - override fun getPostMultiModuleSteps(projectBaseDir: Path): Iterable { - return listOf() - } - class GenRunsStep( private val project: Project, private val rootDirectory: Path @@ -177,8 +135,8 @@ class ArchitecturyCommonProjectCreator( rootModule: Module, private val buildSystem: GradleBuildSystem, private val config: ArchitecturyProjectConfig -) : BaseProjectCreator(rootModule, buildSystem), PostMultiModuleAware { - override fun getSingleModuleSteps(): Iterable { +) : BaseProjectCreator(rootModule, buildSystem) { + override fun getSteps(): Iterable { return listOf( CreateDirectoriesStep(buildSystem, rootDirectory), ArchitecturyCommonMixinStep(project, buildSystem, config), @@ -192,24 +150,6 @@ class ArchitecturyCommonProjectCreator( ) } - override fun getMultiModuleSteps(projectBaseDir: Path): Iterable { - return listOf( - CreateDirectoriesStep(buildSystem, rootDirectory), - ArchitecturyCommonMixinStep(project, buildSystem, config), - SimpleGradleSetupStep( - project, - rootDirectory, - buildSystem, - GradleFiles(ArchitecturyTemplate.applyCommonBuildGradle(project, buildSystem, config), null, null) - ), - setupMainClassStep() - ) - } - - override fun getPostMultiModuleSteps(projectBaseDir: Path): Iterable { - return listOf() - } - private fun setupMainClassStep(): BasicJavaClassStep { return BasicJavaClassStep( project, @@ -247,27 +187,8 @@ class ArchitecturyForgeProjectCreator( rootModule: Module, private val buildSystem: GradleBuildSystem, private val config: ArchitecturyProjectConfig -) : BaseProjectCreator(rootModule, buildSystem), PostMultiModuleAware { - override fun getSingleModuleSteps(): Iterable { - return listOf( - CreateDirectoriesStep(buildSystem, rootDirectory), - ArchitecturyForgeMixinStep(project, buildSystem, config), - ArchitecturyForgeResourcesStep(project, buildSystem, config), - SimpleGradleSetupStep( - project, - rootDirectory, - buildSystem, - GradleFiles( - ArchitecturyTemplate.applyForgeBuildGradle(project, buildSystem, config), - ArchitecturyTemplate.applyForgeGradleProp(project, buildSystem, config), - null - ) - ), - setupMainClassStep() - ) - } - - override fun getMultiModuleSteps(projectBaseDir: Path): Iterable { +) : BaseProjectCreator(rootModule, buildSystem) { + override fun getSteps(): Iterable { return listOf( CreateDirectoriesStep(buildSystem, rootDirectory), ArchitecturyForgeMixinStep(project, buildSystem, config), @@ -286,10 +207,6 @@ class ArchitecturyForgeProjectCreator( ) } - override fun getPostMultiModuleSteps(projectBaseDir: Path): Iterable { - return listOf() - } - private fun setupMainClassStep(): BasicJavaClassStep { return BasicJavaClassStep( project, @@ -353,8 +270,8 @@ class ArchitecturyFabricProjectCreator( rootModule: Module, private val buildSystem: GradleBuildSystem, private val config: ArchitecturyProjectConfig -) : BaseProjectCreator(rootModule, buildSystem), PostMultiModuleAware { - override fun getSingleModuleSteps(): Iterable { +) : BaseProjectCreator(rootModule, buildSystem) { + override fun getSteps(): Iterable { return listOf( CreateDirectoriesStep(buildSystem, rootDirectory), ArchitecturyFabricMixinStep(project, buildSystem, config), @@ -373,29 +290,6 @@ class ArchitecturyFabricProjectCreator( ) } - override fun getMultiModuleSteps(projectBaseDir: Path): Iterable { - return listOf( - CreateDirectoriesStep(buildSystem, rootDirectory), - ArchitecturyFabricMixinStep(project, buildSystem, config), - ArchitecturyFabricResourcesStep(project, buildSystem, config), - SimpleGradleSetupStep( - project, - rootDirectory, - buildSystem, - GradleFiles( - ArchitecturyTemplate.applyFabricBuildGradle(project, buildSystem, config), - null, - null - ) - ), - setupMainClassStep() - ) - } - - override fun getPostMultiModuleSteps(projectBaseDir: Path): Iterable { - return listOf() - } - private fun setupMainClassStep(): BasicJavaClassStep { return BasicJavaClassStep( project, diff --git a/src/main/kotlin/platform/architectury/creator/ArchitecturyProjectSettingsWizard.kt b/src/main/kotlin/platform/architectury/creator/ArchitecturyProjectSettingsWizard.kt index eee8fd5e3..34a8bc2b4 100644 --- a/src/main/kotlin/platform/architectury/creator/ArchitecturyProjectSettingsWizard.kt +++ b/src/main/kotlin/platform/architectury/creator/ArchitecturyProjectSettingsWizard.kt @@ -112,10 +112,6 @@ class ArchitecturyProjectSettingsWizard(private val creator: MinecraftProjectCre val (conf) = modUpdateStep(creator, modNameField) ?: return config = conf - if (creator.configs.indexOf(conf) != 0) { - modNameField.isEditable = false - } - title.icon = PlatformAssets.ARCHITECTURY_ICON_2X title.text = "Architectury Settings" @@ -164,7 +160,7 @@ class ArchitecturyProjectSettingsWizard(private val creator: MinecraftProjectCre } override fun isStepVisible(): Boolean { - return creator.configs.any { it is ArchitecturyProjectConfig } + return creator.config is ArchitecturyProjectConfig } override fun onStepLeaving() { diff --git a/src/main/kotlin/platform/bukkit/creator/BukkitProjectCreator.kt b/src/main/kotlin/platform/bukkit/creator/BukkitProjectCreator.kt index 3b38b378c..3001edbc3 100644 --- a/src/main/kotlin/platform/bukkit/creator/BukkitProjectCreator.kt +++ b/src/main/kotlin/platform/bukkit/creator/BukkitProjectCreator.kt @@ -25,7 +25,6 @@ import com.demonwav.mcdev.creator.buildsystem.gradle.GradleSetupStep import com.demonwav.mcdev.creator.buildsystem.gradle.GradleWrapperStep import com.demonwav.mcdev.creator.buildsystem.maven.BasicMavenFinalizerStep import com.demonwav.mcdev.creator.buildsystem.maven.BasicMavenStep -import com.demonwav.mcdev.creator.buildsystem.maven.CommonModuleDependencyStep import com.demonwav.mcdev.creator.buildsystem.maven.MavenBuildSystem import com.demonwav.mcdev.creator.buildsystem.maven.MavenGitignoreStep import com.demonwav.mcdev.platform.PlatformType @@ -66,7 +65,7 @@ class BukkitMavenCreator( config: BukkitProjectConfig ) : BukkitProjectCreator(rootDirectory, rootModule, buildSystem, config) { - override fun getSingleModuleSteps(): Iterable { + override fun getSteps(): Iterable { val pomText = BukkitTemplate.applyPom(project) return listOf( setupDependencyStep(), @@ -77,30 +76,6 @@ class BukkitMavenCreator( BasicMavenFinalizerStep(rootModule, rootDirectory) ) } - - override fun getMultiModuleSteps(projectBaseDir: Path): Iterable { - val depStep = setupDependencyStep() - val commonDepStep = CommonModuleDependencyStep(buildSystem) - val mainClassStep = setupMainClassStep() - val ymlStep = setupYmlStep() - - val pomText = BukkitTemplate.applySubPom(project) - val mavenStep = BasicMavenStep( - project = project, - rootDirectory = rootDirectory, - buildSystem = buildSystem, - config = config, - pomText = pomText, - parts = listOf( - BasicMavenStep.setupDirs(), - BasicMavenStep.setupSubCore(buildSystem.parentOrError.artifactId), - BasicMavenStep.setupSubName(config.type), - BasicMavenStep.setupInfo(), - BasicMavenStep.setupDependencies() - ) - ) - return listOf(depStep, commonDepStep, mavenStep, mainClassStep, ymlStep) - } } class BukkitGradleCreator( @@ -110,7 +85,7 @@ class BukkitGradleCreator( config: BukkitProjectConfig ) : BukkitProjectCreator(rootDirectory, rootModule, buildSystem, config) { - override fun getSingleModuleSteps(): Iterable { + override fun getSteps(): Iterable { val buildText = BukkitTemplate.applyBuildGradle(project, buildSystem, config) val propText = BukkitTemplate.applyGradleProp(project) val settingsText = BukkitTemplate.applySettingsGradle(project, buildSystem.artifactId) @@ -127,19 +102,6 @@ class BukkitGradleCreator( BasicGradleFinalizerStep(rootModule, rootDirectory, buildSystem) ) } - - override fun getMultiModuleSteps(projectBaseDir: Path): Iterable { - val buildText = BukkitTemplate.applySubBuildGradle(project, buildSystem) - val files = GradleFiles(buildText, null, null) - - return listOf( - setupDependencyStep(), - CreateDirectoriesStep(buildSystem, rootDirectory), - GradleSetupStep(project, rootDirectory, buildSystem, files), - setupMainClassStep(), - setupYmlStep() - ) - } } open class BukkitDependenciesStep( diff --git a/src/main/kotlin/platform/bukkit/creator/BukkitProjectSettingsWizard.kt b/src/main/kotlin/platform/bukkit/creator/BukkitProjectSettingsWizard.kt index dd14a40d1..af4c1a161 100644 --- a/src/main/kotlin/platform/bukkit/creator/BukkitProjectSettingsWizard.kt +++ b/src/main/kotlin/platform/bukkit/creator/BukkitProjectSettingsWizard.kt @@ -20,7 +20,6 @@ import com.demonwav.mcdev.creator.ValidatedFieldType.NON_BLANK import com.demonwav.mcdev.creator.getVersionSelector import com.demonwav.mcdev.platform.PlatformType import com.demonwav.mcdev.platform.bukkit.data.LoadOrder -import com.demonwav.mcdev.util.firstOfType import javax.swing.JComboBox import javax.swing.JComponent import javax.swing.JLabel @@ -65,17 +64,17 @@ class BukkitProjectSettingsWizard(private val creator: MinecraftProjectCreator) } override fun isStepVisible(): Boolean { - return creator.configs.any { it is BukkitProjectConfig } + return creator.config is BukkitProjectConfig } override fun updateStep() { - config = creator.configs.firstOfType() + config = creator.config as? BukkitProjectConfig if (config == null) { return } val conf = config ?: return - basicUpdateStep(creator, conf, pluginNameField, mainClassField) + basicUpdateStep(creator, pluginNameField, mainClassField) when (conf.type) { PlatformType.BUKKIT -> { diff --git a/src/main/kotlin/platform/bungeecord/creator/BungeeCordProjectCreator.kt b/src/main/kotlin/platform/bungeecord/creator/BungeeCordProjectCreator.kt index b37245511..528b602f0 100644 --- a/src/main/kotlin/platform/bungeecord/creator/BungeeCordProjectCreator.kt +++ b/src/main/kotlin/platform/bungeecord/creator/BungeeCordProjectCreator.kt @@ -25,7 +25,6 @@ import com.demonwav.mcdev.creator.buildsystem.gradle.GradleSetupStep import com.demonwav.mcdev.creator.buildsystem.gradle.GradleWrapperStep import com.demonwav.mcdev.creator.buildsystem.maven.BasicMavenFinalizerStep import com.demonwav.mcdev.creator.buildsystem.maven.BasicMavenStep -import com.demonwav.mcdev.creator.buildsystem.maven.CommonModuleDependencyStep import com.demonwav.mcdev.creator.buildsystem.maven.MavenBuildSystem import com.demonwav.mcdev.creator.buildsystem.maven.MavenGitignoreStep import com.demonwav.mcdev.platform.PlatformType @@ -65,7 +64,7 @@ class BungeeCordMavenCreator( config: BungeeCordProjectConfig ) : BungeeCordProjectCreator(rootDirectory, rootModule, buildSystem, config) { - override fun getSingleModuleSteps(): Iterable { + override fun getSteps(): Iterable { val pomText = BungeeCordTemplate.applyPom(project) return listOf( setupDependencyStep(), @@ -76,30 +75,6 @@ class BungeeCordMavenCreator( BasicMavenFinalizerStep(rootModule, rootDirectory) ) } - - override fun getMultiModuleSteps(projectBaseDir: Path): Iterable { - val depStep = setupDependencyStep() - val commonDepStep = CommonModuleDependencyStep(buildSystem) - val mainClassStep = setupMainClassStep() - val ymlStep = setupYmlStep() - - val pomText = BungeeCordTemplate.applySubPom(project) - val mavenStep = BasicMavenStep( - project = project, - rootDirectory = rootDirectory, - buildSystem = buildSystem, - config = config, - pomText = pomText, - parts = listOf( - BasicMavenStep.setupDirs(), - BasicMavenStep.setupSubCore(buildSystem.parentOrError.artifactId), - BasicMavenStep.setupSubName(config.type), - BasicMavenStep.setupInfo(), - BasicMavenStep.setupDependencies() - ) - ) - return listOf(depStep, commonDepStep, mavenStep, mainClassStep, ymlStep) - } } class BungeeCordGradleCreator( @@ -109,7 +84,7 @@ class BungeeCordGradleCreator( config: BungeeCordProjectConfig ) : BungeeCordProjectCreator(rootDirectory, rootModule, buildSystem, config) { - override fun getSingleModuleSteps(): Iterable { + override fun getSteps(): Iterable { val buildText = BungeeCordTemplate.applyBuildGradle(project, buildSystem) val projectText = BungeeCordTemplate.applyGradleProp(project) val settingsText = BungeeCordTemplate.applySettingsGradle(project, buildSystem.artifactId) @@ -126,19 +101,6 @@ class BungeeCordGradleCreator( BasicGradleFinalizerStep(rootModule, rootDirectory, buildSystem) ) } - - override fun getMultiModuleSteps(projectBaseDir: Path): Iterable { - val buildText = BungeeCordTemplate.applySubBuildGradle(project, buildSystem) - val files = GradleFiles(buildText, null, null) - - return listOf( - setupDependencyStep(), - CreateDirectoriesStep(buildSystem, rootDirectory), - GradleSetupStep(project, rootDirectory, buildSystem, files), - setupMainClassStep(), - setupYmlStep() - ) - } } class BungeeCordDependenciesStep( diff --git a/src/main/kotlin/platform/bungeecord/creator/BungeeCordProjectSettingsWizard.kt b/src/main/kotlin/platform/bungeecord/creator/BungeeCordProjectSettingsWizard.kt index c6038e17f..898a84483 100644 --- a/src/main/kotlin/platform/bungeecord/creator/BungeeCordProjectSettingsWizard.kt +++ b/src/main/kotlin/platform/bungeecord/creator/BungeeCordProjectSettingsWizard.kt @@ -19,7 +19,6 @@ import com.demonwav.mcdev.creator.ValidatedFieldType.LIST import com.demonwav.mcdev.creator.ValidatedFieldType.NON_BLANK import com.demonwav.mcdev.creator.getVersionSelector import com.demonwav.mcdev.platform.PlatformType -import com.demonwav.mcdev.util.firstOfType import javax.swing.JComboBox import javax.swing.JComponent import javax.swing.JLabel @@ -67,13 +66,13 @@ class BungeeCordProjectSettingsWizard( } override fun updateStep() { - config = creator.configs.firstOfType() + config = creator.config as? BungeeCordProjectConfig if (config == null) { return } val conf = config ?: return - basicUpdateStep(creator, conf, pluginNameField, mainClassField) + basicUpdateStep(creator, pluginNameField, mainClassField) when (conf.type) { PlatformType.BUNGEECORD -> { @@ -102,7 +101,7 @@ class BungeeCordProjectSettingsWizard( } override fun isStepVisible(): Boolean { - return creator.configs.any { it is BungeeCordProjectConfig } + return creator.config is BungeeCordProjectConfig } override fun updateDataModel() { diff --git a/src/main/kotlin/platform/fabric/creator/FabricProjectCreator.kt b/src/main/kotlin/platform/fabric/creator/FabricProjectCreator.kt index ac984d7e5..01ac816ba 100644 --- a/src/main/kotlin/platform/fabric/creator/FabricProjectCreator.kt +++ b/src/main/kotlin/platform/fabric/creator/FabricProjectCreator.kt @@ -14,7 +14,6 @@ import com.demonwav.mcdev.asset.MCDevBundle import com.demonwav.mcdev.creator.BaseProjectCreator import com.demonwav.mcdev.creator.CreatorStep import com.demonwav.mcdev.creator.LicenseStep -import com.demonwav.mcdev.creator.PostMultiModuleAware import com.demonwav.mcdev.creator.buildsystem.BuildSystem import com.demonwav.mcdev.creator.buildsystem.gradle.BasicGradleFinalizerStep import com.demonwav.mcdev.creator.buildsystem.gradle.GradleBuildSystem @@ -65,9 +64,9 @@ class FabricProjectCreator( private val rootModule: Module, private val buildSystem: GradleBuildSystem, private val config: FabricProjectConfig -) : BaseProjectCreator(rootModule, buildSystem), PostMultiModuleAware { +) : BaseProjectCreator(rootModule, buildSystem) { - override fun getSingleModuleSteps(): Iterable { + override fun getSteps(): Iterable { val buildText = FabricTemplate.applyBuildGradle(project, buildSystem, config) val propText = FabricTemplate.applyGradleProp(project, buildSystem, config) val settingsText = FabricTemplate.applySettingsGradle(project, buildSystem, config) @@ -93,34 +92,6 @@ class FabricProjectCreator( return steps } - override fun getMultiModuleSteps(projectBaseDir: Path): Iterable { - val buildText = FabricTemplate.applyMultiModuleBuildGradle(project, buildSystem, config) - val propText = FabricTemplate.applyMultiModuleGradleProp(project, buildSystem, config) - val settingsText = FabricTemplate.applySettingsGradle(project, buildSystem, config) - val files = GradleFiles(buildText, propText, settingsText) - - val steps = mutableListOf( - SimpleGradleSetupStep(project, rootDirectory, buildSystem, files) - ) - if (config.genSources) { - steps += GenSourcesStep(project, rootDirectory) - } - config.license?.let { - steps += LicenseStep(project, rootDirectory, it, config.authors.joinToString(", ")) - } - if (config.mixins) { - steps += MixinConfigStep(project, buildSystem, config) - } - return steps - } - - override fun getPostMultiModuleSteps(projectBaseDir: Path): Iterable { - val steps = mutableListOf() - createPostSteps(steps) - steps += FabricModJsonStep(project, buildSystem, config) - return steps - } - private fun createPostSteps(steps: MutableList) { for (entry in config.entryPoints.groupBy { it.className }.entries.sortedBy { it.key }) { steps += CreateEntryPointStep(project, buildSystem, entry.key, entry.value) diff --git a/src/main/kotlin/platform/fabric/creator/FabricProjectSettingsWizard.kt b/src/main/kotlin/platform/fabric/creator/FabricProjectSettingsWizard.kt index 2405f7e0a..dd39b914a 100644 --- a/src/main/kotlin/platform/fabric/creator/FabricProjectSettingsWizard.kt +++ b/src/main/kotlin/platform/fabric/creator/FabricProjectSettingsWizard.kt @@ -16,7 +16,6 @@ import com.demonwav.mcdev.creator.MinecraftProjectCreator import com.demonwav.mcdev.creator.ValidatedField import com.demonwav.mcdev.creator.ValidatedFieldType.LIST import com.demonwav.mcdev.creator.ValidatedFieldType.NON_BLANK -import com.demonwav.mcdev.platform.PlatformType import com.demonwav.mcdev.platform.fabric.EntryPoint import com.demonwav.mcdev.platform.fabric.util.FabricConstants import com.demonwav.mcdev.platform.forge.inspections.sideonly.Side @@ -142,16 +141,9 @@ class FabricProjectSettingsWizard(private val creator: MinecraftProjectCreator) val (conf, buildSystem) = modUpdateStep(creator, modNameField) ?: return config = conf - if (creator.configs.indexOf(conf) != 0) { - modNameField.isEditable = false - } - if (!initializedEntryPointsTable) { val packageName = "${buildSystem.groupId.toPackageName()}.${buildSystem.artifactId.toPackageName()}" - var className = buildSystem.artifactId.replace('-', ' ').let { WordUtils.capitalize(it) }.replace(" ", "") - if (creator.configs.size > 1) { - className += PlatformType.FABRIC.normalName - } + val className = buildSystem.artifactId.replace('-', ' ').let { WordUtils.capitalize(it) }.replace(" ", "") entryPoints.add( EntryPoint( "main", @@ -204,7 +196,7 @@ class FabricProjectSettingsWizard(private val creator: MinecraftProjectCreator) } override fun isStepVisible(): Boolean { - return creator.configs.any { it is FabricProjectConfig } + return creator.config is FabricProjectConfig } override fun onStepLeaving() { diff --git a/src/main/kotlin/platform/forge/creator/ForgeProjectCreator.kt b/src/main/kotlin/platform/forge/creator/ForgeProjectCreator.kt index fdcfe892e..f91fb834a 100644 --- a/src/main/kotlin/platform/forge/creator/ForgeProjectCreator.kt +++ b/src/main/kotlin/platform/forge/creator/ForgeProjectCreator.kt @@ -51,7 +51,7 @@ class Fg2ProjectCreator( } } - override fun getSingleModuleSteps(): Iterable { + override fun getSteps(): Iterable { val buildText = Fg2Template.applyBuildGradle(project, buildSystem, mcVersion) val propText = Fg2Template.applyGradleProp(project, config) val settingsText = Fg2Template.applySettingsGradle(project, buildSystem.artifactId) @@ -74,25 +74,6 @@ class Fg2ProjectCreator( ) } - override fun getMultiModuleSteps(projectBaseDir: Path): Iterable { - val buildText = Fg2Template.applySubBuildGradle(project, buildSystem, mcVersion) - val propText = Fg2Template.applyGradleProp(project, config) - val files = GradleFiles(buildText, propText, null) - - return listOf( - SimpleGradleSetupStep( - project, - rootDirectory, - buildSystem, - files - ), - setupMainClassStep(), - McmodInfoStep(project, buildSystem, config), - SetupDecompWorkspaceStep(project, rootDirectory), - ForgeRunConfigsStep(buildSystem, projectBaseDir, config, CreatedModuleType.MULTI) - ) - } - companion object { val FG_WRAPPER_VERSION = SemanticVersion.release(4, 10, 3) } @@ -130,7 +111,7 @@ open class Fg3ProjectCreator( return GradleFiles(buildText, propText, settingsText) } - override fun getSingleModuleSteps(): Iterable { + override fun getSteps(): Iterable { val files = createGradleFiles(hasData = true) val steps = mutableListOf( SimpleGradleSetupStep( @@ -156,32 +137,6 @@ open class Fg3ProjectCreator( return steps } - override fun getMultiModuleSteps(projectBaseDir: Path): Iterable { - val modName = transformModName(config.pluginName) - val buildText = Fg3Template.applySubBuildGradle(project, buildSystem, config, modName, hasData = true) - val files = GradleFiles(buildText, null, null) - - val steps = mutableListOf( - SimpleGradleSetupStep( - project, - rootDirectory, - buildSystem, - files - ), - setupMainClassStep(), - Fg3ProjectFilesStep(project, buildSystem, config), - Fg3CompileJavaStep(project, rootDirectory), - LicenseStep(project, rootDirectory, config.license, config.authors.joinToString(", ")), - ForgeRunConfigsStep(buildSystem, projectBaseDir, config, CreatedModuleType.MULTI) - ) - - if (config.mixins) { - steps += MixinConfigStep(project, buildSystem) - } - - return steps - } - companion object { val FG5_WRAPPER_VERSION = SemanticVersion.release(7, 3) } @@ -200,7 +155,7 @@ class Fg3Mc112ProjectCreator( } } - override fun getSingleModuleSteps(): Iterable { + override fun getSteps(): Iterable { val files = createGradleFiles(hasData = false) return listOf( @@ -219,25 +174,6 @@ class Fg3Mc112ProjectCreator( ForgeRunConfigsStep(buildSystem, rootDirectory, config, CreatedModuleType.SINGLE) ) } - - override fun getMultiModuleSteps(projectBaseDir: Path): Iterable { - val modName = transformModName(config.pluginName) - val buildText = Fg3Template.applySubBuildGradle(project, buildSystem, config, modName, hasData = false) - val files = GradleFiles(buildText, null, null) - - return listOf( - SimpleGradleSetupStep( - project, - rootDirectory, - buildSystem, - files - ), - setupMainClassStep(), - McmodInfoStep(project, buildSystem, config), - Fg3CompileJavaStep(project, rootDirectory), - ForgeRunConfigsStep(buildSystem, projectBaseDir, config, CreatedModuleType.MULTI) - ) - } } class SetupDecompWorkspaceStep( diff --git a/src/main/kotlin/platform/forge/creator/ForgeProjectSettingsWizard.kt b/src/main/kotlin/platform/forge/creator/ForgeProjectSettingsWizard.kt index 2acb2539a..2ef2b10cc 100644 --- a/src/main/kotlin/platform/forge/creator/ForgeProjectSettingsWizard.kt +++ b/src/main/kotlin/platform/forge/creator/ForgeProjectSettingsWizard.kt @@ -17,7 +17,6 @@ import com.demonwav.mcdev.creator.ValidatedField import com.demonwav.mcdev.creator.ValidatedFieldType.CLASS_NAME import com.demonwav.mcdev.creator.ValidatedFieldType.LIST import com.demonwav.mcdev.creator.ValidatedFieldType.NON_BLANK -import com.demonwav.mcdev.platform.PlatformType import com.demonwav.mcdev.platform.forge.version.ForgeVersion import com.demonwav.mcdev.platform.mcp.McpVersionPair import com.demonwav.mcdev.platform.mcp.version.McpVersion @@ -126,16 +125,8 @@ class ForgeProjectSettingsWizard(private val creator: MinecraftProjectCreator) : val (conf, buildSystem) = modUpdateStep(creator, modNameField) ?: return config = conf - if (creator.configs.indexOf(conf) != 0) { - modNameField.isEditable = false - } - mainClassField.text = generateClassName(buildSystem, modNameField.text) - if (creator.configs.size > 1) { - mainClassField.text = mainClassField.text + PlatformType.FORGE.normalName - } - title.icon = PlatformAssets.FORGE_ICON_2X title.text = "Forge Settings" @@ -163,7 +154,7 @@ class ForgeProjectSettingsWizard(private val creator: MinecraftProjectCreator) : } override fun isStepVisible(): Boolean { - return creator.configs.any { it is ForgeProjectConfig } + return creator.config is ForgeProjectConfig } override fun onStepLeaving() { diff --git a/src/main/kotlin/platform/liteloader/creator/LiteLoaderProjectCreator.kt b/src/main/kotlin/platform/liteloader/creator/LiteLoaderProjectCreator.kt index 3f6fa6472..009ad4b1d 100644 --- a/src/main/kotlin/platform/liteloader/creator/LiteLoaderProjectCreator.kt +++ b/src/main/kotlin/platform/liteloader/creator/LiteLoaderProjectCreator.kt @@ -37,7 +37,7 @@ class LiteLoaderProjectCreator( } } - override fun getSingleModuleSteps(): Iterable { + override fun getSteps(): Iterable { val buildText = LiteLoaderTemplate.applyBuildGradle(project, buildSystem, config.mcVersion) val propText = LiteLoaderTemplate.applyGradleProp(project, config) val settingsText = LiteLoaderTemplate.applySettingsGradle(project, buildSystem.artifactId) @@ -57,21 +57,4 @@ class LiteLoaderProjectCreator( BasicGradleFinalizerStep(rootModule, rootDirectory, buildSystem) ) } - - override fun getMultiModuleSteps(projectBaseDir: Path): Iterable { - val buildText = LiteLoaderTemplate.applySubBuildGradle(project, buildSystem, config.mcVersion) - val propText = LiteLoaderTemplate.applyGradleProp(project, config) - val files = GradleFiles(buildText, propText, null) - - return listOf( - SimpleGradleSetupStep( - project, - rootDirectory, - buildSystem, - files - ), - setupMainClassStep(), - SetupDecompWorkspaceStep(project, rootDirectory) - ) - } } diff --git a/src/main/kotlin/platform/liteloader/creator/LiteLoaderProjectSettingsWizard.kt b/src/main/kotlin/platform/liteloader/creator/LiteLoaderProjectSettingsWizard.kt index c04c23e13..a1c5f02f7 100644 --- a/src/main/kotlin/platform/liteloader/creator/LiteLoaderProjectSettingsWizard.kt +++ b/src/main/kotlin/platform/liteloader/creator/LiteLoaderProjectSettingsWizard.kt @@ -21,7 +21,6 @@ import com.demonwav.mcdev.platform.liteloader.version.LiteLoaderVersion import com.demonwav.mcdev.platform.mcp.version.McpVersion import com.demonwav.mcdev.platform.mcp.version.McpVersionEntry import com.demonwav.mcdev.util.SemanticVersion -import com.demonwav.mcdev.util.firstOfType import com.demonwav.mcdev.util.invokeLater import com.intellij.openapi.ui.MessageType import com.intellij.openapi.ui.popup.Balloon @@ -167,21 +166,19 @@ class LiteLoaderProjectSettingsWizard(private val creator: MinecraftProjectCreat } override fun isStepVisible(): Boolean { - return creator.configs.any { it is LiteLoaderProjectConfig } + return creator.config is LiteLoaderProjectConfig } override fun updateStep() { - config = creator.configs.firstOfType() - val conf = config ?: return + config = creator.config as? LiteLoaderProjectConfig + if (config == null) { + return + } val buildSystem = creator.buildSystem ?: return modNameField.text = WordUtils.capitalizeFully(buildSystem.artifactId.replace('-', ' ')) - if (creator.configs.indexOf(conf) != 0) { - modNameField.isEditable = false - } - mainClassField.document.removeDocumentListener(listener) mainClassField.text = generateClassName(buildSystem, modNameField.text) { name -> LITEMOD + name } mainClassField.document.addDocumentListener(listener) diff --git a/src/main/kotlin/platform/mcp/aw/AwAnnotator.kt b/src/main/kotlin/platform/mcp/aw/AwAnnotator.kt index cd00d51a6..10ca1c1f7 100644 --- a/src/main/kotlin/platform/mcp/aw/AwAnnotator.kt +++ b/src/main/kotlin/platform/mcp/aw/AwAnnotator.kt @@ -51,8 +51,8 @@ class AwAnnotator : Annotator { companion object { - val compatibleByAccessMap = HashMultimap.create()!! - val compatibleByTargetMap = HashMultimap.create()!! + val compatibleByAccessMap = HashMultimap.create() + val compatibleByTargetMap = HashMultimap.create() init { compatibleByAccessMap.putAll("accessible", setOf("class", "method", "field")) diff --git a/src/main/kotlin/platform/sponge/creator/Sponge8ProjectCreator.kt b/src/main/kotlin/platform/sponge/creator/Sponge8ProjectCreator.kt index 4748d5bac..4169f57d4 100644 --- a/src/main/kotlin/platform/sponge/creator/Sponge8ProjectCreator.kt +++ b/src/main/kotlin/platform/sponge/creator/Sponge8ProjectCreator.kt @@ -23,7 +23,6 @@ import com.demonwav.mcdev.creator.buildsystem.gradle.GradleSetupStep import com.demonwav.mcdev.creator.buildsystem.gradle.GradleWrapperStep import com.demonwav.mcdev.creator.buildsystem.maven.BasicMavenFinalizerStep import com.demonwav.mcdev.creator.buildsystem.maven.BasicMavenStep -import com.demonwav.mcdev.creator.buildsystem.maven.CommonModuleDependencyStep import com.demonwav.mcdev.creator.buildsystem.maven.MavenBuildSystem import com.demonwav.mcdev.creator.buildsystem.maven.MavenGitignoreStep import com.intellij.openapi.module.Module @@ -58,7 +57,7 @@ class Sponge8MavenCreator( config: SpongeProjectConfig ) : Sponge8ProjectCreator(rootDirectory, rootModule, buildSystem, config) { - override fun getSingleModuleSteps(): Iterable { + override fun getSteps(): Iterable { val mainClassStep = setupMainClassStep() val pluginsJsonStep = CreatePluginsJsonStep(project, buildSystem, config) @@ -73,30 +72,6 @@ class Sponge8MavenCreator( BasicMavenFinalizerStep(rootModule, rootDirectory), ) } - - override fun getMultiModuleSteps(projectBaseDir: Path): Iterable { - val depStep = setupDependencyStep() - val commonDepStep = CommonModuleDependencyStep(buildSystem) - val mainClassStep = setupMainClassStep() - val pluginsJsonStep = CreatePluginsJsonStep(project, buildSystem, config) - - val pomText = SpongeTemplate.applySubPom(project) - val mavenStep = BasicMavenStep( - project = project, - rootDirectory = rootDirectory, - buildSystem = buildSystem, - config = config, - pomText = pomText, - parts = listOf( - BasicMavenStep.setupDirs(), - BasicMavenStep.setupSubCore(buildSystem.parentOrError.artifactId), - BasicMavenStep.setupSubName(config.type), - BasicMavenStep.setupInfo(), - BasicMavenStep.setupDependencies() - ) - ) - return listOf(depStep, commonDepStep, mavenStep, mainClassStep, pluginsJsonStep) - } } class CreatePluginsJsonStep( @@ -118,7 +93,7 @@ class Sponge8GradleCreator( config: SpongeProjectConfig ) : Sponge8ProjectCreator(rootDirectory, rootModule, buildSystem, config) { - override fun getSingleModuleSteps(): Iterable { + override fun getSteps(): Iterable { val mainClassStep = setupMainClassStep() val buildText = Sponge8Template.applyBuildGradle( @@ -139,21 +114,4 @@ class Sponge8GradleCreator( BasicGradleFinalizerStep(rootModule, rootDirectory, buildSystem, "runServer") ) } - - override fun getMultiModuleSteps(projectBaseDir: Path): Iterable { - val mainClassStep = setupMainClassStep() - - val buildText = Sponge8Template.applySubBuildGradle( - project, - buildSystem, - config - ) - val files = GradleFiles(buildText, null, null) - - return listOf( - CreateDirectoriesStep(buildSystem, rootDirectory), - GradleSetupStep(project, rootDirectory, buildSystem, files, true), - mainClassStep - ) - } } diff --git a/src/main/kotlin/platform/sponge/creator/SpongeProjectCreator.kt b/src/main/kotlin/platform/sponge/creator/SpongeProjectCreator.kt index 656a81d04..2906957f9 100644 --- a/src/main/kotlin/platform/sponge/creator/SpongeProjectCreator.kt +++ b/src/main/kotlin/platform/sponge/creator/SpongeProjectCreator.kt @@ -26,7 +26,6 @@ import com.demonwav.mcdev.creator.buildsystem.gradle.GradleSetupStep import com.demonwav.mcdev.creator.buildsystem.gradle.GradleWrapperStep import com.demonwav.mcdev.creator.buildsystem.maven.BasicMavenFinalizerStep import com.demonwav.mcdev.creator.buildsystem.maven.BasicMavenStep -import com.demonwav.mcdev.creator.buildsystem.maven.CommonModuleDependencyStep import com.demonwav.mcdev.creator.buildsystem.maven.MavenBuildSystem import com.demonwav.mcdev.creator.buildsystem.maven.MavenGitignoreStep import com.demonwav.mcdev.util.runWriteAction @@ -74,7 +73,7 @@ class SpongeMavenCreator( config: SpongeProjectConfig ) : SpongeProjectCreator(rootDirectory, rootModule, buildSystem, config) { - override fun getSingleModuleSteps(): Iterable { + override fun getSteps(): Iterable { val (mainClassStep, modifyStep) = setupMainClassSteps() val pomText = SpongeTemplate.applyPom(project) @@ -89,30 +88,6 @@ class SpongeMavenCreator( BasicMavenFinalizerStep(rootModule, rootDirectory) ) } - - override fun getMultiModuleSteps(projectBaseDir: Path): Iterable { - val depStep = setupDependencyStep() - val commonDepStep = CommonModuleDependencyStep(buildSystem) - val (mainClassStep, modifyStep) = setupMainClassSteps() - - val pomText = SpongeTemplate.applySubPom(project) - val mavenStep = BasicMavenStep( - project = project, - rootDirectory = rootDirectory, - buildSystem = buildSystem, - config = config, - pomText = pomText, - parts = listOf( - BasicMavenStep.setupDirs(), - BasicMavenStep.setupSubCore(buildSystem.parentOrError.artifactId), - BasicMavenStep.setupSubName(config.type), - BasicMavenStep.setupInfo(), - BasicMavenStep.setupDependencies() - ) - ) - val licenseStep = LicenseStep(project, rootDirectory, config.license, config.authors.joinToString(", ")) - return listOf(depStep, commonDepStep, mavenStep, mainClassStep, modifyStep, licenseStep) - } } class SpongeGradleCreator( @@ -122,7 +97,7 @@ class SpongeGradleCreator( config: SpongeProjectConfig ) : SpongeProjectCreator(rootDirectory, rootModule, buildSystem, config) { - override fun getSingleModuleSteps(): Iterable { + override fun getSteps(): Iterable { val (mainClassStep, modifyStep) = setupMainClassSteps() val buildText = SpongeTemplate.applyBuildGradle(project, buildSystem) @@ -142,22 +117,6 @@ class SpongeGradleCreator( BasicGradleFinalizerStep(rootModule, rootDirectory, buildSystem) ) } - - override fun getMultiModuleSteps(projectBaseDir: Path): Iterable { - val (mainClassStep, modifyStep) = setupMainClassSteps() - - val buildText = SpongeTemplate.applySubBuildGradle(project, buildSystem) - val files = GradleFiles(buildText, null, null) - - return listOf( - setupDependencyStep(), - CreateDirectoriesStep(buildSystem, rootDirectory), - GradleSetupStep(project, rootDirectory, buildSystem, files), - mainClassStep, - modifyStep, - LicenseStep(project, rootDirectory, config.license, config.authors.joinToString(", ")) - ) - } } class SpongeMainClassModifyStep( diff --git a/src/main/kotlin/platform/sponge/creator/SpongeProjectSettingsWizard.kt b/src/main/kotlin/platform/sponge/creator/SpongeProjectSettingsWizard.kt index 191c46ca9..3a7a3f07c 100644 --- a/src/main/kotlin/platform/sponge/creator/SpongeProjectSettingsWizard.kt +++ b/src/main/kotlin/platform/sponge/creator/SpongeProjectSettingsWizard.kt @@ -21,7 +21,6 @@ import com.demonwav.mcdev.platform.sponge.SpongeVersion import com.demonwav.mcdev.platform.sponge.util.SpongeConstants import com.demonwav.mcdev.util.License import com.demonwav.mcdev.util.SemanticVersion -import com.demonwav.mcdev.util.firstOfType import com.intellij.ui.EnumComboBoxModel import com.intellij.util.text.nullize import com.intellij.util.ui.UIUtil @@ -77,13 +76,12 @@ class SpongeProjectSettingsWizard(private val creator: MinecraftProjectCreator) } override fun updateStep() { - config = creator.configs.firstOfType() + config = creator.config as? SpongeProjectConfig if (config == null) { return } - val conf = config ?: return - basicUpdateStep(creator, conf, pluginNameField, mainClassField) + basicUpdateStep(creator, pluginNameField, mainClassField) if (UIUtil.isUnderDarcula()) { title.icon = PlatformAssets.SPONGE_ICON_2X_DARK @@ -109,7 +107,7 @@ class SpongeProjectSettingsWizard(private val creator: MinecraftProjectCreator) } override fun isStepVisible(): Boolean { - return creator.configs.any { it is SpongeProjectConfig } + return creator.config is SpongeProjectConfig } override fun updateDataModel() { diff --git a/src/main/kotlin/platform/velocity/creator/VelocityProjectCreator.kt b/src/main/kotlin/platform/velocity/creator/VelocityProjectCreator.kt index fc0023cc0..b3d8b455e 100644 --- a/src/main/kotlin/platform/velocity/creator/VelocityProjectCreator.kt +++ b/src/main/kotlin/platform/velocity/creator/VelocityProjectCreator.kt @@ -27,7 +27,6 @@ import com.demonwav.mcdev.creator.buildsystem.gradle.GradleSetupStep import com.demonwav.mcdev.creator.buildsystem.gradle.GradleWrapperStep import com.demonwav.mcdev.creator.buildsystem.maven.BasicMavenFinalizerStep import com.demonwav.mcdev.creator.buildsystem.maven.BasicMavenStep -import com.demonwav.mcdev.creator.buildsystem.maven.CommonModuleDependencyStep import com.demonwav.mcdev.creator.buildsystem.maven.MavenBuildSystem import com.demonwav.mcdev.creator.buildsystem.maven.MavenGitignoreStep import com.demonwav.mcdev.platform.velocity.util.VelocityConstants @@ -74,7 +73,7 @@ class VelocityMavenCreator( buildSystem: MavenBuildSystem, config: VelocityProjectConfig ) : VelocityProjectCreator(rootDirectory, rootModule, buildSystem, config) { - override fun getSingleModuleSteps(): Iterable { + override fun getSteps(): Iterable { val (mainClassStep, modifyStep) = setupMainClassSteps() val pomText = VelocityTemplate.applyPom(project, config) @@ -88,29 +87,6 @@ class VelocityMavenCreator( BasicMavenFinalizerStep(rootModule, rootDirectory) ) } - - override fun getMultiModuleSteps(projectBaseDir: Path): Iterable { - val depStep = setupDependencyStep() - val commonDepStep = CommonModuleDependencyStep(buildSystem) - val (mainClassStep, modifyStep) = setupMainClassSteps() - - val pomText = VelocityTemplate.applySubPom(project, config) - val mavenStep = BasicMavenStep( - project, - rootDirectory, - buildSystem, - config, - pomText, - listOf( - BasicMavenStep.setupDirs(), - BasicMavenStep.setupSubCore(buildSystem.parentOrError.artifactId), - BasicMavenStep.setupSubName(config.type), - BasicMavenStep.setupInfo(), - BasicMavenStep.setupDependencies() - ) - ) - return listOf(depStep, commonDepStep, mavenStep, mainClassStep, modifyStep) - } } class VelocityGradleCreator( @@ -122,7 +98,7 @@ class VelocityGradleCreator( private val ideaExtPlugin = GradlePlugin("org.jetbrains.gradle.plugin.idea-ext", "1.0.1") - override fun getSingleModuleSteps(): Iterable { + override fun getSteps(): Iterable { val (mainClassStep, modifyStep) = setupMainClassSteps() val buildText = VelocityTemplate.applyBuildGradle(project, buildSystem, config) @@ -144,24 +120,6 @@ class VelocityGradleCreator( ) } - override fun getMultiModuleSteps(projectBaseDir: Path): Iterable { - val (mainClassStep, modifyStep) = setupMainClassSteps() - - val buildText = VelocityTemplate.applySubBuildGradle(project, buildSystem) - val propText = VelocityTemplate.applyGradleProp(project, config.javaVersion.feature) - val files = GradleFiles(buildText, propText, null) - - return listOf( - setupDependencyStep(), - CreateDirectoriesStep(buildSystem, rootDirectory), - GradleSetupStep(project, rootDirectory, buildSystem, files), - AddGradlePluginStep(project, projectBaseDir, listOf(ideaExtPlugin)), - mainClassStep, - modifyStep, - buildConstantsStep() - ) - } - private fun buildConstantsStep(): BasicJavaClassStep { return BasicJavaClassStep( project, diff --git a/src/main/kotlin/platform/velocity/creator/VelocityProjectSettingsWizard.kt b/src/main/kotlin/platform/velocity/creator/VelocityProjectSettingsWizard.kt index 4600dd988..beb9d7188 100644 --- a/src/main/kotlin/platform/velocity/creator/VelocityProjectSettingsWizard.kt +++ b/src/main/kotlin/platform/velocity/creator/VelocityProjectSettingsWizard.kt @@ -17,7 +17,6 @@ import com.demonwav.mcdev.creator.ValidatedFieldType.CLASS_NAME import com.demonwav.mcdev.creator.ValidatedFieldType.LIST import com.demonwav.mcdev.creator.ValidatedFieldType.NON_BLANK import com.demonwav.mcdev.creator.getVersionSelector -import com.demonwav.mcdev.util.firstOfType import javax.swing.JComboBox import javax.swing.JComponent import javax.swing.JLabel @@ -62,13 +61,13 @@ class VelocityProjectSettingsWizard(private val creator: MinecraftProjectCreator } override fun updateStep() { - config = creator.configs.firstOfType() + config = creator.config as? VelocityProjectConfig if (config == null) { return } val conf = config ?: return - basicUpdateStep(creator, conf, pluginNameField, mainClassField) + basicUpdateStep(creator, pluginNameField, mainClassField) if (versionsLoaded) { return @@ -85,7 +84,7 @@ class VelocityProjectSettingsWizard(private val creator: MinecraftProjectCreator } override fun isStepVisible(): Boolean { - return creator.configs.any { it is VelocityProjectConfig } + return creator.config is VelocityProjectConfig } override fun updateDataModel() { diff --git a/src/main/kotlin/util/ModuleDebugRunConfigurationExtension.kt b/src/main/kotlin/util/ModuleDebugRunConfigurationExtension.kt index e142b4456..ff2375a42 100644 --- a/src/main/kotlin/util/ModuleDebugRunConfigurationExtension.kt +++ b/src/main/kotlin/util/ModuleDebugRunConfigurationExtension.kt @@ -27,7 +27,7 @@ abstract class ModuleDebugRunConfigurationExtension : RunConfigurationExtension( return configuration is ModuleBasedConfiguration<*, *> } - override fun ?> updateJavaParameters( + override fun > updateJavaParameters( configuration: T, params: JavaParameters, runnerSettings: RunnerSettings? @@ -54,5 +54,5 @@ abstract class ModuleDebugRunConfigurationExtension : RunConfigurationExtension( override fun readExternal(runConfiguration: RunConfigurationBase<*>, element: Element) {} override fun getEditorTitle(): String? = null - override fun

?> createEditor(configuration: P): SettingsEditor

? = null + override fun

> createEditor(configuration: P): SettingsEditor

? = null } diff --git a/src/main/kotlin/util/mod-creator.kt b/src/main/kotlin/util/mod-creator.kt index 230ec8480..5dcafb3c1 100644 --- a/src/main/kotlin/util/mod-creator.kt +++ b/src/main/kotlin/util/mod-creator.kt @@ -24,6 +24,6 @@ inline fun modUpdateStep( modNameField.text = WordUtils.capitalize(buildSystem.artifactId.replace('-', ' ')) - val config = creator.configs.firstOfType() ?: return null + val config = creator.config as? T ?: return null return config to buildSystem }