<!-- RUBY-BACKUP · part 255 -->
d(block);
      if(!window._solidBlocks) window._solidBlocks = [];
      window._solidBlocks.push(block);
      if(typeof window.trackNewThing === 'function')
        window.trackNewThing('grass block', gx, gy + size/2, gz);
      if(typeof codeStatus === 'function') codeStatus('grass block raised — green and solid');
    }catch(e){ if(typeof codeStatus === 'function') codeStatus('grass failed: ' + e.message); }
    return;
  }
  if(tl==='cloud9'){
    try{
      moveSpawnTo(8, 9);
      if(typeof codeStatus === 'function') codeStatus('Cloud 9 — LAT 9, LON 8');
    }catch(e){}
    return;
  }
  if(tl==='clearnature'){
    if(!window._isAdmin) return;
    try{
      var toRemove = [];
      scene.traverse(function(o){ if(o.userData && o.userData.nature) toRemove.push(o); });
      toRemove.forEach(function(o){ scene.remove(o); });
      if(typeof codeStatus === 'function') codeStatus(toRemove.length + ' nature cleared by admin');
    }catch(e){}
    return;
  }
  if(tl==='whatsnew'){
    /* Show what's new since last check */
    try{
      var log = [];
      try{ log = JSON.parse(localStorage.getItem('ruby-newthings') || '[]'); }catch(e){}
      if(log.length === 0){
        if(typeof codeStatus === 'function') codeStatus('nothing new');
      } else {
        var out = ['--- NEW THINGS (' + log.length + ') ---'];
        log.slice(-10).forEach(function(e){
          out.push(e.when + ' ' + e.what + ' LAT ' + e.lat + ' LON ' + e.lon);
        });
        if(typeof codeStatus === 'function') codeStatus(out.join('\n'));
      }
    }catch(e){}
    return;
  }
  if(tl==='clearnew'){
    try{ localStorage.setItem('ruby-newthings', '[]'); }catch(e){}
    return;
  }
  if(tl==='whatshere'){
    /* What's at this lat/lon? */
    try{
      var parts = (ec.rest || '').split(' ');
      var lat = parseFloat(parts[0]), lon = parseFloat(parts[1]);
      if(!isFinite(lat) || !isFinite(lon)){
        if(typeof codeStatus === 'function') codeStatus('usage: whatshere <lat> <lon>');
        return;
      }
      var out = ['LAT ' + lat + ' LON ' + lon + ':'];
      /* Ground height */
      try{ out.push('ground: ' + fortifiedGroundY(lon, lat).toFixed(2)); }catch(e){}
      /* Nearby solid blocks with height and depth */
      var near = [];
      if(window._solidBlocks){
        window._solidBlocks.forEach(function(b, i){
          var dx = b.position.x - lon, dz = b.position.z - lat;
          var d = Math.sqrt(dx*dx + dz*dz);
          if(d < 10){
            var bh = b.position.y.toFixed(1);
            var bg = 0;
            try{ bg = fortifiedGroundY(b.position.x, b.position.z); }catch(e){}
            var bd = (b.position.y - bg).toFixed(1);
            near.push('block ' + i + ' HGT ' + bh + ' DEP ' + bd + ' (' + d.toFixed(1) + ' away)');
          }
        });
      }
      out.push(near.length > 0 ? near.join('\n') : 'no blocks near');
      /* Words */
      if(typeof wordsForPosition === 'function')
        out.push('words: ' + wordsForPosition(lon, lat));
      if(typeof codeStatus === 'function') codeStatus(out.join('\n'));
    }catch(e){}
    return;
  }
  /* ===== WORLD SIGHT — all sixteen ===== */
  function findRoads(){
    var roads = [];
    scene.traverse(function(o){
      if(o.isMesh && o.geometry && o.geometry.type === 'BoxGeometry'){
        var p = o.geometry.parameters;
        if(p && ((p.width > 20 && p.height < 2) || (p.depth > 20 && p.height < 2))){
          roads.push({x: o.position.x, z: o.position.z, w: p.width, d: p.depth});
        }
      }
    });
    return roads;
  }
  if(tl==='protectroads'){
    try{
      var rds = findRoads();
      rds.forEach(function(r){
        var rad = Math.max(r.w, r.d) / 2 + 5;
        window.addRespectZone(r.x, r.z, rad);
      });
      if(typeof codeStatus === 'function') codeStatus(rds.length + ' roads protected');
    }catch(e){}
    return;
  }
  if(tl==='census'){
    try{
      var counts = {trees: 0, rocks: 0, bushes: 0, flowers: 0, grass: 0, blocks: 0, buildings: 0};
      scene.traverse(function(o){
        if(o.userData && o.userData.natureType){
          var t = o.userData.natureType;
          if(counts[t] !== undefined) counts[t]++;
        }
        if(o.userData && o.userData.solid) counts.blocks++;
      });
      var out = ['--- CENSUS ---'];
      Object.keys(counts).forEach(function(k){ out.push(k + ': ' + counts[k]); });
      if(typeof codeStatus === 'function') codeStatus(out.join('\n'));
    }catch(e){}
    return;
  }
  if(tl==='findempty'){
    try{
      var found = [];
      for(var ex = -500; ex <= 500 && found.length < 5; ex += 50){
        for(var ez = -500; ez <= 500 && found.length < 5; ez += 50){
          if(ex === 0 || ez === 0) continue;
          if(typeof inRespectZone === 'function' && inRespectZone(ex, ez)) continue;
          if(typeof window.isWater === 'function' && window.isWater(ex, ez)) continue;
          var clear = true;
          scene.traverse(function(o){
        