Files
Firmament/src/main/kotlin/moe/nea/firmament/util/ScreenUtil.kt
2023-05-16 01:23:43 +02:00

37 lines
1.0 KiB
Kotlin

package moe.nea.firmament.util
import moe.nea.firmament.Firmament
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents
import net.minecraft.client.MinecraftClient
import net.minecraft.client.gui.screen.Screen
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 ${nextScreen::class.qualifiedName} to be opened later, but ${nog::class.qualifiedName} is already queued.")
return
}
nextOpenedGui = nextScreen
}
}