Skip to content

Commit 0549e5a

Browse files
committed
Merge branch '2023.1' into 2023.2
2 parents f8030a1 + 1717901 commit 0549e5a

File tree

15 files changed

+87
-69
lines changed

15 files changed

+87
-69
lines changed

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,7 @@ license {
285285
style["bnf"] = HeaderStyle.BLOCK_COMMENT.format
286286

287287
val endings = listOf("java", "kt", "kts", "groovy", "gradle.kts", "xml", "properties", "html", "flex", "bnf")
288+
exclude("META-INF/plugin.xml") // https://youtrack.jetbrains.com/issue/IDEA-345026
288289
include(endings.map { "**/*.$it" })
289290

290291
exclude("com/demonwav/mcdev/platform/mixin/invalidInjectorMethodSignature/*.java")

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ kotlin.code.style=official
2424
ideaVersion = 2023.2.2
2525
ideaVersionName = 2023.2.2
2626

27-
coreVersion = 1.7.1
27+
coreVersion = 1.7.2
2828
downloadIdeaSources = true
2929

3030
pluginTomlVersion = 232.8660.88

src/main/kotlin/creator/MinecraftModuleBuilder.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import com.demonwav.mcdev.creator.buildsystem.BuildSystemPropertiesStep
2626
import com.demonwav.mcdev.creator.platformtype.PlatformTypeStep
2727
import com.demonwav.mcdev.creator.step.NewProjectWizardChainStep.Companion.nextStep
2828
import com.demonwav.mcdev.creator.step.TemplateOutdatedStep
29-
import com.demonwav.mcdev.platform.MinecraftModuleType
3029
import com.intellij.ide.projectWizard.ProjectSettingsStep
3130
import com.intellij.ide.util.projectWizard.WizardContext
3231
import com.intellij.ide.wizard.AbstractNewProjectWizardBuilder
@@ -37,9 +36,9 @@ import com.intellij.openapi.roots.ModifiableRootModel
3736

3837
class MinecraftModuleBuilder : AbstractNewProjectWizardBuilder() {
3938

40-
override fun getPresentableName() = MinecraftModuleType.NAME
39+
override fun getPresentableName() = "Minecraft"
4140
override fun getNodeIcon() = PlatformAssets.MINECRAFT_ICON
42-
override fun getGroupName() = MinecraftModuleType.NAME
41+
override fun getGroupName() = "Minecraft"
4342
override fun getBuilderId() = "MINECRAFT_MODULE"
4443
override fun getDescription() = MCDevBundle("creator.ui.create_minecraft_project")
4544

@@ -51,7 +50,7 @@ class MinecraftModuleBuilder : AbstractNewProjectWizardBuilder() {
5150
}
5251
}
5352

54-
override fun getParentGroup() = MinecraftModuleType.NAME
53+
override fun getParentGroup() = "Minecraft"
5554

5655
override fun createStep(context: WizardContext) = RootNewProjectWizardStep(context)
5756
.nextStep(::NewProjectWizardBaseStep)

src/main/kotlin/facet/MinecraftFacet.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import com.demonwav.mcdev.platform.AbstractModuleType
2727
import com.demonwav.mcdev.platform.PlatformType
2828
import com.demonwav.mcdev.util.SourceType
2929
import com.demonwav.mcdev.util.filterNotNull
30-
import com.demonwav.mcdev.util.invokeAndWait
3130
import com.demonwav.mcdev.util.mapFirstNotNull
3231
import com.google.common.collect.HashMultimap
3332
import com.intellij.facet.Facet
@@ -36,6 +35,8 @@ import com.intellij.facet.FacetTypeId
3635
import com.intellij.facet.FacetTypeRegistry
3736
import com.intellij.ide.projectView.ProjectView
3837
import com.intellij.openapi.application.runReadAction
38+
import com.intellij.openapi.application.runWriteAction
39+
import com.intellij.openapi.application.runWriteActionAndWait
3940
import com.intellij.openapi.module.Module
4041
import com.intellij.openapi.module.ModuleGrouper
4142
import com.intellij.openapi.module.ModuleManager
@@ -75,9 +76,9 @@ class MinecraftFacet(
7576
roots.clear()
7677
}
7778

78-
fun refresh() {
79+
fun refresh() = runWriteActionAndWait {
7980
if (module.isDisposed) {
80-
return
81+
return@runWriteActionAndWait
8182
}
8283

8384
// Don't allow parent types with child types in auto detected set
@@ -120,14 +121,13 @@ class MinecraftFacet(
120121
ProjectView.getInstance(module.project).refresh()
121122
}
122123

123-
private fun updateRoots() = invokeAndWait {
124+
private fun updateRoots() = runWriteAction {
124125
if (module.isDisposed) {
125-
return@invokeAndWait
126+
return@runWriteAction
126127
}
127128

128129
roots.clear()
129130
val rootManager = ModuleRootManager.getInstance(module)
130-
131131
rootManager.contentEntries.asSequence()
132132
.flatMap { entry -> entry.sourceFolders.asSequence() }
133133
.filterNotNull { it.file }

src/main/kotlin/facet/MinecraftFacetDetector.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,11 @@ import com.intellij.openapi.roots.libraries.LibraryDetectionManager
4141
import com.intellij.openapi.roots.libraries.LibraryKind
4242
import com.intellij.openapi.roots.libraries.LibraryProperties
4343
import com.intellij.openapi.roots.ui.configuration.libraries.LibraryPresentationManager
44-
import com.intellij.openapi.startup.StartupActivity
44+
import com.intellij.openapi.startup.ProjectActivity
4545
import com.intellij.openapi.util.Key
4646
import org.jetbrains.plugins.gradle.util.GradleUtil
4747

48-
class MinecraftFacetDetector : StartupActivity {
48+
class MinecraftFacetDetector : ProjectActivity {
4949
companion object {
5050
private val libraryVersionsKey = Key<MutableMap<LibraryKind, String>>("mcdev.libraryVersions")
5151

@@ -54,7 +54,7 @@ class MinecraftFacetDetector : StartupActivity {
5454
}
5555
}
5656

57-
override fun runActivity(project: Project) {
57+
override suspend fun execute(project: Project) {
5858
MinecraftModuleRootListener.doCheck(project)
5959
}
6060

src/main/kotlin/facet/ProjectReimporter.kt

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@
2020

2121
package com.demonwav.mcdev.facet
2222

23+
import com.demonwav.mcdev.asset.MCDevBundle
24+
import com.intellij.notification.Notification
25+
import com.intellij.notification.NotificationType
2326
import com.intellij.openapi.actionSystem.ActionManager
2427
import com.intellij.openapi.actionSystem.ActionPlaces
2528
import com.intellij.openapi.diagnostic.logger
@@ -57,7 +60,23 @@ object ProjectReimporter {
5760
true
5861
)
5962
callback.doWhenRejected { error ->
60-
log.error("Rejected refresh all projects: $error")
63+
if (error == null) {
64+
Notification(
65+
"Minecraft facet",
66+
MCDevBundle("facet.reimport.failed.title"),
67+
MCDevBundle("facet.reimport.failed.content.no_error"),
68+
NotificationType.WARNING
69+
).notify(project)
70+
log.warn("Rejected refresh all projects, no details provided")
71+
} else {
72+
Notification(
73+
"Minecraft facet",
74+
MCDevBundle("facet.reimport.failed.title"),
75+
MCDevBundle("facet.reimport.failed.content.with_error", error),
76+
NotificationType.WARNING
77+
).notify(project)
78+
log.error("Rejected refresh all projects: $error")
79+
}
6180
}
6281
}
6382
}

src/main/kotlin/platform/MinecraftModuleType.kt

Lines changed: 0 additions & 43 deletions
This file was deleted.

src/main/kotlin/platform/forge/creator/gradle-steps.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import com.demonwav.mcdev.creator.step.LicenseStep
4141
import com.demonwav.mcdev.creator.step.NewProjectWizardChainStep.Companion.nextStep
4242
import com.demonwav.mcdev.creator.step.UseMixinsStep
4343
import com.demonwav.mcdev.util.MinecraftTemplates
44+
import com.demonwav.mcdev.util.MinecraftVersions
4445
import com.demonwav.mcdev.util.SemanticVersion
4546
import com.intellij.ide.wizard.NewProjectWizardStep
4647
import com.intellij.openapi.application.WriteAction
@@ -102,6 +103,7 @@ class ForgeGradleFilesStep(parent: NewProjectWizardStep) : AbstractLongRunningAs
102103
"AUTHOR_LIST" to authors.joinToString(", "),
103104
"LICENSE" to license.id,
104105
"HAS_DATA" to "true",
106+
"MERGE_RESOURCES_AND_CLASSES" to (mcVersion >= MinecraftVersions.MC1_20_3),
105107
)
106108

107109
if (javaVersion != null) {

src/main/kotlin/platform/mcp/actions/SrgActionBase.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import com.intellij.psi.PsiElement
3737
import com.intellij.psi.PsiIdentifier
3838
import com.intellij.psi.PsiMember
3939
import com.intellij.psi.PsiReference
40+
import com.intellij.psi.util.createSmartPointer
4041
import com.intellij.ui.LightColors
4142
import com.intellij.ui.awt.RelativePoint
4243
import java.awt.Point
@@ -88,9 +89,10 @@ abstract class SrgActionBase : AnAction() {
8889

8990
val project = e.project ?: return
9091

92+
val elementPointer = getDataFromActionEvent(e)?.element?.createSmartPointer()
93+
val editor = getDataFromActionEvent(e)?.editor
9194
invokeLater {
92-
val element = getDataFromActionEvent(e)?.element
93-
val editor = getDataFromActionEvent(e)?.editor
95+
val element = elementPointer?.element
9496
if (element != null && editor != null) {
9597
val pos = editor.offsetToVisualPosition(element.textRange.endOffset - element.textLength / 2)
9698
val at = RelativePoint(

src/main/kotlin/platform/mixin/handlers/injectionPoint/NewInsnInjectionPoint.kt

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,11 +219,30 @@ class NewInsnSelectorParser : MixinSelectorParser {
219219
if (!at.hasQualifiedName(AT)) return null
220220
if (at.findAttributeValue("value")?.constantStringValue != "NEW") return null
221221

222-
return NewInsnSelector(value)
222+
val strippedValue = value.replace(" ", "")
223+
return if (strippedValue.startsWith('(')) {
224+
NewInsnDescriptorSelector(strippedValue)
225+
} else {
226+
NewInsnTypeSelector(strippedValue)
227+
}
223228
}
224229
}
225230

226-
private class NewInsnSelector(
231+
private class NewInsnTypeSelector(
232+
override val owner: String,
233+
) : MixinSelector {
234+
override fun matchField(owner: String, name: String, desc: String) = false
235+
236+
override fun matchMethod(owner: String, name: String, desc: String): Boolean {
237+
return name == "<init>" && owner == this.owner
238+
}
239+
240+
override val fieldDescriptor = null
241+
override val methodDescriptor = null
242+
override val displayName = owner
243+
}
244+
245+
private class NewInsnDescriptorSelector(
227246
override val methodDescriptor: String,
228247
) : MixinSelector {
229248
override fun matchField(owner: String, name: String, desc: String): Boolean = false

0 commit comments

Comments
 (0)