Так, улучши чтобы и вверх, и в низ там всё убирало (я имею про высоту)
// USSRRocket.java
package com.yourname.rocketplugin;

import org.bukkit.*;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;

import java.util.HashSet;
import java.util.Set;

/**
 * Класс, представляющий ракету СССР с особыми эффектами взрыва.
 */
public class USSRRocket extends Rocket {

    /**
     * Конструктор USSRRocket.
     *
     * @param launcher Игрок, запустивший ракету.
     * @param type     Тип ракеты.
     * @param target   Целевая локация.
     * @param plugin   Главный плагин.
     */
    public USSRRocket(Player launcher, RocketType type, Location target, RocketPlugin plugin) {
        super(launcher, type, target, plugin);
    }

    @Override
    protected void explode() {
        final World world = this.target.getWorld();
        if (world == null) {
            this.launcher.sendMessage("§cОшибка: Целевая локация не найдена.");
            return;
        }

        performUSSRExplosion(world);
    }

    /**
     * Выполняет специализированный взрыв для ракеты СССР.
     *
     * @param world Мир, в котором происходит взрыв.
     */
    private void performUSSRExplosion(World world) {
        final Location center = this.target.clone();
        final double radiusX = 64.0; // Полуразмер по X (итого 512)
        final double radiusY = 16.0; // Полуразмер по Y (итого 256)
        final double radiusZ = 64.0; // Полуразмер по Z (итого 512)

        // Создаем визуальные эффекты взрыва
        world.spawnParticle(this.type.getExplosionParticle(), center, 1000, radiusX / 100, radiusY / 100, radiusZ / 100, 0.05);
        world.playSound(center, this.type.getExplosionSound(), 10.0F, 1.0F);

        // Обработка большого количества блоков по частям для оптимизации
        new BukkitRunnable() {
            private int currentX = (int) (center.getX() - radiusX);
            private final int endX = (int) (center.getX() + radiusX);
            private final int step = 50; // Количество блоков по X для обработки за тик
            private final Set<Block> affectedBlocks = new HashSet<>();

            @Override
            public void run() {
                for (int x = currentX; x < currentX + step && x <= endX; x++) {
                    for (int y = (int) (center.getY() - radiusY); y <= (int) (center.getY() + radiusY); y++) {
                        for (int z = (int) (center.getZ() - radiusZ); z <= (int) (center.getZ() + radiusZ); z++) {
                            Location blockLoc = new Location(world, x, y, z);
                            double dx = (blockLoc.getX() - center.getX()) / radiusX;
                            double dy = (blockLoc.getY() - center.getY()) / radiusY;
                            double dz = (blockLoc.getZ() - center.getZ()) / radiusZ;
                            double distance = Math.sqrt(dx * dx + dy * dy + dz * dz);
                            if (distance <= 1.0) {
                                Block block = world.getBlockAt(blockLoc);
                                if (!affectedBlocks.contains(block) && block.getType().isSolid()) {
                                    // Устанавливаем блок в огонь
                                    block.setType(Material.AIR, false);
                                    affectedBlocks.add(block);
                                }
                            }
                        }
                    }
                }
                currentX += step;
                // Добавляем огненные частицы
                world.spawnParticle(Particle.FLAME, center, 1000, radiusX / 100, radiusY / 100, radiusZ / 100, 0.05);
                world.spawnParticle(Particle.LAVA, center, 500, radiusX / 100, radiusY / 100, radiusZ / 100, 0.02);

                // Проверяем завершение
                if (currentX > endX) {
                    this.cancel();
                    world.playSound(center, Sound.ENTITY_GENERIC_EXPLODE, 10.0F, 1.0F);
                    world.createExplosion(center, 0.0F, false, false); // Визуальный эффект без разрушения
                    Bukkit.broadcastMessage("§cРакета СССР взорвалась, всё вокруг в огне!");
                }
            }
        }.runTaskTimer(this.plugin, 0L, 1L); // Запускаем с задержкой 0 тиков и периодом 1 тик
    }
}