aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/features/items/recipes/StandaloneRecipeRenderer.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/features/items/recipes/StandaloneRecipeRenderer.kt')
-rw-r--r--src/main/kotlin/features/items/recipes/StandaloneRecipeRenderer.kt74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/main/kotlin/features/items/recipes/StandaloneRecipeRenderer.kt b/src/main/kotlin/features/items/recipes/StandaloneRecipeRenderer.kt
new file mode 100644
index 0000000..df7c4de
--- /dev/null
+++ b/src/main/kotlin/features/items/recipes/StandaloneRecipeRenderer.kt
@@ -0,0 +1,74 @@
+package moe.nea.firmament.features.items.recipes
+
+import io.github.notenoughupdates.moulconfig.gui.GuiComponent
+import me.shedaniel.math.Point
+import me.shedaniel.math.Rectangle
+import net.minecraft.client.gui.components.events.AbstractContainerEventHandler
+import net.minecraft.client.gui.components.events.GuiEventListener
+import net.minecraft.network.chat.Component
+import net.minecraft.world.entity.LivingEntity
+import moe.nea.firmament.repo.SBItemStack
+import moe.nea.firmament.repo.recipes.RecipeLayouter
+
+class StandaloneRecipeRenderer : AbstractContainerEventHandler(), RecipeLayouter {
+
+ fun tick() {
+ widgets.forEach { it.tick() }
+ }
+
+ fun <T : RecipeWidget> addWidget(widget: T): T {
+ this.widgets.add(widget)
+ return widget
+ }
+
+ override fun createCyclingItemSlot(
+ x: Int,
+ y: Int,
+ content: List<SBItemStack>,
+ slotKind: RecipeLayouter.SlotKind
+ ): RecipeLayouter.CyclingItemSlot {
+ return addWidget(ItemSlotWidget(Point(x, y), content, slotKind))
+ }
+
+ override fun createTooltip(
+ rectangle: Rectangle,
+ label: List<Component>
+ ) {
+ addWidget(TooltipWidget(rectangle, label))
+ }
+
+ override fun createLabel(
+ x: Int,
+ y: Int,
+ text: Component
+ ): RecipeLayouter.Updater<Component> {
+ return addWidget(ComponentWidget(Point(x, y), text))
+ }
+
+ override fun createArrow(x: Int, y: Int): Rectangle {
+ return addWidget(ArrowWidget(Point(x, y))).rect
+ }
+
+ override fun createMoulConfig(
+ x: Int,
+ y: Int,
+ w: Int,
+ h: Int,
+ component: GuiComponent
+ ) {
+ TODO("Not yet implemented")
+ }
+
+ override fun createFire(point: Point, animationTicks: Int) {
+ addWidget(FireWidget(point, animationTicks))
+ }
+
+ override fun createEntity(rectangle: Rectangle, entity: LivingEntity) {
+ addWidget(EntityWidget(rectangle, entity))
+ }
+
+ val widgets: MutableList<RecipeWidget> = mutableListOf()
+ override fun children(): List<GuiEventListener> {
+ return widgets
+ }
+}