aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/gui
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2025-07-28 19:52:18 +0200
committerLinnea Gräf <nea@nea.moe>2025-07-28 19:52:18 +0200
commit80d97bb0de46b1b0cefd8a5bd1ba22105ee08a50 (patch)
treef4f361e7397d0f743429bff824664b09ab4a0748 /src/main/kotlin/gui
parent32e1b1176b4230e3e76145c1fec7f13f705cb6a7 (diff)
downloadFirmament-80d97bb0de46b1b0cefd8a5bd1ba22105ee08a50.tar.gz
Firmament-80d97bb0de46b1b0cefd8a5bd1ba22105ee08a50.tar.bz2
Firmament-80d97bb0de46b1b0cefd8a5bd1ba22105ee08a50.zip
feat: update to new moulconfig version
Diffstat (limited to 'src/main/kotlin/gui')
-rw-r--r--src/main/kotlin/gui/BarComponent.kt5
-rw-r--r--src/main/kotlin/gui/CheckboxComponent.kt4
-rw-r--r--src/main/kotlin/gui/FirmHoverComponent.kt4
-rw-r--r--src/main/kotlin/gui/config/DurationHandler.kt5
-rw-r--r--src/main/kotlin/gui/config/IntegerHandler.kt5
-rw-r--r--src/main/kotlin/gui/config/KeyBindingStateManager.kt5
-rw-r--r--src/main/kotlin/gui/config/ManagedConfig.kt21
-rw-r--r--src/main/kotlin/gui/hud/MoulConfigHud.kt90
8 files changed, 75 insertions, 64 deletions
diff --git a/src/main/kotlin/gui/BarComponent.kt b/src/main/kotlin/gui/BarComponent.kt
index 563e159..751ea39 100644
--- a/src/main/kotlin/gui/BarComponent.kt
+++ b/src/main/kotlin/gui/BarComponent.kt
@@ -6,7 +6,8 @@ import io.github.notenoughupdates.moulconfig.common.RenderContext
import io.github.notenoughupdates.moulconfig.gui.GuiComponent
import io.github.notenoughupdates.moulconfig.gui.GuiImmediateContext
import io.github.notenoughupdates.moulconfig.observer.GetSetter
-import io.github.notenoughupdates.moulconfig.platform.ModernRenderContext
+import io.github.notenoughupdates.moulconfig.platform.MoulConfigPlatform
+import io.github.notenoughupdates.moulconfig.platform.MoulConfigRenderContext
import me.shedaniel.math.Color
import net.minecraft.client.gl.RenderPipelines
import net.minecraft.client.gui.DrawContext
@@ -82,7 +83,7 @@ class BarComponent(
}
override fun render(context: GuiImmediateContext) {
- val renderContext = (context.renderContext as ModernRenderContext).drawContext
+ val renderContext = (context.renderContext as MoulConfigRenderContext).drawContext
var i = 0
val x = 0
val y = 0
diff --git a/src/main/kotlin/gui/CheckboxComponent.kt b/src/main/kotlin/gui/CheckboxComponent.kt
index 9baf720..7a9f2ef 100644
--- a/src/main/kotlin/gui/CheckboxComponent.kt
+++ b/src/main/kotlin/gui/CheckboxComponent.kt
@@ -4,7 +4,7 @@ import io.github.notenoughupdates.moulconfig.gui.GuiComponent
import io.github.notenoughupdates.moulconfig.gui.GuiImmediateContext
import io.github.notenoughupdates.moulconfig.gui.MouseEvent
import io.github.notenoughupdates.moulconfig.observer.GetSetter
-import io.github.notenoughupdates.moulconfig.platform.ModernRenderContext
+import io.github.notenoughupdates.moulconfig.platform.MoulConfigRenderContext
import net.minecraft.client.gl.RenderPipelines
import net.minecraft.client.render.RenderLayer
import moe.nea.firmament.Firmament
@@ -26,7 +26,7 @@ class CheckboxComponent<T>(
}
override fun render(context: GuiImmediateContext) {
- val ctx = (context.renderContext as ModernRenderContext).drawContext
+ val ctx = (context.renderContext as MoulConfigRenderContext).drawContext
ctx.drawGuiTexture(
RenderPipelines.GUI_TEXTURED,
if (isEnabled()) Firmament.identifier("widget/checkbox_checked")
diff --git a/src/main/kotlin/gui/FirmHoverComponent.kt b/src/main/kotlin/gui/FirmHoverComponent.kt
index e38582a..eed795a 100644
--- a/src/main/kotlin/gui/FirmHoverComponent.kt
+++ b/src/main/kotlin/gui/FirmHoverComponent.kt
@@ -1,5 +1,6 @@
package moe.nea.firmament.gui
+import io.github.notenoughupdates.moulconfig.common.text.StructuredText
import io.github.notenoughupdates.moulconfig.gui.GuiComponent
import io.github.notenoughupdates.moulconfig.gui.GuiImmediateContext
import io.github.notenoughupdates.moulconfig.gui.KeyboardEvent
@@ -31,7 +32,8 @@ class FirmHoverComponent(
override fun render(context: GuiImmediateContext) {
if (context.isHovered && (permaHover || lastMouseMove.passedTime() > hoverDelay)) {
- context.renderContext.scheduleDrawTooltip(context.mouseX, context.mouseY, hoverLines.get())
+ context.renderContext.scheduleDrawTooltip(context.mouseX, context.mouseY, hoverLines.get()
+ .map { it -> StructuredText.of(it) })
permaHover = true
} else {
permaHover = false
diff --git a/src/main/kotlin/gui/config/DurationHandler.kt b/src/main/kotlin/gui/config/DurationHandler.kt
index 8d485b1..32bec25 100644
--- a/src/main/kotlin/gui/config/DurationHandler.kt
+++ b/src/main/kotlin/gui/config/DurationHandler.kt
@@ -3,6 +3,7 @@
package moe.nea.firmament.gui.config
import io.github.notenoughupdates.moulconfig.common.IMinecraft
+import io.github.notenoughupdates.moulconfig.common.text.StructuredText
import io.github.notenoughupdates.moulconfig.gui.component.RowComponent
import io.github.notenoughupdates.moulconfig.gui.component.SliderComponent
import io.github.notenoughupdates.moulconfig.gui.component.TextComponent
@@ -31,8 +32,8 @@ class DurationHandler(val config: ManagedConfig, val min: Duration, val max: Dur
guiAppender.appendLabeledRow(
opt.labelText,
RowComponent(
- TextComponent(IMinecraft.instance.defaultFontRenderer,
- { FirmFormatters.formatTimespan(opt.value) },
+ TextComponent(IMinecraft.INSTANCE.defaultFontRenderer,
+ { StructuredText.of(FirmFormatters.formatTimespan(opt.value)) },
40,
TextComponent.TextAlignment.CENTER,
true,
diff --git a/src/main/kotlin/gui/config/IntegerHandler.kt b/src/main/kotlin/gui/config/IntegerHandler.kt
index 31ce90f..fd10447 100644
--- a/src/main/kotlin/gui/config/IntegerHandler.kt
+++ b/src/main/kotlin/gui/config/IntegerHandler.kt
@@ -3,6 +3,7 @@
package moe.nea.firmament.gui.config
import io.github.notenoughupdates.moulconfig.common.IMinecraft
+import io.github.notenoughupdates.moulconfig.common.text.StructuredText
import io.github.notenoughupdates.moulconfig.gui.component.RowComponent
import io.github.notenoughupdates.moulconfig.gui.component.SliderComponent
import io.github.notenoughupdates.moulconfig.gui.component.TextComponent
@@ -26,8 +27,8 @@ class IntegerHandler(val config: ManagedConfig, val min: Int, val max: Int) : Ma
guiAppender.appendLabeledRow(
opt.labelText,
RowComponent(
- TextComponent(IMinecraft.instance.defaultFontRenderer,
- { FirmFormatters.formatCommas(opt.value, 0) },
+ TextComponent(IMinecraft.INSTANCE.defaultFontRenderer,
+ { StructuredText.of(FirmFormatters.formatCommas(opt.value, 0)) },
40,
TextComponent.TextAlignment.CENTER,
true,
diff --git a/src/main/kotlin/gui/config/KeyBindingStateManager.kt b/src/main/kotlin/gui/config/KeyBindingStateManager.kt
index 1528ac4..49a4465 100644
--- a/src/main/kotlin/gui/config/KeyBindingStateManager.kt
+++ b/src/main/kotlin/gui/config/KeyBindingStateManager.kt
@@ -6,6 +6,7 @@ import io.github.notenoughupdates.moulconfig.deps.libninepatch.NinePatch
import io.github.notenoughupdates.moulconfig.gui.GuiImmediateContext
import io.github.notenoughupdates.moulconfig.gui.KeyboardEvent
import io.github.notenoughupdates.moulconfig.gui.component.TextComponent
+import io.github.notenoughupdates.moulconfig.platform.MoulConfigPlatform
import org.lwjgl.glfw.GLFW
import net.minecraft.text.Text
import net.minecraft.util.Formatting
@@ -116,8 +117,8 @@ class KeyBindingStateManager(
fun createButton(): FirmButtonComponent {
return object : FirmButtonComponent(
TextComponent(
- IMinecraft.instance.defaultFontRenderer,
- { this@KeyBindingStateManager.label.string },
+ IMinecraft.INSTANCE.defaultFontRenderer,
+ { MoulConfigPlatform.wrap(this@KeyBindingStateManager.label) },
130,
TextComponent.TextAlignment.LEFT,
false,
diff --git a/src/main/kotlin/gui/config/ManagedConfig.kt b/src/main/kotlin/gui/config/ManagedConfig.kt
index 71d8c66..2f4144c 100644
--- a/src/main/kotlin/gui/config/ManagedConfig.kt
+++ b/src/main/kotlin/gui/config/ManagedConfig.kt
@@ -3,7 +3,6 @@ package moe.nea.firmament.gui.config
import com.mojang.serialization.Codec
import io.github.notenoughupdates.moulconfig.ChromaColour
import io.github.notenoughupdates.moulconfig.gui.CloseEventListener
-import io.github.notenoughupdates.moulconfig.gui.GuiComponentWrapper
import io.github.notenoughupdates.moulconfig.gui.GuiContext
import io.github.notenoughupdates.moulconfig.gui.component.CenterComponent
import io.github.notenoughupdates.moulconfig.gui.component.ColumnComponent
@@ -11,6 +10,7 @@ import io.github.notenoughupdates.moulconfig.gui.component.PanelComponent
import io.github.notenoughupdates.moulconfig.gui.component.RowComponent
import io.github.notenoughupdates.moulconfig.gui.component.ScrollPanelComponent
import io.github.notenoughupdates.moulconfig.gui.component.TextComponent
+import io.github.notenoughupdates.moulconfig.platform.MoulConfigScreenComponent
import moe.nea.jarvis.api.Point
import org.joml.Vector2i
import org.lwjgl.glfw.GLFW
@@ -120,7 +120,7 @@ abstract class ManagedConfig(
return option(propertyName, default, BooleanHandler(this))
}
- protected fun colour(propertyName: String, default: ()-> ChromaColour) : ManagedOption<ChromaColour> {
+ protected fun colour(propertyName: String, default: () -> ChromaColour): ManagedOption<ChromaColour> {
return option(propertyName, default, ColourHandler(this))
}
@@ -229,7 +229,8 @@ abstract class ManagedConfig(
var screen: Screen? = null
val guiapp = GuiAppender(400) { requireNotNull(screen) { "Screen Accessor called too early" } }
latestGuiAppender = guiapp
- guiapp.appendFullRow(RowComponent(
+ guiapp.appendFullRow(
+ RowComponent(
FirmButtonComponent(TextComponent("←")) {
if (parent != null) {
save()
@@ -241,12 +242,16 @@ abstract class ManagedConfig(
))
sortedOptions.forEach { it.appendToGui(guiapp) }
guiapp.reloadables.forEach { it() }
- val component = CenterComponent(PanelComponent(ScrollPanelComponent(400, 300, ColumnComponent(guiapp.panel)),
- 10,
- PanelComponent.DefaultBackgroundRenderer.VANILLA))
- screen = object : GuiComponentWrapper(GuiContext(component)) {
+ val component = CenterComponent(
+ PanelComponent(
+ ScrollPanelComponent(400, 300, ColumnComponent(guiapp.panel)),
+ 10,
+ PanelComponent.DefaultBackgroundRenderer.VANILLA
+ )
+ )
+ screen = object : MoulConfigScreenComponent(Text.empty(), GuiContext(component), parent) {
override fun close() {
- if (context.onBeforeClose() == CloseEventListener.CloseAction.NO_OBJECTIONS_TO_CLOSE) {
+ if (guiContext.onBeforeClose() == CloseEventListener.CloseAction.NO_OBJECTIONS_TO_CLOSE) {
client!!.setScreen(parent)
}
}
diff --git a/src/main/kotlin/gui/hud/MoulConfigHud.kt b/src/main/kotlin/gui/hud/MoulConfigHud.kt
index 14b7232..8259ebe 100644
--- a/src/main/kotlin/gui/hud/MoulConfigHud.kt
+++ b/src/main/kotlin/gui/hud/MoulConfigHud.kt
@@ -1,11 +1,11 @@
-
package moe.nea.firmament.gui.hud
-import io.github.notenoughupdates.moulconfig.gui.GuiComponentWrapper
import io.github.notenoughupdates.moulconfig.gui.GuiContext
import io.github.notenoughupdates.moulconfig.gui.component.TextComponent
+import io.github.notenoughupdates.moulconfig.platform.MoulConfigScreenComponent
import net.minecraft.resource.ResourceManager
import net.minecraft.resource.SynchronousResourceReloader
+import net.minecraft.text.Text
import moe.nea.firmament.events.FinalizeResourceManagerEvent
import moe.nea.firmament.events.HudRenderEvent
import moe.nea.firmament.gui.config.HudMeta
@@ -14,55 +14,55 @@ import moe.nea.firmament.util.MC
import moe.nea.firmament.util.MoulConfigUtils
abstract class MoulConfigHud(
- val name: String,
- val hudMeta: HudMeta,
+ val name: String,
+ val hudMeta: HudMeta,
) {
- companion object {
- private val componentWrapper by lazy {
- object : GuiComponentWrapper(GuiContext(TextComponent("§cERROR"))) {
- init {
- this.client = MC.instance
- }
- }
- }
- }
+ companion object {
+ private val componentWrapper by lazy {
+ object : MoulConfigScreenComponent(Text.empty(), GuiContext(TextComponent("§cERROR")), null) {
+ init {
+ this.client = MC.instance
+ }
+ }
+ }
+ }
- private var fragment: GuiContext? = null
+ private var fragment: GuiContext? = null
- fun forceInit() {
- }
+ fun forceInit() {
+ }
- open fun shouldRender(): Boolean {
- return true
- }
+ open fun shouldRender(): Boolean {
+ return true
+ }
- init {
- require(name.matches("^[a-z_/]+$".toRegex()))
- HudRenderEvent.subscribe("MoulConfigHud:render") {
- if (!shouldRender()) return@subscribe
- val renderContext = componentWrapper.createContext(it.context)
- if (fragment == null)
- loadFragment()
- it.context.matrices.pushMatrix()
- hudMeta.applyTransformations(it.context.matrices)
- val pos = hudMeta.getEffectivePosition(JarvisIntegration.jarvis)
+ init {
+ require(name.matches("^[a-z_/]+$".toRegex()))
+ HudRenderEvent.subscribe("MoulConfigHud:render") {
+ if (!shouldRender()) return@subscribe
+ val renderContext = componentWrapper.createContext(it.context)
+ if (fragment == null)
+ loadFragment()
+ it.context.matrices.pushMatrix()
+ hudMeta.applyTransformations(it.context.matrices)
+ val pos = hudMeta.getEffectivePosition(JarvisIntegration.jarvis)
val renderContextTranslated =
- renderContext.translated(pos.x(), pos.y(), hudMeta.effectiveWidth, hudMeta.effectiveHeight)
- .scaled(hudMeta.scale)
- fragment!!.root.render(renderContextTranslated)
- it.context.matrices.popMatrix()
- }
- FinalizeResourceManagerEvent.subscribe("MoulConfigHud:finalizeResourceManager") {
- MC.resourceManager.registerReloader(object : SynchronousResourceReloader {
- override fun reload(manager: ResourceManager?) {
- fragment = null
- }
- })
- }
- }
+ renderContext.translated(pos.x(), pos.y(), hudMeta.effectiveWidth, hudMeta.effectiveHeight)
+ .scaled(hudMeta.scale)
+ fragment!!.root.render(renderContextTranslated)
+ it.context.matrices.popMatrix()
+ }
+ FinalizeResourceManagerEvent.subscribe("MoulConfigHud:finalizeResourceManager") {
+ MC.resourceManager.registerReloader(object : SynchronousResourceReloader {
+ override fun reload(manager: ResourceManager?) {
+ fragment = null
+ }
+ })
+ }
+ }
- fun loadFragment() {
- fragment = MoulConfigUtils.loadGui(name, this)
- }
+ fun loadFragment() {
+ fragment = MoulConfigUtils.loadGui(name, this)
+ }
}