1+ @file:Suppress(" INAPPLICABLE_JVM_NAME" )
12package xyz.xenondevs.invui.dsl
23
34import org.bukkit.inventory.ItemStack
@@ -6,11 +7,13 @@ import xyz.xenondevs.invui.gui.IngredientPreset
67import xyz.xenondevs.invui.gui.Marker
78import xyz.xenondevs.invui.gui.PagedGui
89import xyz.xenondevs.invui.gui.ScrollGui
10+ import xyz.xenondevs.invui.gui.Slot
911import xyz.xenondevs.invui.gui.SlotElement
1012import xyz.xenondevs.invui.gui.TabGui
1113import xyz.xenondevs.invui.inventory.Inventory
1214import xyz.xenondevs.invui.item.Item
1315import xyz.xenondevs.invui.item.ItemProvider
16+ import java.util.function.Supplier
1417
1518@ExperimentalDslApi
1619fun ingredients (run : IngredientsDsl .() -> Unit ): Unit =
@@ -26,6 +29,8 @@ sealed interface IngredientsDsl {
2629
2730 infix fun Char.by (item : Item )
2831
32+ infix fun Char.by (itemBuilder : Item .Builder <* >)
33+
2934 infix fun Char.by (itemProvider : ItemProvider )
3035
3136 infix fun Char.by (itemStack : ItemStack )
@@ -36,6 +41,30 @@ sealed interface IngredientsDsl {
3641
3742 infix fun Char.by (gui : Gui )
3843
44+ @OverloadResolutionByLambdaReturnType
45+ @JvmName(" byItemSupplier" )
46+ infix fun Char.by (supplier : () -> Item )
47+
48+ @OverloadResolutionByLambdaReturnType
49+ @JvmName(" byItemProviderSupplier" )
50+ infix fun Char.by (supplier : () -> ItemProvider )
51+
52+ @OverloadResolutionByLambdaReturnType
53+ @JvmName(" byItemStackSupplier" )
54+ infix fun Char.by (supplier : () -> ItemStack )
55+
56+ @OverloadResolutionByLambdaReturnType
57+ @JvmName(" bySlotElementSupplier" )
58+ infix fun Char.by (supplier : () -> SlotElement )
59+
60+ @OverloadResolutionByLambdaReturnType
61+ @JvmName(" bySlotElementSupplier" )
62+ infix fun Char.by (supplier : (List <Slot >) -> List <SlotElement >)
63+
64+ @OverloadResolutionByLambdaReturnType
65+ @JvmName(" byItemSupplier" )
66+ infix fun Char.by (supplier : (List <Slot >) -> List <Item >)
67+
3968 fun ingredients (run : IngredientsDsl .() -> Unit )
4069
4170 fun gui (vararg structure : String , gui : GuiDsl .() -> Unit ): Gui
@@ -75,6 +104,10 @@ internal open class IngredientsDslImpl(
75104 ingredients.addIngredient(this , item)
76105 }
77106
107+ override fun Char.by (itemBuilder : Item .Builder <* >) {
108+ ingredients.addIngredient(this , itemBuilder)
109+ }
110+
78111 override fun Char.by (itemProvider : ItemProvider ) {
79112 ingredients.addIngredient(this , itemProvider)
80113 }
@@ -95,6 +128,36 @@ internal open class IngredientsDslImpl(
95128 ingredients.addIngredient(this , gui)
96129 }
97130
131+ @JvmName(" byItemSupplier" )
132+ override fun Char.by (supplier : () -> Item ) {
133+ ingredients.addIngredient(this , supplier)
134+ }
135+
136+ @JvmName(" byItemProviderSupplier" )
137+ override fun Char.by (supplier : () -> ItemProvider ) {
138+ ingredients.addIngredient(this , Supplier { Item .simple(supplier()) })
139+ }
140+
141+ @JvmName(" byItemStackSupplier" )
142+ override fun Char.by (supplier : () -> ItemStack ) {
143+ ingredients.addIngredient(this , Supplier { Item .simple(supplier()) })
144+ }
145+
146+ @JvmName(" bySlotElementSupplier" )
147+ override fun Char.by (supplier : () -> SlotElement ) {
148+ ingredients.addIngredientElementSupplier(this , supplier)
149+ }
150+
151+ @JvmName(" bySlotElementSupplier" )
152+ override fun Char.by (supplier : (List <Slot >) -> List <SlotElement >) {
153+ ingredients.addIngredient(this , supplier)
154+ }
155+
156+ @JvmName(" byItemSupplier" )
157+ override fun Char.by (supplier : (List <Slot >) -> List <Item >) {
158+ ingredients.addIngredient(this ) { slots -> supplier(slots).map(SlotElement ::Item ) }
159+ }
160+
98161 override fun ingredients (run : IngredientsDsl .() -> Unit ): Unit =
99162 IngredientsDslImpl (presets + ingredients.build()).run ()
100163
0 commit comments