Replaced Menu data with Menu state

This commit is contained in:
Auxilor
2022-04-27 16:07:38 +01:00
parent 11c49a543f
commit fb240bfd0a
3 changed files with 60 additions and 12 deletions

View File

@@ -4,6 +4,7 @@ import com.willfp.eco.core.gui.menu.CloseHandler
import com.willfp.eco.core.gui.menu.Menu
import com.willfp.eco.core.gui.slot.Slot
import com.willfp.eco.internal.gui.slot.EcoSlot
import com.willfp.eco.util.NamespacedKeyUtils
import org.bukkit.Bukkit
import org.bukkit.NamespacedKey
import org.bukkit.entity.Player
@@ -73,20 +74,30 @@ class EcoMenu(
key: NamespacedKey,
type: PersistentDataType<T, Z>,
value: Z
) {
val inventory = player.openInventory.topInventory.asRenderedInventory() ?: return
inventory.data[key] = value
inventory.render()
}
) = addState(player, key.toString(), value)
override fun <T : Any, Z : Any> readData(player: Player, key: NamespacedKey, type: PersistentDataType<T, Z>): T? {
val inventory = player.openInventory.topInventory.asRenderedInventory() ?: return null
return inventory.data[key] as? T?
}
override fun <T : Any, Z : Any> readData(player: Player, key: NamespacedKey, type: PersistentDataType<T, Z>): T? =
getState(player, key.toString())
override fun getKeys(player: Player): Set<NamespacedKey> {
val inventory = player.openInventory.topInventory.asRenderedInventory() ?: return emptySet()
return inventory.data.keys
return inventory.state.keys.mapNotNull { NamespacedKeyUtils.fromStringOrNull(it) }.toSet()
}
override fun addState(player: Player, key: String, value: Any?) {
val inventory = player.openInventory.topInventory.asRenderedInventory() ?: return
inventory.state[key] = value
inventory.render()
}
override fun getState(player: Player): Map<String, Any?> {
val inventory = player.openInventory.topInventory.asRenderedInventory() ?: return emptyMap()
return inventory.state.toMap()
}
override fun <T : Any> getState(player: Player, key: String): T? {
val inventory = player.openInventory.topInventory.asRenderedInventory() ?: return null
return inventory.state[key] as? T?
}
override fun refresh(player: Player) {

View File

@@ -1,7 +1,6 @@
package com.willfp.eco.internal.gui.menu
import com.willfp.eco.util.MenuUtils
import org.bukkit.NamespacedKey
import org.bukkit.entity.Player
import org.bukkit.inventory.Inventory
import org.bukkit.inventory.ItemStack
@@ -12,7 +11,7 @@ class MenuRenderedInventory(
val player: Player
) {
val captiveItems = mutableListOf<ItemStack>()
val data = mutableMapOf<NamespacedKey, Any>()
val state = mutableMapOf<String, Any?>()
fun render() {
generateCaptive()