From e4681af82239a6f8d349516f8c4362d818fab7fd Mon Sep 17 00:00:00 2001 From: Skyslycer Date: Mon, 16 Aug 2021 00:30:43 +0200 Subject: [PATCH] updated spigot and added on close function for closing a gui --- build.gradle.kts | 4 ++-- src/main/kotlin/net/axay/kspigot/gui/GUI.kt | 11 +++++++++-- src/main/kotlin/net/axay/kspigot/gui/GUIBuilder.kt | 9 ++++++++- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 5b0fd6a5..4b26a0c5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -24,8 +24,8 @@ repositories { } dependencies { - compileOnly("org.spigotmc", "spigot", "1.17-R0.1-SNAPSHOT") - testCompileOnly("org.spigotmc", "spigot", "1.17-R0.1-SNAPSHOT") + compileOnly("org.spigotmc", "spigot", "1.17.1-R0.1-SNAPSHOT") + testCompileOnly("org.spigotmc", "spigot", "1.17.1-R0.1-SNAPSHOT") api("org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.1") api("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0") diff --git a/src/main/kotlin/net/axay/kspigot/gui/GUI.kt b/src/main/kotlin/net/axay/kspigot/gui/GUI.kt index a2881441..a213fede 100644 --- a/src/main/kotlin/net/axay/kspigot/gui/GUI.kt +++ b/src/main/kotlin/net/axay/kspigot/gui/GUI.kt @@ -19,6 +19,7 @@ class GUIData( val transitionTo: InventoryChangeEffect?, val transitionFrom: InventoryChangeEffect?, internal val generalOnClick: ((GUIClickEvent) -> Unit)?, + internal val onClose: ((InventoryCloseEvent) -> Unit)? ) abstract class GUI( @@ -95,9 +96,15 @@ class GUIIndividual( } init { - if (resetOnClose) { + if (resetOnClose || data.onClose != null) { listen { - deleteInstance(it.player as? Player ?: return@listen) + if (data.onClose != null && playerInstances[it.player]?.bukkitInventory == it.inventory) { + data.onClose.invoke(it) + } + + if (resetOnClose) { + deleteInstance(it.player as? Player ?: return@listen) + } } } diff --git a/src/main/kotlin/net/axay/kspigot/gui/GUIBuilder.kt b/src/main/kotlin/net/axay/kspigot/gui/GUIBuilder.kt index 6b6b3822..5ba7a8ee 100644 --- a/src/main/kotlin/net/axay/kspigot/gui/GUIBuilder.kt +++ b/src/main/kotlin/net/axay/kspigot/gui/GUIBuilder.kt @@ -3,6 +3,7 @@ package net.axay.kspigot.gui import net.axay.kspigot.gui.elements.* +import org.bukkit.event.inventory.InventoryCloseEvent import org.bukkit.inventory.ItemStack import kotlin.math.absoluteValue @@ -46,6 +47,8 @@ class GUIBuilder( private var onClickElement: ((GUIClickEvent) -> Unit)? = null + private var onClose: ((InventoryCloseEvent) -> Unit)? = null + /** * Opens the builder for a new page and adds * the new page to the GUI. @@ -63,8 +66,12 @@ class GUIBuilder( onClickElement = onClick } + fun onClose(onClose: (InventoryCloseEvent) -> Unit) { + this.onClose = onClose + } + internal fun build() = guiCreator.createInstance( - GUIData(type, title, guiPages, defaultPage, transitionTo, transitionFrom, onClickElement) + GUIData(type, title, guiPages, defaultPage, transitionTo, transitionFrom, onClickElement, onClose) ) }