Skip to content

Commit 594668a

Browse files
committed
Merge branch 'dev' into 2017.2
2 parents daa20fb + de48ace commit 594668a

File tree

11 files changed

+251
-113
lines changed

11 files changed

+251
-113
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,6 @@ hs_err_pid*
4545
.sandbox/
4646

4747
/gen/
48+
49+
50+
.DS_Store

src/main/kotlin/com/demonwav/mcdev/buildsystem/gradle/GradleBuildSystem.kt

Lines changed: 16 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -94,17 +94,7 @@ class GradleBuildSystem : BuildSystem() {
9494
runWriteTask {
9595
val gradleProp = setupGradleFiles()
9696

97-
ForgeTemplate.applyBuildGradleTemplate(
98-
project,
99-
buildGradle!!,
100-
gradleProp,
101-
groupId,
102-
artifactId,
103-
configuration.forgeVersion,
104-
configuration.mcpVersion,
105-
version,
106-
configuration is SpongeForgeProjectConfiguration
107-
)
97+
ForgeTemplate.applyBuildGradleTemplate(project, buildGradle!!, gradleProp, groupId, artifactId, configuration, version)
10898

10999
if (configuration is SpongeForgeProjectConfiguration) {
110100
val buildGradlePsi = PsiManager.getInstance(project).findFile(buildGradle!!)
@@ -123,17 +113,7 @@ class GradleBuildSystem : BuildSystem() {
123113

124114
runWriteTask {
125115
val gradleProp = setupGradleFiles()
126-
127-
LiteLoaderTemplate.applyBuildGradleTemplate(
128-
project,
129-
buildGradle!!,
130-
gradleProp,
131-
groupId,
132-
artifactId,
133-
configuration.pluginVersion,
134-
configuration.mcVersion,
135-
configuration.mcpVersion
136-
)
116+
LiteLoaderTemplate.applyBuildGradleTemplate(project, buildGradle!!, gradleProp, groupId, artifactId, configuration)
137117
}
138118

139119
setupWrapper(project, indicator)
@@ -145,23 +125,9 @@ class GradleBuildSystem : BuildSystem() {
145125
val gradleProp = rootDirectory.findOrCreateChildData(this, "gradle.properties")
146126

147127
val buildGradleText = if (configuration.type == PlatformType.SPONGE) {
148-
SpongeTemplate.applyBuildGradleTemplate(
149-
project,
150-
gradleProp,
151-
groupId,
152-
artifactId,
153-
version,
154-
buildVersion
155-
)
128+
SpongeTemplate.applyBuildGradleTemplate(project, gradleProp, groupId, artifactId, version, buildVersion)
156129
} else {
157-
BaseTemplate.applyBuildGradleTemplate(
158-
project,
159-
gradleProp,
160-
groupId,
161-
artifactId,
162-
version,
163-
buildVersion
164-
)
130+
BaseTemplate.applyBuildGradleTemplate(project, gradleProp, groupId, artifactId, version, buildVersion)
165131
} ?: return@runWriteTask
166132

167133
addBuildGradleDependencies(project, buildGradleText)
@@ -319,10 +285,11 @@ class GradleBuildSystem : BuildSystem() {
319285
val gradleProjectImportBuilder = GradleProjectImportBuilder(projectDataManager)
320286
val gradleProjectImportProvider = GradleProjectImportProvider(gradleProjectImportBuilder)
321287

322-
buildGradle ?: return
288+
// Shadow name for ease of use, make non null
289+
val buildGradle = buildGradle ?: return
323290

324291
invokeLater {
325-
val wizard = AddModuleWizard(project, buildGradle!!.path, gradleProjectImportProvider)
292+
val wizard = AddModuleWizard(project, buildGradle.path, gradleProjectImportProvider)
326293
if (wizard.showAndGet()) {
327294
ImportModuleAction.createFromWizard(project, wizard)
328295
}
@@ -388,26 +355,21 @@ class GradleBuildSystem : BuildSystem() {
388355
val includes = "'${pluginName.toLowerCase()}-common', " +
389356
configurations.values.joinToString(", ") { "'${pluginName.toLowerCase()}-${it.type.name.toLowerCase()}'" }
390357

358+
val artifactIdLower = artifactId.toLowerCase()
359+
391360
runWriteTask {
392361
// Write the parent files to disk so the children modules can import correctly
393362
val gradleProp = setupGradleFiles()
394363
val settingsGradle = rootDirectory.createChildData(this, "settings.gradle")
395364

396365
BaseTemplate.applyMultiModuleBuildGradleTemplate(
397-
project,
398-
buildGradle!!,
399-
gradleProp,
400-
groupId,
401-
artifactId,
402-
version,
403-
buildVersion,
404-
configurations.containsKey(PlatformType.SPONGE)
366+
project, buildGradle!!, gradleProp, groupId, artifactId, version, buildVersion, configurations
405367
)
406368

407-
BaseTemplate.applySettingsGradleTemplate(project, settingsGradle, artifactId.toLowerCase(), includes)
369+
BaseTemplate.applySettingsGradleTemplate(project, settingsGradle, artifactIdLower, includes)
408370

409371
// Common will be empty, it's for the developers to fill in with common classes
410-
val common = rootDirectory.createChildDirectory(this, artifactId.toLowerCase() + "-common")
372+
val common = rootDirectory.createChildDirectory(this, artifactIdLower + "-common")
411373
createDirectories(common)
412374
}
413375

@@ -417,7 +379,7 @@ class GradleBuildSystem : BuildSystem() {
417379

418380
runWriteTask {
419381
gradleBuildSystem.rootDirectory =
420-
rootDirectory.createChildDirectory(this, artifactId.toLowerCase() + "-" + configuration.type.name.toLowerCase())
382+
rootDirectory.createChildDirectory(this, artifactIdLower + "-" + configuration.type.name.toLowerCase())
421383
}
422384

423385
gradleBuildSystem.artifactId = artifactId
@@ -432,7 +394,7 @@ class GradleBuildSystem : BuildSystem() {
432394

433395
// For each build system we initialize it, but not the same as a normal create. We need to know the common project name,
434396
// as we automatically add it as a dependency too
435-
gradleBuildSystem.createSubModule(project, configuration, artifactId.toLowerCase() + "-common", indicator)
397+
gradleBuildSystem.createSubModule(project, configuration, artifactIdLower + "-common", indicator)
436398
map.putIfAbsent(gradleBuildSystem, configuration)
437399
}
438400

@@ -468,16 +430,7 @@ class GradleBuildSystem : BuildSystem() {
468430
runWriteTask {
469431
val gradleProp = setupGradleFiles()
470432

471-
ForgeTemplate.applySubmoduleBuildGradleTemplate(
472-
project,
473-
buildGradle!!,
474-
gradleProp,
475-
artifactId,
476-
configuration.forgeVersion,
477-
configuration.mcpVersion,
478-
commonProjectName,
479-
configuration is SpongeForgeProjectConfiguration
480-
)
433+
ForgeTemplate.applySubmoduleBuildGradleTemplate(project, buildGradle!!, gradleProp, artifactId, configuration, commonProjectName)
481434

482435
// We're only going to write the dependencies if it's a sponge forge project
483436
if (configuration is SpongeForgeProjectConfiguration) {
@@ -499,15 +452,7 @@ class GradleBuildSystem : BuildSystem() {
499452
runWriteTask {
500453
val gradleProp = setupGradleFiles()
501454

502-
LiteLoaderTemplate.applySubmoduleBuildGradleTemplate(
503-
project,
504-
buildGradle!!,
505-
gradleProp,
506-
configuration.pluginVersion,
507-
configuration.mcVersion,
508-
configuration.mcpVersion,
509-
commonProjectName
510-
)
455+
LiteLoaderTemplate.applySubmoduleBuildGradleTemplate(project, buildGradle!!, gradleProp, configuration, commonProjectName)
511456
}
512457

513458
setupDecompWorkspace(project, indicator)

src/main/kotlin/com/demonwav/mcdev/nbt/Nbt.kt

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,8 @@ object Nbt {
9797
return@checkTimeout TagList(tagId, emptyList())
9898
}
9999

100-
val list = ArrayList<NbtTag>(length)
101-
for (i in 0 until length) {
102-
list.add(this.readTag(tagId, start, timeout))
100+
val list = List(length) {
101+
this.readTag(tagId, start, timeout)
103102
}
104103
return@checkTimeout TagList(tagId, list)
105104
}
@@ -117,10 +116,8 @@ object Nbt {
117116
private fun DataInputStream.readIntArrayTag(start: Long, timeout: Long) = checkTimeout(start, timeout) {
118117
val length = this.readInt()
119118

120-
val ints = IntArray(length)
121-
122-
for (i in 0 until length) {
123-
ints[i] = this.readInt()
119+
val ints = IntArray(length) {
120+
this.readInt()
124121
}
125122

126123
return@checkTimeout TagIntArray(ints)
@@ -129,9 +126,8 @@ object Nbt {
129126
private fun DataInputStream.readLongArrayTag(start: Long, timeout: Long) = checkTimeout(start, timeout) {
130127
val length = this.readInt()
131128

132-
val longs = LongArray(length)
133-
for (i in 0 until length) {
134-
longs[i] = this.readLong()
129+
val longs = LongArray(length) {
130+
this.readLong()
135131
}
136132

137133
return@checkTimeout TagLongArray(longs)

src/main/kotlin/com/demonwav/mcdev/platform/BaseTemplate.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,12 @@ object BaseTemplate {
4848
artifactId: String,
4949
pluginVersion: String,
5050
buildVersion: String,
51-
hasSponge: Boolean) {
51+
configurations: Map<PlatformType, ProjectConfiguration>) {
5252

5353
val properties = Properties()
5454
properties.setProperty("BUILD_VERSION", buildVersion)
5555

56-
applyGradlePropertiesTemplate(project, prop, groupId, artifactId, pluginVersion, hasSponge)
56+
applyGradlePropertiesTemplate(project, prop, groupId, artifactId, pluginVersion, configurations.containsKey(PlatformType.SPONGE))
5757

5858
applyTemplate(project, file, MinecraftFileTemplateGroupFactory.MULTI_MODULE_BUILD_GRADLE_TEMPLATE, properties)
5959
}

src/main/kotlin/com/demonwav/mcdev/platform/forge/ForgeModule.kt

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,20 @@ class ForgeModule internal constructor(facet: MinecraftFacet) : AbstractModule(f
6969
val annotation = method.modifierList.findAnnotation(ForgeConstants.EVENT_HANDLER_ANNOTATION)
7070

7171
if (annotation != null) {
72-
return "Parameter is not a subclass of net.minecraftforge.fml.common.event.FMLEvent\n" +
73-
"Compiling and running this listener may result in a runtime exception"
72+
return formatWrongEventMessage(ForgeConstants.FML_EVENT, ForgeConstants.SUBSCRIBE_EVENT_ANNOTATION,
73+
ForgeConstants.EVENT == eventClass.qualifiedName)
7474
}
7575

76-
return "Parameter is not a subclass of net.minecraftforge.fml.common.eventhandler.Event\n" +
77-
"Compiling and running this listener may result in a runtime exception"
76+
return formatWrongEventMessage(ForgeConstants.EVENT, ForgeConstants.EVENT_HANDLER_ANNOTATION,
77+
ForgeConstants.FML_EVENT == eventClass.qualifiedName)
78+
}
79+
80+
private fun formatWrongEventMessage(expected: String, suggested: String, wrong: Boolean): String {
81+
val base = "Parameter is not a subclass of $expected\n"
82+
if (wrong) {
83+
return base + "This method should be annotated with $suggested"
84+
}
85+
return base + "Compiling and running this listener may result in a runtime exception"
7886
}
7987

8088
override fun isStaticListenerSupported(method: PsiMethod) = true

src/main/kotlin/com/demonwav/mcdev/platform/forge/ForgeTemplate.kt

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

1313
import com.demonwav.mcdev.platform.BaseTemplate
14+
import com.demonwav.mcdev.platform.hybrid.SpongeForgeProjectConfiguration
1415
import com.demonwav.mcdev.util.MinecraftFileTemplateGroupFactory
1516
import com.intellij.openapi.project.Project
1617
import com.intellij.openapi.vfs.VirtualFile
@@ -23,14 +24,12 @@ object ForgeTemplate {
2324
prop: VirtualFile,
2425
groupId: String,
2526
artifactId: String,
26-
forgeVersion: String,
27-
mcpVersion: String,
28-
modVersion: String,
29-
spongeForge: Boolean) {
27+
configuration: ForgeProjectConfiguration,
28+
modVersion: String) {
3029

3130
val properties = Properties()
3231

33-
if (spongeForge) {
32+
if (configuration is SpongeForgeProjectConfiguration) {
3433
properties.setProperty("SPONGE_FORGE", "true")
3534
}
3635

@@ -40,8 +39,8 @@ object ForgeTemplate {
4039
gradleProps.setProperty("GROUP_ID", groupId)
4140
gradleProps.setProperty("ARTIFACT_ID", artifactId)
4241
gradleProps.setProperty("MOD_VERSION", modVersion)
43-
gradleProps.setProperty("FORGE_VERSION", forgeVersion)
44-
gradleProps.setProperty("MCP_VERSION", mcpVersion)
42+
gradleProps.setProperty("FORGE_VERSION", configuration.forgeVersion)
43+
gradleProps.setProperty("MCP_VERSION", configuration.mcpVersion)
4544

4645
// create gradle.properties
4746
BaseTemplate.applyTemplate(project, prop, MinecraftFileTemplateGroupFactory.FORGE_GRADLE_PROPERTIES_TEMPLATE, gradleProps)
@@ -51,24 +50,22 @@ object ForgeTemplate {
5150
file: VirtualFile,
5251
prop: VirtualFile,
5352
artifactId: String,
54-
forgeVersion: String,
55-
mcpVersion: String,
56-
commonProjectName: String,
57-
spongeForge: Boolean) {
53+
configuration: ForgeProjectConfiguration,
54+
commonProjectName: String) {
5855

5956
val properties = Properties()
6057
properties.setProperty("COMMON_PROJECT_NAME", commonProjectName)
6158

62-
if (spongeForge) {
59+
if (configuration is SpongeForgeProjectConfiguration) {
6360
properties.setProperty("SPONGE_FORGE", "true")
6461
}
6562

6663
BaseTemplate.applyTemplate(project, file, MinecraftFileTemplateGroupFactory.FORGE_SUBMODULE_BUILD_GRADLE_TEMPLATE, properties)
6764

6865
val gradleProps = Properties()
6966
gradleProps.setProperty("ARTIFACT_ID", artifactId)
70-
gradleProps.setProperty("FORGE_VERSION", forgeVersion)
71-
gradleProps.setProperty("MCP_VERSION", mcpVersion)
67+
gradleProps.setProperty("FORGE_VERSION", configuration.forgeVersion)
68+
gradleProps.setProperty("MCP_VERSION", configuration.mcpVersion)
7269

7370
// create gradle.properties
7471
BaseTemplate.applyTemplate(project, prop, MinecraftFileTemplateGroupFactory.FORGE_GRADLE_PROPERTIES_TEMPLATE, gradleProps)

src/main/kotlin/com/demonwav/mcdev/platform/liteloader/LiteLoaderTemplate.kt

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,14 @@ object LiteLoaderTemplate {
2323
prop: VirtualFile,
2424
groupId: String,
2525
artifactId: String,
26-
modVersion: String,
27-
mcVersion: String,
28-
mcpMappings: String) {
26+
configuration: LiteLoaderProjectConfiguration) {
2927

3028
val properties = Properties()
3129
properties.setProperty("GROUP_ID", groupId)
3230
properties.setProperty("ARTIFACT_ID", artifactId)
33-
properties.setProperty("VERSION", modVersion)
34-
properties.setProperty("MC_VERSION", mcVersion)
35-
properties.setProperty("MCP_MAPPINGS", mcpMappings)
31+
properties.setProperty("VERSION", configuration.pluginVersion)
32+
properties.setProperty("MC_VERSION", configuration.mcVersion)
33+
properties.setProperty("MCP_MAPPINGS", configuration.mcpVersion)
3634

3735
BaseTemplate.applyTemplate(project, prop, MinecraftFileTemplateGroupFactory.LITELOADER_GRADLE_PROPERTIES_TEMPLATE, properties)
3836
BaseTemplate.applyTemplate(project, file, MinecraftFileTemplateGroupFactory.LITELOADER_BUILD_GRADLE_TEMPLATE, Properties())
@@ -41,9 +39,7 @@ object LiteLoaderTemplate {
4139
fun applySubmoduleBuildGradleTemplate(project: Project,
4240
file: VirtualFile,
4341
prop: VirtualFile,
44-
modVersion: String,
45-
mcVersion: String,
46-
mcpMappings: String,
42+
configuration: LiteLoaderProjectConfiguration,
4743
commonProjectName: String) {
4844

4945
val properties = Properties()
@@ -52,9 +48,9 @@ object LiteLoaderTemplate {
5248
BaseTemplate.applyTemplate(project, file, MinecraftFileTemplateGroupFactory.LITELOADER_SUBMODULE_BUILD_GRADLE_TEMPLATE, properties)
5349

5450
val gradleProps = Properties()
55-
gradleProps.setProperty("VERSION", modVersion)
56-
gradleProps.setProperty("MC_VERSION", mcVersion)
57-
gradleProps.setProperty("MCP_MAPPINGS", mcpMappings)
51+
gradleProps.setProperty("VERSION", configuration.pluginVersion)
52+
gradleProps.setProperty("MC_VERSION", configuration.mcVersion)
53+
gradleProps.setProperty("MCP_MAPPINGS", configuration.mcpVersion)
5854

5955
BaseTemplate.applyTemplate(project, prop, MinecraftFileTemplateGroupFactory.LITELOADER_GRADLE_PROPERTIES_TEMPLATE, gradleProps)
6056
}

0 commit comments

Comments
 (0)