@@ -9,16 +9,15 @@ import io.papermc.paper.datacomponent.item.ResolvableProfile
99import io.papermc.paper.event.entity.EntityEquipmentChangedEvent
1010import kotlinx.serialization.Serializable
1111import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder
12+ import org.bukkit.GameMode
1213import org.bukkit.Material
1314import org.bukkit.entity.Player
1415import org.bukkit.event.EventHandler
1516import org.bukkit.event.EventPriority
17+ import org.bukkit.event.block.Action
1618import org.bukkit.event.block.BlockBreakEvent
1719import org.bukkit.event.block.BlockDropItemEvent
1820import org.bukkit.event.entity.PlayerDeathEvent
19- import org.bukkit.event.inventory.ClickType
20- import org.bukkit.event.inventory.InventoryClickEvent
21- import org.bukkit.event.inventory.InventoryType
2221import org.bukkit.event.player.*
2322import org.bukkit.inventory.ItemStack
2423import org.bukkit.permissions.Permission
@@ -92,12 +91,10 @@ internal object PlayerModule : ModuleInterface {
9291 }
9392
9493 @EventHandler
95- fun on (event : InventoryClickEvent ) = handleEnderchest(event)
96-
97- @EventHandler(ignoreCancelled = true )
9894 fun on (event : PlayerInteractEvent ) {
9995 xpToBottle(event)
10096 FeatherFallingEnchantment .featherFalling(event)
97+ handleEnderchest(event)
10198 }
10299
103100 @EventHandler
@@ -124,20 +121,18 @@ internal object PlayerModule : ModuleInterface {
124121 }
125122
126123 /* *
127- * Handles the inventory click event where a player can open their ender chest by clicking on an ender chest item
128- * in their inventory.
129- * @param event The InventoryClickEvent triggered when a player clicks in an inventory.
124+ * Opens the player's ender chest when an ender chest is in the offhand and the player right-clicks in the air.
125+ * @param event The PlayerInteractEvent triggered by the interaction.
130126 */
131- private fun handleEnderchest (event : InventoryClickEvent ) {
132- if (event.click != ClickType . MIDDLE ) return // FIX: MIDDLE doesnt work?
133- if (event.currentItem ?.type != Material .ENDER_CHEST ) return
134- if (event.clickedInventory?.type != InventoryType . PLAYER ) return
127+ private fun handleEnderchest (event : PlayerInteractEvent ) {
128+ if (event.action != Action . RIGHT_CLICK_AIR ) return
129+ if (event.item ?.type != Material .ENDER_CHEST ) return
130+ if (event.player.gameMode != GameMode . SURVIVAL ) return
135131
136132 event.isCancelled = true
137-
138133 instance.server.scheduler.runTask(
139134 instance,
140- Runnable { event.whoClicked .openInventory(event.whoClicked .enderChest) },
135+ Runnable { event.player .openInventory(event.player .enderChest) },
141136 )
142137 }
143138
0 commit comments