diff options
author | Linnea Gräf <nea@nea.moe> | 2025-05-08 14:22:07 +0200 |
---|---|---|
committer | Linnea Gräf <nea@nea.moe> | 2025-05-09 22:03:39 +0200 |
commit | 44c24712b71141ca6e1f28265d4ccd649dc1c893 (patch) | |
tree | c4bf2f8fd14d4444aeb1e3f112d0c1fb796f8afb | |
parent | 7d392a86793ebe7a6d87ef50c28315b26eef1ffb (diff) | |
download | Firmament-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.kt | 53 |
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)) + } +} |