mirror of
https://github.com/CCBlueX/LiquidBounce.git
synced 2025-09-06 09:46:38 +00:00
feat(Integration): ESC-key open previous support (#6006)
This commit is contained in:
@@ -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 {
|
||||
|
@@ -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) }
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user