Add jarvis

This commit is contained in:
nea
2023-07-21 22:10:40 +02:00
parent ce7fd22553
commit 7ac205db0e
5 changed files with 55 additions and 5 deletions

View File

@@ -173,7 +173,7 @@ abstract class ManagedConfig(val name: String) {
latestGuiAppender?.reloadables?.forEach {it() }
}
fun showConfigEditor(parent: Screen? = null) {
fun getConfigEditor(parent: Screen? = null): CottonClientScreen {
val lwgd = LightweightGuiDescription()
val guiapp = GuiAppender(20)
latestGuiAppender = guiapp
@@ -181,12 +181,16 @@ abstract class ManagedConfig(val name: String) {
sortedOptions.forEach { it.appendToGui(guiapp) }
guiapp.reloadables.forEach { it() }
lwgd.setRootPanel(guiapp.panel)
setScreenLater(object : CottonClientScreen(lwgd) {
return object : CottonClientScreen(lwgd) {
override fun close() {
latestGuiAppender = null
MC.screen = parent
}
})
}
}
fun showConfigEditor(parent: Screen? = null) {
setScreenLater(getConfigEditor(parent))
}
}

View File

@@ -0,0 +1,37 @@
package moe.nea.firmament.jarvis
import moe.nea.jarvis.api.JarvisConfigOption
import moe.nea.jarvis.api.JarvisPlugin
import net.minecraft.client.gui.screen.Screen
import net.minecraft.text.Text
import moe.nea.firmament.Firmament
import moe.nea.firmament.features.FeatureManager
import moe.nea.firmament.repo.RepoManager
class JarvisIntegration : JarvisPlugin {
override fun getModId(): String =
Firmament.MOD_ID
override fun getAllConfigOptions(): List<JarvisConfigOption> {
val configs = listOf(
RepoManager.Config
) + FeatureManager.allFeatures.mapNotNull { it.config }
return configs.flatMap { config ->
config.sortedOptions.map {
object : JarvisConfigOption {
override fun title(): Text {
return it.labelText
}
override fun description(): List<Text> {
return emptyList()
}
override fun jumpTo(parentScreen: Screen?): Screen {
return config.getConfigEditor(parentScreen)
}
}
}
}
}
}