Allow moving the items in the hotbar
This commit is contained in:
parent
3e1ce8cc4e
commit
76337a87bf
4 changed files with 43 additions and 3 deletions
|
@ -12,15 +12,20 @@ import de.moritzruth.spigot_ttt.game.players.TTTPlayerDeathInPreparingEvent
|
||||||
import de.moritzruth.spigot_ttt.game.players.TTTPlayerTrueDeathEvent
|
import de.moritzruth.spigot_ttt.game.players.TTTPlayerTrueDeathEvent
|
||||||
import de.moritzruth.spigot_ttt.utils.isLeftClick
|
import de.moritzruth.spigot_ttt.utils.isLeftClick
|
||||||
import de.moritzruth.spigot_ttt.utils.isRightClick
|
import de.moritzruth.spigot_ttt.utils.isRightClick
|
||||||
|
import de.moritzruth.spigot_ttt.utils.nextTick
|
||||||
import de.moritzruth.spigot_ttt.utils.sendActionBarMessage
|
import de.moritzruth.spigot_ttt.utils.sendActionBarMessage
|
||||||
import org.bukkit.Location
|
import org.bukkit.Location
|
||||||
import org.bukkit.Material
|
import org.bukkit.Material
|
||||||
import org.bukkit.entity.Item
|
import org.bukkit.entity.Item
|
||||||
import org.bukkit.entity.Player
|
import org.bukkit.entity.Player
|
||||||
import org.bukkit.event.EventHandler
|
import org.bukkit.event.EventHandler
|
||||||
|
import org.bukkit.event.EventPriority
|
||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent
|
import org.bukkit.event.entity.EntityDamageByEntityEvent
|
||||||
import org.bukkit.event.entity.EntityPickupItemEvent
|
import org.bukkit.event.entity.EntityPickupItemEvent
|
||||||
import org.bukkit.event.entity.ItemDespawnEvent
|
import org.bukkit.event.entity.ItemDespawnEvent
|
||||||
|
import org.bukkit.event.inventory.ClickType
|
||||||
|
import org.bukkit.event.inventory.InventoryAction
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent
|
||||||
import org.bukkit.event.player.PlayerDropItemEvent
|
import org.bukkit.event.player.PlayerDropItemEvent
|
||||||
import org.bukkit.event.player.PlayerInteractEvent
|
import org.bukkit.event.player.PlayerInteractEvent
|
||||||
import org.bukkit.event.player.PlayerItemHeldEvent
|
import org.bukkit.event.player.PlayerItemHeldEvent
|
||||||
|
@ -52,6 +57,34 @@ object ItemManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
val listener = object : GameListener() {
|
val listener = object : GameListener() {
|
||||||
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
|
fun onInventoryClick(event: InventoryClickEvent) = handle(event) { tttPlayer ->
|
||||||
|
if (event.click === ClickType.CREATIVE || event.clickedInventory?.holder != event.whoClicked) return@handle
|
||||||
|
|
||||||
|
if (event.slot in 0..8) {
|
||||||
|
// is in hotbar
|
||||||
|
when(event.action) {
|
||||||
|
InventoryAction.PICKUP_ALL,
|
||||||
|
InventoryAction.PICKUP_HALF,
|
||||||
|
InventoryAction.PICKUP_ONE -> {
|
||||||
|
event.currentItem?.also { itemStack -> getInstanceByItemStack(itemStack)?.isSelected = false }
|
||||||
|
}
|
||||||
|
InventoryAction.PLACE_ALL,
|
||||||
|
InventoryAction.PLACE_SOME,
|
||||||
|
InventoryAction.PLACE_ONE -> {
|
||||||
|
nextTick {
|
||||||
|
if (event.slot == tttPlayer.player.inventory.heldItemSlot) {
|
||||||
|
tttPlayer.player.inventory.getItem(event.slot)?.also { itemStack ->
|
||||||
|
getInstanceByItemStack(itemStack)?.isSelected = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else -> event.isCancelled = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler(ignoreCancelled = true)
|
@EventHandler(ignoreCancelled = true)
|
||||||
fun onPlayerInteract(event: PlayerInteractEvent) = handle(event) { tttPlayer ->
|
fun onPlayerInteract(event: PlayerInteractEvent) = handle(event) { tttPlayer ->
|
||||||
if (tttPlayer.ignoreNextInteract) {
|
if (tttPlayer.ignoreNextInteract) {
|
||||||
|
|
|
@ -15,7 +15,12 @@ import org.bukkit.event.inventory.InventoryClickEvent
|
||||||
object ShopListener: GameListener() {
|
object ShopListener: GameListener() {
|
||||||
@EventHandler(ignoreCancelled = true)
|
@EventHandler(ignoreCancelled = true)
|
||||||
fun onInventoryClick(event: InventoryClickEvent) = handle(event) { tttPlayer ->
|
fun onInventoryClick(event: InventoryClickEvent) = handle(event) { tttPlayer ->
|
||||||
if (event.click === ClickType.CREATIVE || event.clickedInventory?.holder != event.whoClicked) return@handle
|
if (
|
||||||
|
event.click === ClickType.CREATIVE ||
|
||||||
|
event.clickedInventory?.holder != event.whoClicked ||
|
||||||
|
event.slot in 0..8
|
||||||
|
) return@handle
|
||||||
|
|
||||||
event.isCancelled = true
|
event.isCancelled = true
|
||||||
|
|
||||||
val itemStack = event.currentItem
|
val itemStack = event.currentItem
|
||||||
|
|
|
@ -71,7 +71,7 @@ object PlayerManager {
|
||||||
} else {
|
} else {
|
||||||
tttPlayer.player = player
|
tttPlayer.player = player
|
||||||
|
|
||||||
player.sendMessage("${TTTPlugin.prefix}${ChatColor.RED}Du bist gestorben, da du das Spiel verlassen hast.")
|
player.sendMessage("${TTTPlugin.prefix}${ChatColor.RED}Du bist tot.")
|
||||||
when(GameManager.phase) {
|
when(GameManager.phase) {
|
||||||
GamePhase.PREPARING -> noop() // Never happens
|
GamePhase.PREPARING -> noop() // Never happens
|
||||||
GamePhase.COMBAT -> {
|
GamePhase.COMBAT -> {
|
||||||
|
|
|
@ -22,7 +22,9 @@ class TTTWorld(private val sourceWorldDir: File) {
|
||||||
val spawnLocations = SpawnLocationsManager(this)
|
val spawnLocations = SpawnLocationsManager(this)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
if (world != null) GameManager.tttWorld = this
|
if (world == null) {
|
||||||
|
if (worldDir.exists()) worldDir.deleteRecursively()
|
||||||
|
} else GameManager.tttWorld = this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun load() {
|
fun load() {
|
||||||
|
|
Reference in a new issue