feat(Integration): ESC-key open previous support (#6006)

This commit is contained in:
木葉 Scarlet
2025-04-12 00:53:49 +08:00
committed by GitHub
parent c96d80ebf8
commit b84de63dfe
3 changed files with 15 additions and 8 deletions

View File

@@ -37,9 +37,13 @@ class VirtualDisplayScreen(
}
override fun close() {
IntegrationListener.virtualClose()
mc.mouse.lockCursor()
super.close()
if (parentScreen is VirtualDisplayScreen) {
mc.setScreen(parentScreen)
} else {
IntegrationListener.virtualClose()
mc.mouse.lockCursor()
super.close()
}
}
override fun shouldPause(): Boolean {

View File

@@ -21,6 +21,7 @@
package net.ccbluex.liquidbounce.integration
import com.mojang.blaze3d.systems.RenderCall
import com.mojang.blaze3d.systems.RenderSystem
import net.ccbluex.liquidbounce.utils.client.mc
import net.ccbluex.liquidbounce.utils.client.openVfpProtocolSelection
@@ -37,6 +38,7 @@ import net.minecraft.client.gui.screen.option.OptionsScreen
import net.minecraft.client.gui.screen.world.CreateWorldScreen
import net.minecraft.client.gui.screen.world.SelectWorldScreen
import net.minecraft.client.realms.gui.screen.RealmsMainScreen
import java.util.function.Predicate
/**
* Checks for Lunar client screens
@@ -48,9 +50,11 @@ private val Screen.isLunar
enum class VirtualScreenType(
val routeName: String,
val recognizer: (Screen) -> Boolean = { false },
private val recognizer: Predicate<Screen> = Predicate { false },
val isInGame: Boolean = false,
private val open: () -> Unit = { mc.setScreen(VirtualDisplayScreen(byName(routeName)!!)) }
private val open: RenderCall = RenderCall {
mc.setScreen(VirtualDisplayScreen(byName(routeName)!!))
}
) {
HUD("hud", isInGame = true),
@@ -130,7 +134,7 @@ enum class VirtualScreenType(
companion object {
fun byName(name: String) = entries.find { it.routeName == name }
fun recognize(screen: Screen) = entries.find { it.recognizer(screen) }
fun recognize(screen: Screen) = entries.find { it.recognizer.test(screen) }
}
}

View File

@@ -64,8 +64,7 @@ fun postVirtualScreen(requestObject: RequestObject): FullHttpResponse {
@Suppress("UNUSED_PARAMETER")
fun getScreenInfo(requestObject: RequestObject): FullHttpResponse {
val mcScreen = mc.currentScreen ?: return httpForbidden("No screen")
val name = VirtualScreenType.entries.find { it.recognizer(mcScreen) }?.routeName
?: mcScreen::class.qualifiedName
val name = VirtualScreenType.recognize(mcScreen)?.routeName ?: mcScreen::class.qualifiedName
return httpOk(JsonObject().apply {
addProperty("name", name)