Icon of a GUI element now retrieved through a method

This commit is contained in:
bluefireoly
2020-10-18 22:51:25 +02:00
parent 85855b7081
commit b3abcadfab
6 changed files with 22 additions and 24 deletions

View File

@@ -116,10 +116,10 @@ class InventoryGUIShared<T : ForInventory>(
if (invSlot != null) {
val offsetSlot = invSlot.add(offsetHorizontally, offsetVertically).realSlotIn(dimensions)
if (offsetSlot != null)
bukkitInventory.setItem(offsetSlot, slot.inventoryGUIElementData.itemStack)
bukkitInventory.setItem(offsetSlot, slot.getItemStack(this))
}
} else {
bukkitInventory.setItem(it.key, slot.inventoryGUIElementData.itemStack)
bukkitInventory.setItem(it.key, slot.getItemStack(this))
}
}

View File

@@ -8,13 +8,9 @@ abstract class InventoryGUISlot<T : ForInventory> {
// ELEMENT
class InventoryGUIElementData(
val itemStack: ItemStack
)
abstract class InventoryGUIElement<T : ForInventory> : InventoryGUISlot<T>() {
abstract class InventoryGUIElement<T : ForInventory>(
val inventoryGUIElementData: InventoryGUIElementData
) : InventoryGUISlot<T>() {
abstract fun getItemStack(gui: InventoryGUI<*>): ItemStack
final override fun onClick(clickEvent: InventoryGUIClickEvent<T>) {
clickEvent.gui.data.generalOnClick?.invoke(clickEvent)

View File

@@ -1,14 +1,14 @@
package net.axay.kspigot.inventory.elements
import net.axay.kspigot.inventory.ForInventory
import net.axay.kspigot.inventory.InventoryGUIClickEvent
import net.axay.kspigot.inventory.InventoryGUIElement
import net.axay.kspigot.inventory.InventoryGUIElementData
import net.axay.kspigot.inventory.*
import org.bukkit.inventory.ItemStack
open class InventoryGUIButton<T : ForInventory>(
inventoryGUIElementData: InventoryGUIElementData,
private val icon: ItemStack,
val action: (InventoryGUIClickEvent<T>) -> Unit,
) : InventoryGUIElement<T>(inventoryGUIElementData) {
) : InventoryGUIElement<T>() {
override fun getItemStack(gui: InventoryGUI<*>) = icon
override fun onClickElement(clickEvent: InventoryGUIClickEvent<T>) {
clickEvent.bukkitEvent.isCancelled = true

View File

@@ -1,13 +1,14 @@
package net.axay.kspigot.inventory.elements
import net.axay.kspigot.inventory.*
import org.bukkit.inventory.ItemStack
class InventoryGUIButtonInventoryChange<T : ForInventory>(
inventoryGUIElementData: InventoryGUIElementData,
icon: ItemStack,
changeToGUICallback: () -> InventoryGUI<*>,
changeToPageInt: Int?,
onChange: ((InventoryGUIClickEvent<T>) -> Unit)?
) : InventoryGUIButton<T>(inventoryGUIElementData, {
) : InventoryGUIButton<T>(icon, {
val changeToGUI = changeToGUICallback.invoke()

View File

@@ -1,12 +1,13 @@
package net.axay.kspigot.inventory.elements
import net.axay.kspigot.inventory.*
import org.bukkit.inventory.ItemStack
class InventoryGUIButtonPageChange<T : ForInventory>(
inventoryGUIElementData: InventoryGUIElementData,
icon: ItemStack,
calculator: InventoryGUIPageChangeCalculator,
onChange: ((InventoryGUIClickEvent<T>) -> Unit)?
) : InventoryGUIButton<T>(inventoryGUIElementData, {
) : InventoryGUIButton<T>(icon, {
val currentPage = it.gui.currentPage
val newPage = it.gui.getPage(calculator.calculateNewPage(it.gui.currentPageInt, it.gui.data.pages.keys))

View File

@@ -1,13 +1,13 @@
package net.axay.kspigot.inventory.elements
import net.axay.kspigot.inventory.ForInventory
import net.axay.kspigot.inventory.InventoryGUIClickEvent
import net.axay.kspigot.inventory.InventoryGUIElement
import net.axay.kspigot.inventory.InventoryGUIElementData
import net.axay.kspigot.inventory.*
import org.bukkit.inventory.ItemStack
class InventoryGUIPlaceholder<T : ForInventory>(
inventoryGUIElementData: InventoryGUIElementData
) : InventoryGUIElement<T>(inventoryGUIElementData) {
private val icon: ItemStack
) : InventoryGUIElement<T>() {
override fun getItemStack(gui: InventoryGUI<*>) = icon
override fun onClickElement(clickEvent: InventoryGUIClickEvent<T>) {
clickEvent.bukkitEvent.isCancelled = true