package ljfa.tntutils.handlers;

import java.util.List;
import java.util.function.Predicate;

import net.minecraft.block.Block;
import net.minecraft.world.ChunkPosition;
import net.minecraftforge.event.world.ExplosionEvent;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;

public class ExplosionHandler {
    @SubscribeEvent
    public void onExplosionStart(ExplosionEvent.Start event) {
        
    }
    
    @SubscribeEvent
    public void onExplosionDetonate(final ExplosionEvent.Detonate event) {
        if(event.world.isRemote)
            return;
        List<ChunkPosition> blocks = event.getAffectedBlocks();
        blocks.removeIf(new Predicate<ChunkPosition>() {
            @Override
            public boolean test(ChunkPosition pos) {
                Block block = event.world.getBlock(pos.chunkPosX, pos.chunkPosY, pos.chunkPosZ);
                int meta = event.world.getBlockMetadata(pos.chunkPosX, pos.chunkPosY, pos.chunkPosZ);
                return block.hasTileEntity(meta);
            }
        });
    }
}

@@ -43,16 +43,21 @@
 va.util.
+Array
 List;%0Aim
@@ -75,26 +75,12 @@
 til.
-function.Predicate
+List
 ;%0A%0Ai
@@ -580,42 +580,505 @@
 on%3E 
-blocks = event.getAffectedBlocks()
+oldList = event.getAffectedBlocks();%0A        List%3CChunkPosition%3E newList = new ArrayList%3CChunkPosition%3E(oldList.size());%0A        for(ChunkPosition pos: oldList) %7B%0A            Block block = event.world.getBlock(pos.chunkPosX, pos.chunkPosY, pos.chunkPosZ);%0A            int meta = event.world.getBlockMetadata(pos.chunkPosX, pos.chunkPosY, pos.chunkPosZ);%0A            if(!block.hasTileEntity(meta))%0A                newList.add(pos);%0A        %7D%0A        event.explosion.affectedBlockPositions = newList
 ;%0A  
@@ -1083,16 +1083,18 @@
         
+/*
 blocks.r
@@ -1464,32 +1464,32 @@
 ;%0A            %7D%0A
-
         %7D);%0A    
@@ -1483,16 +1483,18 @@
      %7D);
+*/
 %0A    %7D%0A%7D

Not using removeIf here