1. The forums will be archived and moved to a read only mode in about 2 weeks (mid march).

Break just fences with explodign tnt [HELP]

Discussion in 'Development' started by Enrico Angelon, Feb 2, 2019.

  1. Enrico Angelon

    Enrico Angelon Spider Jockey

    Messages:
    37
    GitHub:
    herryyt
    How can i break just fence block in one level that i want with tnt?
     
  2. Emirhan Akpınar

    Emirhan Akpınar Slime

    Messages:
    90
    PHP:
    public function onBlockBreak(BlockBreakEvent $event) {
      
    $block $event->getBlock();
      
    $player $event->getPlayer();
      if (
    $player->getLevel()->getFolderName() != "levelname") return;
      if (
    $block->getId() == fenceblockid) {
        if (
    $player->getInventory()->getItemInHand()->getId() == tntid) {
          
    // codes
        
    }else {
          
    $event->setCancelled(true);
          
    $player->sendMessage("You can break fence with only tnt.");
        }
      }
    }
     
  3. Emirhan Akpınar

    Emirhan Akpınar Slime

    Messages:
    90
    Do you want break fence block with only tnt on specific world?
     
  4. Enrico Angelon

    Enrico Angelon Spider Jockey

    Messages:
    37
    GitHub:
    herryyt
    yes, but not with tnt in the hand... i mean tnt placed and exploded
     
  5. DiamondGamer30

    DiamondGamer30 Baby Zombie

    Messages:
    175
    GitHub:
    diamondgamermcpe
    PHP:
    public function onEntityExplode(EntityExplodeEvent $event) {
        
    $level $entity->getLevel();
        
    $targetedLevel Server::getInstance()->getLevelByName("level");
        if(
    $level !== $targetedLevel) {
            return;
        }
        
    $list array_filter($event->getBlockList(), function(Block $block): ?Block {
            return 
    $block->getId() === Block::FENCE $block null;
        });
        
    $list array_filter($list);
        
    $event->setBlockList($list);
    }
     
    OnTheVerge and Enrico Angelon like this.
  6. Enrico Angelon

    Enrico Angelon Spider Jockey

    Messages:
    37
    GitHub:
    herryyt
    can i also remove the drop?
     
  7. DiamondGamer30

    DiamondGamer30 Baby Zombie

    Messages:
    175
    GitHub:
    diamondgamermcpe
    In theory this should work.
    PHP:
    public function onEntityExplode(EntityExplodeEvent $event) {
        
    $level $entity->getLevel();
        
    $targetedLevel Server::getInstance()->getLevelByName("level");
        if(
    $level !== $targetedLevel) {
            return;
        }
        foreach(
    $event->getBlockList() as $block) {
            if(
    $block->getId() === Block::FENCE)
                
    $block->getLevel->setBlock($block->asVector(), new Air());
            }        
        }
        
    $event->setBlockList([]);
    }
     
    Enrico Angelon likes this.
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.