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."); } }}
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);}
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([]);}