@Override
  public void receive(byte[] data){
    try{
      ByteArrayInputStream inputBytes = new ByteArrayInputStream(data);
      DataInputStream dataReader = new DataInputStream(inputBytes);

      int otherTimeStep = dataReader.readInt();
      
      // Make sure everyone's timesteps are aligned. 
      if(otherTimeStep > this.timeStep){
        map.adjustTimes(this.timeStep, otherTimeStep);
        this.timeStep = otherTimeStep;
      }

      // Load the other ant's map. 
      WorldMap otherMap = new WorldMap();
      otherMap.deserializeMap(dataReader);

      // Make it match your timestep.
      otherMap.adjustTimes(otherTimeStep, this.timeStep);
      
      // Add the information from the other ant into the current map. 
      map.mergeInto(otherMap);

      // Force a new plan (we assume that we will get new information from
      // mergeInto()
      this.plan = null;
    }catch(IOException e){
      System.err.println("Unable to recieve data!!!");
    }
  }