aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornea <nea@nea.moe>2023-07-21 22:10:40 +0200
committernea <nea@nea.moe>2023-07-21 22:10:40 +0200
commit7ac205db0ecf96fa76b4fcb3c6a748692260c8c6 (patch)
tree1bcf4bfb9f6c944b57e006c22e46f805228684c9
parentce7fd22553e0e3ca8fd23a373654d5954bae5582 (diff)
downloadfirmament-7ac205db0ecf96fa76b4fcb3c6a748692260c8c6.tar.gz
firmament-7ac205db0ecf96fa76b4fcb3c6a748692260c8c6.tar.bz2
firmament-7ac205db0ecf96fa76b4fcb3c6a748692260c8c6.zip
Add jarvis
-rw-r--r--build.gradle.kts7
-rw-r--r--gradle/libs.versions.toml3
-rw-r--r--src/main/kotlin/moe/nea/firmament/gui/config/ManagedConfig.kt10
-rw-r--r--src/main/kotlin/moe/nea/firmament/jarvis/JarvisIntegration.kt37
-rw-r--r--src/main/resources/fabric.mod.json3
5 files changed, 55 insertions, 5 deletions
diff --git a/build.gradle.kts b/build.gradle.kts
index 3b0b945..3690850 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -101,6 +101,8 @@ dependencies {
include(libs.libgui)
modApi(libs.fabric.api)
modApi(libs.architectury)
+ modImplementation(libs.jarvis.api)
+ include(libs.jarvis.fabric)
// Actual dependencies
modCompileOnly(libs.rei.api) {
@@ -120,8 +122,9 @@ dependencies {
transInclude(nonModImplentation(ktor("client-logging"))!!)
// Dev environment preinstalled mods
- modRuntimeOnly(libs.bundles.runtime.required)
- modRuntimeOnly(libs.bundles.runtime.optional)
+ modLocalRuntime(libs.bundles.runtime.required)
+ modLocalRuntime(libs.bundles.runtime.optional)
+ modLocalRuntime(libs.jarvis.fabric)
transInclude.resolvedConfiguration.resolvedArtifacts.forEach {
include(it.moduleVersion.id.toString())
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 8d64cb3..e8ff4ab 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -19,6 +19,7 @@ sodium = "mc1.20-0.4.10"
freecammod = "1.2.0-mc1.20"
ncr = "Fabric-1.20-v2.2.0"
mixinextras = "0.2.0-beta.9"
+jarvis = "1.0.0"
[libraries]
@@ -33,6 +34,8 @@ dbus_java_core = { module = "com.github.hypfvieh:dbus-java-core", version.ref =
dbus_java_unixsocket = { module = "com.github.hypfvieh:dbus-java-transport-native-unixsocket", version.ref = "dbus_java" }
libgui = { module = "io.github.cottonmc:LibGui", version.ref = "libgui" }
mixinextras = { module = "com.github.LlamaLad7:MixinExtras", version.ref = "mixinextras" }
+jarvis_api = { module = "moe.nea.jarvis:jarvis-api", version.ref = "jarvis" }
+jarvis_fabric = { module = "moe.nea.jarvis:jarvis-fabric", version.ref = "jarvis" }
# Runtime:
hotswap = { module = "virtual.github.hotswapagent:hotswap-agent", version.ref = "hotswap_agent" }
diff --git a/src/main/kotlin/moe/nea/firmament/gui/config/ManagedConfig.kt b/src/main/kotlin/moe/nea/firmament/gui/config/ManagedConfig.kt
index 2115fb0..0204448 100644
--- a/src/main/kotlin/moe/nea/firmament/gui/config/ManagedConfig.kt
+++ b/src/main/kotlin/moe/nea/firmament/gui/config/ManagedConfig.kt
@@ -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))
}
}
diff --git a/src/main/kotlin/moe/nea/firmament/jarvis/JarvisIntegration.kt b/src/main/kotlin/moe/nea/firmament/jarvis/JarvisIntegration.kt
new file mode 100644
index 0000000..3dfb7d0
--- /dev/null
+++ b/src/main/kotlin/moe/nea/firmament/jarvis/JarvisIntegration.kt
@@ -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)
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json
index c227e49..16daa92 100644
--- a/src/main/resources/fabric.mod.json
+++ b/src/main/resources/fabric.mod.json
@@ -31,6 +31,9 @@
],
"modmenu": [
"moe.nea.firmament.modmenu.FirmamentModMenuPlugin"
+ ],
+ "jarvis": [
+ "moe.nea.firmament.jarvis.JarvisIntegration"
]
},
"mixins": [