Files
Firmament/src/main/kotlin/util/ScreenUtil.kt
Linnea Gräf d2f240ff0c Refactor source layout
Introduce compat source sets and move all kotlin sources to the main directory

[no changelog]
2024-08-28 19:04:24 +02:00

39 lines
1.1 KiB
Kotlin

package moe.nea.firmament.util
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents
import net.minecraft.client.MinecraftClient
import net.minecraft.client.gui.screen.Screen
import moe.nea.firmament.Firmament
object ScreenUtil {
init {
ClientTickEvents.START_CLIENT_TICK.register(::onTick)
}
private fun onTick(minecraft: MinecraftClient) {
if (nextOpenedGui != null) {
val p = minecraft.player
if (p?.currentScreenHandler != null) {
p.closeHandledScreen()
}
minecraft.setScreen(nextOpenedGui)
nextOpenedGui = null
}
}
private var nextOpenedGui: Screen? = null
fun setScreenLater(nextScreen: Screen?) {
val nog = nextOpenedGui
if (nog != null) {
Firmament.logger.warn("Setting screen ${if (nextScreen == null) "null" else nextScreen::class.qualifiedName} to be opened later, but ${nog::class.qualifiedName} is already queued.")
return
}
nextOpenedGui = nextScreen
}
}