1
0
Fork 0

Allow moving the items in the hotbar

This commit is contained in:
Moritz Ruth 2020-06-20 22:02:46 +02:00
parent 3e1ce8cc4e
commit 76337a87bf
No known key found for this signature in database
GPG key ID: AFD57E23E753841B
4 changed files with 43 additions and 3 deletions

View file

@ -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) {

View file

@ -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

View file

@ -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 -> {

View file

@ -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() {