code: public void updateBaseTile (int fqTileId, int tx, int ty)
      {
          String errmsg = null;
          int tidx = index(tx, ty);
  
          // this is a bit magical: we pass the fully qualified tile id to
          // the tile manager which loads up from the configured tileset
          // repository the appropriate tileset (which should be a
          // BaseTileSet) and then extracts the appropriate base tile (the
          // index of which is also in the fqTileId)
          try {
              if (fqTileId <= 0) {
                  _base[tidx] = null;
              } else {
                  _base[tidx] = (BaseTile)_tileMgr.getTile(fqTileId);
              }
              // clear out the fringe (it must be recomputed by the caller)
              _fringe[tidx] = null;
  
          } catch (ClassCastException cce) {
              errmsg = "Scene contains non-base tile in base layer";
          } catch (NoSuchTileSetException nste) {
              errmsg = "Scene contains non-existent tileset";
          }
  
          if (errmsg != null) {
              log.warning(errmsg + " [fqtid=" + fqTileId +
                          ", x=" + tx + ", y=" + ty + "].");
          }
      }
docs: Informs this scene block that the specified base tile has been
  changed.