aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2025-05-08 14:22:07 +0200
committerLinnea Gräf <nea@nea.moe>2025-05-09 22:03:39 +0200
commit44c24712b71141ca6e1f28265d4ccd649dc1c893 (patch)
treec4bf2f8fd14d4444aeb1e3f112d0c1fb796f8afb
parent7d392a86793ebe7a6d87ef50c28315b26eef1ffb (diff)
downloadFirmament-44c24712b71141ca6e1f28265d4ccd649dc1c893.tar.gz
Firmament-44c24712b71141ca6e1f28265d4ccd649dc1c893.tar.bz2
Firmament-44c24712b71141ca6e1f28265d4ccd649dc1c893.zip
refactor: Implement REI recipe layouter
-rw-r--r--src/compat/rei/java/moe/nea/firmament/compat/rei/REIRecipeLayouter.kt53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/compat/rei/java/moe/nea/firmament/compat/rei/REIRecipeLayouter.kt b/src/compat/rei/java/moe/nea/firmament/compat/rei/REIRecipeLayouter.kt
new file mode 100644
index 0000000..b199272
--- /dev/null
+++ b/src/compat/rei/java/moe/nea/firmament/compat/rei/REIRecipeLayouter.kt
@@ -0,0 +1,53 @@
+package moe.nea.firmament.compat.rei
+
+import io.github.notenoughupdates.moulconfig.gui.GuiComponent
+import me.shedaniel.math.Dimension
+import me.shedaniel.math.Point
+import me.shedaniel.math.Rectangle
+import me.shedaniel.rei.api.client.gui.widgets.Widget
+import me.shedaniel.rei.api.client.gui.widgets.Widgets
+import net.minecraft.text.Text
+import moe.nea.firmament.compat.rei.recipes.wrapWidget
+import moe.nea.firmament.repo.SBItemStack
+import moe.nea.firmament.repo.recipes.RecipeLayouter
+
+class REIRecipeLayouter : RecipeLayouter {
+ val container: MutableList<Widget> = mutableListOf()
+ override fun createItemSlot(
+ x: Int,
+ y: Int,
+ content: SBItemStack?,
+ slotKind: RecipeLayouter.SlotKind
+ ) {
+ val slot = Widgets.createSlot(Point(x, y))
+ if (content != null)
+ slot.entry(SBItemEntryDefinition.getEntry(content))
+ when (slotKind) {
+ RecipeLayouter.SlotKind.SMALL_INPUT -> slot.markInput()
+ RecipeLayouter.SlotKind.SMALL_OUTPUT -> slot.markOutput()
+ RecipeLayouter.SlotKind.BIG_OUTPUT -> {
+ slot.markOutput().disableBackground()
+ container.add(Widgets.createResultSlotBackground(Point(x, y)))
+ }
+ }
+ container.add(slot)
+ }
+
+ override fun createLabel(x: Int, y: Int, text: Text) {
+ container.add(Widgets.createLabel(Point(x, y), text))
+ }
+
+ override fun createArrow(x: Int, y: Int) {
+ container.add(Widgets.createArrow(Point(x, y)))
+ }
+
+ override fun createMoulConfig(
+ x: Int,
+ y: Int,
+ w: Int,
+ h: Int,
+ component: GuiComponent
+ ) {
+ container.add(wrapWidget(Rectangle(Point(x, y), Dimension(w, h)), component))
+ }
+}