From 05a2e3b806ebd3f4159f54ad468e339440bf08cf Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Wed, 8 Apr 2026 18:51:19 +0200 Subject: [PATCH] fix singularity click --- .../metaldetector/MetalDetectorListener.java | 54 ------------------- .../registries/items/tools/MetalDetector.java | 41 ++++++++++++++ .../core/listeners/InteractListener.java | 4 +- 3 files changed, 42 insertions(+), 57 deletions(-) diff --git a/src/main/java/fr/openmc/core/features/dream/mecanism/metaldetector/MetalDetectorListener.java b/src/main/java/fr/openmc/core/features/dream/mecanism/metaldetector/MetalDetectorListener.java index d3d17e093..4988d0b2d 100644 --- a/src/main/java/fr/openmc/core/features/dream/mecanism/metaldetector/MetalDetectorListener.java +++ b/src/main/java/fr/openmc/core/features/dream/mecanism/metaldetector/MetalDetectorListener.java @@ -1,32 +1,16 @@ package fr.openmc.core.features.dream.mecanism.metaldetector; import fr.openmc.core.OMCPlugin; -import fr.openmc.core.features.dream.DreamUtils; -import fr.openmc.core.features.dream.events.MetalDetectorLootEvent; import fr.openmc.core.features.dream.generation.DreamBiome; -import fr.openmc.core.registry.loottable.CustomLootTable; -import fr.openmc.core.utils.LocationUtils; -import fr.openmc.core.utils.messages.MessageType; -import fr.openmc.core.utils.messages.MessagesManager; -import fr.openmc.core.utils.messages.Prefix; -import net.kyori.adventure.text.Component; -import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.Material; import org.bukkit.World; -import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; -import org.bukkit.event.block.Action; import org.bukkit.event.inventory.InventoryCloseEvent; -import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.inventory.EquipmentSlot; -import org.bukkit.inventory.ItemStack; -import java.util.List; import java.util.Random; import java.util.UUID; @@ -57,44 +41,6 @@ public void onQuit(PlayerQuitEvent event) { hiddenChests.remove(uuid).cancel(); } - @EventHandler - public void onChestClick(PlayerInteractEvent event) { - if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return; - if (event.getHand() != EquipmentSlot.HAND) return; - - Block clicked = event.getClickedBlock(); - if (clicked == null) return; - - if (!DreamUtils.isDreamWorld(event.getClickedBlock().getLocation())) return; - Player player = event.getPlayer(); - UUID uuid = player.getUniqueId(); - if (!hiddenChests.containsKey(uuid)) return; - - if (clicked.getType() == Material.CHEST) { - event.setCancelled(true); - MetalDetectorTask task = hiddenChests.remove(uuid); - task.cancel(); - Location chestLoc = task.getChestLocation(); - - if (LocationUtils.isSameLocation(clicked.getLocation(), chestLoc)) { - event.setCancelled(true); - clicked.setType(Material.MUD); - CustomLootTable lootTable = MetalDetectorManager.METAL_DETECTOR_LOOT_TABLE; - if (lootTable == null) return; - List rewards = lootTable.rollLoots(); - - for (ItemStack item : rewards) { - player.getInventory().addItem(item); - } - - Bukkit.getScheduler().runTask(OMCPlugin.getInstance(), () -> - Bukkit.getServer().getPluginManager().callEvent(new MetalDetectorLootEvent(player, rewards)) - ); - MessagesManager.sendMessage(player, Component.text("Vous avez découvert §e" + rewards.size() + " §fobjet(s) dans vos rêves !"), Prefix.DREAM, MessageType.SUCCESS, false); - } - } - } - @EventHandler public void onInventoryClose(InventoryCloseEvent event) { Player player = (Player) event.getPlayer(); diff --git a/src/main/java/fr/openmc/core/features/dream/registries/items/tools/MetalDetector.java b/src/main/java/fr/openmc/core/features/dream/registries/items/tools/MetalDetector.java index 51aaa320f..d448cfee9 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/items/tools/MetalDetector.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/items/tools/MetalDetector.java @@ -2,21 +2,28 @@ import fr.openmc.core.OMCPlugin; import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.features.dream.events.MetalDetectorLootEvent; +import fr.openmc.core.features.dream.mecanism.metaldetector.MetalDetectorManager; import fr.openmc.core.features.dream.mecanism.metaldetector.MetalDetectorTask; import fr.openmc.core.features.dream.models.registry.items.DreamItem; import fr.openmc.core.features.dream.models.registry.items.DreamRarity; import fr.openmc.core.registry.items.options.UsableItem; +import fr.openmc.core.registry.loottable.CustomLootTable; +import fr.openmc.core.utils.LocationUtils; import fr.openmc.core.utils.messages.MessageType; import fr.openmc.core.utils.messages.MessagesManager; import fr.openmc.core.utils.messages.Prefix; import net.kyori.adventure.text.Component; +import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.World; +import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.ItemStack; +import java.util.List; import java.util.UUID; import static fr.openmc.core.features.dream.mecanism.metaldetector.MetalDetectorListener.findRandomChestLocation; @@ -50,6 +57,40 @@ public ItemStack getVanilla() { return item; } + @Override + public void onRightClick(Player player, PlayerInteractEvent event) { + Block clicked = event.getClickedBlock(); + if (clicked == null) return; + + if (!DreamUtils.isDreamWorld(event.getClickedBlock().getLocation())) return; + UUID uuid = player.getUniqueId(); + if (!hiddenChests.containsKey(uuid)) return; + + if (clicked.getType() == Material.CHEST) { + event.setCancelled(true); + MetalDetectorTask task = hiddenChests.remove(uuid); + task.cancel(); + Location chestLoc = task.getChestLocation(); + + if (LocationUtils.isSameLocation(clicked.getLocation(), chestLoc)) { + event.setCancelled(true); + clicked.setType(Material.MUD); + CustomLootTable lootTable = MetalDetectorManager.METAL_DETECTOR_LOOT_TABLE; + if (lootTable == null) return; + List rewards = lootTable.rollLoots(); + + for (ItemStack item : rewards) { + player.getInventory().addItem(item); + } + + Bukkit.getScheduler().runTask(OMCPlugin.getInstance(), () -> + Bukkit.getServer().getPluginManager().callEvent(new MetalDetectorLootEvent(player, rewards)) + ); + MessagesManager.sendMessage(player, Component.text("Vous avez découvert §e" + rewards.size() + " §fobjet(s) dans vos rêves !"), Prefix.DREAM, MessageType.SUCCESS, false); + } + } + } + @Override public void onSneakClick(Player player, PlayerInteractEvent event) { if (!event.getAction().isRightClick()) return; diff --git a/src/main/java/fr/openmc/core/listeners/InteractListener.java b/src/main/java/fr/openmc/core/listeners/InteractListener.java index 63efe68b5..051b7de55 100644 --- a/src/main/java/fr/openmc/core/listeners/InteractListener.java +++ b/src/main/java/fr/openmc/core/listeners/InteractListener.java @@ -4,7 +4,6 @@ import fr.openmc.core.registry.items.CustomItemRegistry; import fr.openmc.core.registry.items.options.UsableItem; import org.bukkit.entity.Player; -import org.bukkit.event.Event; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; @@ -14,10 +13,9 @@ public class InteractListener implements Listener { - @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + @EventHandler(priority = EventPriority.LOWEST) void onInteract(PlayerInteractEvent event) { Player player = event.getPlayer(); - if (event.useInteractedBlock() == Event.Result.DENY) return; ItemStack itemInHand = player.getInventory().getItemInMainHand(); CustomItem item = CustomItemRegistry.getByItemStack(itemInHand);