Skip to content

Commit d839cd7

Browse files
committed
Merge branch '2023.2' into 2023.3
2 parents c90435b + 0549e5a commit d839cd7

File tree

13 files changed

+63
-64
lines changed

13 files changed

+63
-64
lines changed

build.gradle.kts

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

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

292293
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.3
2525
ideaVersionName = 2023.3
2626

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

3030
pluginTomlVersion = 233.11799.172

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: 5 additions & 5 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,7 @@ 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
3939
import com.intellij.openapi.application.runWriteActionAndWait
4040
import com.intellij.openapi.module.Module
4141
import com.intellij.openapi.module.ModuleGrouper
@@ -77,9 +77,9 @@ class MinecraftFacet(
7777
roots.clear()
7878
}
7979

80-
fun refresh() {
80+
fun refresh() = runWriteActionAndWait {
8181
if (module.isDisposed) {
82-
return
82+
return@runWriteActionAndWait
8383
}
8484

8585
// Don't allow parent types with child types in auto detected set
@@ -122,9 +122,9 @@ class MinecraftFacet(
122122
ProjectView.getInstance(module.project).refresh()
123123
}
124124

125-
private fun updateRoots() = invokeAndWait {
125+
private fun updateRoots() = runWriteAction {
126126
if (module.isDisposed) {
127-
return@invokeAndWait
127+
return@runWriteAction
128128
}
129129

130130
roots.clear()

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

src/main/kotlin/platform/mixin/reference/MixinSelectors.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,11 @@ class MixinMemberParser : MixinSelectorParser {
240240
}
241241

242242
owner = internalOwner.replace('/', '.')
243+
244+
// if owner is all there is to the selector, match anything with the owner
245+
if (pos == reference.length - 1) {
246+
return MemberReference("", null, owner, matchAllNames = true, matchAllDescs = true)
247+
}
243248
} else {
244249
// No owner/qualifier specified
245250
pos = -1

src/main/kotlin/platform/sponge/reference/SpongeReferenceContributor.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ private class GetterReference(element: PsiLanguageInjectionHost) : PsiReferenceB
7878
}
7979

8080
override fun getVariants(): Array<Any> {
81-
val literal = element.toUElementOfType<ULiteralExpression>() ?: return ArrayUtil.EMPTY_OBJECT_ARRAY
81+
val literal = element.toUElement() ?: return ArrayUtil.EMPTY_OBJECT_ARRAY
8282
val (eventClass, _) = literal.uastEventListener
8383
?: return ArrayUtil.EMPTY_OBJECT_ARRAY
8484
val methodByClass = mutableMapOf<String, Pair<PsiMethod, PsiClass>>()

0 commit comments

Comments
 (0)