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.utils.isLeftClick
|
||||
import de.moritzruth.spigot_ttt.utils.isRightClick
|
||||
import de.moritzruth.spigot_ttt.utils.nextTick
|
||||
import de.moritzruth.spigot_ttt.utils.sendActionBarMessage
|
||||
import org.bukkit.Location
|
||||
import org.bukkit.Material
|
||||
import org.bukkit.entity.Item
|
||||
import org.bukkit.entity.Player
|
||||
import org.bukkit.event.EventHandler
|
||||
import org.bukkit.event.EventPriority
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent
|
||||
import org.bukkit.event.entity.EntityPickupItemEvent
|
||||
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.PlayerInteractEvent
|
||||
import org.bukkit.event.player.PlayerItemHeldEvent
|
||||
|
@ -52,6 +57,34 @@ object ItemManager {
|
|||
}
|
||||
|
||||
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)
|
||||
fun onPlayerInteract(event: PlayerInteractEvent) = handle(event) { tttPlayer ->
|
||||
if (tttPlayer.ignoreNextInteract) {
|
||||
|
|
|
@ -15,7 +15,12 @@ import org.bukkit.event.inventory.InventoryClickEvent
|
|||
object ShopListener: GameListener() {
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
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
|
||||
|
||||
val itemStack = event.currentItem
|
||||
|
|
|
@ -71,7 +71,7 @@ object PlayerManager {
|
|||
} else {
|
||||
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) {
|
||||
GamePhase.PREPARING -> noop() // Never happens
|
||||
GamePhase.COMBAT -> {
|
||||
|
|
|
@ -22,7 +22,9 @@ class TTTWorld(private val sourceWorldDir: File) {
|
|||
val spawnLocations = SpawnLocationsManager(this)
|
||||
|
||||
init {
|
||||
if (world != null) GameManager.tttWorld = this
|
||||
if (world == null) {
|
||||
if (worldDir.exists()) worldDir.deleteRecursively()
|
||||
} else GameManager.tttWorld = this
|
||||
}
|
||||
|
||||
fun load() {
|
||||
|
|
Reference in a new issue