Improved reactive state
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user