diff --git a/src/main/kotlin/com/demonwav/mcdev/asset/PlatformAssets.kt b/src/main/kotlin/com/demonwav/mcdev/asset/PlatformAssets.kt
index 34b6ffc8c..870956197 100644
--- a/src/main/kotlin/com/demonwav/mcdev/asset/PlatformAssets.kt
+++ b/src/main/kotlin/com/demonwav/mcdev/asset/PlatformAssets.kt
@@ -47,4 +47,7 @@ object PlatformAssets : Assets() {
val MCP_ICON_2X = loadIcon("/assets/icons/platform/MCP@2x.png")
val MCP_ICON_DARK = loadIcon("/assets/icons/platform/MCP_dark.png")
val MCP_ICON_2X_DARK = loadIcon("/assets/icons/platform/MCP@2x_dark.png")
+
+ val PLACEHOLDERAPI_ICON = loadIcon("/assets/icons/platform/PlaceholderAPI@2x.png")
+ val PLACEHOLDERAPI_ICON_2X = loadIcon("/assets/icons/platform/PlaceholderAPI@2x.png")
}
diff --git a/src/main/kotlin/com/demonwav/mcdev/buildsystem/maven/MavenBuildSystem.kt b/src/main/kotlin/com/demonwav/mcdev/buildsystem/maven/MavenBuildSystem.kt
index 92b389f46..aed89ee80 100644
--- a/src/main/kotlin/com/demonwav/mcdev/buildsystem/maven/MavenBuildSystem.kt
+++ b/src/main/kotlin/com/demonwav/mcdev/buildsystem/maven/MavenBuildSystem.kt
@@ -56,7 +56,7 @@ class MavenBuildSystem(
directories = createDirectories(rootDirectory)
val text = when (configuration.type) {
- PlatformType.BUKKIT, PlatformType.SPIGOT, PlatformType.PAPER ->
+ PlatformType.BUKKIT, PlatformType.SPIGOT, PlatformType.PAPER, PlatformType.PLACEHOLDERAPI ->
BukkitTemplate.applyPomTemplate(project)
PlatformType.BUNGEECORD, PlatformType.WATERFALL ->
BungeeCordTemplate.applyPomTemplate(project)
diff --git a/src/main/kotlin/com/demonwav/mcdev/creator/MinecraftModuleBuilder.kt b/src/main/kotlin/com/demonwav/mcdev/creator/MinecraftModuleBuilder.kt
index 6da3060aa..8788fce0c 100644
--- a/src/main/kotlin/com/demonwav/mcdev/creator/MinecraftModuleBuilder.kt
+++ b/src/main/kotlin/com/demonwav/mcdev/creator/MinecraftModuleBuilder.kt
@@ -104,7 +104,8 @@ class MinecraftModuleBuilder : JavaModuleBuilder() {
SpongeProjectSettingsWizard(creator),
ForgeProjectSettingsWizard(creator),
LiteLoaderProjectSettingsWizard(creator),
- BungeeCordProjectSettingsWizard(creator)
+ BungeeCordProjectSettingsWizard(creator),
+ PlaceholderApiProjectSettingsWizard(creator)
)
}
diff --git a/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.form b/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.form
new file mode 100644
index 000000000..e4314e82f
--- /dev/null
+++ b/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.form
@@ -0,0 +1,179 @@
+
+
diff --git a/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt b/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt
new file mode 100644
index 000000000..e17a45e3b
--- /dev/null
+++ b/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt
@@ -0,0 +1,91 @@
+/*
+ * Minecraft Dev for IntelliJ
+ *
+ * https://minecraftdev.org
+ *
+ * Copyright (c) 2020 minecraft-dev
+ *
+ * MIT License
+ */
+
+@file:Suppress("Duplicates")
+
+package com.demonwav.mcdev.creator
+
+import com.demonwav.mcdev.platform.ProjectConfiguration
+import com.demonwav.mcdev.platform.placeholderapi.PlaceholderApiProjectConfiguration
+import com.demonwav.mcdev.util.firstOfType
+import javax.swing.JComboBox
+import javax.swing.JComponent
+import javax.swing.JPanel
+import javax.swing.JTextField
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.swing.Swing
+import kotlinx.coroutines.withContext
+import org.apache.commons.lang.WordUtils
+
+class PlaceholderApiProjectSettingsWizard(private val creator: MinecraftProjectCreator) : MinecraftModuleWizardStep() {
+ private lateinit var panel: JPanel
+ private lateinit var expansionNameField: JTextField
+ private lateinit var expansionVersionField: JTextField
+ private lateinit var mainClassField: JTextField
+ private lateinit var expansionAuthorField: JTextField
+ private lateinit var minecraftVersionBox: JComboBox
+
+ private var config: PlaceholderApiProjectConfiguration? = null
+
+ override fun getComponent(): JComponent {
+ return panel
+ }
+
+ override fun updateStep() {
+ config = creator.configs.firstOfType()
+ if (config == null) {
+ return
+ }
+
+ val buildSystem = creator.buildSystem ?: return
+
+ val name = WordUtils.capitalize(buildSystem.artifactId.replace('-', ' '))
+ expansionNameField.text = name
+ expansionVersionField.text = buildSystem.version
+
+ val conf = config ?: return
+
+ if (creator.configs.indexOf(conf) != 0) {
+ expansionNameField.isEditable = false
+ expansionVersionField.isEditable = false
+ }
+
+ mainClassField.text = buildSystem.groupId.replace("-", "").toLowerCase() + "." +
+ buildSystem.artifactId.replace("-", "").toLowerCase() + "." + name.replace(" ", "")
+
+ CoroutineScope(Dispatchers.Swing).launch {
+ try {
+ withContext(Dispatchers.IO) { getVersionSelector(conf.type) }.set(minecraftVersionBox)
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ }
+ }
+
+ override fun onStepLeaving() {
+ val conf = config ?: return
+ conf.base = ProjectConfiguration.BaseConfigs(
+ expansionNameField.text,
+ expansionVersionField.text,
+ mainClassField.text
+ )
+
+ conf.setAuthors(this.expansionAuthorField.text)
+ conf.mcVersion = minecraftVersionBox.selectedItem as? String ?: ""
+ }
+
+ override fun isStepVisible(): Boolean {
+ return creator.configs.any { it is PlaceholderApiProjectConfiguration }
+ }
+
+ override fun updateDataModel() {}
+}
diff --git a/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.form b/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.form
index a1d788154..8198d9d61 100644
--- a/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.form
+++ b/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.form
@@ -18,12 +18,12 @@
-
+
-
+
@@ -95,7 +95,7 @@
-
+
@@ -103,7 +103,7 @@
-
+
@@ -111,7 +111,7 @@
-
+
@@ -119,7 +119,7 @@
-
+
@@ -127,7 +127,7 @@
-
+
@@ -135,7 +135,7 @@
-
+
@@ -152,7 +152,7 @@
-
+
@@ -160,7 +160,7 @@
-
+
@@ -176,12 +176,30 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.kt b/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.kt
index 865ace375..3fd6ac62f 100644
--- a/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.kt
+++ b/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.kt
@@ -16,6 +16,7 @@ import com.demonwav.mcdev.platform.bukkit.BukkitProjectConfiguration
import com.demonwav.mcdev.platform.bungeecord.BungeeCordProjectConfiguration
import com.demonwav.mcdev.platform.forge.ForgeProjectConfiguration
import com.demonwav.mcdev.platform.liteloader.LiteLoaderProjectConfiguration
+import com.demonwav.mcdev.platform.placeholderapi.PlaceholderApiProjectConfiguration
import com.demonwav.mcdev.platform.sponge.SpongeProjectConfiguration
import com.intellij.ide.util.projectWizard.ModuleWizardStep
import com.intellij.ui.IdeBorderFactory
@@ -44,6 +45,7 @@ class ProjectChooserWizardStep(private val creator: MinecraftProjectCreator) : M
private lateinit var bungeeCordPluginCheckBox: JCheckBox
private lateinit var waterfallPluginCheckBox: JCheckBox
private lateinit var liteLoaderModCheckBox: JCheckBox
+ private lateinit var papiExpansionCheckBox: JCheckBox
override fun getComponent(): JComponent {
chooserPanel.border = IdeBorderFactory.createBorder()
@@ -86,6 +88,7 @@ class ProjectChooserWizardStep(private val creator: MinecraftProjectCreator) : M
liteLoaderModCheckBox.addActionListener { fillInInfoPane() }
bungeeCordPluginCheckBox.addActionListener { toggle(bungeeCordPluginCheckBox, waterfallPluginCheckBox) }
waterfallPluginCheckBox.addActionListener { toggle(waterfallPluginCheckBox, bungeeCordPluginCheckBox) }
+ papiExpansionCheckBox.addActionListener { fillInInfoPane() }
if (UIUtil.isUnderDarcula()) {
spongeIcon.icon = PlatformAssets.SPONGE_ICON_2X_DARK
@@ -121,6 +124,7 @@ class ProjectChooserWizardStep(private val creator: MinecraftProjectCreator) : M
sb.append(liteLoaderModCheckBox, liteLoaderInfo)
sb.append(bungeeCordPluginCheckBox, bungeeCordInfo)
sb.append(waterfallPluginCheckBox, waterfallInfo)
+ sb.append(papiExpansionCheckBox, papiInfo)
sb.append("