Solved Disable explosion block damage

Discussion in 'Plugin Development' started by MatsExe, Aug 14, 2016.

Thread Status:
Not open for further replies.
  1. Offline

    MatsExe

    Hello Bukkit,

    I have been trying to create a grenade plugin, but it should not cause any damage to block around it when it explodes. The grenade throwing works, but it breaks blocks around it. Clearing the blocklist and cancelling the EntityExlodeEvent haven't worked (maybe because I am using the createExplosion method from Bukkit?).

    Code:
    @EventHandler
        public void onGrenadeExplode(EntityExplodeEvent event) {
            event.blockList().clear();
            event.setCancelled(true);
        }
    
    @EventHandler
        public void onPlayerInteract(PlayerInteractEvent event) {
            Player player = event.getPlayer();
       
            if (player.getItemInHand().getType() == Material.TNT) {
                event.setCancelled(true);
           
                if (event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_BLOCK) {
                    Item item = player.getWorld().dropItem(player.getEyeLocation(), new ItemStack(Material.TNT));
                    int slot = player.getInventory().getHeldItemSlot();
               
                    item.setPickupDelay(10000);
               
                    //Throw the grenade further when the player is sprinting
                    if (player.isSprinting()) {
                        item.setVelocity(player.getEyeLocation().getDirection().multiply(1.25));
                    } else {
                        item.setVelocity(player.getEyeLocation().getDirection());
                    }
               
                    player.getInventory().setItem(slot, new ItemStack(Material.AIR));
               
                    new BukkitRunnable() {
                   
                        public void run() {
                            player.getWorld().createExplosion(item.getLocation(), 3);
                       
                            item.remove();
                        }
                    }.runTaskLater(plugin, 80);
                }
            }
        }
    Is there any other way to disable block damage?
     
  2. Offline

    bcohen9685

    Code:
    World.createExplosion(double x, double y, double z, float power, boolean setFire, boolean breakBlocks)
     
    MCMastery likes this.
  3. Offline

    MatsExe

    Thank you, that worked ;)
     
Thread Status:
Not open for further replies.

Share This Page