Skip to content

Commit 5b6d966

Browse files
committed
Merge branch '2020.1' into 2020.2
2 parents 027a074 + fdc8f3a commit 5b6d966

27 files changed

+515
-318
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ kotlin.code.style=official
1414
ideaVersion = 2020.2
1515
ideaVersionName = 2020.2
1616

17-
coreVersion = 1.5.12
17+
coreVersion = 1.5.13
1818
downloadIdeaSources = true
1919

2020
pluginTomlVersion = 0.2.140.3644-202

readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ Minecraft Development for IntelliJ
4040
</tr>
4141
</table>
4242

43-
Info and Documentation [![Current Release](https://img.shields.io/badge/release-1.5.12-orange.svg?style=flat-square)](https://plugins.jetbrains.com/plugin/8327)
43+
Info and Documentation [![Current Release](https://img.shields.io/badge/release-1.5.13-orange.svg?style=flat-square)](https://plugins.jetbrains.com/plugin/8327)
4444
----------------------
4545

4646
<a href="https://discord.gg/j6UNcfr"><img src="https://i.imgur.com/JXu9C1G.png" height="48px"></img></a>

src/main/kotlin/creator/buildsystem/gradle/gradle-steps.kt

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import com.demonwav.mcdev.util.virtualFileOrError
2525
import com.intellij.codeInsight.actions.ReformatCodeProcessor
2626
import com.intellij.execution.RunManager
2727
import com.intellij.ide.ui.UISettings
28-
import com.intellij.openapi.externalSystem.service.execution.ExternalSystemRunConfiguration
2928
import com.intellij.openapi.module.Module
3029
import com.intellij.openapi.progress.ProgressIndicator
3130
import com.intellij.openapi.project.Project
@@ -41,9 +40,9 @@ import java.nio.file.StandardOpenOption.CREATE
4140
import java.nio.file.StandardOpenOption.TRUNCATE_EXISTING
4241
import java.nio.file.StandardOpenOption.WRITE
4342
import org.jetbrains.plugins.gradle.service.execution.GradleExternalTaskConfigurationType
43+
import org.jetbrains.plugins.gradle.service.execution.GradleRunConfiguration
4444
import org.jetbrains.plugins.gradle.service.project.open.canLinkAndRefreshGradleProject
4545
import org.jetbrains.plugins.gradle.service.project.open.linkAndRefreshGradleProject
46-
import org.jetbrains.plugins.gradle.util.GradleConstants
4746
import org.jetbrains.plugins.groovy.GroovyLanguage
4847
import org.jetbrains.plugins.groovy.lang.psi.GroovyFile
4948
import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory
@@ -286,12 +285,7 @@ class BasicGradleFinalizerStep(
286285
val runManager = RunManager.getInstance(project)
287286
val runConfigName = buildSystem.artifactId + ' ' + task
288287

289-
val runConfiguration = ExternalSystemRunConfiguration(
290-
GradleConstants.SYSTEM_ID,
291-
project,
292-
gradleType.configurationFactories[0],
293-
runConfigName
294-
)
288+
val runConfiguration = GradleRunConfiguration(project, gradleType.factory, runConfigName)
295289

296290
// Set relevant gradle values
297291
runConfiguration.settings.externalProjectPath = rootDirectory.toAbsolutePath().toString()
@@ -302,7 +296,7 @@ class BasicGradleFinalizerStep(
302296

303297
val settings = runManager.createConfiguration(
304298
runConfiguration,
305-
GradleExternalTaskConfigurationType.getInstance().configurationFactories.first()
299+
gradleType.factory
306300
)
307301

308302
settings.isActivateToolWindowBeforeRun = true

src/main/kotlin/platform/forge/creator/Fg3Template.kt

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ package com.demonwav.mcdev.platform.forge.creator
1313
import com.demonwav.mcdev.creator.buildsystem.BuildSystem
1414
import com.demonwav.mcdev.platform.BaseTemplate
1515
import com.demonwav.mcdev.platform.forge.util.ForgePackDescriptor
16+
import com.demonwav.mcdev.util.MinecraftTemplates.Companion.FG3_1_17_MAIN_CLASS_TEMPLATE
1617
import com.demonwav.mcdev.util.MinecraftTemplates.Companion.FG3_BUILD_GRADLE_TEMPLATE
1718
import com.demonwav.mcdev.util.MinecraftTemplates.Companion.FG3_GRADLE_PROPERTIES_TEMPLATE
1819
import com.demonwav.mcdev.util.MinecraftTemplates.Companion.FG3_MAIN_CLASS_TEMPLATE
@@ -21,6 +22,7 @@ import com.demonwav.mcdev.util.MinecraftTemplates.Companion.FG3_SUBMODULE_BUILD_
2122
import com.demonwav.mcdev.util.MinecraftTemplates.Companion.FORGE_MIXINS_JSON_TEMPLATE
2223
import com.demonwav.mcdev.util.MinecraftTemplates.Companion.MODS_TOML_TEMPLATE
2324
import com.demonwav.mcdev.util.MinecraftTemplates.Companion.PACK_MCMETA_TEMPLATE
25+
import com.demonwav.mcdev.util.MinecraftVersions
2426
import com.demonwav.mcdev.util.SemanticVersion
2527
import com.demonwav.mcdev.util.toPackageName
2628
import com.intellij.openapi.project.Project
@@ -45,6 +47,24 @@ object Fg3Template : BaseTemplate() {
4547
return project.applyTemplate(FG3_MAIN_CLASS_TEMPLATE, props)
4648
}
4749

50+
fun apply1_17MainClass(
51+
project: Project,
52+
buildSystem: BuildSystem,
53+
config: ForgeProjectConfig,
54+
packageName: String,
55+
className: String
56+
): String {
57+
val props = mapOf(
58+
"PACKAGE_NAME" to packageName,
59+
"CLASS_NAME" to className,
60+
"ARTIFACT_ID" to buildSystem.artifactId,
61+
"MOD_NAME" to config.pluginName,
62+
"MOD_VERSION" to buildSystem.version
63+
)
64+
65+
return project.applyTemplate(FG3_1_17_MAIN_CLASS_TEMPLATE, props)
66+
}
67+
4868
fun applyBuildGradle(
4969
project: Project,
5070
buildSystem: BuildSystem,
@@ -53,15 +73,16 @@ object Fg3Template : BaseTemplate() {
5373
hasData: Boolean
5474
): String {
5575
val (channel, version) = config.mcpVersion.mcpVersion.split('_', limit = 2)
56-
val props = mutableMapOf(
76+
val props = mutableMapOf<String, Any>(
5777
"MOD_NAME" to modName,
5878
"MCP_CHANNEL" to channel,
5979
"MCP_VERSION" to version,
6080
"MCP_MC_VERSION" to config.mcpVersion.mcVersion.toString(),
6181
"FORGE_VERSION" to config.forgeVersionText,
6282
"GROUP_ID" to buildSystem.groupId,
6383
"ARTIFACT_ID" to buildSystem.artifactId,
64-
"MOD_VERSION" to buildSystem.version
84+
"MOD_VERSION" to buildSystem.version,
85+
"JAVA_VERSION" to if (config.mcVersion < MinecraftVersions.MC1_17) 8 else 16
6586
)
6687
if (hasData) {
6788
props["HAS_DATA"] = "true"
@@ -96,13 +117,14 @@ object Fg3Template : BaseTemplate() {
96117
hasData: Boolean
97118
): String {
98119
val (channel, version) = config.mcpVersion.mcpVersion.split('_', limit = 2)
99-
val props = mutableMapOf(
120+
val props = mutableMapOf<String, Any>(
100121
"MOD_NAME" to modName,
101122
"MCP_CHANNEL" to channel,
102123
"MCP_VERSION" to version,
103124
"MCP_MC_VERSION" to config.mcpVersion.mcVersion.toString(),
104125
"FORGE_VERSION" to config.forgeVersionText,
105126
"ARTIFACT_ID" to buildSystem.artifactId,
127+
"JAVA_VERSION" to if (config.mcVersion < MinecraftVersions.MC1_17) 8 else 16,
106128
"COMMON_PROJECT_NAME" to buildSystem.commonModuleName
107129
)
108130
if (hasData) {

src/main/kotlin/platform/forge/creator/ForgeProjectConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class ForgeProjectConfig : ProjectConfig(), GradleCreator {
6161
buildSystem: GradleBuildSystem
6262
) {
6363
buildSystem.gradleVersion = if (isFg3(mcVersion, forgeVersion)) {
64-
Fg3ProjectCreator.FG4_WRAPPER_VERSION
64+
Fg3ProjectCreator.FG5_WRAPPER_VERSION
6565
} else {
6666
Fg2ProjectCreator.FG_WRAPPER_VERSION
6767
}

src/main/kotlin/platform/forge/creator/ForgeProjectCreator.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import com.demonwav.mcdev.creator.buildsystem.gradle.GradleWrapperStep
2323
import com.demonwav.mcdev.creator.buildsystem.gradle.SimpleGradleSetupStep
2424
import com.demonwav.mcdev.platform.forge.util.ForgeConstants
2525
import com.demonwav.mcdev.platform.forge.util.ForgePackDescriptor
26+
import com.demonwav.mcdev.util.MinecraftVersions
2627
import com.demonwav.mcdev.util.SemanticVersion
2728
import com.demonwav.mcdev.util.runGradleTaskAndWait
2829
import com.demonwav.mcdev.util.runWriteTask
@@ -105,7 +106,11 @@ open class Fg3ProjectCreator(
105106

106107
private fun setupMainClassStep(): BasicJavaClassStep {
107108
return createJavaClassStep(config.mainClass) { packageName, className ->
108-
Fg3Template.applyMainClass(project, buildSystem, config, packageName, className)
109+
if (config.mcVersion >= MinecraftVersions.MC1_17) {
110+
Fg3Template.apply1_17MainClass(project, buildSystem, config, packageName, className)
111+
} else {
112+
Fg3Template.applyMainClass(project, buildSystem, config, packageName, className)
113+
}
109114
}
110115
}
111116

@@ -175,7 +180,7 @@ open class Fg3ProjectCreator(
175180
}
176181

177182
companion object {
178-
val FG4_WRAPPER_VERSION = SemanticVersion.release(6, 8, 1)
183+
val FG5_WRAPPER_VERSION = SemanticVersion.release(7, 1, 1)
179184
}
180185
}
181186

src/main/kotlin/platform/forge/creator/ForgeProjectSettingsWizard.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,11 @@ import com.demonwav.mcdev.creator.ValidatedFieldType.LIST
1919
import com.demonwav.mcdev.creator.ValidatedFieldType.NON_BLANK
2020
import com.demonwav.mcdev.platform.PlatformType
2121
import com.demonwav.mcdev.platform.forge.version.ForgeVersion
22+
import com.demonwav.mcdev.platform.mcp.McpVersionPair
2223
import com.demonwav.mcdev.platform.mcp.version.McpVersion
2324
import com.demonwav.mcdev.platform.mcp.version.McpVersionEntry
2425
import com.demonwav.mcdev.util.License
26+
import com.demonwav.mcdev.util.MinecraftVersions
2527
import com.demonwav.mcdev.util.SemanticVersion
2628
import com.demonwav.mcdev.util.modUpdateStep
2729
import com.intellij.ui.CollectionComboBoxModel
@@ -171,7 +173,12 @@ class ForgeProjectSettingsWizard(private val creator: MinecraftProjectCreator) :
171173
conf.setAuthors(this.authorsField.text)
172174
conf.updateUrl = this.updateUrlField.text
173175

174-
conf.mcpVersion = (this.mcpVersionBox.selectedItem as McpVersionEntry).versionPair
176+
conf.mcVersion = this.version ?: SemanticVersion.release()
177+
conf.mcpVersion = if (conf.mcVersion >= MinecraftVersions.MC1_17) {
178+
McpVersionPair("official_" + conf.mcVersion, conf.mcVersion)
179+
} else {
180+
(this.mcpVersionBox.selectedItem as McpVersionEntry).versionPair
181+
}
175182

176183
(this.forgeVersionBox.selectedItem as SemanticVersion).let { version ->
177184
val versionString = version.toString()
@@ -182,7 +189,6 @@ class ForgeProjectSettingsWizard(private val creator: MinecraftProjectCreator) :
182189

183190
conf.mixins = mixinsCheckbox.isSelected
184191
conf.license = licenseBox.selectedItem as? License ?: License.ALL_RIGHTS_RESERVED
185-
conf.mcVersion = this.version ?: SemanticVersion.release()
186192
}
187193

188194
private fun mcVersionUpdate(data: Data) {

src/main/kotlin/platform/forge/inspections/sideonly/FieldDeclarationSideOnlyInspection.kt

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
package com.demonwav.mcdev.platform.forge.inspections.sideonly
1212

13+
import com.intellij.psi.PsiAnnotation
1314
import com.intellij.psi.PsiClassType
1415
import com.intellij.psi.PsiField
1516
import com.siyeh.ig.BaseInspection
@@ -35,10 +36,10 @@ class FieldDeclarationSideOnlyInspection : BaseInspection() {
3536
}
3637

3738
override fun buildFix(vararg infos: Any): InspectionGadgetsFix? {
38-
val field = infos[3] as PsiField
39+
val annotation = infos[3] as PsiAnnotation
3940

40-
return if (field.isWritable) {
41-
RemoveAnnotationInspectionGadgetsFix(field, "Remove @SideOnly annotation from field")
41+
return if (annotation.isWritable) {
42+
RemoveAnnotationInspectionGadgetsFix(annotation, "Remove @SideOnly annotation from field")
4243
} else {
4344
null
4445
}
@@ -53,24 +54,24 @@ class FieldDeclarationSideOnlyInspection : BaseInspection() {
5354
return
5455
}
5556

56-
val fieldSide = SideOnlyUtil.checkField(field)
57-
if (fieldSide === Side.INVALID) {
57+
val (fieldAnnotation, fieldSide) = SideOnlyUtil.checkField(field)
58+
if (fieldAnnotation == null || fieldSide === Side.INVALID) {
5859
return
5960
}
6061

61-
val classSide = SideOnlyUtil.getSideForClass(psiClass)
62+
val (classAnnotation, classSide) = SideOnlyUtil.getSideForClass(psiClass)
6263

6364
if (fieldSide !== Side.NONE && fieldSide !== classSide) {
64-
if (classSide !== Side.NONE && classSide !== Side.INVALID) {
65+
if (classAnnotation != null && classSide !== Side.NONE && classSide !== Side.INVALID) {
6566
registerFieldError(
6667
field,
6768
Error.CLASS_CROSS_ANNOTATED,
68-
fieldSide.annotation,
69-
classSide.annotation,
70-
field
69+
fieldAnnotation.renderSide(fieldSide),
70+
classAnnotation.renderSide(classSide),
71+
field.getAnnotation(fieldAnnotation.annotationName)
7172
)
7273
} else if (classSide !== Side.NONE) {
73-
registerFieldError(field, Error.CLASS_UNANNOTATED, fieldSide.annotation, null, field)
74+
registerFieldError(field, Error.CLASS_UNANNOTATED, fieldAnnotation, null, field)
7475
}
7576
}
7677

@@ -85,19 +86,19 @@ class FieldDeclarationSideOnlyInspection : BaseInspection() {
8586
val type = field.type as PsiClassType
8687
val fieldClass = type.resolve() ?: return
8788

88-
val fieldClassSide = SideOnlyUtil.getSideForClass(fieldClass)
89+
val (fieldClassAnnotation, fieldClassSide) = SideOnlyUtil.getSideForClass(fieldClass)
8990

90-
if (fieldClassSide === Side.NONE || fieldClassSide === Side.INVALID) {
91+
if (fieldClassAnnotation == null || fieldClassSide === Side.NONE || fieldClassSide === Side.INVALID) {
9192
return
9293
}
9394

9495
if (fieldClassSide !== fieldSide) {
9596
registerFieldError(
9697
field,
9798
Error.FIELD_CROSS_ANNOTATED,
98-
fieldClassSide.annotation,
99-
fieldSide.annotation,
100-
field
99+
fieldClassAnnotation.renderSide(fieldClassSide),
100+
fieldAnnotation.renderSide(fieldSide),
101+
field.getAnnotation(fieldAnnotation.annotationName)
101102
)
102103
}
103104
}

src/main/kotlin/platform/forge/inspections/sideonly/LocalVariableDeclarationSideOnlyInspection.kt

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
package com.demonwav.mcdev.platform.forge.inspections.sideonly
1212

1313
import com.demonwav.mcdev.util.findContainingClass
14-
import com.intellij.psi.PsiClass
14+
import com.intellij.psi.PsiAnnotation
1515
import com.intellij.psi.PsiClassType
1616
import com.intellij.psi.PsiLocalVariable
1717
import com.siyeh.ig.BaseInspection
@@ -34,11 +34,11 @@ class LocalVariableDeclarationSideOnlyInspection : BaseInspection() {
3434
" or method that does not match the same side."
3535

3636
override fun buildFix(vararg infos: Any): InspectionGadgetsFix? {
37-
val variableClass = infos[3] as PsiClass
37+
val annotation = infos[3] as PsiAnnotation
3838

39-
return if (variableClass.isWritable) {
39+
return if (annotation.isWritable) {
4040
RemoveAnnotationInspectionGadgetsFix(
41-
variableClass,
41+
annotation,
4242
"Remove @SideOnly annotation from variable class declaration"
4343
)
4444
} else {
@@ -59,30 +59,32 @@ class LocalVariableDeclarationSideOnlyInspection : BaseInspection() {
5959

6060
val variableClass = type.resolve() ?: return
6161

62-
val variableSide = SideOnlyUtil.getSideForClass(variableClass)
63-
if (variableSide === Side.NONE || variableSide === Side.INVALID) {
62+
val (variableAnnotation, variableSide) = SideOnlyUtil.getSideForClass(variableClass)
63+
if (variableAnnotation == null || variableSide === Side.NONE || variableSide === Side.INVALID) {
6464
return
6565
}
6666

67-
val containingClassSide = SideOnlyUtil.getSideForClass(psiClass)
68-
val methodSide = SideOnlyUtil.checkElementInMethod(variable)
67+
val (containingClassAnnotation, containingClassSide) = SideOnlyUtil.getSideForClass(psiClass)
68+
val (methodAnnotation, methodSide) = SideOnlyUtil.checkElementInMethod(variable)
6969

7070
var classAnnotated = false
7171

72-
if (containingClassSide !== Side.NONE && containingClassSide !== Side.INVALID) {
72+
if (containingClassAnnotation != null &&
73+
containingClassSide !== Side.NONE && containingClassSide !== Side.INVALID
74+
) {
7375
if (variableSide !== containingClassSide) {
7476
registerVariableError(
7577
variable,
7678
Error.VAR_CROSS_ANNOTATED_CLASS,
77-
variableSide.annotation,
78-
containingClassSide.annotation,
79-
variableClass
79+
variableAnnotation.renderSide(variableSide),
80+
containingClassAnnotation.renderSide(containingClassSide),
81+
variableClass.getAnnotation(variableAnnotation.annotationName)
8082
)
8183
}
8284
classAnnotated = true
8385
}
8486

85-
if (methodSide === Side.INVALID) {
87+
if (methodAnnotation == null || methodSide === Side.INVALID) {
8688
return
8789
}
8890

@@ -92,18 +94,18 @@ class LocalVariableDeclarationSideOnlyInspection : BaseInspection() {
9294
registerVariableError(
9395
variable,
9496
Error.VAR_UNANNOTATED_METHOD,
95-
variableSide.annotation,
96-
methodSide.annotation,
97-
variableClass
97+
variableAnnotation.renderSide(variableSide),
98+
methodAnnotation.renderSide(methodSide),
99+
variableClass.getAnnotation(variableAnnotation.annotationName)
98100
)
99101
}
100102
} else {
101103
registerVariableError(
102104
variable,
103105
Error.VAR_CROSS_ANNOTATED_METHOD,
104-
variableSide.annotation,
105-
methodSide.annotation,
106-
variableClass
106+
variableAnnotation.renderSide(variableSide),
107+
methodAnnotation.renderSide(methodSide),
108+
variableClass.getAnnotation(variableAnnotation.annotationName)
107109
)
108110
}
109111
}

0 commit comments

Comments
 (0)