Improved reactive state

This commit is contained in:
Auxilor
2022-04-27 16:16:00 +01:00
parent 2f22e02ff1
commit 0593e631ea
4 changed files with 11 additions and 9 deletions

View File

@@ -6,6 +6,7 @@ import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.jetbrains.annotations.NotNull;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
/**
@@ -73,7 +74,7 @@ public interface MenuBuilder {
* @param action The action.
* @return The builder.
*/
MenuBuilder onRender(@NotNull Consumer<Player> action);
MenuBuilder onRender(@NotNull BiConsumer<Player, Menu> action);
/**
* Build the menu.

View File

@@ -95,8 +95,8 @@ fun MenuBuilder.modify(modifier: (MenuBuilder) -> Unit): MenuBuilder =
/**
* @see MenuBuilder.onRender
*/
fun MenuBuilder.onRender(action: (Player) -> Unit): MenuBuilder =
this.onRender { action(it) }
fun MenuBuilder.onRender(action: (Player, Menu) -> Unit): MenuBuilder =
this.onRender { a, b -> action(a, b) }
/**
* Kotlin builder for menus.

View File

@@ -19,7 +19,7 @@ class EcoMenu(
val slots: List<MutableList<EcoSlot>>,
private val title: String,
private val onClose: CloseHandler,
private val onRender: (Player) -> Unit
private val onRender: (Player, Menu) -> Unit
) : Menu {
override fun getSlot(row: Int, column: Int): Slot {
if (row < 1 || row > this.rows) {
@@ -105,5 +105,5 @@ class EcoMenu(
player.openInventory.topInventory.asRenderedInventory()?.render()
}
fun runOnRender(player: Player) = onRender(player)
fun runOnRender(player: Player) = onRender(player, this)
}

View File

@@ -13,14 +13,15 @@ import com.willfp.eco.util.StringUtils
import org.bukkit.Material
import org.bukkit.entity.Player
import org.bukkit.inventory.ItemStack
import java.util.function.BiConsumer
import java.util.function.Consumer
class EcoMenuBuilder(private val rows: Int) : MenuBuilder {
class EcoMenuBuilder(private val rows: Int ) : MenuBuilder {
private var title = "Menu"
private var maskSlots: List<MutableList<Slot?>>
private val slots: List<MutableList<Slot?>> = ListUtils.create2DList(rows, 9)
private var onClose = CloseHandler { _, _ -> }
private var onRender: (Player) -> Unit = {}
private var onRender: (Player, Menu) -> Unit = { _, _ -> }
override fun setTitle(title: String): MenuBuilder {
this.title = StringUtils.format(title)
@@ -53,8 +54,8 @@ class EcoMenuBuilder(private val rows: Int) : MenuBuilder {
return this
}
override fun onRender(action: Consumer<Player>): MenuBuilder {
onRender = { action.accept(it) }
override fun onRender(action: BiConsumer<Player, Menu>): MenuBuilder {
onRender = { a, b -> action.accept(a, b) }
return this
}