From 4b924af6834e8ed19e85b107dce520c5a0c2871e Mon Sep 17 00:00:00 2001 From: darbyjack Date: Fri, 8 May 2020 23:00:14 -0500 Subject: [PATCH 01/11] Initial start on PlaceholderAPI --- .../creator/ProjectChooserWizardStep.form | 39 +++++++++++++----- .../mcdev/creator/ProjectChooserWizardStep.kt | 5 +++ .../icons/platform/PlaceholderAPI@2x.png | Bin 0 -> 1841 bytes 3 files changed, 33 insertions(+), 11 deletions(-) create mode 100644 src/main/resources/assets/icons/platform/PlaceholderAPI@2x.png diff --git a/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.form b/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.form index a1d788154..0fcd17396 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,29 @@ - + + + + + + + + + + + + + + + + + + diff --git a/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.kt b/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.kt index 865ace375..975ee25ea 100644 --- a/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.kt +++ b/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.kt @@ -44,6 +44,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 +87,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 +123,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("") @@ -199,5 +202,7 @@ class ProjectChooserWizardStep(private val creator: MinecraftProjectCreator) : M private const val liteLoaderInfo = "Create a standard " + "LiteLoader mod, for use " + "on LiteLoader clients." + private const val papiInfo = "Create a standard " + "PlaceholderAPI expansion, for use " + + "on servers running PlaceholderAPI." } } diff --git a/src/main/resources/assets/icons/platform/PlaceholderAPI@2x.png b/src/main/resources/assets/icons/platform/PlaceholderAPI@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e8f16bbf5208915b3a4ba71d7cc5606d42dc0b4d GIT binary patch literal 1841 zcmZ{lcR1UN9>#yQNwrjsb0~??h?yEyk}8_mu~Q{t)GmsmMroB})vT>zRE@eS_6SOQ zO7$2;4$Tn>ZXcy6A+g7G(?9PY_xV2W_kEuCeLjD`X*O0Sf&#w_001CpW{R?7JNTFQ zIN1M0V&gU2xO@#Uh5*o#4Lb4Q{#AOK+F<}7<|+Wh{{a9;>?r;R07Sq6V9gx>^ojvM zJcQ6=i)0r(_bg0Mz}c^>d{>vpPWVGiox%XX^7}8Hi}=RgHV{xk+K_JzC#F}dg3X7hf6TCFZ{Xt@qYf9q! zgY&i`BKXyjj$c2*QEH&xWa+5cX( z=-+-{O$eeO_vQ}P{#|X%ctm7E7=7^?1z(?vDl}>%+38Z+bS;YW&(|saD@S*R-=hWT z6Z68}D$x0-WeP;VR$z45+@o^2C*QP%hMp#Vy>?pFo9rrN6`}J)YwRZeh$^GueT)B33^C(5GMKv;Bg2XG1nTq|ftXk1MzS;i@(Vi$W zJl;U-Ey$+N%(XfDQX~ZPGHLHR_TN9*q{-fj=^OA=7>Ih)6;~6>k(8fO_?t*77a}t% zs!kd)!JrcdqBE6m_Qfc5ss5P9>hIbiS!-S^8cz=l&gSW@fplU)?0WmaA(6PllB{3^ zSxz#x=uH=RZl0X1>aAjR5ujM6`fcIF;Z`Pee@7=mp&AMx!;qT`s?rDBGN0V2&}{nb zI!tZgOCyE)<`EvsAk^zvO_xiy#5EA~(^-rmduv`~iFX+_>BX&9oD7LXaU{45gP_#L zhM3`9<|3w*yfSMWccy>5bmw$^`|9*g2JpTyy@O#)k0_IhlY6o|{8{YEVWY`0@7~t; z*HW&j7|yD(*68fmQ>lSy<@r9FTc>lMx*?hsH^3JcsAvyXe8sHygv`DhQl_+bOswo~ zG@RtMeQ?^dBGTy>bZMsrx&P5cqmWsXYvy@FH#+{4r4W2|0i-w5Gl>n2>lJ{%Bz85sN^U69B=v3YAn#dA# z!9fAYbyZCe(D{HkRQ>__5es+%a_% zDGqK2zKxy1rI*Q-)nkjou86{(XONXmtX}*Gsx_FohuH8PXej1NNWZDuwfs1EZQ}Xj z&yp)h#fh8g#foIKK>U1X&2oY3v8+$9JFGOLieRbBBFY>&L{iRigCDN$xmF~W`+$rr z!G6-S!@PKIp*IOBrWCWEG{_$pwDuOr1N%A5xPX)ZZRao%4{~dgty?ryrVrha!ei@=S;9RP?u~S#Tz&2=#z>nYbrQx9T}KmI`Em_?#II z{;#4<>7$MuHXkL2zim|nOhRyqV~b8soE>#p8Pm5b%luyz`^2Gu}@G~Gt%HjsCcHcvF+{yS~i z*nTOz80=y$Jfs4<(xfA^UU~78Wl`0*ND91J9@d=sZ!}#L-z`^ULoPYZ>uo_>3mXDwIFE>~DU#2Bv}>O!EhE{EIh z*J@uB^A=Up29-F@5N%LY-u1uhPeUV0)~{mx&ivO|du9J;C!UcVgUL@v!zg2A#$ zS*!KkgNF7Ehly+Qe>zA{z&@=*{@sdZ6 z5Ff4yHn8VIAsl@-+{+`}ThH^MH`@RWxCUGmuB{5!b%1N?X Date: Sat, 9 May 2020 22:39:06 -0500 Subject: [PATCH 02/11] Added in a bunch more base papi stuff --- .../demonwav/mcdev/asset/PlatformAssets.kt | 3 + .../mcdev/creator/MinecraftModuleBuilder.kt | 3 +- .../PlaceholderApiProjectSettingsWizard.form | 155 ++++++++++++++++++ .../PlaceholderApiProjectSettingsWizard.kt | 66 ++++++++ .../creator/ProjectChooserWizardStep.form | 1 + .../mcdev/creator/ProjectChooserWizardStep.kt | 10 +- .../mcdev/facet/MinecraftFacetEditorTab.form | 39 ++++- .../mcdev/facet/MinecraftFacetEditorTab.kt | 16 +- .../mcdev/facet/MinecraftLibraryKinds.kt | 4 +- .../demonwav/mcdev/platform/PlatformType.kt | 4 +- .../placeholderapi/PlaceholderApiModule.kt | 12 ++ .../PlaceholderApiModuleType.kt | 23 +++ .../PlaceholderApiProjectConfiguration.kt | 52 ++++++ .../placeholderapi/PlaceholderApiTemplate.kt | 29 ++++ .../framework/PlaceholderApiLibraryKind.kt | 5 + .../PlaceholderApiPresentationProvider.kt | 10 ++ .../util/PlaceholderApiConstants.kt | 5 + .../util/MinecraftFileTemplateGroupFactory.kt | 3 + .../j2ee/palceholderapi_main_class.java.html | 15 ++ .../j2ee/placeholderapi_main_class.java.ft | 94 +++++++++++ 20 files changed, 538 insertions(+), 11 deletions(-) create mode 100644 src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.form create mode 100644 src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt create mode 100644 src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModule.kt create mode 100644 src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModuleType.kt create mode 100644 src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt create mode 100644 src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiTemplate.kt create mode 100644 src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiLibraryKind.kt create mode 100644 src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiPresentationProvider.kt create mode 100644 src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/util/PlaceholderApiConstants.kt create mode 100644 src/main/resources/fileTemplates/j2ee/palceholderapi_main_class.java.html create mode 100644 src/main/resources/fileTemplates/j2ee/placeholderapi_main_class.java.ft 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/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..7eb04486b --- /dev/null +++ b/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.form @@ -0,0 +1,155 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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..e9b7c4799 --- /dev/null +++ b/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt @@ -0,0 +1,66 @@ +@file:Suppress("Duplicates") + +package com.demonwav.mcdev.creator + +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 minecraftVersionBox: JComboBox + + private var config: PlaceholderApiProjectConfiguration? = null + + override fun getComponent(): JComponent { + return panel + } + + override fun updateDataModel() {} + + 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) { + } + } + } + + override fun isStepVisible(): Boolean { + return creator.configs.any { it is PlaceholderApiProjectConfiguration } + } +} diff --git a/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.form b/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.form index 0fcd17396..8198d9d61 100644 --- a/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.form +++ b/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.form @@ -188,6 +188,7 @@
+ diff --git a/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.kt b/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.kt index 975ee25ea..d9c1deca9 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 @@ -164,6 +165,10 @@ class ProjectChooserWizardStep(private val creator: MinecraftProjectCreator) : M if (waterfallPluginCheckBox.isSelected) { creator.configs += BungeeCordProjectConfiguration(PlatformType.WATERFALL) } + + if (papiExpansionCheckBox.isSelected) { + creator.configs += PlaceholderApiProjectConfiguration() + } } override fun validate(): Boolean { @@ -174,7 +179,8 @@ class ProjectChooserWizardStep(private val creator: MinecraftProjectCreator) : M forgeModCheckBox.isSelected || liteLoaderModCheckBox.isSelected || bungeeCordPluginCheckBox.isSelected || - waterfallPluginCheckBox.isSelected + waterfallPluginCheckBox.isSelected || + papiExpansionCheckBox.isSelected } companion object { @@ -203,6 +209,6 @@ class ProjectChooserWizardStep(private val creator: MinecraftProjectCreator) : M "LiteLoader mod, for use " + "on LiteLoader clients." private const val papiInfo = "Create a standard " + "PlaceholderAPI expansion, for use " + - "on servers running PlaceholderAPI." + "on servers running PlaceholderAPI." } } diff --git a/src/main/kotlin/com/demonwav/mcdev/facet/MinecraftFacetEditorTab.form b/src/main/kotlin/com/demonwav/mcdev/facet/MinecraftFacetEditorTab.form index 0b1d6cb80..67867ecf5 100644 --- a/src/main/kotlin/com/demonwav/mcdev/facet/MinecraftFacetEditorTab.form +++ b/src/main/kotlin/com/demonwav/mcdev/facet/MinecraftFacetEditorTab.form @@ -1,6 +1,6 @@
- + @@ -23,7 +23,7 @@ - + @@ -398,6 +398,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/kotlin/com/demonwav/mcdev/facet/MinecraftFacetEditorTab.kt b/src/main/kotlin/com/demonwav/mcdev/facet/MinecraftFacetEditorTab.kt index 345bbb77f..ec286dbb7 100644 --- a/src/main/kotlin/com/demonwav/mcdev/facet/MinecraftFacetEditorTab.kt +++ b/src/main/kotlin/com/demonwav/mcdev/facet/MinecraftFacetEditorTab.kt @@ -43,6 +43,8 @@ class MinecraftFacetEditorTab(private val configuration: MinecraftFacetConfigura private lateinit var bungeecordAutoCheckBox: JCheckBox private lateinit var waterfallEnabledCheckBox: JCheckBox private lateinit var waterfallAutoCheckBox: JCheckBox + private lateinit var placeholderApiEnabledCheckBox: JCheckBox + private lateinit var placeholderApiAutoCheckBox: JCheckBox private lateinit var spongeIcon: JLabel private lateinit var mcpIcon: JLabel @@ -59,7 +61,8 @@ class MinecraftFacetEditorTab(private val configuration: MinecraftFacetConfigura mcpEnabledCheckBox, mixinEnabledCheckBox, bungeecordEnabledCheckBox, - waterfallEnabledCheckBox + waterfallEnabledCheckBox, + placeholderApiEnabledCheckBox ) } @@ -74,7 +77,8 @@ class MinecraftFacetEditorTab(private val configuration: MinecraftFacetConfigura mcpAutoCheckBox, mixinAutoCheckBox, bungeecordAutoCheckBox, - waterfallAutoCheckBox + waterfallAutoCheckBox, + placeholderApiAutoCheckBox ) } @@ -137,6 +141,8 @@ class MinecraftFacetEditorTab(private val configuration: MinecraftFacetConfigura bungeecordEnabledCheckBox.addActionListener { unique(bungeecordEnabledCheckBox, waterfallEnabledCheckBox) } waterfallEnabledCheckBox.addActionListener { unique(waterfallEnabledCheckBox, bungeecordEnabledCheckBox) } + placeholderApiEnabledCheckBox.addActionListener { also(placeholderApiEnabledCheckBox) } + return panel } @@ -256,6 +262,7 @@ class MinecraftFacetEditorTab(private val configuration: MinecraftFacetConfigura private const val MIXIN = MCP + 1 private const val BUNGEECORD = MIXIN + 1 private const val WATERFALL = BUNGEECORD + 1 + private const val PLACEHOLDERAPI = WATERFALL + 1 private val platformTypes = arrayOf( PlatformType.BUKKIT, @@ -267,10 +274,11 @@ class MinecraftFacetEditorTab(private val configuration: MinecraftFacetConfigura PlatformType.MCP, PlatformType.MIXIN, PlatformType.BUNGEECORD, - PlatformType.WATERFALL + PlatformType.WATERFALL, + PlatformType.PLACEHOLDERAPI ) private val indexes = - intArrayOf(BUKKIT, SPIGOT, PAPER, SPONGE, FORGE, LITELOADER, MCP, MIXIN, BUNGEECORD, WATERFALL) + intArrayOf(BUKKIT, SPIGOT, PAPER, SPONGE, FORGE, LITELOADER, MCP, MIXIN, BUNGEECORD, WATERFALL, PLACEHOLDERAPI) } } diff --git a/src/main/kotlin/com/demonwav/mcdev/facet/MinecraftLibraryKinds.kt b/src/main/kotlin/com/demonwav/mcdev/facet/MinecraftLibraryKinds.kt index 0cda8e660..bf87b7eb2 100644 --- a/src/main/kotlin/com/demonwav/mcdev/facet/MinecraftLibraryKinds.kt +++ b/src/main/kotlin/com/demonwav/mcdev/facet/MinecraftLibraryKinds.kt @@ -19,6 +19,7 @@ import com.demonwav.mcdev.platform.forge.framework.FORGE_LIBRARY_KIND import com.demonwav.mcdev.platform.liteloader.framework.LITELOADER_LIBRARY_KIND import com.demonwav.mcdev.platform.mcp.framework.MCP_LIBRARY_KIND import com.demonwav.mcdev.platform.mixin.framework.MIXIN_LIBRARY_KIND +import com.demonwav.mcdev.platform.placeholderapi.framework.PLACEHOLDERAPI_LIBRARY_KIND import com.demonwav.mcdev.platform.sponge.framework.SPONGE_LIBRARY_KIND val MINECRAFT_LIBRARY_KINDS = setOf( @@ -31,5 +32,6 @@ val MINECRAFT_LIBRARY_KINDS = setOf( MCP_LIBRARY_KIND, MIXIN_LIBRARY_KIND, BUNGEECORD_LIBRARY_KIND, - WATERFALL_LIBRARY_KIND + WATERFALL_LIBRARY_KIND, + PLACEHOLDERAPI_LIBRARY_KIND ) diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/PlatformType.kt b/src/main/kotlin/com/demonwav/mcdev/platform/PlatformType.kt index f9428cae8..8115d720a 100644 --- a/src/main/kotlin/com/demonwav/mcdev/platform/PlatformType.kt +++ b/src/main/kotlin/com/demonwav/mcdev/platform/PlatformType.kt @@ -28,6 +28,7 @@ import com.demonwav.mcdev.platform.mcp.McpModuleType import com.demonwav.mcdev.platform.mcp.framework.MCP_LIBRARY_KIND import com.demonwav.mcdev.platform.mixin.MixinModuleType import com.demonwav.mcdev.platform.mixin.framework.MIXIN_LIBRARY_KIND +import com.demonwav.mcdev.platform.placeholderapi.PlaceholderApiModuleType import com.demonwav.mcdev.platform.sponge.SpongeModuleType import com.demonwav.mcdev.platform.sponge.framework.SPONGE_LIBRARY_KIND import com.intellij.openapi.roots.libraries.LibraryKind @@ -48,7 +49,8 @@ enum class PlatformType( BUNGEECORD(BungeeCordModuleType, "BungeeCord", "bungeecord.json", arrayOf(WATERFALL)), LITELOADER(LiteLoaderModuleType, "LiteLoader"), MIXIN(MixinModuleType, "Mixin"), - MCP(McpModuleType, "MCP"); + MCP(McpModuleType, "MCP"), + PLACEHOLDERAPI(PlaceholderApiModuleType, "PlaceholderAPI"); companion object { fun removeParents(types: MutableSet) = diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModule.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModule.kt new file mode 100644 index 000000000..9df638a95 --- /dev/null +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModule.kt @@ -0,0 +1,12 @@ +package com.demonwav.mcdev.platform.placeholderapi + +import com.demonwav.mcdev.asset.PlatformAssets +import com.demonwav.mcdev.facet.MinecraftFacet +import com.demonwav.mcdev.platform.AbstractModule +import com.demonwav.mcdev.platform.PlatformType + +class PlaceholderApiModule internal constructor(facet: MinecraftFacet) : AbstractModule(facet) { + override val moduleType = PlaceholderApiModuleType + override val type = PlatformType.PLACEHOLDERAPI + override val icon = PlatformAssets.PLACEHOLDERAPI_ICON +} diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModuleType.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModuleType.kt new file mode 100644 index 000000000..1685ecf96 --- /dev/null +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModuleType.kt @@ -0,0 +1,23 @@ +package com.demonwav.mcdev.platform.placeholderapi + +import com.demonwav.mcdev.asset.PlatformAssets +import com.demonwav.mcdev.facet.MinecraftFacet +import com.demonwav.mcdev.platform.AbstractModuleType +import com.demonwav.mcdev.platform.PlatformType +import com.demonwav.mcdev.platform.bukkit.BukkitModuleType +import com.demonwav.mcdev.platform.placeholderapi.util.PlaceholderApiConstants + +object PlaceholderApiModuleType : AbstractModuleType("", "") { + private const val ID = "PLACEHOLDERAPI_MODULE_TYPE" + + val IGNORED_ANNOTATIONS = listOf(PlaceholderApiConstants.HANDLER_ANNOTATION) + val LISTENER_ANNOTATIONS = listOf(PlaceholderApiConstants.HANDLER_ANNOTATION) + + override val platformType = PlatformType.PLACEHOLDERAPI + override val icon = PlatformAssets.PLACEHOLDERAPI_ICON + override val id = ID + override val ignoredAnnotations = BukkitModuleType.IGNORED_ANNOTATIONS + override val listenerAnnotations = BukkitModuleType.LISTENER_ANNOTATIONS + + override fun generateModule(facet: MinecraftFacet) = PlaceholderApiModule(facet) +} diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt new file mode 100644 index 000000000..75cfceb0f --- /dev/null +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt @@ -0,0 +1,52 @@ + +@file:Suppress("Duplicates") +package com.demonwav.mcdev.platform.placeholderapi + +import com.demonwav.mcdev.buildsystem.BuildSystem +import com.demonwav.mcdev.platform.PlatformType +import com.demonwav.mcdev.platform.ProjectConfiguration +import com.demonwav.mcdev.util.runWriteTask +import com.intellij.ide.util.EditorHelper +import com.intellij.openapi.progress.ProgressIndicator +import com.intellij.openapi.project.Project +import com.intellij.psi.PsiManager + +class PlaceholderApiProjectConfiguration : ProjectConfiguration() { + override var type: PlatformType = PlatformType.PLACEHOLDERAPI + + var papiVersion: String = "" + var mcVersion: String = "" + + override fun create(project: Project, buildSystem: BuildSystem, indicator: ProgressIndicator) { + if (project.isDisposed) { + return + } + + val baseConfig = base ?: return + val dirs = buildSystem.directories ?: return + + runWriteTask { + indicator.text = "Writing main class" + + var file = dirs.sourceDirectory + var files = baseConfig.mainClass.split(".").toTypedArray() + var className = files.last() + val packageName = baseConfig.mainClass.substring(0, baseConfig.mainClass.length - className.length - 1) + file = getMainClassDirectory(files, file) + + val mainClassFile = file.findOrCreateChildData(this, className + ".java") + PlaceholderApiTemplate.applyMainClassTemplate( + project, + mainClassFile, + packageName, + className + ) + + PsiManager.getInstance(project).findFile(mainClassFile)?.let { mainClassPsi -> + EditorHelper.openInEditor(mainClassPsi) + } + } + } + + override fun setupDependencies(buildSystem: BuildSystem) {} +} diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiTemplate.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiTemplate.kt new file mode 100644 index 000000000..c7693c3e5 --- /dev/null +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiTemplate.kt @@ -0,0 +1,29 @@ +package com.demonwav.mcdev.platform.placeholderapi + +import com.demonwav.mcdev.platform.BaseTemplate +import com.demonwav.mcdev.util.MinecraftFileTemplateGroupFactory +import com.intellij.openapi.project.Project +import com.intellij.openapi.vfs.VirtualFile +import java.util.Properties + +object PlaceholderApiTemplate { + + fun applyMainClassTemplate( + project: Project, + mainClassFile: VirtualFile, + packageName: String, + className: String + ) { + val properties = Properties() + + properties.setProperty("PACKAGE", packageName) + properties.setProperty("CLASS_NAME", className) + + BaseTemplate.applyTemplate( + project, + mainClassFile, + MinecraftFileTemplateGroupFactory.PLACEHOLDERAPI_MAIN_CLASS_TEMPLATE, + properties + ) + } +} diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiLibraryKind.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiLibraryKind.kt new file mode 100644 index 000000000..04350532e --- /dev/null +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiLibraryKind.kt @@ -0,0 +1,5 @@ +package com.demonwav.mcdev.platform.placeholderapi.framework + +import com.intellij.openapi.roots.libraries.LibraryKind + +val PLACEHOLDERAPI_LIBRARY_KIND: LibraryKind = LibraryKind.create("placeholderapi-library") diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiPresentationProvider.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiPresentationProvider.kt new file mode 100644 index 000000000..8602fc42b --- /dev/null +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiPresentationProvider.kt @@ -0,0 +1,10 @@ +package com.demonwav.mcdev.platform.placeholderapi.framework + +import com.demonwav.mcdev.asset.PlatformAssets +import com.demonwav.mcdev.facet.ManifestLibraryPresentationProvider +import com.intellij.framework.library.LibraryVersionProperties + +class PlaceholderApiPresentationProvider : + ManifestLibraryPresentationProvider(PLACEHOLDERAPI_LIBRARY_KIND, "PlaceholderAPI", true) { + override fun getIcon(properties: LibraryVersionProperties?) = PlatformAssets.PLACEHOLDERAPI_ICON +} diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/util/PlaceholderApiConstants.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/util/PlaceholderApiConstants.kt new file mode 100644 index 000000000..f38fd18e4 --- /dev/null +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/util/PlaceholderApiConstants.kt @@ -0,0 +1,5 @@ +package com.demonwav.mcdev.platform.placeholderapi.util + +object PlaceholderApiConstants { + const val HANDLER_ANNOTATION = "org.bukkit.event.EventHandler" +} diff --git a/src/main/kotlin/com/demonwav/mcdev/util/MinecraftFileTemplateGroupFactory.kt b/src/main/kotlin/com/demonwav/mcdev/util/MinecraftFileTemplateGroupFactory.kt index 83495b372..f828ede06 100644 --- a/src/main/kotlin/com/demonwav/mcdev/util/MinecraftFileTemplateGroupFactory.kt +++ b/src/main/kotlin/com/demonwav/mcdev/util/MinecraftFileTemplateGroupFactory.kt @@ -62,6 +62,7 @@ class MinecraftFileTemplateGroupFactory : FileTemplateGroupDescriptorFactory { group.addTemplate(FileTemplateDescriptor(MIXIN_OVERWRITE_FALLBACK, PlatformAssets.MIXIN_ICON)) + group.addTemplate(FileTemplateDescriptor(PLACEHOLDERAPI_MAIN_CLASS_TEMPLATE, PlatformAssets.PLACEHOLDERAPI_ICON)) return group } @@ -102,5 +103,7 @@ class MinecraftFileTemplateGroupFactory : FileTemplateGroupDescriptorFactory { const val LITELOADER_MAIN_CLASS_TEMPLATE = "liteloader_main_class.java" const val MIXIN_OVERWRITE_FALLBACK = "Mixin Overwrite Fallback.java" + + const val PLACEHOLDERAPI_MAIN_CLASS_TEMPLATE = "placeholderapi_main_class.java" } } diff --git a/src/main/resources/fileTemplates/j2ee/palceholderapi_main_class.java.html b/src/main/resources/fileTemplates/j2ee/palceholderapi_main_class.java.html new file mode 100644 index 000000000..cf003be04 --- /dev/null +++ b/src/main/resources/fileTemplates/j2ee/palceholderapi_main_class.java.html @@ -0,0 +1,15 @@ + + + + +

This is a built-in file template used to create a new main class for PlaceholderAPI.

+ + diff --git a/src/main/resources/fileTemplates/j2ee/placeholderapi_main_class.java.ft b/src/main/resources/fileTemplates/j2ee/placeholderapi_main_class.java.ft new file mode 100644 index 000000000..404334d60 --- /dev/null +++ b/src/main/resources/fileTemplates/j2ee/placeholderapi_main_class.java.ft @@ -0,0 +1,94 @@ +package ${PACKAGE}; + +import org.bukkit.Player; +import me.clip.placeholderapi.expansion.PlaceholderExpansion; + +/** + * This class will automatically register as a placeholder expansion + * when a jar including this class is added to the directory + * {@code /plugins/PlaceholderAPI/expansions} on your server. + *
+ *
If you create such a class inside your own plugin, you have to + * register it manually in your plugins {@code onEnable()} by using + * {@code new YourExpansionClass().register();} + */ +public class ${CLASS_NAME} extends PlaceholderExpansion { + + /** + * This method should always return true unless we + * have a dependency we need to make sure is on the server + * for our placeholders to work! + * + * @return always true since we do not have any dependencies. + */ + @Override + public boolean canRegister(){ + return true; + } + + /** + * The name of the person who created this expansion should go here. + * + * @return The name of the author as a String. + */ + @Override + public String getAuthor(){ + return "someauthor"; + } + + /** + * The placeholder identifier should go here. + *
This is what tells PlaceholderAPI to call our onRequest + * method to obtain a value if a placeholder starts with our + * identifier. + *
This must be unique and can not contain % or _ + * + * @return The identifier in {@code %_%} as String. + */ + @Override + public String getIdentifier(){ + return "example"; + } + + /** + * This is the version of this expansion. + *
You don't have to use numbers, since it is set as a String. + * + * @return The version as a String. + */ + @Override + public String getVersion(){ + return "1.0.0"; + } + + /** + * This is the method called when a placeholder with our identifier + * is found and needs a value. + *
We specify the value identifier in this method. + *
Since version 2.9.1 can you use OfflinePlayers in your requests. + * + * @param player + * A {@link org.bukkit.OfflinePlayer OfflinePlayer}. + * @param identifier + * A String containing the identifier/value. + * + * @return Possibly-null String of the requested identifier. + */ + @Override + public String onRequest(Player player, String identifier){ + + // %example_placeholder1% + if(identifier.equals("placeholder1")){ + return "placeholder1 works"; + } + + // %example_placeholder2% + if(identifier.equals("placeholder2")){ + return "placeholder2 works"; + } + + // We return null if an invalid placeholder (f.e. %example_placeholder3%) + // was provided + return null; + } +} \ No newline at end of file From c595d02fda61203490af78c033f9944b906d25ef Mon Sep 17 00:00:00 2001 From: darbyjack Date: Sat, 9 May 2020 22:52:38 -0500 Subject: [PATCH 03/11] Removed extra label and added papi to library kind enum --- src/main/kotlin/com/demonwav/mcdev/platform/PlatformType.kt | 2 ++ .../placeholderapi/PlaceholderApiProjectConfiguration.kt | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/PlatformType.kt b/src/main/kotlin/com/demonwav/mcdev/platform/PlatformType.kt index 8115d720a..03fd62911 100644 --- a/src/main/kotlin/com/demonwav/mcdev/platform/PlatformType.kt +++ b/src/main/kotlin/com/demonwav/mcdev/platform/PlatformType.kt @@ -29,6 +29,7 @@ import com.demonwav.mcdev.platform.mcp.framework.MCP_LIBRARY_KIND import com.demonwav.mcdev.platform.mixin.MixinModuleType import com.demonwav.mcdev.platform.mixin.framework.MIXIN_LIBRARY_KIND import com.demonwav.mcdev.platform.placeholderapi.PlaceholderApiModuleType +import com.demonwav.mcdev.platform.placeholderapi.framework.PLACEHOLDERAPI_LIBRARY_KIND import com.demonwav.mcdev.platform.sponge.SpongeModuleType import com.demonwav.mcdev.platform.sponge.framework.SPONGE_LIBRARY_KIND import com.intellij.openapi.roots.libraries.LibraryKind @@ -67,6 +68,7 @@ enum class PlatformType( MIXIN_LIBRARY_KIND -> MIXIN BUNGEECORD_LIBRARY_KIND -> BUNGEECORD WATERFALL_LIBRARY_KIND -> WATERFALL + PLACEHOLDERAPI_LIBRARY_KIND -> PLACEHOLDERAPI else -> null } } diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt index 75cfceb0f..fadfe4e9a 100644 --- a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt @@ -14,7 +14,6 @@ import com.intellij.psi.PsiManager class PlaceholderApiProjectConfiguration : ProjectConfiguration() { override var type: PlatformType = PlatformType.PLACEHOLDERAPI - var papiVersion: String = "" var mcVersion: String = "" override fun create(project: Project, buildSystem: BuildSystem, indicator: ProgressIndicator) { From ad476fcffdbc410478d5fccafe6187a7f8166444 Mon Sep 17 00:00:00 2001 From: darbyjack Date: Sat, 9 May 2020 22:55:21 -0500 Subject: [PATCH 04/11] Use our own annotations --- .../platform/placeholderapi/PlaceholderApiModuleType.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModuleType.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModuleType.kt index 1685ecf96..259b3e8e8 100644 --- a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModuleType.kt +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModuleType.kt @@ -4,7 +4,6 @@ import com.demonwav.mcdev.asset.PlatformAssets import com.demonwav.mcdev.facet.MinecraftFacet import com.demonwav.mcdev.platform.AbstractModuleType import com.demonwav.mcdev.platform.PlatformType -import com.demonwav.mcdev.platform.bukkit.BukkitModuleType import com.demonwav.mcdev.platform.placeholderapi.util.PlaceholderApiConstants object PlaceholderApiModuleType : AbstractModuleType("", "") { @@ -16,8 +15,8 @@ object PlaceholderApiModuleType : AbstractModuleType("", " override val platformType = PlatformType.PLACEHOLDERAPI override val icon = PlatformAssets.PLACEHOLDERAPI_ICON override val id = ID - override val ignoredAnnotations = BukkitModuleType.IGNORED_ANNOTATIONS - override val listenerAnnotations = BukkitModuleType.LISTENER_ANNOTATIONS + override val ignoredAnnotations = IGNORED_ANNOTATIONS + override val listenerAnnotations = LISTENER_ANNOTATIONS override fun generateModule(facet: MinecraftFacet) = PlaceholderApiModule(facet) } From 37f9eed4e112412bcbdc31b7152a833ac45e7c0d Mon Sep 17 00:00:00 2001 From: darbyjack Date: Sat, 9 May 2020 23:16:12 -0500 Subject: [PATCH 05/11] Fixed versions not showing up --- .../creator/PlaceholderApiProjectSettingsWizard.form | 10 +++++++++- .../creator/PlaceholderApiProjectSettingsWizard.kt | 5 +++-- .../kotlin/com/demonwav/mcdev/platform/PlatformType.kt | 2 +- .../placeholderapi/PlaceholderApiModuleType.kt | 5 ++--- .../PlaceholderApiProjectConfiguration.kt | 9 +++++---- .../placeholderapi/util/PlaceholderApiConstants.kt | 4 +--- 6 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.form b/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.form index 7eb04486b..cfdfefe3d 100644 --- a/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.form +++ b/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.form @@ -1,6 +1,6 @@
- + @@ -150,6 +150,14 @@ + + + + + + + +
diff --git a/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt b/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt index e9b7c4799..d0af1752e 100644 --- a/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt +++ b/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt @@ -28,8 +28,6 @@ class PlaceholderApiProjectSettingsWizard(private val creator: MinecraftProjectC return panel } - override fun updateDataModel() {} - override fun updateStep() { config = creator.configs.firstOfType() if (config == null) { @@ -56,6 +54,7 @@ class PlaceholderApiProjectSettingsWizard(private val creator: MinecraftProjectC try { withContext(Dispatchers.IO) { getVersionSelector(conf.type) }.set(minecraftVersionBox) } catch (e: Exception) { + e.printStackTrace() } } } @@ -63,4 +62,6 @@ class PlaceholderApiProjectSettingsWizard(private val creator: MinecraftProjectC override fun isStepVisible(): Boolean { return creator.configs.any { it is PlaceholderApiProjectConfiguration } } + + override fun updateDataModel() {} } diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/PlatformType.kt b/src/main/kotlin/com/demonwav/mcdev/platform/PlatformType.kt index 03fd62911..d31425763 100644 --- a/src/main/kotlin/com/demonwav/mcdev/platform/PlatformType.kt +++ b/src/main/kotlin/com/demonwav/mcdev/platform/PlatformType.kt @@ -51,7 +51,7 @@ enum class PlatformType( LITELOADER(LiteLoaderModuleType, "LiteLoader"), MIXIN(MixinModuleType, "Mixin"), MCP(McpModuleType, "MCP"), - PLACEHOLDERAPI(PlaceholderApiModuleType, "PlaceholderAPI"); + PLACEHOLDERAPI(PlaceholderApiModuleType, "PlaceholderAPI", "spigot.json"); companion object { fun removeParents(types: MutableSet) = diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModuleType.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModuleType.kt index 259b3e8e8..ebdfae21b 100644 --- a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModuleType.kt +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModuleType.kt @@ -4,13 +4,12 @@ import com.demonwav.mcdev.asset.PlatformAssets import com.demonwav.mcdev.facet.MinecraftFacet import com.demonwav.mcdev.platform.AbstractModuleType import com.demonwav.mcdev.platform.PlatformType -import com.demonwav.mcdev.platform.placeholderapi.util.PlaceholderApiConstants object PlaceholderApiModuleType : AbstractModuleType("", "") { private const val ID = "PLACEHOLDERAPI_MODULE_TYPE" - val IGNORED_ANNOTATIONS = listOf(PlaceholderApiConstants.HANDLER_ANNOTATION) - val LISTENER_ANNOTATIONS = listOf(PlaceholderApiConstants.HANDLER_ANNOTATION) + val IGNORED_ANNOTATIONS = emptyList() + val LISTENER_ANNOTATIONS = emptyList() override val platformType = PlatformType.PLACEHOLDERAPI override val icon = PlatformAssets.PLACEHOLDERAPI_ICON diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt index fadfe4e9a..8909752fc 100644 --- a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt @@ -12,9 +12,10 @@ import com.intellij.openapi.project.Project import com.intellij.psi.PsiManager class PlaceholderApiProjectConfiguration : ProjectConfiguration() { - override var type: PlatformType = PlatformType.PLACEHOLDERAPI - var mcVersion: String = "" + var mcVersion = "" + + override var type: PlatformType = PlatformType.PLACEHOLDERAPI override fun create(project: Project, buildSystem: BuildSystem, indicator: ProgressIndicator) { if (project.isDisposed) { @@ -28,8 +29,8 @@ class PlaceholderApiProjectConfiguration : ProjectConfiguration() { indicator.text = "Writing main class" var file = dirs.sourceDirectory - var files = baseConfig.mainClass.split(".").toTypedArray() - var className = files.last() + val files = baseConfig.mainClass.split(".").toTypedArray() + val className = files.last() val packageName = baseConfig.mainClass.substring(0, baseConfig.mainClass.length - className.length - 1) file = getMainClassDirectory(files, file) diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/util/PlaceholderApiConstants.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/util/PlaceholderApiConstants.kt index f38fd18e4..ea817af2d 100644 --- a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/util/PlaceholderApiConstants.kt +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/util/PlaceholderApiConstants.kt @@ -1,5 +1,3 @@ package com.demonwav.mcdev.platform.placeholderapi.util -object PlaceholderApiConstants { - const val HANDLER_ANNOTATION = "org.bukkit.event.EventHandler" -} +object PlaceholderApiConstants From c8de043aac886795de585125f5c29a480e909797 Mon Sep 17 00:00:00 2001 From: darbyjack Date: Sat, 9 May 2020 23:38:56 -0500 Subject: [PATCH 06/11] Generate the example properly --- .../creator/PlaceholderApiProjectSettingsWizard.kt | 10 ++++++++++ .../PlaceholderApiProjectConfiguration.kt | 5 ++++- .../platform/placeholderapi/PlaceholderApiTemplate.kt | 8 +++++++- .../j2ee/placeholderapi_main_class.java.ft | 6 +++--- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt b/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt index d0af1752e..070c072c4 100644 --- a/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt +++ b/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt @@ -2,6 +2,7 @@ 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 @@ -59,6 +60,15 @@ class PlaceholderApiProjectSettingsWizard(private val creator: MinecraftProjectC } } + override fun onStepLeaving() { + val conf = config ?: return + conf.base = ProjectConfiguration.BaseConfigs( + expansionNameField.text, + expansionVersionField.text, + mainClassField.text + ) + } + override fun isStepVisible(): Boolean { return creator.configs.any { it is PlaceholderApiProjectConfiguration } } diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt index 8909752fc..0df1ba9b2 100644 --- a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt @@ -39,7 +39,10 @@ class PlaceholderApiProjectConfiguration : ProjectConfiguration() { project, mainClassFile, packageName, - className + className, + baseConfig.pluginName, + baseConfig.pluginVersion, + baseConfig.authors ) PsiManager.getInstance(project).findFile(mainClassFile)?.let { mainClassPsi -> diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiTemplate.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiTemplate.kt index c7693c3e5..56fa60fc6 100644 --- a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiTemplate.kt +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiTemplate.kt @@ -12,12 +12,18 @@ object PlaceholderApiTemplate { project: Project, mainClassFile: VirtualFile, packageName: String, - className: String + className: String, + expansionName: String, + expansionVersion: String, + author: MutableList ) { val properties = Properties() properties.setProperty("PACKAGE", packageName) properties.setProperty("CLASS_NAME", className) + properties.setProperty("EXPANSION_NAME", expansionName) + properties.setProperty("EXPANSION_VERSION", expansionVersion) + properties.setProperty("EXPANSION_AUTHOR", author.toString()) BaseTemplate.applyTemplate( project, diff --git a/src/main/resources/fileTemplates/j2ee/placeholderapi_main_class.java.ft b/src/main/resources/fileTemplates/j2ee/placeholderapi_main_class.java.ft index 404334d60..09a9a08fa 100644 --- a/src/main/resources/fileTemplates/j2ee/placeholderapi_main_class.java.ft +++ b/src/main/resources/fileTemplates/j2ee/placeholderapi_main_class.java.ft @@ -33,7 +33,7 @@ public class ${CLASS_NAME} extends PlaceholderExpansion { */ @Override public String getAuthor(){ - return "someauthor"; + return "${EXPANSION_AUTHOR}"; } /** @@ -47,7 +47,7 @@ public class ${CLASS_NAME} extends PlaceholderExpansion { */ @Override public String getIdentifier(){ - return "example"; + return "${EXPANSION_NAME}"; } /** @@ -58,7 +58,7 @@ public class ${CLASS_NAME} extends PlaceholderExpansion { */ @Override public String getVersion(){ - return "1.0.0"; + return "${EXPANSION_VERSION}"; } /** From 624624c74cd8dfc3fd4343ae879258b69784095d Mon Sep 17 00:00:00 2001 From: darbyjack Date: Sun, 10 May 2020 21:11:26 -0500 Subject: [PATCH 07/11] Added in maven settings for PAPI --- .../buildsystem/maven/MavenBuildSystem.kt | 2 +- .../PlaceholderApiProjectSettingsWizard.form | 18 +++++- .../PlaceholderApiProjectSettingsWizard.kt | 4 +- .../PlaceholderApiProjectConfiguration.kt | 40 ++++++++++++- .../placeholderapi/PlaceholderApiTemplate.kt | 9 +++ .../util/PlaceholderApiConstants.kt | 3 - .../util/MinecraftFileTemplateGroupFactory.kt | 2 + .../j2ee/placeholderapi_main_class.java.ft | 2 +- .../j2ee/placeholderapi_pom_template.xml.ft | 59 +++++++++++++++++++ .../j2ee/placeholderapi_pom_template.xml.html | 15 +++++ 10 files changed, 146 insertions(+), 8 deletions(-) delete mode 100644 src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/util/PlaceholderApiConstants.kt create mode 100644 src/main/resources/fileTemplates/j2ee/placeholderapi_pom_template.xml.ft create mode 100644 src/main/resources/fileTemplates/j2ee/placeholderapi_pom_template.xml.html 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/PlaceholderApiProjectSettingsWizard.form b/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.form index cfdfefe3d..e4314e82f 100644 --- a/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.form +++ b/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.form @@ -74,7 +74,7 @@ - + @@ -137,6 +137,22 @@
+ + + + + + + + + + + + + + + + diff --git a/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt b/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt index 070c072c4..5d30dd511 100644 --- a/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt +++ b/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt @@ -22,6 +22,7 @@ class PlaceholderApiProjectSettingsWizard(private val creator: MinecraftProjectC private lateinit var expansionVersionField: JTextField private lateinit var mainClassField: JTextField private lateinit var minecraftVersionBox: JComboBox + private lateinit var expansionAuthorField: JTextField private var config: PlaceholderApiProjectConfiguration? = null @@ -65,7 +66,8 @@ class PlaceholderApiProjectSettingsWizard(private val creator: MinecraftProjectC conf.base = ProjectConfiguration.BaseConfigs( expansionNameField.text, expansionVersionField.text, - mainClassField.text + mainClassField.text, + expansionAuthorField.text ) } diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt index 0df1ba9b2..46f1943e8 100644 --- a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt @@ -2,6 +2,8 @@ @file:Suppress("Duplicates") package com.demonwav.mcdev.platform.placeholderapi +import com.demonwav.mcdev.buildsystem.BuildDependency +import com.demonwav.mcdev.buildsystem.BuildRepository import com.demonwav.mcdev.buildsystem.BuildSystem import com.demonwav.mcdev.platform.PlatformType import com.demonwav.mcdev.platform.ProjectConfiguration @@ -51,5 +53,41 @@ class PlaceholderApiProjectConfiguration : ProjectConfiguration() { } } - override fun setupDependencies(buildSystem: BuildSystem) {} + override fun setupDependencies(buildSystem: BuildSystem) { + addRepos(buildSystem.repositories) + buildSystem.dependencies.add( + BuildDependency( + "org.spigotmc", + "spigot-api", + "$mcVersion-R0.1-SNAPSHOT", + mavenScope = "provided", + gradleConfiguration = "compileOnly" + ) + ) + addSonatype(buildSystem.repositories) + buildSystem.dependencies.add( + BuildDependency( + "me.clip", + "placeholderapi", + "LATEST", + mavenScope = "provided", + gradleConfiguration = "compileOnly" + ) + ) + } + + private fun addRepos(list: MutableList) { + list.add( + BuildRepository( + "spigotmc-repo", + "https://hub.spigotmc.org/nexus/content/repositories/snapshots/" + ) + ) + list.add( + BuildRepository( + "placeholderapi-repo", + "https://repo.extendedclip.com/content/repositories/placeholderapi/" + ) + ) + } } diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiTemplate.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiTemplate.kt index 56fa60fc6..1fdd61ba8 100644 --- a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiTemplate.kt +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiTemplate.kt @@ -2,6 +2,7 @@ package com.demonwav.mcdev.platform.placeholderapi import com.demonwav.mcdev.platform.BaseTemplate import com.demonwav.mcdev.util.MinecraftFileTemplateGroupFactory +import com.intellij.ide.fileTemplates.FileTemplateManager import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.VirtualFile import java.util.Properties @@ -32,4 +33,12 @@ object PlaceholderApiTemplate { properties ) } + + fun applyPomTemplate(project: Project): String { + val properties = Properties() + + val manager = FileTemplateManager.getInstance(project) + val fileTemplate = manager.getJ2eeTemplate(MinecraftFileTemplateGroupFactory.PLACEHOLDERAPI_POM_TEMPLATE) + return fileTemplate.getText(properties) + } } diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/util/PlaceholderApiConstants.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/util/PlaceholderApiConstants.kt deleted file mode 100644 index ea817af2d..000000000 --- a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/util/PlaceholderApiConstants.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.demonwav.mcdev.platform.placeholderapi.util - -object PlaceholderApiConstants diff --git a/src/main/kotlin/com/demonwav/mcdev/util/MinecraftFileTemplateGroupFactory.kt b/src/main/kotlin/com/demonwav/mcdev/util/MinecraftFileTemplateGroupFactory.kt index f828ede06..5d8d62ad6 100644 --- a/src/main/kotlin/com/demonwav/mcdev/util/MinecraftFileTemplateGroupFactory.kt +++ b/src/main/kotlin/com/demonwav/mcdev/util/MinecraftFileTemplateGroupFactory.kt @@ -63,6 +63,7 @@ class MinecraftFileTemplateGroupFactory : FileTemplateGroupDescriptorFactory { group.addTemplate(FileTemplateDescriptor(MIXIN_OVERWRITE_FALLBACK, PlatformAssets.MIXIN_ICON)) group.addTemplate(FileTemplateDescriptor(PLACEHOLDERAPI_MAIN_CLASS_TEMPLATE, PlatformAssets.PLACEHOLDERAPI_ICON)) + group.addTemplate(FileTemplateDescriptor(PLACEHOLDERAPI_POM_TEMPLATE, PlatformAssets.PLACEHOLDERAPI_ICON)) return group } @@ -105,5 +106,6 @@ class MinecraftFileTemplateGroupFactory : FileTemplateGroupDescriptorFactory { const val MIXIN_OVERWRITE_FALLBACK = "Mixin Overwrite Fallback.java" const val PLACEHOLDERAPI_MAIN_CLASS_TEMPLATE = "placeholderapi_main_class.java" + const val PLACEHOLDERAPI_POM_TEMPLATE = "placeholderapi_pom_template.xml" } } diff --git a/src/main/resources/fileTemplates/j2ee/placeholderapi_main_class.java.ft b/src/main/resources/fileTemplates/j2ee/placeholderapi_main_class.java.ft index 09a9a08fa..13dcbde8e 100644 --- a/src/main/resources/fileTemplates/j2ee/placeholderapi_main_class.java.ft +++ b/src/main/resources/fileTemplates/j2ee/placeholderapi_main_class.java.ft @@ -1,6 +1,6 @@ package ${PACKAGE}; -import org.bukkit.Player; +import org.bukkit.entity.Player; import me.clip.placeholderapi.expansion.PlaceholderExpansion; /** diff --git a/src/main/resources/fileTemplates/j2ee/placeholderapi_pom_template.xml.ft b/src/main/resources/fileTemplates/j2ee/placeholderapi_pom_template.xml.ft new file mode 100644 index 000000000..36e5174f8 --- /dev/null +++ b/src/main/resources/fileTemplates/j2ee/placeholderapi_pom_template.xml.ft @@ -0,0 +1,59 @@ + + + 4.0.0 + + + + + jar + + + + + 1.8 + UTF-8 + + + + clean package + + + org.apache.maven.plugins + maven-compiler-plugin + 3.7.0 + + ${java.version} + ${java.version} + + + + org.apache.maven.plugins + maven-shade-plugin + 3.1.0 + + + package + + shade + + + false + + + + + + + + src/main/resources + true + + + + + + + + diff --git a/src/main/resources/fileTemplates/j2ee/placeholderapi_pom_template.xml.html b/src/main/resources/fileTemplates/j2ee/placeholderapi_pom_template.xml.html new file mode 100644 index 000000000..08bd5d649 --- /dev/null +++ b/src/main/resources/fileTemplates/j2ee/placeholderapi_pom_template.xml.html @@ -0,0 +1,15 @@ + + + + +

This is a built-in file template used to create a new pom.xml for PlaceholderAPI.

+ + From 08931414d1670d260c5347c27a43c6c040fdd2be Mon Sep 17 00:00:00 2001 From: darbyjack Date: Sun, 10 May 2020 21:18:08 -0500 Subject: [PATCH 08/11] Added license --- .../creator/PlaceholderApiProjectSettingsWizard.kt | 10 ++++++++++ .../platform/placeholderapi/PlaceholderApiModule.kt | 10 ++++++++++ .../placeholderapi/PlaceholderApiModuleType.kt | 10 ++++++++++ .../PlaceholderApiProjectConfiguration.kt | 9 +++++++++ .../platform/placeholderapi/PlaceholderApiTemplate.kt | 10 ++++++++++ .../framework/PlaceholderApiLibraryKind.kt | 10 ++++++++++ .../framework/PlaceholderApiPresentationProvider.kt | 10 ++++++++++ 7 files changed, 69 insertions(+) diff --git a/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt b/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt index 5d30dd511..988b9dce9 100644 --- a/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt +++ b/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt @@ -1,3 +1,13 @@ +/* + * Minecraft Dev for IntelliJ + * + * https://minecraftdev.org + * + * Copyright (c) 2020 minecraft-dev + * + * MIT License + */ + @file:Suppress("Duplicates") package com.demonwav.mcdev.creator diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModule.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModule.kt index 9df638a95..aa38f3ad8 100644 --- a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModule.kt +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModule.kt @@ -1,3 +1,13 @@ +/* + * Minecraft Dev for IntelliJ + * + * https://minecraftdev.org + * + * Copyright (c) 2020 minecraft-dev + * + * MIT License + */ + package com.demonwav.mcdev.platform.placeholderapi import com.demonwav.mcdev.asset.PlatformAssets diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModuleType.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModuleType.kt index ebdfae21b..3568ae150 100644 --- a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModuleType.kt +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiModuleType.kt @@ -1,3 +1,13 @@ +/* + * Minecraft Dev for IntelliJ + * + * https://minecraftdev.org + * + * Copyright (c) 2020 minecraft-dev + * + * MIT License + */ + package com.demonwav.mcdev.platform.placeholderapi import com.demonwav.mcdev.asset.PlatformAssets diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt index 46f1943e8..a06705a74 100644 --- a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiProjectConfiguration.kt @@ -1,3 +1,12 @@ +/* + * Minecraft Dev for IntelliJ + * + * https://minecraftdev.org + * + * Copyright (c) 2020 minecraft-dev + * + * MIT License + */ @file:Suppress("Duplicates") package com.demonwav.mcdev.platform.placeholderapi diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiTemplate.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiTemplate.kt index 1fdd61ba8..9e30172d5 100644 --- a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiTemplate.kt +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiTemplate.kt @@ -1,3 +1,13 @@ +/* + * Minecraft Dev for IntelliJ + * + * https://minecraftdev.org + * + * Copyright (c) 2020 minecraft-dev + * + * MIT License + */ + package com.demonwav.mcdev.platform.placeholderapi import com.demonwav.mcdev.platform.BaseTemplate diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiLibraryKind.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiLibraryKind.kt index 04350532e..2d1772e0f 100644 --- a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiLibraryKind.kt +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiLibraryKind.kt @@ -1,3 +1,13 @@ +/* + * Minecraft Dev for IntelliJ + * + * https://minecraftdev.org + * + * Copyright (c) 2020 minecraft-dev + * + * MIT License + */ + package com.demonwav.mcdev.platform.placeholderapi.framework import com.intellij.openapi.roots.libraries.LibraryKind diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiPresentationProvider.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiPresentationProvider.kt index 8602fc42b..3d33e3bcf 100644 --- a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiPresentationProvider.kt +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiPresentationProvider.kt @@ -1,3 +1,13 @@ +/* + * Minecraft Dev for IntelliJ + * + * https://minecraftdev.org + * + * Copyright (c) 2020 minecraft-dev + * + * MIT License + */ + package com.demonwav.mcdev.platform.placeholderapi.framework import com.demonwav.mcdev.asset.PlatformAssets From 7403b7dd71ab5c7315d818ad06a0b321b4bf6b93 Mon Sep 17 00:00:00 2001 From: darbyjack Date: Sun, 10 May 2020 21:36:26 -0500 Subject: [PATCH 09/11] Fixed default class generation --- .../mcdev/creator/PlaceholderApiProjectSettingsWizard.kt | 8 +++++--- .../platform/placeholderapi/PlaceholderApiTemplate.kt | 2 +- .../fileTemplates/j2ee/placeholderapi_main_class.java.ft | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt b/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt index 988b9dce9..e17a45e3b 100644 --- a/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt +++ b/src/main/kotlin/com/demonwav/mcdev/creator/PlaceholderApiProjectSettingsWizard.kt @@ -31,8 +31,8 @@ class PlaceholderApiProjectSettingsWizard(private val creator: MinecraftProjectC private lateinit var expansionNameField: JTextField private lateinit var expansionVersionField: JTextField private lateinit var mainClassField: JTextField - private lateinit var minecraftVersionBox: JComboBox private lateinit var expansionAuthorField: JTextField + private lateinit var minecraftVersionBox: JComboBox private var config: PlaceholderApiProjectConfiguration? = null @@ -76,9 +76,11 @@ class PlaceholderApiProjectSettingsWizard(private val creator: MinecraftProjectC conf.base = ProjectConfiguration.BaseConfigs( expansionNameField.text, expansionVersionField.text, - mainClassField.text, - expansionAuthorField.text + mainClassField.text ) + + conf.setAuthors(this.expansionAuthorField.text) + conf.mcVersion = minecraftVersionBox.selectedItem as? String ?: "" } override fun isStepVisible(): Boolean { diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiTemplate.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiTemplate.kt index 9e30172d5..e3eb9ca28 100644 --- a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiTemplate.kt +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/PlaceholderApiTemplate.kt @@ -34,7 +34,7 @@ object PlaceholderApiTemplate { properties.setProperty("CLASS_NAME", className) properties.setProperty("EXPANSION_NAME", expansionName) properties.setProperty("EXPANSION_VERSION", expansionVersion) - properties.setProperty("EXPANSION_AUTHOR", author.toString()) + properties.setProperty("EXPANSION_AUTHOR", author[0]) BaseTemplate.applyTemplate( project, diff --git a/src/main/resources/fileTemplates/j2ee/placeholderapi_main_class.java.ft b/src/main/resources/fileTemplates/j2ee/placeholderapi_main_class.java.ft index 13dcbde8e..c8830e289 100644 --- a/src/main/resources/fileTemplates/j2ee/placeholderapi_main_class.java.ft +++ b/src/main/resources/fileTemplates/j2ee/placeholderapi_main_class.java.ft @@ -75,7 +75,7 @@ public class ${CLASS_NAME} extends PlaceholderExpansion { * @return Possibly-null String of the requested identifier. */ @Override - public String onRequest(Player player, String identifier){ + public String onPlaceholderRequest(Player player, String identifier){ // %example_placeholder1% if(identifier.equals("placeholder1")){ From 4fc91b2ab726847457009eb0549db46d4d21cdaf Mon Sep 17 00:00:00 2001 From: darbyjack Date: Sun, 10 May 2020 21:42:51 -0500 Subject: [PATCH 10/11] Fixed constants --- .../PlaceholderApiPresentationProvider.kt | 20 ++++++++++++++++--- .../util/PlaceholderApiConstants.kt | 15 ++++++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/util/PlaceholderApiConstants.kt diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiPresentationProvider.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiPresentationProvider.kt index 3d33e3bcf..f68c804cb 100644 --- a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiPresentationProvider.kt +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiPresentationProvider.kt @@ -11,10 +11,24 @@ package com.demonwav.mcdev.platform.placeholderapi.framework import com.demonwav.mcdev.asset.PlatformAssets -import com.demonwav.mcdev.facet.ManifestLibraryPresentationProvider +import com.demonwav.mcdev.platform.placeholderapi.util.PlaceholderApiConstants +import com.demonwav.mcdev.util.localFile import com.intellij.framework.library.LibraryVersionProperties +import com.intellij.openapi.roots.libraries.LibraryPresentationProvider +import com.intellij.openapi.util.io.JarUtil +import com.intellij.openapi.vfs.VirtualFile -class PlaceholderApiPresentationProvider : - ManifestLibraryPresentationProvider(PLACEHOLDERAPI_LIBRARY_KIND, "PlaceholderAPI", true) { +class PlaceholderApiPresentationProvider : LibraryPresentationProvider(PLACEHOLDERAPI_LIBRARY_KIND) { override fun getIcon(properties: LibraryVersionProperties?) = PlatformAssets.PLACEHOLDERAPI_ICON + + override fun detect(classesRoots: MutableList): LibraryVersionProperties? { + for (classesRoot in classesRoots) { + val file = classesRoot.localFile + + if (JarUtil.containsClass(file, PlaceholderApiConstants.EXPANSION_CLASS)) { + return LibraryVersionProperties() + } + } + return null + } } diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/util/PlaceholderApiConstants.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/util/PlaceholderApiConstants.kt new file mode 100644 index 000000000..bbdf9bdb3 --- /dev/null +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/util/PlaceholderApiConstants.kt @@ -0,0 +1,15 @@ +/* + * Minecraft Dev for IntelliJ + * + * https://minecraftdev.org + * + * Copyright (c) 2020 minecraft-dev + * + * MIT License + */ + +package com.demonwav.mcdev.platform.placeholderapi.util + +object PlaceholderApiConstants { + const val EXPANSION_CLASS = "me.clip.placeholderapi.expansion.PlaceholderExpansion" +} From eed68dd9dd95e97e16e628481a50028fd27b1d1b Mon Sep 17 00:00:00 2001 From: darbyjack Date: Sun, 10 May 2020 21:59:36 -0500 Subject: [PATCH 11/11] Fixed formatting to pass klint --- .../com/demonwav/mcdev/creator/ProjectChooserWizardStep.kt | 3 ++- .../com/demonwav/mcdev/facet/MinecraftFacetEditorTab.kt | 5 ++++- .../framework/PlaceholderApiPresentationProvider.kt | 3 ++- .../mcdev/util/MinecraftFileTemplateGroupFactory.kt | 7 ++++++- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.kt b/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.kt index d9c1deca9..3fd6ac62f 100644 --- a/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.kt +++ b/src/main/kotlin/com/demonwav/mcdev/creator/ProjectChooserWizardStep.kt @@ -208,7 +208,8 @@ class ProjectChooserWizardStep(private val creator: MinecraftProjectCreator) : M private const val liteLoaderInfo = "Create a standard " + "LiteLoader mod, for use " + "on LiteLoader clients." - private const val papiInfo = "Create a standard " + "PlaceholderAPI expansion, for use " + + private const val papiInfo = "Create a standard " + + "PlaceholderAPI expansion, for use " + "on servers running PlaceholderAPI." } } diff --git a/src/main/kotlin/com/demonwav/mcdev/facet/MinecraftFacetEditorTab.kt b/src/main/kotlin/com/demonwav/mcdev/facet/MinecraftFacetEditorTab.kt index ec286dbb7..00c84b78b 100644 --- a/src/main/kotlin/com/demonwav/mcdev/facet/MinecraftFacetEditorTab.kt +++ b/src/main/kotlin/com/demonwav/mcdev/facet/MinecraftFacetEditorTab.kt @@ -279,6 +279,9 @@ class MinecraftFacetEditorTab(private val configuration: MinecraftFacetConfigura ) private val indexes = - intArrayOf(BUKKIT, SPIGOT, PAPER, SPONGE, FORGE, LITELOADER, MCP, MIXIN, BUNGEECORD, WATERFALL, PLACEHOLDERAPI) + intArrayOf( + BUKKIT, SPIGOT, PAPER, SPONGE, FORGE, LITELOADER, MCP, MIXIN, BUNGEECORD, WATERFALL, + PLACEHOLDERAPI + ) } } diff --git a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiPresentationProvider.kt b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiPresentationProvider.kt index f68c804cb..edbdf3d85 100644 --- a/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiPresentationProvider.kt +++ b/src/main/kotlin/com/demonwav/mcdev/platform/placeholderapi/framework/PlaceholderApiPresentationProvider.kt @@ -18,7 +18,8 @@ import com.intellij.openapi.roots.libraries.LibraryPresentationProvider import com.intellij.openapi.util.io.JarUtil import com.intellij.openapi.vfs.VirtualFile -class PlaceholderApiPresentationProvider : LibraryPresentationProvider(PLACEHOLDERAPI_LIBRARY_KIND) { +class PlaceholderApiPresentationProvider : + LibraryPresentationProvider(PLACEHOLDERAPI_LIBRARY_KIND) { override fun getIcon(properties: LibraryVersionProperties?) = PlatformAssets.PLACEHOLDERAPI_ICON override fun detect(classesRoots: MutableList): LibraryVersionProperties? { diff --git a/src/main/kotlin/com/demonwav/mcdev/util/MinecraftFileTemplateGroupFactory.kt b/src/main/kotlin/com/demonwav/mcdev/util/MinecraftFileTemplateGroupFactory.kt index 5d8d62ad6..d54d1448d 100644 --- a/src/main/kotlin/com/demonwav/mcdev/util/MinecraftFileTemplateGroupFactory.kt +++ b/src/main/kotlin/com/demonwav/mcdev/util/MinecraftFileTemplateGroupFactory.kt @@ -62,7 +62,12 @@ class MinecraftFileTemplateGroupFactory : FileTemplateGroupDescriptorFactory { group.addTemplate(FileTemplateDescriptor(MIXIN_OVERWRITE_FALLBACK, PlatformAssets.MIXIN_ICON)) - group.addTemplate(FileTemplateDescriptor(PLACEHOLDERAPI_MAIN_CLASS_TEMPLATE, PlatformAssets.PLACEHOLDERAPI_ICON)) + group.addTemplate( + FileTemplateDescriptor( + PLACEHOLDERAPI_MAIN_CLASS_TEMPLATE, + PlatformAssets.PLACEHOLDERAPI_ICON + ) + ) group.addTemplate(FileTemplateDescriptor(PLACEHOLDERAPI_POM_TEMPLATE, PlatformAssets.PLACEHOLDERAPI_ICON)) return group }