diff --git a/KotlinCore/src/de/steamwar/kotlin/inventory/SWInventoryHolder.kt b/KotlinCore/src/de/steamwar/kotlin/inventory/SWInventoryHolder.kt
deleted file mode 100644
index 3afb3183..00000000
--- a/KotlinCore/src/de/steamwar/kotlin/inventory/SWInventoryHolder.kt
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * This file is a part of the SteamWar software.
- *
- * Copyright (C) 2024 SteamWar.de-Serverteam
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- */
-
-package de.steamwar.kotlin.inventory
-
-import org.bukkit.event.inventory.InventoryClickEvent
-import org.bukkit.event.inventory.InventoryCloseEvent
-import org.bukkit.inventory.Inventory
-import org.bukkit.inventory.InventoryHolder
-import org.bukkit.inventory.ItemStack
-
-abstract class SWInventoryHolder: InventoryHolder {
-
- val _inventory: Inventory by lazy { createInventory() }
-
- private val callbacks = mutableMapOf Unit>()
-
- override fun getInventory(): Inventory = _inventory
-
- abstract fun createInventory(): Inventory
-
- open fun handleInventoryClick(event: InventoryClickEvent) {
- callbacks[event.slot]?.invoke(event)
- }
-
- fun addItem(item: ItemStack, slot: Int, callback: (event: InventoryClickEvent) -> Unit) {
- _inventory.setItem(slot, item)
- addCallback(slot, callback)
- }
-
- fun addCallback(slot: Int, callback: (event: InventoryClickEvent) -> Unit) {
- callbacks[slot] = callback
- }
-
- open fun handleClose(event: InventoryCloseEvent) { }
-
- operator fun set(slot: Int, item: Pair Unit>) {
- addItem(item.first, slot, item.second)
- }
-
- operator fun set(slot: Int, item: ItemStack) {
- addItem(item, slot) { }
- }
-}
\ No newline at end of file
diff --git a/TNTLeague/src/de/steamwar/tntleague/TNTLeague.kt b/TNTLeague/src/de/steamwar/tntleague/TNTLeague.kt
index 378dbfc7..fb98840a 100644
--- a/TNTLeague/src/de/steamwar/tntleague/TNTLeague.kt
+++ b/TNTLeague/src/de/steamwar/tntleague/TNTLeague.kt
@@ -19,6 +19,7 @@
package de.steamwar.tntleague
+import de.steamwar.kotlin.inventory.SWInventoryHolder
import de.steamwar.message.Message
import de.steamwar.tntleague.command.AcceptCommand
import de.steamwar.tntleague.command.InviteCommand
@@ -42,6 +43,7 @@ class TNTLeague : JavaPlugin() {
server.pluginManager.registerEvents(LobbyListener, this)
server.pluginManager.registerEvents(GlobalListener, this)
+ server.pluginManager.registerEvents(SWInventoryHolder.InventoryListener, this)
logger.info("TNTLeague enabled")
diff --git a/TNTLeague/src/de/steamwar/tntleague/events/GlobalListener.kt b/TNTLeague/src/de/steamwar/tntleague/events/GlobalListener.kt
index b01dffd9..1fbadd5a 100644
--- a/TNTLeague/src/de/steamwar/tntleague/events/GlobalListener.kt
+++ b/TNTLeague/src/de/steamwar/tntleague/events/GlobalListener.kt
@@ -66,15 +66,6 @@ object GlobalListener: Listener {
e.isCancelled = true
}
- @EventHandler(priority = EventPriority.LOWEST)
- fun onPlayerClick(e: InventoryClickEvent) {
- val holder = e.inventory.getHolder(false)
- if (holder is SWInventoryHolder && e.clickedInventory == holder._inventory) {
- e.isCancelled = true
- holder.handleInventoryClick(e)
- }
- }
-
@EventHandler(priority = EventPriority.LOWEST)
fun onPlayerMove(e: PlayerMoveEvent) {
if (e.to.blockY < TNTLeagueWorldConfig.minHeight) {
diff --git a/TNTLeague/src/de/steamwar/tntleague/events/IngameListener.kt b/TNTLeague/src/de/steamwar/tntleague/events/IngameListener.kt
index ca379821..95b700ef 100644
--- a/TNTLeague/src/de/steamwar/tntleague/events/IngameListener.kt
+++ b/TNTLeague/src/de/steamwar/tntleague/events/IngameListener.kt
@@ -44,7 +44,7 @@ object IngameListener: Listener {
if(e.rightClicked.type == EntityType.WANDERING_TRADER) {
e.isCancelled = true
- e.player.openInventory(DealerInventory(e.player).getInventory())
+ DealerInventory(e.player).open()
}
}
diff --git a/TNTLeague/src/de/steamwar/tntleague/events/LobbyListener.kt b/TNTLeague/src/de/steamwar/tntleague/events/LobbyListener.kt
index 586b0e79..bb570498 100644
--- a/TNTLeague/src/de/steamwar/tntleague/events/LobbyListener.kt
+++ b/TNTLeague/src/de/steamwar/tntleague/events/LobbyListener.kt
@@ -39,11 +39,6 @@ object LobbyListener: Listener {
}
}
- @EventHandler(priority = EventPriority.LOWEST)
- fun onPlayerQuit(e: PlayerQuitEvent) {
- TNTLeagueGame.playerLeave(e.player)
- }
-
@EventHandler
fun onPlayerDamage(e: EntityDamageEvent) {
e.isCancelled = true
diff --git a/TNTLeague/src/de/steamwar/tntleague/game/TNTLeagueTeam.kt b/TNTLeague/src/de/steamwar/tntleague/game/TNTLeagueTeam.kt
index 3828d9e8..200f457e 100644
--- a/TNTLeague/src/de/steamwar/tntleague/game/TNTLeagueTeam.kt
+++ b/TNTLeague/src/de/steamwar/tntleague/game/TNTLeagueTeam.kt
@@ -128,7 +128,7 @@ data class TNTLeagueTeam(val config: TNTLeagueWorldConfig.TeamConfig, private va
fun leave(player: Player) {
members.remove(player)
- if (TNTLeagueGame.state != TNTLeagueGame.GameState.RUNNING) {
+ if (TNTLeagueGame.state == TNTLeagueGame.GameState.LOBBY) {
if (members.isEmpty()) {
plugin.server.onlinePlayers.firstOrNull { it != player && TNTLeagueGame.getTeam(it) == null }?.run {
members.add(this)
diff --git a/TNTLeague/src/de/steamwar/tntleague/inventory/CategoryInventory.kt b/TNTLeague/src/de/steamwar/tntleague/inventory/CategoryInventory.kt
index 3a23812f..dcf1d690 100644
--- a/TNTLeague/src/de/steamwar/tntleague/inventory/CategoryInventory.kt
+++ b/TNTLeague/src/de/steamwar/tntleague/inventory/CategoryInventory.kt
@@ -19,7 +19,7 @@
package de.steamwar.tntleague.inventory
-import de.steamwar.kotlin.inventory.SWInventoryHolder
+import de.steamwar.kotlin.KotlinInventory
import de.steamwar.tntleague.config.TNTLeagueConfig
import de.steamwar.tntleague.inventory.DealerInventory.Companion.buyItem
import de.steamwar.tntleague.inventory.DealerInventory.Companion.itemsByCategory
@@ -29,8 +29,8 @@ import org.bukkit.Bukkit
import org.bukkit.entity.Player
import org.bukkit.inventory.Inventory
-class CategoryInventory(val player: Player, category: TNTLeagueConfig.ItemCategory): SWInventoryHolder() {
- override fun createInventory(): Inventory = Bukkit.createInventory(this, 9 * 6, Component.text(message.parse("DEALER", player)))
+class CategoryInventory(player: Player, category: TNTLeagueConfig.ItemCategory): KotlinInventory(player) {
+ override fun createInventory(): Inventory = Bukkit.createInventory(null, 9 * 6, Component.text(message.parse("DEALER", player)))
init {
itemsByCategory[category]!!.forEachIndexed { index, item ->
diff --git a/TNTLeague/src/de/steamwar/tntleague/inventory/DealerInventory.kt b/TNTLeague/src/de/steamwar/tntleague/inventory/DealerInventory.kt
index d0af0ca4..384699d1 100644
--- a/TNTLeague/src/de/steamwar/tntleague/inventory/DealerInventory.kt
+++ b/TNTLeague/src/de/steamwar/tntleague/inventory/DealerInventory.kt
@@ -19,8 +19,9 @@
package de.steamwar.tntleague.inventory
+import de.steamwar.inventory.SWInventory
import de.steamwar.inventory.SWItem
-import de.steamwar.kotlin.inventory.SWInventoryHolder
+import de.steamwar.kotlin.KotlinInventory
import de.steamwar.tntleague.config.TNTLeagueConfig
import de.steamwar.tntleague.game.TNTLeagueGame
import de.steamwar.tntleague.message
@@ -38,7 +39,9 @@ import org.bukkit.inventory.ItemStack
import org.bukkit.persistence.PersistentDataType
import java.util.*
-class DealerInventory(val player: Player): SWInventoryHolder() {
+class DealerInventory(player: Player): KotlinInventory(player) {
+
+ private val inv: SWInventory = SWInventory(player) { createInventory() }
init {
this[10] = SWItem(Material.REDSTONE_BLOCK, message.parse("DEALER_REDSTONE", player)).itemStack to openCategory(TNTLeagueConfig.ItemCategory.REDSTONE)
@@ -51,9 +54,9 @@ class DealerInventory(val player: Player): SWInventoryHolder() {
}
}
- private fun openCategory(cat: TNTLeagueConfig.ItemCategory): (e: InventoryClickEvent) -> Unit = { player.openInventory(CategoryInventory(player, cat).inventory) }
+ private fun openCategory(cat: TNTLeagueConfig.ItemCategory): (e: InventoryClickEvent) -> Unit = { CategoryInventory(player, cat).open() }
- override fun createInventory(): Inventory = plugin.server.createInventory(this, 6 * 9, Component.text(message.parse("DEALER", player)))
+ override fun createInventory(): Inventory = plugin.server.createInventory(null, 6 * 9, Component.text(message.parse("DEALER", player)))
companion object {
private val priceKey = NamespacedKey(plugin, "price")