From 9b4dcd69fc7409935612b4ec0fd1773b04a0eaa9 Mon Sep 17 00:00:00 2001 From: XiYang6666 <1782356858@qq.com> Date: Sun, 9 Jun 2024 15:01:54 +0800 Subject: [PATCH] :bug: fix can not open interactive block --- .../hashbook/listener/OpenBookListener.kt | 7 ++- .../xyz/xasmc/hashbook/util/BlockUtil.kt | 49 +++++++++++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 src/main/kotlin/xyz/xasmc/hashbook/util/BlockUtil.kt diff --git a/src/main/kotlin/xyz/xasmc/hashbook/listener/OpenBookListener.kt b/src/main/kotlin/xyz/xasmc/hashbook/listener/OpenBookListener.kt index 13351f3..5b1d1b9 100644 --- a/src/main/kotlin/xyz/xasmc/hashbook/listener/OpenBookListener.kt +++ b/src/main/kotlin/xyz/xasmc/hashbook/listener/OpenBookListener.kt @@ -9,6 +9,7 @@ import org.bukkit.inventory.meta.BookMeta import xyz.xasmc.hashbook.HashBook import xyz.xasmc.hashbook.service.ItemDataServices import xyz.xasmc.hashbook.service.StorageServices +import xyz.xasmc.hashbook.util.BlockUtil import xyz.xasmc.hashbook.util.BookUtil import xyz.xasmc.hashbook.util.MessageUtil.debugMiniMessage import xyz.xasmc.hashbook.util.MessageUtil.sendMiniMessage @@ -18,13 +19,15 @@ import xyz.xasmc.hashbook.util.MessageUtil.shortHashMessage class OpenBookListener : Listener { @EventHandler fun onPlayerInteract(event: PlayerInteractEvent) { - if (!(event.action == Action.RIGHT_CLICK_AIR || event.action == Action.RIGHT_CLICK_BLOCK)) return + if (event.action == Action.RIGHT_CLICK_BLOCK && !BlockUtil.checkInteractiveBlock(event.clickedBlock ?: return)) + else if (event.action == Action.RIGHT_CLICK_AIR) + else return val msgTitle = "[HashBook]" val player = event.player val hand = event.hand ?: run { - player.sendMiniMessage("$msgTitle [warn] 无法获取装备槽") + player.debugMiniMessage("$msgTitle [debug] 无法获取装备槽") return@onPlayerInteract } diff --git a/src/main/kotlin/xyz/xasmc/hashbook/util/BlockUtil.kt b/src/main/kotlin/xyz/xasmc/hashbook/util/BlockUtil.kt new file mode 100644 index 0000000..a0f67ea --- /dev/null +++ b/src/main/kotlin/xyz/xasmc/hashbook/util/BlockUtil.kt @@ -0,0 +1,49 @@ +package xyz.xasmc.hashbook.util + +import org.bukkit.Material +import org.bukkit.Tag +import org.bukkit.block.Block + +object BlockUtil { + fun checkInteractiveBlock(block: Block): Boolean { + val type = block.type + if (Tag.WOODEN_DOORS.isTagged(type)) return true + if (Tag.WOODEN_TRAPDOORS.isTagged(type)) return true + if (Tag.FENCE_GATES.isTagged(type)) return true + if (Tag.BUTTONS.isTagged(type)) return true + if (Tag.ANVIL.isTagged(type)) return true + if (Tag.ALL_SIGNS.isTagged(type)) return true + if (Tag.BEDS.isTagged(type)) return true + if (Tag.SHULKER_BOXES.isTagged(type)) return true + + when (type) { + Material.CRAFTING_TABLE -> return true + Material.STONECUTTER -> return true + Material.CARTOGRAPHY_TABLE -> return true + Material.SMITHING_TABLE -> return true + Material.BLAST_FURNACE -> return true + Material.SMOKER -> return true + Material.FURNACE -> return true + Material.GRINDSTONE -> return true + Material.LOOM -> return true + Material.NOTE_BLOCK -> return true + Material.ENCHANTING_TABLE -> return true + Material.BREWING_STAND -> return true + Material.BELL -> return true + Material.BEACON -> return true + Material.LECTERN -> return true + Material.CHISELED_BOOKSHELF -> return true + Material.CHEST -> return true + Material.TRAPPED_CHEST -> return true + Material.BARREL -> return true + Material.ENDER_CHEST -> return true + Material.LEVER -> return true + Material.REPEATER -> return true + Material.COMPARATOR -> return true + Material.DISPENSER -> return true + Material.DROPPER -> return true + else -> {} + } + return false + } +} \ No newline at end of file