Refactor source layout
Introduce compat source sets and move all kotlin sources to the main directory [no changelog]
This commit is contained in:
38
src/main/kotlin/util/ScreenUtil.kt
Normal file
38
src/main/kotlin/util/ScreenUtil.kt
Normal file
@@ -0,0 +1,38 @@
|
||||
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user