User: rednesto Date: 30 Aug 24 11:57 Revision: f8786a17527234e025b9a7f4e0e3d0d44c52ae28 Summary: Support gradle run configs for mouse ungrab TeamCity URL: https://ci.mcdev.io/viewModification.html?tab=vcsModificationFiles&modId=9630&personal=false Index: src/main/kotlin/platform/mcp/debug/UngrabMouseDebugSessionListener.kt =================================================================== --- src/main/kotlin/platform/mcp/debug/UngrabMouseDebugSessionListener.kt (revision 8443d3b31e640cdec2bda6fdd21ca4f4d88a9b4a) +++ src/main/kotlin/platform/mcp/debug/UngrabMouseDebugSessionListener.kt (revision f8786a17527234e025b9a7f4e0e3d0d44c52ae28) @@ -41,7 +41,7 @@ val frameProxy = suspendContextImpl.frameProxy ?: return val debugProcess = suspendContextImpl.debugProcess - val virtualMachine = debugProcess.virtualMachineProxy as? VirtualMachineProxyImpl ?: return + val virtualMachine = debugProcess.virtualMachineProxy val evaluationContext = EvaluationContextImpl(suspendContextImpl, frameProxy) val mouseClass = virtualMachine.classesByName("org.lwjgl.input.Mouse")?.singleOrNull() as? ClassType Index: src/main/kotlin/util/ModuleDebugRunConfigurationExtension.kt =================================================================== --- src/main/kotlin/util/ModuleDebugRunConfigurationExtension.kt (revision 8443d3b31e640cdec2bda6fdd21ca4f4d88a9b4a) +++ src/main/kotlin/util/ModuleDebugRunConfigurationExtension.kt (revision f8786a17527234e025b9a7f4e0e3d0d44c52ae28) @@ -20,6 +20,8 @@ package com.demonwav.mcdev.util +import com.demonwav.mcdev.facet.MinecraftFacet +import com.demonwav.mcdev.platform.mcp.McpModuleType import com.intellij.execution.RunConfigurationExtension import com.intellij.execution.configurations.DebuggingRunnerData import com.intellij.execution.configurations.JavaParameters @@ -29,12 +31,14 @@ import com.intellij.execution.process.ProcessHandler import com.intellij.openapi.module.Module import com.intellij.openapi.options.SettingsEditor +import com.intellij.openapi.project.modules import org.jdom.Element +import org.jetbrains.plugins.gradle.service.execution.GradleRunConfiguration abstract class ModuleDebugRunConfigurationExtension : RunConfigurationExtension() { override fun isApplicableFor(configuration: RunConfigurationBase<*>): Boolean { - return configuration is ModuleBasedConfiguration<*, *> + return configuration is ModuleBasedConfiguration<*, *> || configuration is GradleRunConfiguration } override fun > updateJavaParameters( @@ -56,10 +60,22 @@ return } - val config = configuration as ModuleBasedConfiguration<*, *> - val module = config.configurationModule.module ?: return + when (configuration) { + is ModuleBasedConfiguration<*, *> -> { + val module = configuration.configurationModule.module ?: return - attachToProcess(handler, module) - } + attachToProcess(handler, module) + } + is GradleRunConfiguration -> { + // Loose way to confirm we are in an MCP project, this is fine for now because we don't rely on specific + // information to ungrab (like MC version) + // Ideally we would find the module matching the run's sourceSet as defined in the build script + val module = configuration.project.modules.firstOrNull { + MinecraftFacet.getInstance(it)?.isOfType(McpModuleType) == true + } ?: return + attachToProcess(handler, module) + } + } + } override fun readExternal(runConfiguration: RunConfigurationBase<*>, element: Element) {}