Fine to hear that you find a workaround laugh

You can get a clever code using data structs. I would use a bidimensional array of a data struct that represents the minimum ground hole size:

Code:
typedef struct SOILDATA
{
   var pos_x;
   var pos_y;
   var pos_z;
   var height;
   ENTITY *mesh;
} SOILDATA;

SOILDATA soilData[GRID_SIZE][GRID_SIZE];
...
SOILDATA *soilTemp = &soilData[coorX][coorY];
ENTITY *entity = ent_create ( "soil.hmp", soilTemp.pos_x, NULL );
soilTemp.mesh = entity;
entity.skill1 = (SOILDATA*)soilTemp;
...
SOILDATA *entSoilData = (SOILDATA*)actualSoilEntity.skill1;