From e4681af82239a6f8d349516f8c4362d818fab7fd Mon Sep 17 00:00:00 2001 From: Skyslycer Date: Mon, 16 Aug 2021 00:30:43 +0200 Subject: [PATCH 1/4] 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) ) } From 71a6bd5ea834626d5409b73c8c964cb74afd1441 Mon Sep 17 00:00:00 2001 From: Skyslycer <73074974+Skyslycer@users.noreply.github.com> Date: Mon, 16 Aug 2021 00:34:33 +0200 Subject: [PATCH 2/4] Update docs link in readme --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 7919d540..7634754e 100644 --- a/readme.md +++ b/readme.md @@ -1,7 +1,7 @@ # KSpigot [ ![Latest version](https://img.shields.io/maven-central/v/net.axay/kspigot?color=pink&label=latest%20version&style=for-the-badge) ](https://repo1.maven.org/maven2/net/axay/kspigot/) -[ ![Guide](https://img.shields.io/badge/guide-read-%23c2ff73?style=for-the-badge) ](https://bluefireoly.github.io/KSpigot/) +[ ![Guide](https://img.shields.io/badge/guide-read-%23c2ff73?style=for-the-badge) ](https://jakobkmar.github.io/KSpigot/) [ ![Discord](https://img.shields.io/discord/771140534118383626?color=cyan&label=DISCORD&style=for-the-badge) ](https://discord.gg/CJDUVuJ)
KSpigot is a Kotlin extension for the popular [spigot server software](https://spigotmc.org/) for minecraft. It adds From a204867ff0fa08dcac258db4aedb6834b47324a3 Mon Sep 17 00:00:00 2001 From: Skyslycer Date: Mon, 16 Aug 2021 19:11:34 +0200 Subject: [PATCH 3/4] did requested changes --- src/main/kotlin/net/axay/kspigot/gui/GUI.kt | 4 ++-- src/main/kotlin/net/axay/kspigot/gui/GUIBuilder.kt | 8 ++++++-- src/main/kotlin/net/axay/kspigot/gui/GUICloseEvent.kt | 10 ++++++++++ 3 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 src/main/kotlin/net/axay/kspigot/gui/GUICloseEvent.kt diff --git a/src/main/kotlin/net/axay/kspigot/gui/GUI.kt b/src/main/kotlin/net/axay/kspigot/gui/GUI.kt index a213fede..23b35774 100644 --- a/src/main/kotlin/net/axay/kspigot/gui/GUI.kt +++ b/src/main/kotlin/net/axay/kspigot/gui/GUI.kt @@ -19,7 +19,7 @@ class GUIData( val transitionTo: InventoryChangeEffect?, val transitionFrom: InventoryChangeEffect?, internal val generalOnClick: ((GUIClickEvent) -> Unit)?, - internal val onClose: ((InventoryCloseEvent) -> Unit)? + internal val onClose: ((GUICloseEvent) -> Unit)? ) abstract class GUI( @@ -99,7 +99,7 @@ class GUIIndividual( if (resetOnClose || data.onClose != null) { listen { if (data.onClose != null && playerInstances[it.player]?.bukkitInventory == it.inventory) { - data.onClose.invoke(it) + data.onClose.invoke(GUICloseEvent(it, playerInstances[it.player]!!, it.player as Player)) } if (resetOnClose) { diff --git a/src/main/kotlin/net/axay/kspigot/gui/GUIBuilder.kt b/src/main/kotlin/net/axay/kspigot/gui/GUIBuilder.kt index 5ba7a8ee..c199e24c 100644 --- a/src/main/kotlin/net/axay/kspigot/gui/GUIBuilder.kt +++ b/src/main/kotlin/net/axay/kspigot/gui/GUIBuilder.kt @@ -47,7 +47,7 @@ class GUIBuilder( private var onClickElement: ((GUIClickEvent) -> Unit)? = null - private var onClose: ((InventoryCloseEvent) -> Unit)? = null + private var onClose: ((GUICloseEvent) -> Unit)? = null /** * Opens the builder for a new page and adds @@ -66,7 +66,11 @@ class GUIBuilder( onClickElement = onClick } - fun onClose(onClose: (InventoryCloseEvent) -> Unit) { + /** + * A callback executed when the user closes + * the inventory. + */ + fun onClose(onClose: (GUICloseEvent) -> Unit) { this.onClose = onClose } diff --git a/src/main/kotlin/net/axay/kspigot/gui/GUICloseEvent.kt b/src/main/kotlin/net/axay/kspigot/gui/GUICloseEvent.kt new file mode 100644 index 00000000..9ac443ae --- /dev/null +++ b/src/main/kotlin/net/axay/kspigot/gui/GUICloseEvent.kt @@ -0,0 +1,10 @@ +package net.axay.kspigot.gui + +import org.bukkit.entity.Player +import org.bukkit.event.inventory.InventoryCloseEvent + +class GUICloseEvent( + val bukkitEvent: InventoryCloseEvent, + val guiInstance: GUIInstance, + val player: Player, +) \ No newline at end of file From 10737f1ddbaf24273f04eaffece63354732e1640 Mon Sep 17 00:00:00 2001 From: Skyslycer Date: Mon, 16 Aug 2021 19:33:21 +0200 Subject: [PATCH 4/4] add line break --- src/main/kotlin/net/axay/kspigot/gui/GUICloseEvent.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/net/axay/kspigot/gui/GUICloseEvent.kt b/src/main/kotlin/net/axay/kspigot/gui/GUICloseEvent.kt index 9ac443ae..4ea6ec31 100644 --- a/src/main/kotlin/net/axay/kspigot/gui/GUICloseEvent.kt +++ b/src/main/kotlin/net/axay/kspigot/gui/GUICloseEvent.kt @@ -7,4 +7,4 @@ class GUICloseEvent( val bukkitEvent: InventoryCloseEvent, val guiInstance: GUIInstance, val player: Player, -) \ No newline at end of file +)