From 271acd578b24aa69938d984c0e517b9df2c5173c Mon Sep 17 00:00:00 2001 From: bluefireoly Date: Sat, 27 Jun 2020 00:10:27 +0200 Subject: [PATCH] Create InteractEventExtensions.kt --- .../events/InteractEventExtensions.kt | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/main/kotlin/net/axay/kspigot/extensions/events/InteractEventExtensions.kt diff --git a/src/main/kotlin/net/axay/kspigot/extensions/events/InteractEventExtensions.kt b/src/main/kotlin/net/axay/kspigot/extensions/events/InteractEventExtensions.kt new file mode 100644 index 00000000..ec4f3ef0 --- /dev/null +++ b/src/main/kotlin/net/axay/kspigot/extensions/events/InteractEventExtensions.kt @@ -0,0 +1,34 @@ +package net.axay.kspigot.extensions.events + +import org.bukkit.block.Block +import org.bukkit.entity.Entity +import org.bukkit.entity.Player +import org.bukkit.event.block.Action +import org.bukkit.event.player.PlayerInteractEntityEvent +import org.bukkit.event.player.PlayerInteractEvent +import org.bukkit.inventory.EquipmentSlot +import org.bukkit.inventory.ItemStack + +val PlayerInteractEntityEvent.interactItem: ItemStack? + get() { + val p: Player = this.player + return when (this.hand) { + EquipmentSlot.HAND -> p.inventory.itemInMainHand + EquipmentSlot.OFF_HAND -> p.inventory.itemInOffHand + EquipmentSlot.CHEST, EquipmentSlot.FEET, EquipmentSlot.HEAD, EquipmentSlot.LEGS -> null + } + } + +val PlayerInteractEvent.clickedBlockExceptAir: Block? + get() { + val p: Player = this.player + return when (this.action) { + Action.RIGHT_CLICK_BLOCK -> this.clickedBlock + Action.RIGHT_CLICK_AIR -> { + for (nearbyEntity: Entity in p.getNearbyEntities(5.0, 5.0, 5.0)) + if (p.hasLineOfSight(nearbyEntity)) return null + p.getLineOfSight(null, 5).find { block -> !block.type.isAir } + } + else -> null + } + }