protected boolean isValidPosition(ChunkPosition pos){
Block block = worldCache.getBlock(pos.chunkPosX, pos.chunkPosY, pos.chunkPosZ);
if(!worldCache.isAirBlock(pos.chunkPosX, pos.chunkPosY, pos.chunkPosZ) && !ignoreBlock(block)) {
int meta = worldCache.getBlockMetadata(pos.chunkPosX, pos.chunkPosY, pos.chunkPosZ);
List<ItemStack> droppedStacks;
if(block.canSilkHarvest(drone.worldObj, drone.getFakePlayer(), pos.chunkPosX, pos.chunkPosY, pos.chunkPosZ, meta)) {
droppedStacks = Arrays.asList(new ItemStack[]{getSilkTouchBlock(block, meta)});
} else {
droppedStacks = block.getDrops(drone.worldObj, pos.chunkPosX, pos.chunkPosY, pos.chunkPosZ, meta, 0);
}
for(ItemStack droppedStack : droppedStacks) {