docs: public static void buildGridData(JsonObject json, GridDimensions environmentDimensions, EntityPlayerMP player, String jsonName)
      {
          if (player == null || json == null)
              return;
  
          JsonArray arr = new JsonArray();
          BlockPos pos = new BlockPos(player.posX, player.posY, player.posZ);
          for (int y = environmentDimensions.yMin; y <= environmentDimensions.yMax; y++)
          {
              for (int z = environmentDimensions.zMin; z <= environmentDimensions.zMax; z++)
              {
                  for (int x = environmentDimensions.xMin; x <= environmentDimensions.xMax; x++)
                  {
                      BlockPos p;
                      if( environmentDimensions.absoluteCoords )
                          p = new BlockPos(x, y, z);
                      else
                          p = pos.add(x, y, z);
                      String name = "";
                      IBlockState state = player.world.getBlockState(p);
                      Object blockName = Block.REGISTRY.getNameForObject(state.getBlock());
                      if (blockName instanceof ResourceLocation)
                      {
                          name = ((ResourceLocation)blockName).getResourcePath();
                      }
                      JsonElement element = new JsonPrimitive(name);
                      arr.add(element);
                  }
              }
          }
          json.add(jsonName, arr);
      }