Skip to content

Commit f8b08a7

Browse files
Add SimpleGUI interface and listener for inventory events
Introduces the SimpleGUI interface for custom inventory GUIs and a corresponding SimpleGUIListener to handle inventory click, close, and drag events. Registers the listener in KPlugin to enable event handling for SimpleGUI implementations.
1 parent e74f3ed commit f8b08a7

File tree

3 files changed

+57
-0
lines changed

3 files changed

+57
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package cc.modlabs.kpaper.inventory.simple
2+
3+
import org.bukkit.event.inventory.InventoryClickEvent
4+
import org.bukkit.event.inventory.InventoryCloseEvent
5+
import org.bukkit.event.inventory.InventoryDragEvent
6+
import org.bukkit.inventory.InventoryHolder
7+
8+
interface SimpleGUI : InventoryHolder {
9+
10+
fun open(): Unit = Unit
11+
12+
fun handle(event: InventoryClickEvent): Unit = Unit
13+
14+
fun onClose(event: InventoryCloseEvent): Unit = Unit
15+
16+
fun onDrag(event: InventoryDragEvent): Unit = Unit
17+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package cc.modlabs.kpaper.inventory.simple
2+
3+
import org.bukkit.event.EventHandler
4+
import org.bukkit.event.Listener
5+
import org.bukkit.event.inventory.InventoryClickEvent
6+
import org.bukkit.event.inventory.InventoryCloseEvent
7+
import org.bukkit.event.inventory.InventoryDragEvent
8+
9+
internal class SimpleGUIListener : Listener {
10+
11+
@EventHandler
12+
fun onInventoryClick(event: InventoryClickEvent) {
13+
val inventory = event.clickedInventory ?: return
14+
val holder = inventory.getHolder(false)
15+
if (holder is SimpleGUI) {
16+
holder.handle(event)
17+
}
18+
}
19+
20+
@EventHandler
21+
fun onInventoryClose(event: InventoryCloseEvent) {
22+
val inventory = event.inventory
23+
val holder = inventory.getHolder(false)
24+
if (holder is SimpleGUI) {
25+
holder.onClose(event)
26+
}
27+
}
28+
29+
@EventHandler
30+
fun onInventoryDrag(event: InventoryDragEvent) {
31+
val inventory = event.inventory
32+
val holder = inventory.getHolder(false)
33+
if (holder is SimpleGUI) {
34+
holder.onDrag(event)
35+
}
36+
}
37+
38+
}

src/main/kotlin/cc/modlabs/kpaper/main/KPlugin.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import cc.modlabs.kpaper.event.CustomEventListener
44
import cc.modlabs.kpaper.inventory._internal.AnvilListener
55
import cc.modlabs.kpaper.inventory._internal.ItemClickListener
6+
import cc.modlabs.kpaper.inventory.simple.SimpleGUIListener
67
import org.bukkit.Bukkit
78
import org.bukkit.plugin.java.JavaPlugin
89

@@ -54,6 +55,7 @@ abstract class KPlugin : JavaPlugin() {
5455
if (isFeatureEnabled(Feature.CUSTOM_EVENTS)) {
5556
CustomEventListener.load()
5657
}
58+
Bukkit.getPluginManager().registerEvents(SimpleGUIListener(), this)
5759

5860
startup()
5961
}

0 commit comments

Comments
 (0)