From 7ba75f3250181d23a3f7df0fba1b5de4a6a8887e Mon Sep 17 00:00:00 2001 From: bluefireoly Date: Sat, 24 Oct 2020 23:25:32 +0200 Subject: [PATCH] Removed "Inventory" from the GUI API names --- readme.md | 6 +- .../{inventory/InventoryGUI.kt => gui/GUI.kt} | 56 +++++----- .../GUIBuilder.kt} | 104 +++++++++--------- .../net/axay/kspigot/gui/GUIClickEvent.kt | 8 ++ .../net/axay/kspigot/gui/GUIElements.kt | 25 +++++ .../GUIExtensions.kt} | 4 +- .../GUIHolder.kt} | 16 +-- .../kotlin/net/axay/kspigot/gui/GUIPage.kt | 8 ++ .../GUIPageChange.kt} | 30 ++--- .../InventoryGUISlots.kt => gui/GUISlots.kt} | 18 +-- .../InventoryType.kt => gui/GUIType.kt} | 20 ++-- .../axay/kspigot/gui/elements/GUIButton.kt | 18 +++ .../elements/GUIButtonInventoryChange.kt} | 12 +- .../elements/GUIButtonPageChange.kt} | 12 +- .../axay/kspigot/gui/elements/GUIFreeSlot.kt | 11 ++ .../kspigot/gui/elements/GUIPlaceholder.kt | 16 +++ .../elements/GUISpaceCompound.kt} | 56 +++++----- .../elements/GUISpaceCompoundScrollButton.kt} | 10 +- .../inventory/InventoryGUIClickEvent.kt | 8 -- .../kspigot/inventory/InventoryGUIElements.kt | 25 ----- .../kspigot/inventory/InventoryGUIPage.kt | 8 -- .../inventory/elements/InventoryGUIButton.kt | 18 --- .../elements/InventoryGUIFreeSlot.kt | 11 -- .../elements/InventoryGUIPlaceholder.kt | 16 --- .../kotlin/net/axay/kspigot/main/KSpigot.kt | 8 +- 25 files changed, 262 insertions(+), 262 deletions(-) rename src/main/kotlin/net/axay/kspigot/{inventory/InventoryGUI.kt => gui/GUI.kt} (72%) rename src/main/kotlin/net/axay/kspigot/{inventory/InventoryGUIBuilder.kt => gui/GUIBuilder.kt} (61%) create mode 100644 src/main/kotlin/net/axay/kspigot/gui/GUIClickEvent.kt create mode 100644 src/main/kotlin/net/axay/kspigot/gui/GUIElements.kt rename src/main/kotlin/net/axay/kspigot/{inventory/InventoryGUIExtensions.kt => gui/GUIExtensions.kt} (63%) rename src/main/kotlin/net/axay/kspigot/{inventory/InventoryGUIHolder.kt => gui/GUIHolder.kt} (67%) create mode 100644 src/main/kotlin/net/axay/kspigot/gui/GUIPage.kt rename src/main/kotlin/net/axay/kspigot/{inventory/InventoryGUIPageChange.kt => gui/GUIPageChange.kt} (80%) rename src/main/kotlin/net/axay/kspigot/{inventory/InventoryGUISlots.kt => gui/GUISlots.kt} (95%) rename src/main/kotlin/net/axay/kspigot/{inventory/InventoryType.kt => gui/GUIType.kt} (67%) create mode 100644 src/main/kotlin/net/axay/kspigot/gui/elements/GUIButton.kt rename src/main/kotlin/net/axay/kspigot/{inventory/elements/InventoryGUIButtonInventoryChange.kt => gui/elements/GUIButtonInventoryChange.kt} (64%) rename src/main/kotlin/net/axay/kspigot/{inventory/elements/InventoryGUIButtonPageChange.kt => gui/elements/GUIButtonPageChange.kt} (62%) create mode 100644 src/main/kotlin/net/axay/kspigot/gui/elements/GUIFreeSlot.kt create mode 100644 src/main/kotlin/net/axay/kspigot/gui/elements/GUIPlaceholder.kt rename src/main/kotlin/net/axay/kspigot/{inventory/elements/InventoryGUISpaceCompound.kt => gui/elements/GUISpaceCompound.kt} (70%) rename src/main/kotlin/net/axay/kspigot/{inventory/elements/InventoryGUISpaceCompoundScrollButton.kt => gui/elements/GUISpaceCompoundScrollButton.kt} (70%) delete mode 100644 src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIClickEvent.kt delete mode 100644 src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIElements.kt delete mode 100644 src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIPage.kt delete mode 100644 src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButton.kt delete mode 100644 src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIFreeSlot.kt delete mode 100644 src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIPlaceholder.kt diff --git a/readme.md b/readme.md index ae67b162..cb3944bc 100644 --- a/readme.md +++ b/readme.md @@ -218,7 +218,7 @@ firstAsync { Inventories are great for viewing GUI information. However, they are not designed for developing GUIs. The KSpigot Inventory GUI API provides an easy way to build inventory GUIs the way you would expect such an API to be. In addition, it offers full type safety for slots. ```kotlin -val gui = kSpigotGUI(InventoryGUIType.FIVE_BY_NINE) { +val gui = kSpigotGUI(GUIType.FIVE_BY_NINE) { title = "Example Inventory" @@ -231,8 +231,8 @@ val gui = kSpigotGUI(InventoryGUIType.FIVE_BY_NINE) { page(1) { // define fancy transitions - transitionFrom = InventoryGUIPageChangeEffect.SLIDE_HORIZONTALLY - transitionTo = InventoryGUIPageChangeEffect.SLIDE_HORIZONTALLY + transitionFrom = PageChangeEffect.SLIDE_HORIZONTALLY + transitionTo = PageChangeEffect.SLIDE_HORIZONTALLY // get special slot compounds easily with constants like Slots.Border placeholder(Slots.Border, ItemStack(Material.GLASS_PANE)) diff --git a/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUI.kt b/src/main/kotlin/net/axay/kspigot/gui/GUI.kt similarity index 72% rename from src/main/kotlin/net/axay/kspigot/inventory/InventoryGUI.kt rename to src/main/kotlin/net/axay/kspigot/gui/GUI.kt index f8a4e6b3..5a62e381 100644 --- a/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUI.kt +++ b/src/main/kotlin/net/axay/kspigot/gui/GUI.kt @@ -1,23 +1,23 @@ @file:Suppress("MemberVisibilityCanBePrivate") -package net.axay.kspigot.inventory +package net.axay.kspigot.gui import org.bukkit.inventory.Inventory import org.bukkit.inventory.ItemStack private const val DEFAULT_PAGE = 1 -class InventoryGUIData( - val inventoryType: InventoryType, - val title: String?, - internal val pages: Map>, - val transitionTo: InventoryChangeEffect?, - val transitionFrom: InventoryChangeEffect?, - internal val generalOnClick: ((InventoryGUIClickEvent) -> Unit)? +class GUIData( + val guiType: GUIType, + val title: String?, + internal val pages: Map>, + val transitionTo: InventoryChangeEffect?, + val transitionFrom: InventoryChangeEffect?, + internal val generalOnClick: ((GUIClickEvent) -> Unit)? ) -abstract class InventoryGUI( - val data: InventoryGUIData +abstract class GUI( + val data: GUIData ) { var currentPageInt: Int = DEFAULT_PAGE; protected set @@ -29,7 +29,7 @@ abstract class InventoryGUI( internal var isInMove: Boolean = false - internal val currentElements = HashSet>() + internal val currentElements = HashSet>() internal abstract fun loadPageUnsafe( page: Int, @@ -38,13 +38,13 @@ abstract class InventoryGUI( ) internal abstract fun loadPageUnsafe( - page: InventoryGUIPage<*>, + page: GUIPage<*>, offsetHorizontally: Int = 0, offsetVertically: Int = 0 ) internal abstract fun loadContent( - content: Map>, + content: Map>, offsetHorizontally: Int = 0, offsetVertically: Int = 0 ) @@ -55,23 +55,23 @@ abstract class InventoryGUI( abstract fun isThisInv(inventory: Inventory): Boolean /** - * Registers this InventoryGUI. + * Registers this GUI. * (KSpigot will listen for actions in the inventory.) */ @Suppress("UNCHECKED_CAST") - fun register() = InventoryGUIHolder.register(this as InventoryGUI) + fun register() = GUIHolder.register(this as GUI) /** * Stops KSpigot from listening to actions in this - * InventoryGUI anymore. + * GUI anymore. */ @Suppress("UNCHECKED_CAST") - fun unregister() = InventoryGUIHolder.unregister(this as InventoryGUI) + fun unregister() = GUIHolder.unregister(this as GUI) /** * Loads the specified page in order to display it in the GUI. */ - fun loadPage(page: InventoryGUIPage) = loadPageUnsafe(page) + fun loadPage(page: GUIPage) = loadPageUnsafe(page) /** * Temporarily sets the given item at the given slots. @@ -95,11 +95,11 @@ abstract class InventoryGUI( // Inventory GUI implementations -class InventoryGUIShared( - inventoryGUIData: InventoryGUIData -) : InventoryGUI(inventoryGUIData) { +class GUIShared( + GUIData: GUIData +) : GUI(GUIData) { - override val bukkitInventory = data.inventoryType.createBukkitInv(null, data.title) + override val bukkitInventory = data.guiType.createBukkitInv(null, data.title) init { loadPageUnsafe(DEFAULT_PAGE) @@ -111,7 +111,7 @@ class InventoryGUIShared( data.pages[page]?.let { loadPageUnsafe(it, offsetHorizontally, offsetVertically) } } - override fun loadPageUnsafe(page: InventoryGUIPage<*>, offsetHorizontally: Int, offsetVertically: Int) { + override fun loadPageUnsafe(page: GUIPage<*>, offsetHorizontally: Int, offsetVertically: Int) { val ifOffset = offsetHorizontally != 0 || offsetVertically != 0 @@ -122,7 +122,7 @@ class InventoryGUIShared( currentElements.clear() // register this inv for all new elements - HashSet(page.slots.values).forEach { if (it is InventoryGUIElement) { + HashSet(page.slots.values).forEach { if (it is GUIElement) { currentElements += it it.startUsing(this) } } @@ -136,14 +136,14 @@ class InventoryGUIShared( } override fun loadContent( - content: Map>, + content: Map>, offsetHorizontally: Int, offsetVertically: Int ) { val ifOffset = offsetHorizontally != 0 || offsetVertically != 0 - val dimensions = data.inventoryType.dimensions + val dimensions = data.guiType.dimensions // clear the space which will be redefined if (ifOffset) { @@ -157,7 +157,7 @@ class InventoryGUIShared( content.forEach { val slot = it.value - if (slot is InventoryGUIElement) { + if (slot is GUIElement) { if (ifOffset) { val invSlot = InventorySlot.fromRealSlot(it.key, dimensions) @@ -174,7 +174,7 @@ class InventoryGUIShared( } override operator fun set(slot: InventorySlotCompound, value: ItemStack) { - slot.realSlotsWithInvType(data.inventoryType).forEach { + slot.realSlotsWithInvType(data.guiType).forEach { bukkitInventory.setItem(it, value) } } diff --git a/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIBuilder.kt b/src/main/kotlin/net/axay/kspigot/gui/GUIBuilder.kt similarity index 61% rename from src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIBuilder.kt rename to src/main/kotlin/net/axay/kspigot/gui/GUIBuilder.kt index a49b7a13..38eb4022 100644 --- a/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIBuilder.kt +++ b/src/main/kotlin/net/axay/kspigot/gui/GUIBuilder.kt @@ -1,20 +1,20 @@ @file:Suppress("MemberVisibilityCanBePrivate", "unused") -package net.axay.kspigot.inventory +package net.axay.kspigot.gui -import net.axay.kspigot.inventory.elements.* +import net.axay.kspigot.gui.elements.* import org.bukkit.inventory.ItemStack import kotlin.math.absoluteValue fun kSpigotGUI( - type: InventoryType, - shared: Boolean = true, - builder: InventoryGUIBuilder.() -> Unit, -) = InventoryGUIBuilder(type, shared).apply(builder).build() + type: GUIType, + shared: Boolean = true, + builder: GUIBuilder.() -> Unit, +) = GUIBuilder(type, shared).apply(builder).build() -class InventoryGUIBuilder( - val type: InventoryType, - val shared: Boolean +class GUIBuilder( + val type: GUIType, + val shared: Boolean ) { var title: String = "" @@ -22,45 +22,45 @@ class InventoryGUIBuilder( var transitionTo: InventoryChangeEffect? = null var transitionFrom: InventoryChangeEffect? = null - private val guiSlots = HashMap>() + private val guiSlots = HashMap>() - private var onClickElement: ((InventoryGUIClickEvent) -> Unit)? = null + private var onClickElement: ((GUIClickEvent) -> Unit)? = null /** * Opens the builder for a new page and adds * the new page to the GUI. * @param page The index of the page. */ - fun page(page: Int, builder: InventoryGUIPageBuilder.() -> Unit) { - guiSlots[page] = InventoryGUIPageBuilder(type, page).apply(builder).build() + fun page(page: Int, builder: GUIPageBuilder.() -> Unit) { + guiSlots[page] = GUIPageBuilder(type, page).apply(builder).build() } - fun onClickElement(onClick: (InventoryGUIClickEvent) -> Unit) { + fun onClickElement(onClick: (GUIClickEvent) -> Unit) { onClickElement = onClick } - internal fun build(): InventoryGUI { - val guiData = InventoryGUIData(type, title, guiSlots, transitionTo, transitionFrom, onClickElement) + internal fun build(): GUI { + val guiData = GUIData(type, title, guiSlots, transitionTo, transitionFrom, onClickElement) val gui = - if (shared) InventoryGUIShared(guiData) else TODO("Currently, there is no non-shared GUI implementation available.") + if (shared) GUIShared(guiData) else TODO("Currently, there is no non-shared GUI implementation available.") return gui.apply { register() } } } -class InventoryGUIPageBuilder( - private val type: InventoryType, - val page: Int +class GUIPageBuilder( + private val type: GUIType, + val page: Int ) { - private val guiSlots = HashMap>() + private val guiSlots = HashMap>() var transitionTo: PageChangeEffect? = null var transitionFrom: PageChangeEffect? = null - internal fun build() = InventoryGUIPage(page, guiSlots, transitionTo, transitionFrom) + internal fun build() = GUIPage(page, guiSlots, transitionTo, transitionFrom) - private fun defineSlots(slots: InventorySlotCompound, element: InventoryGUISlot) = + private fun defineSlots(slots: InventorySlotCompound, element: GUISlot) = slots.withInvType(type).forEach { curSlot -> curSlot.realSlotIn(type.dimensions)?.let { guiSlots[it] = element } } @@ -70,22 +70,22 @@ class InventoryGUIPageBuilder( * actions. If clicked, the specified [onClick] * function is invoked. */ - fun button(slots: InventorySlotCompound, itemStack: ItemStack, onClick: (InventoryGUIClickEvent) -> Unit) = - defineSlots(slots, InventoryGUIButton(itemStack, onClick)) + fun button(slots: InventorySlotCompound, itemStack: ItemStack, onClick: (GUIClickEvent) -> Unit) = + defineSlots(slots, GUIButton(itemStack, onClick)) /** * An item protected from any player actions. * This is not a button. */ fun placeholder(slots: InventorySlotCompound, itemStack: ItemStack) = - defineSlots(slots, InventoryGUIPlaceholder(itemStack)) + defineSlots(slots, GUIPlaceholder(itemStack)) /** * A free slot does not block any player actions. * The player can put items in this slot or take * items out of it. */ - fun freeSlot(slots: InventorySlotCompound) = defineSlots(slots, InventoryGUIFreeSlot()) + fun freeSlot(slots: InventorySlotCompound) = defineSlots(slots, GUIFreeSlot()) /** * This is a button which loads the specified @@ -95,11 +95,11 @@ class InventoryGUIPageBuilder( slots: InventorySlotCompound, icon: ItemStack, toPage: Int, - onChange: ((InventoryGUIClickEvent) -> Unit)? = null + onChange: ((GUIClickEvent) -> Unit)? = null ) = defineSlots( - slots, InventoryGUIButtonPageChange( + slots, GUIButtonPageChange( icon, - InventoryGUIPageChangeCalculator.InventoryGUIConsistentPageCalculator(toPage), + GUIPageChangeCalculator.GUIConsistentPageCalculator(toPage), onChange ) ) @@ -112,11 +112,11 @@ class InventoryGUIPageBuilder( fun previousPage( slots: InventorySlotCompound, icon: ItemStack, - onChange: ((InventoryGUIClickEvent) -> Unit)? = null + onChange: ((GUIClickEvent) -> Unit)? = null ) = defineSlots( - slots, InventoryGUIButtonPageChange( + slots, GUIButtonPageChange( icon, - InventoryGUIPageChangeCalculator.InventoryGUIPreviousPageCalculator, + GUIPageChangeCalculator.GUIPreviousPageCalculator, onChange ) ) @@ -129,27 +129,27 @@ class InventoryGUIPageBuilder( fun nextPage( slots: InventorySlotCompound, icon: ItemStack, - onChange: ((InventoryGUIClickEvent) -> Unit)? = null + onChange: ((GUIClickEvent) -> Unit)? = null ) = defineSlots( - slots, InventoryGUIButtonPageChange( + slots, GUIButtonPageChange( icon, - InventoryGUIPageChangeCalculator.InventoryGUINextPageCalculator, + GUIPageChangeCalculator.GUINextPageCalculator, onChange ) ) /** * By pressing this button, the player switches to another - * InventoryGUI. The transition effect is applied. + * GUI. The transition effect is applied. */ fun changeGUI( slots: InventorySlotCompound, icon: ItemStack, - newGUI: () -> InventoryGUI<*>, + newGUI: () -> GUI<*>, newPage: Int? = null, - onChange: ((InventoryGUIClickEvent) -> Unit)? = null + onChange: ((GUIClickEvent) -> Unit)? = null ) = defineSlots( - slots, InventoryGUIButtonInventoryChange( + slots, GUIButtonInventoryChange( icon, newGUI, newPage, @@ -163,8 +163,8 @@ class InventoryGUIPageBuilder( */ fun createCompound( iconGenerator: (E) -> ItemStack, - onClick: (clickEvent: InventoryGUIClickEvent, element: E) -> Unit - ) = InventoryGUISpaceCompound(type, iconGenerator, onClick) + onClick: (clickEvent: GUIClickEvent, element: E) -> Unit + ) = GUISpaceCompound(type, iconGenerator, onClick) /** * Creates a new compound, holding data which can be displayed @@ -176,10 +176,10 @@ class InventoryGUIPageBuilder( fromSlot: SingleInventorySlot, toSlot: SingleInventorySlot, iconGenerator: (E) -> ItemStack, - onClick: (clickEvent: InventoryGUIClickEvent, element: E) -> Unit - ): InventoryGUIRectSpaceCompound { + onClick: (clickEvent: GUIClickEvent, element: E) -> Unit + ): GUIRectSpaceCompound { val rectSlotCompound = fromSlot rectTo toSlot - return InventoryGUIRectSpaceCompound( + return GUIRectSpaceCompound( type, iconGenerator, onClick, @@ -188,7 +188,7 @@ class InventoryGUIPageBuilder( addSlots(rectSlotCompound) defineSlots( rectSlotCompound, - InventoryGUISpaceCompoundElement(this) + GUISpaceCompoundElement(this) ) } } @@ -199,12 +199,12 @@ class InventoryGUIPageBuilder( */ fun compoundSpace( slots: InventorySlotCompound, - compound: AbstractInventoryGUISpaceCompound + compound: AbstractGUISpaceCompound ) { compound.addSlots(slots) defineSlots( slots, - InventoryGUISpaceCompoundElement(compound) + GUISpaceCompoundElement(compound) ) } @@ -215,13 +215,13 @@ class InventoryGUIPageBuilder( fun compoundScroll( slots: InventorySlotCompound, icon: ItemStack, - compound: InventoryGUISpaceCompound, + compound: GUISpaceCompound, scrollDistance: Int = 1, scrollTimes: Int = 1, reverse: Boolean = false ) = defineSlots( slots, - InventoryGUISpaceCompoundScrollButton( + GUISpaceCompoundScrollButton( icon, compound, scrollDistance.absoluteValue, @@ -237,12 +237,12 @@ class InventoryGUIPageBuilder( fun compoundScroll( slots: InventorySlotCompound, icon: ItemStack, - compound: InventoryGUIRectSpaceCompound, + compound: GUIRectSpaceCompound, scrollTimes: Int = 1, reverse: Boolean = false ) = defineSlots( slots, - InventoryGUISpaceCompoundScrollButton( + GUISpaceCompoundScrollButton( icon, compound, compound.compoundWidth, diff --git a/src/main/kotlin/net/axay/kspigot/gui/GUIClickEvent.kt b/src/main/kotlin/net/axay/kspigot/gui/GUIClickEvent.kt new file mode 100644 index 00000000..6437085b --- /dev/null +++ b/src/main/kotlin/net/axay/kspigot/gui/GUIClickEvent.kt @@ -0,0 +1,8 @@ +package net.axay.kspigot.gui + +import org.bukkit.event.inventory.InventoryClickEvent + +class GUIClickEvent( + val bukkitEvent: InventoryClickEvent, + val gui: GUI +) \ No newline at end of file diff --git a/src/main/kotlin/net/axay/kspigot/gui/GUIElements.kt b/src/main/kotlin/net/axay/kspigot/gui/GUIElements.kt new file mode 100644 index 00000000..24d1a063 --- /dev/null +++ b/src/main/kotlin/net/axay/kspigot/gui/GUIElements.kt @@ -0,0 +1,25 @@ +package net.axay.kspigot.gui + +import org.bukkit.inventory.ItemStack + +abstract class GUISlot { + abstract fun onClick(clickEvent: GUIClickEvent) +} + +// ELEMENT + +abstract class GUIElement : GUISlot() { + + abstract fun getItemStack(slot: Int): ItemStack + + final override fun onClick(clickEvent: GUIClickEvent) { + clickEvent.gui.data.generalOnClick?.invoke(clickEvent) + onClickElement(clickEvent) + } + + protected abstract fun onClickElement(clickEvent: GUIClickEvent) + + internal open fun startUsing(gui: GUI<*>) { } + internal open fun stopUsing(gui: GUI<*>) { } + +} \ No newline at end of file diff --git a/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIExtensions.kt b/src/main/kotlin/net/axay/kspigot/gui/GUIExtensions.kt similarity index 63% rename from src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIExtensions.kt rename to src/main/kotlin/net/axay/kspigot/gui/GUIExtensions.kt index dadceb6d..d4d8cc3f 100644 --- a/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIExtensions.kt +++ b/src/main/kotlin/net/axay/kspigot/gui/GUIExtensions.kt @@ -1,9 +1,9 @@ -package net.axay.kspigot.inventory +package net.axay.kspigot.gui import org.bukkit.entity.HumanEntity import org.bukkit.inventory.InventoryView -fun HumanEntity.openGUI(gui: InventoryGUI<*>, page: Int? = null): InventoryView? { +fun HumanEntity.openGUI(gui: GUI<*>, page: Int? = null): InventoryView? { closeInventory() diff --git a/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIHolder.kt b/src/main/kotlin/net/axay/kspigot/gui/GUIHolder.kt similarity index 67% rename from src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIHolder.kt rename to src/main/kotlin/net/axay/kspigot/gui/GUIHolder.kt index e33f735f..87d9d760 100644 --- a/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIHolder.kt +++ b/src/main/kotlin/net/axay/kspigot/gui/GUIHolder.kt @@ -1,19 +1,19 @@ -package net.axay.kspigot.inventory +package net.axay.kspigot.gui import net.axay.kspigot.event.listen import org.bukkit.event.inventory.InventoryAction import org.bukkit.event.inventory.InventoryClickEvent -object InventoryGUIHolder : AutoCloseable { +object GUIHolder : AutoCloseable { - private val registered = HashSet>() + private val registered = HashSet>() - fun register(inventoryGUI: InventoryGUI) { - registered.add(inventoryGUI) + fun register(GUI: GUI) { + registered.add(GUI) } - fun unregister(inventoryGUI: InventoryGUI) { - registered.remove(inventoryGUI) + fun unregister(GUI: GUI) { + registered.remove(GUI) } init { @@ -30,7 +30,7 @@ object InventoryGUIHolder : AutoCloseable { } if (it.action.isGUIClick) - inv.currentPage.slots[it.slot]?.onClick(InventoryGUIClickEvent(it, inv)) ?: kotlin.run { + inv.currentPage.slots[it.slot]?.onClick(GUIClickEvent(it, inv)) ?: kotlin.run { it.isCancelled = true } else diff --git a/src/main/kotlin/net/axay/kspigot/gui/GUIPage.kt b/src/main/kotlin/net/axay/kspigot/gui/GUIPage.kt new file mode 100644 index 00000000..3a67449f --- /dev/null +++ b/src/main/kotlin/net/axay/kspigot/gui/GUIPage.kt @@ -0,0 +1,8 @@ +package net.axay.kspigot.gui + +class GUIPage( + val number: Int, + internal val slots: Map>, + val transitionTo: PageChangeEffect?, + val transitionFrom: PageChangeEffect? +) \ No newline at end of file diff --git a/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIPageChange.kt b/src/main/kotlin/net/axay/kspigot/gui/GUIPageChange.kt similarity index 80% rename from src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIPageChange.kt rename to src/main/kotlin/net/axay/kspigot/gui/GUIPageChange.kt index e18597c6..8eb82ab6 100644 --- a/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIPageChange.kt +++ b/src/main/kotlin/net/axay/kspigot/gui/GUIPageChange.kt @@ -1,22 +1,22 @@ -package net.axay.kspigot.inventory +package net.axay.kspigot.gui import net.axay.kspigot.runnables.task -abstract class InventoryGUIPageChangeCalculator { +abstract class GUIPageChangeCalculator { abstract fun calculateNewPage(currentPage: Int, pages: Collection): Int? - object InventoryGUIPreviousPageCalculator : InventoryGUIPageChangeCalculator() { + object GUIPreviousPageCalculator : GUIPageChangeCalculator() { override fun calculateNewPage(currentPage: Int, pages: Collection) = pages.sortedDescending().find { it < currentPage } } - object InventoryGUINextPageCalculator : InventoryGUIPageChangeCalculator() { + object GUINextPageCalculator : GUIPageChangeCalculator() { override fun calculateNewPage(currentPage: Int, pages: Collection) = pages.sorted().find { it > currentPage } } - class InventoryGUIConsistentPageCalculator(private val toPage: Int) : InventoryGUIPageChangeCalculator() { + class GUIConsistentPageCalculator(private val toPage: Int) : GUIPageChangeCalculator() { override fun calculateNewPage(currentPage: Int, pages: Collection) = toPage } @@ -36,10 +36,10 @@ enum class InventoryChangeEffect( INSTANT(PageChangeEffect.INSTANT) } -internal fun InventoryGUI<*>.changePage( +internal fun GUI<*>.changePage( effect: PageChangeEffect, - fromPage: InventoryGUIPage<*>, - toPage: InventoryGUIPage<*> + fromPage: GUIPage<*>, + toPage: GUIPage<*> ) { val fromPageInt = fromPage.number @@ -51,7 +51,7 @@ internal fun InventoryGUI<*>.changePage( PageChangeEffect.SLIDE_HORIZONTALLY -> { - val width = data.inventoryType.dimensions.width + val width = data.guiType.dimensions.width changePageEffect(fromPageInt, toPageInt, width) { currentOffset, ifInverted -> if (ifInverted) { @@ -67,7 +67,7 @@ internal fun InventoryGUI<*>.changePage( PageChangeEffect.SLIDE_VERTICALLY -> { - val height = data.inventoryType.dimensions.height + val height = data.guiType.dimensions.height changePageEffect(fromPageInt, toPageInt, height) { currentOffset, ifInverted -> if (ifInverted) { @@ -83,7 +83,7 @@ internal fun InventoryGUI<*>.changePage( PageChangeEffect.SWIPE_HORIZONTALLY -> { - val width = data.inventoryType.dimensions.width + val width = data.guiType.dimensions.width changePageEffect(fromPageInt, toPageInt, width) { currentOffset, ifInverted -> if (ifInverted) { @@ -97,7 +97,7 @@ internal fun InventoryGUI<*>.changePage( PageChangeEffect.SWIPE_VERTICALLY -> { - val height = data.inventoryType.dimensions.height + val height = data.guiType.dimensions.height changePageEffect(fromPageInt, toPageInt, height) { currentOffset, ifInverted -> if (ifInverted) { @@ -112,10 +112,10 @@ internal fun InventoryGUI<*>.changePage( } } -internal fun InventoryGUI<*>.changeGUI( +internal fun GUI<*>.changeGUI( effect: InventoryChangeEffect, - fromPage: InventoryGUIPage<*>, - toPage: InventoryGUIPage<*> + fromPage: GUIPage<*>, + toPage: GUIPage<*> ) = changePage(effect.effect, fromPage, toPage) private inline fun changePageEffect( diff --git a/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUISlots.kt b/src/main/kotlin/net/axay/kspigot/gui/GUISlots.kt similarity index 95% rename from src/main/kotlin/net/axay/kspigot/inventory/InventoryGUISlots.kt rename to src/main/kotlin/net/axay/kspigot/gui/GUISlots.kt index e82bc7b9..c00d7166 100644 --- a/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUISlots.kt +++ b/src/main/kotlin/net/axay/kspigot/gui/GUISlots.kt @@ -1,6 +1,6 @@ @file:Suppress("unused", "MemberVisibilityCanBePrivate") -package net.axay.kspigot.inventory +package net.axay.kspigot.gui import net.axay.kspigot.languageextensions.kotlinextensions.MinMaxPair @@ -70,9 +70,9 @@ data class InventorySlot(val row: Int, val slotInRow: Int) : Comparable { - fun withInvType(invType: InventoryType): Collection + fun withInvType(invType: GUIType): Collection - fun realSlotsWithInvType(invType: InventoryType) = + fun realSlotsWithInvType(invType: GUIType) = withInvType(invType).mapNotNull { it.realSlotIn(invType.dimensions) } } @@ -85,7 +85,7 @@ open class SingleInventorySlot internal constructor( private val slotAsList = listOf(inventorySlot) - override fun withInvType(invType: InventoryType) = slotAsList + override fun withInvType(invType: GUIType) = slotAsList } @@ -112,7 +112,7 @@ class InventorySlotRange internal constructor( endInclusive = minMaxPair.max } - override fun withInvType(invType: InventoryType) = LinkedHashSet().apply { + override fun withInvType(invType: GUIType) = LinkedHashSet().apply { when (type) { InventorySlotRangeType.RECTANGLE -> { @@ -166,7 +166,7 @@ class InventoryRowSlots internal constructor( val row: Int ) : InventorySlotCompound { - override fun withInvType(invType: InventoryType) = HashSet().apply { + override fun withInvType(invType: GUIType) = HashSet().apply { for (slotInRow in 1..invType.dimensions.width) this += InventorySlot(row, slotInRow) } @@ -177,7 +177,7 @@ class InventoryColumnSlots internal constructor( val column: Int ) : InventorySlotCompound { - override fun withInvType(invType: InventoryType) = HashSet().apply { + override fun withInvType(invType: GUIType) = HashSet().apply { for (row in 1..invType.dimensions.height) this += InventorySlot(row, column) } @@ -188,7 +188,7 @@ class InventoryBorderSlots internal constructor( val padding: Int ) : InventorySlotCompound { - override fun withInvType(invType: InventoryType) = HashSet().apply { + override fun withInvType(invType: GUIType) = HashSet().apply { val dimensions = invType.dimensions @@ -214,7 +214,7 @@ class InventoryCornerSlots internal constructor( val ifTopRight: Boolean = false ) : InventorySlotCompound { - override fun withInvType(invType: InventoryType) = HashSet().apply { + override fun withInvType(invType: GUIType) = HashSet().apply { val dimensions = invType.dimensions diff --git a/src/main/kotlin/net/axay/kspigot/inventory/InventoryType.kt b/src/main/kotlin/net/axay/kspigot/gui/GUIType.kt similarity index 67% rename from src/main/kotlin/net/axay/kspigot/inventory/InventoryType.kt rename to src/main/kotlin/net/axay/kspigot/gui/GUIType.kt index 8204120f..9a28e561 100644 --- a/src/main/kotlin/net/axay/kspigot/inventory/InventoryType.kt +++ b/src/main/kotlin/net/axay/kspigot/gui/GUIType.kt @@ -1,29 +1,29 @@ @file:Suppress("MemberVisibilityCanBePrivate", "CanBeParameter") -package net.axay.kspigot.inventory +package net.axay.kspigot.gui import org.bukkit.Bukkit import org.bukkit.event.inventory.InventoryType import org.bukkit.inventory.Inventory import org.bukkit.inventory.InventoryHolder -class InventoryType( +class GUIType( val dimensions: InventoryDimensions, val bukkitType: InventoryType? = null ) { companion object { - val ONE_BY_NINE = InventoryType(InventoryDimensions(9, 1)) - val TWO_BY_NINE = InventoryType(InventoryDimensions(9, 2)) - val THREE_BY_NINE = InventoryType(InventoryDimensions(9, 3)) - val FOUR_BY_NINE = InventoryType(InventoryDimensions(9, 4)) - val FIVE_BY_NINE = InventoryType(InventoryDimensions(9, 5)) - val SIX_BY_NINE = InventoryType(InventoryDimensions(9, 6)) + val ONE_BY_NINE = GUIType(InventoryDimensions(9, 1)) + val TWO_BY_NINE = GUIType(InventoryDimensions(9, 2)) + val THREE_BY_NINE = GUIType(InventoryDimensions(9, 3)) + val FOUR_BY_NINE = GUIType(InventoryDimensions(9, 4)) + val FIVE_BY_NINE = GUIType(InventoryDimensions(9, 5)) + val SIX_BY_NINE = GUIType(InventoryDimensions(9, 6)) val ONE_BY_FIVE = - InventoryType(InventoryDimensions(5, 1), bukkitType = InventoryType.HOPPER) + GUIType(InventoryDimensions(5, 1), bukkitType = InventoryType.HOPPER) val THREE_BY_THREE = - InventoryType(InventoryDimensions(3, 3), bukkitType = InventoryType.DROPPER) + GUIType(InventoryDimensions(3, 3), bukkitType = InventoryType.DROPPER) } diff --git a/src/main/kotlin/net/axay/kspigot/gui/elements/GUIButton.kt b/src/main/kotlin/net/axay/kspigot/gui/elements/GUIButton.kt new file mode 100644 index 00000000..504ff73d --- /dev/null +++ b/src/main/kotlin/net/axay/kspigot/gui/elements/GUIButton.kt @@ -0,0 +1,18 @@ +package net.axay.kspigot.gui.elements + +import net.axay.kspigot.gui.* +import org.bukkit.inventory.ItemStack + +open class GUIButton( + private val icon: ItemStack, + private val action: (GUIClickEvent) -> Unit, +) : GUIElement() { + + final override fun getItemStack(slot: Int) = icon + + override fun onClickElement(clickEvent: GUIClickEvent) { + clickEvent.bukkitEvent.isCancelled = true + action(clickEvent) + } + +} \ No newline at end of file diff --git a/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButtonInventoryChange.kt b/src/main/kotlin/net/axay/kspigot/gui/elements/GUIButtonInventoryChange.kt similarity index 64% rename from src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButtonInventoryChange.kt rename to src/main/kotlin/net/axay/kspigot/gui/elements/GUIButtonInventoryChange.kt index a41c2713..59e45ad8 100644 --- a/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButtonInventoryChange.kt +++ b/src/main/kotlin/net/axay/kspigot/gui/elements/GUIButtonInventoryChange.kt @@ -1,14 +1,14 @@ -package net.axay.kspigot.inventory.elements +package net.axay.kspigot.gui.elements -import net.axay.kspigot.inventory.* +import net.axay.kspigot.gui.* import org.bukkit.inventory.ItemStack -class InventoryGUIButtonInventoryChange( +class GUIButtonInventoryChange( icon: ItemStack, - changeToGUICallback: () -> InventoryGUI<*>, + changeToGUICallback: () -> GUI<*>, changeToPageInt: Int?, - onChange: ((InventoryGUIClickEvent) -> Unit)? -) : InventoryGUIButton(icon, { + onChange: ((GUIClickEvent) -> Unit)? +) : GUIButton(icon, { val changeToGUI = changeToGUICallback.invoke() diff --git a/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButtonPageChange.kt b/src/main/kotlin/net/axay/kspigot/gui/elements/GUIButtonPageChange.kt similarity index 62% rename from src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButtonPageChange.kt rename to src/main/kotlin/net/axay/kspigot/gui/elements/GUIButtonPageChange.kt index ab63f162..ea8f336b 100644 --- a/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButtonPageChange.kt +++ b/src/main/kotlin/net/axay/kspigot/gui/elements/GUIButtonPageChange.kt @@ -1,13 +1,13 @@ -package net.axay.kspigot.inventory.elements +package net.axay.kspigot.gui.elements -import net.axay.kspigot.inventory.* +import net.axay.kspigot.gui.* import org.bukkit.inventory.ItemStack -class InventoryGUIButtonPageChange( +class GUIButtonPageChange( icon: ItemStack, - calculator: InventoryGUIPageChangeCalculator, - onChange: ((InventoryGUIClickEvent) -> Unit)? -) : InventoryGUIButton(icon, { + calculator: GUIPageChangeCalculator, + onChange: ((GUIClickEvent) -> Unit)? +) : GUIButton(icon, { val currentPage = it.gui.currentPage val newPage = it.gui.getPage(calculator.calculateNewPage(it.gui.currentPageInt, it.gui.data.pages.keys)) diff --git a/src/main/kotlin/net/axay/kspigot/gui/elements/GUIFreeSlot.kt b/src/main/kotlin/net/axay/kspigot/gui/elements/GUIFreeSlot.kt new file mode 100644 index 00000000..b5dc1339 --- /dev/null +++ b/src/main/kotlin/net/axay/kspigot/gui/elements/GUIFreeSlot.kt @@ -0,0 +1,11 @@ +package net.axay.kspigot.gui.elements + +import net.axay.kspigot.gui.ForInventory +import net.axay.kspigot.gui.GUIClickEvent +import net.axay.kspigot.gui.GUISlot + +class GUIFreeSlot : GUISlot() { + override fun onClick(clickEvent: GUIClickEvent) { + /* do nothing */ + } +} \ No newline at end of file diff --git a/src/main/kotlin/net/axay/kspigot/gui/elements/GUIPlaceholder.kt b/src/main/kotlin/net/axay/kspigot/gui/elements/GUIPlaceholder.kt new file mode 100644 index 00000000..32281b00 --- /dev/null +++ b/src/main/kotlin/net/axay/kspigot/gui/elements/GUIPlaceholder.kt @@ -0,0 +1,16 @@ +package net.axay.kspigot.gui.elements + +import net.axay.kspigot.gui.* +import org.bukkit.inventory.ItemStack + +class GUIPlaceholder( + private val icon: ItemStack +) : GUIElement() { + + override fun getItemStack(slot: Int) = icon + + override fun onClickElement(clickEvent: GUIClickEvent) { + clickEvent.bukkitEvent.isCancelled = true + } + +} \ No newline at end of file diff --git a/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUISpaceCompound.kt b/src/main/kotlin/net/axay/kspigot/gui/elements/GUISpaceCompound.kt similarity index 70% rename from src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUISpaceCompound.kt rename to src/main/kotlin/net/axay/kspigot/gui/elements/GUISpaceCompound.kt index 60bb01a9..c0545caa 100644 --- a/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUISpaceCompound.kt +++ b/src/main/kotlin/net/axay/kspigot/gui/elements/GUISpaceCompound.kt @@ -1,53 +1,53 @@ @file:Suppress("MemberVisibilityCanBePrivate") -package net.axay.kspigot.inventory.elements +package net.axay.kspigot.gui.elements -import net.axay.kspigot.inventory.* +import net.axay.kspigot.gui.* import org.bukkit.Material import org.bukkit.inventory.ItemStack -class InventoryGUISpaceCompoundElement internal constructor( - private val compound: AbstractInventoryGUISpaceCompound -) : InventoryGUIElement() { +class GUISpaceCompoundElement internal constructor( + private val compound: AbstractGUISpaceCompound +) : GUIElement() { override fun getItemStack(slot: Int) = compound.getItemStack(slot) - override fun onClickElement(clickEvent: InventoryGUIClickEvent) { + override fun onClickElement(clickEvent: GUIClickEvent) { compound.onClickElement(clickEvent) } - override fun startUsing(gui: InventoryGUI<*>) = compound.registerGUI(gui) + override fun startUsing(gui: GUI<*>) = compound.registerGUI(gui) - override fun stopUsing(gui: InventoryGUI<*>) = compound.unregisterGUI(gui) + override fun stopUsing(gui: GUI<*>) = compound.unregisterGUI(gui) } -class InventoryGUIRectSpaceCompound( - invType: InventoryType, - iconGenerator: (E) -> ItemStack, - onClick: (InventoryGUIClickEvent, E) -> Unit, - internal val compoundWidth: Int -) : AbstractInventoryGUISpaceCompound(invType, iconGenerator, onClick) { +class GUIRectSpaceCompound( + invType: GUIType, + iconGenerator: (E) -> ItemStack, + onClick: (GUIClickEvent, E) -> Unit, + internal val compoundWidth: Int +) : AbstractGUISpaceCompound(invType, iconGenerator, onClick) { override fun handleScrollEndReached(newProgress: Int, internalSlotsSize: Int, contentSize: Int) = (internalSlotsSize + newProgress <= contentSize + (compoundWidth - (contentSize % compoundWidth))) } -class InventoryGUISpaceCompound( - invType: InventoryType, - iconGenerator: (E) -> ItemStack, - onClick: (InventoryGUIClickEvent, E) -> Unit -) : AbstractInventoryGUISpaceCompound(invType, iconGenerator, onClick) { +class GUISpaceCompound( + invType: GUIType, + iconGenerator: (E) -> ItemStack, + onClick: (GUIClickEvent, E) -> Unit +) : AbstractGUISpaceCompound(invType, iconGenerator, onClick) { override fun handleScrollEndReached(newProgress: Int, internalSlotsSize: Int, contentSize: Int) = false } -abstract class AbstractInventoryGUISpaceCompound internal constructor( - val invType: InventoryType, - private val iconGenerator: (E) -> ItemStack, - private val onClick: (InventoryGUIClickEvent, E) -> Unit +abstract class AbstractGUISpaceCompound internal constructor( + val guiType: GUIType, + private val iconGenerator: (E) -> ItemStack, + private val onClick: (GUIClickEvent, E) -> Unit ) { private val content = ArrayList() @@ -59,7 +59,7 @@ abstract class AbstractInventoryGUISpaceCompound internal c private var contentSort: () -> Unit = { } - private val registeredGUIs = HashSet>() + private val registeredGUIs = HashSet>() private fun contentAtSlot(slot: Int) = currentContent.getOrNull(internalSlots.indexOf(slot)) @@ -107,7 +107,7 @@ abstract class AbstractInventoryGUISpaceCompound internal c ?: ItemStack(Material.AIR) } - internal fun onClickElement(clickEvent: InventoryGUIClickEvent) { + internal fun onClickElement(clickEvent: GUIClickEvent) { val element = contentAtSlot(clickEvent.bukkitEvent.slot) ?: kotlin.run { clickEvent.bukkitEvent.isCancelled = true return @@ -116,18 +116,18 @@ abstract class AbstractInventoryGUISpaceCompound internal c } internal fun addSlots(slots: InventorySlotCompound) { - slots.realSlotsWithInvType(invType).forEach { + slots.realSlotsWithInvType(guiType).forEach { if (!internalSlots.contains(it)) internalSlots.add(it) } internalSlots.sort() } - internal fun registerGUI(gui: InventoryGUI<*>) { + internal fun registerGUI(gui: GUI<*>) { registeredGUIs += gui } - internal fun unregisterGUI(gui: InventoryGUI<*>) { + internal fun unregisterGUI(gui: GUI<*>) { registeredGUIs -= gui } diff --git a/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUISpaceCompoundScrollButton.kt b/src/main/kotlin/net/axay/kspigot/gui/elements/GUISpaceCompoundScrollButton.kt similarity index 70% rename from src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUISpaceCompoundScrollButton.kt rename to src/main/kotlin/net/axay/kspigot/gui/elements/GUISpaceCompoundScrollButton.kt index 94fe71dd..fbb44b40 100644 --- a/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUISpaceCompoundScrollButton.kt +++ b/src/main/kotlin/net/axay/kspigot/gui/elements/GUISpaceCompoundScrollButton.kt @@ -1,16 +1,16 @@ -package net.axay.kspigot.inventory.elements +package net.axay.kspigot.gui.elements -import net.axay.kspigot.inventory.ForInventory +import net.axay.kspigot.gui.ForInventory import net.axay.kspigot.runnables.task import org.bukkit.inventory.ItemStack -class InventoryGUISpaceCompoundScrollButton( +class GUISpaceCompoundScrollButton( icon: ItemStack, - private val compound: AbstractInventoryGUISpaceCompound, + private val compound: AbstractGUISpaceCompound, private val scrollDistance: Int, private val scrollTimes: Int, private val reverse: Boolean = false -) : InventoryGUIButton(icon, { +) : GUIButton(icon, { if (scrollTimes > 1) { task( period = 1, diff --git a/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIClickEvent.kt b/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIClickEvent.kt deleted file mode 100644 index 02bb9c3c..00000000 --- a/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIClickEvent.kt +++ /dev/null @@ -1,8 +0,0 @@ -package net.axay.kspigot.inventory - -import org.bukkit.event.inventory.InventoryClickEvent - -class InventoryGUIClickEvent( - val bukkitEvent: InventoryClickEvent, - val gui: InventoryGUI -) \ No newline at end of file diff --git a/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIElements.kt b/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIElements.kt deleted file mode 100644 index 5e25a874..00000000 --- a/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIElements.kt +++ /dev/null @@ -1,25 +0,0 @@ -package net.axay.kspigot.inventory - -import org.bukkit.inventory.ItemStack - -abstract class InventoryGUISlot { - abstract fun onClick(clickEvent: InventoryGUIClickEvent) -} - -// ELEMENT - -abstract class InventoryGUIElement : InventoryGUISlot() { - - abstract fun getItemStack(slot: Int): ItemStack - - final override fun onClick(clickEvent: InventoryGUIClickEvent) { - clickEvent.gui.data.generalOnClick?.invoke(clickEvent) - onClickElement(clickEvent) - } - - protected abstract fun onClickElement(clickEvent: InventoryGUIClickEvent) - - internal open fun startUsing(gui: InventoryGUI<*>) { } - internal open fun stopUsing(gui: InventoryGUI<*>) { } - -} \ No newline at end of file diff --git a/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIPage.kt b/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIPage.kt deleted file mode 100644 index baf16b54..00000000 --- a/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIPage.kt +++ /dev/null @@ -1,8 +0,0 @@ -package net.axay.kspigot.inventory - -class InventoryGUIPage( - val number: Int, - internal val slots: Map>, - val transitionTo: PageChangeEffect?, - val transitionFrom: PageChangeEffect? -) \ No newline at end of file diff --git a/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButton.kt b/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButton.kt deleted file mode 100644 index 6e5e221a..00000000 --- a/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButton.kt +++ /dev/null @@ -1,18 +0,0 @@ -package net.axay.kspigot.inventory.elements - -import net.axay.kspigot.inventory.* -import org.bukkit.inventory.ItemStack - -open class InventoryGUIButton( - private val icon: ItemStack, - private val action: (InventoryGUIClickEvent) -> Unit, -) : InventoryGUIElement() { - - final override fun getItemStack(slot: Int) = icon - - override fun onClickElement(clickEvent: InventoryGUIClickEvent) { - clickEvent.bukkitEvent.isCancelled = true - action(clickEvent) - } - -} \ No newline at end of file diff --git a/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIFreeSlot.kt b/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIFreeSlot.kt deleted file mode 100644 index cc2bc3eb..00000000 --- a/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIFreeSlot.kt +++ /dev/null @@ -1,11 +0,0 @@ -package net.axay.kspigot.inventory.elements - -import net.axay.kspigot.inventory.ForInventory -import net.axay.kspigot.inventory.InventoryGUIClickEvent -import net.axay.kspigot.inventory.InventoryGUISlot - -class InventoryGUIFreeSlot : InventoryGUISlot() { - override fun onClick(clickEvent: InventoryGUIClickEvent) { - /* do nothing */ - } -} \ No newline at end of file diff --git a/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIPlaceholder.kt b/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIPlaceholder.kt deleted file mode 100644 index bd93aa64..00000000 --- a/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIPlaceholder.kt +++ /dev/null @@ -1,16 +0,0 @@ -package net.axay.kspigot.inventory.elements - -import net.axay.kspigot.inventory.* -import org.bukkit.inventory.ItemStack - -class InventoryGUIPlaceholder( - private val icon: ItemStack -) : InventoryGUIElement() { - - override fun getItemStack(slot: Int) = icon - - override fun onClickElement(clickEvent: InventoryGUIClickEvent) { - clickEvent.bukkitEvent.isCancelled = true - } - -} \ No newline at end of file diff --git a/src/main/kotlin/net/axay/kspigot/main/KSpigot.kt b/src/main/kotlin/net/axay/kspigot/main/KSpigot.kt index 6c694ac6..c2a452d3 100644 --- a/src/main/kotlin/net/axay/kspigot/main/KSpigot.kt +++ b/src/main/kotlin/net/axay/kspigot/main/KSpigot.kt @@ -1,6 +1,6 @@ package net.axay.kspigot.main -import net.axay.kspigot.inventory.InventoryGUIHolder +import net.axay.kspigot.gui.GUIHolder import net.axay.kspigot.languageextensions.kotlinextensions.closeIfInitialized import net.axay.kspigot.runnables.KRunnableHolder import org.bukkit.plugin.java.JavaPlugin @@ -22,10 +22,10 @@ abstract class KSpigot : JavaPlugin() { // lazy properties private val kRunnableHolderProperty = lazy { KRunnableHolder } - private val inventoryGUIHolderProperty = lazy { InventoryGUIHolder } + private val guiHolderProperty = lazy { GUIHolder } internal val kRunnableHolder by kRunnableHolderProperty - internal val inventoryGUIHolder by inventoryGUIHolderProperty + internal val guiHolder by guiHolderProperty /** * Called when the plugin was loaded @@ -57,7 +57,7 @@ abstract class KSpigot : JavaPlugin() { // avoid unnecessary load of lazy properties kRunnableHolderProperty.closeIfInitialized() - inventoryGUIHolderProperty.closeIfInitialized() + guiHolderProperty.closeIfInitialized() }