Dokładnie, tworzysz wszystkie obiekty naraz. A do tego konstrukcja if instance_create(...) - działa, ponieważ instance_create zwraca ID NOWEGO obiektu, zatem tworzy nowe obiekty tak czy inaczej. Najlepiej zrób to na zasadzie tablic:
GML (Create)
blockTypes[0] = obj_grass;
blockTypes[1] = obj_dirt;
blockTypes[2] = obj_stone;
blockTypes[3] = obj_cobelstone;
blockTypes[4] = obj_wood;
// itd...</span>
A następnie...
GML (MouseGlobalRightPressed)
var _x = (mouse_x div 32)*32,
_y = (mouse_y div 32)*32;
with(instance_create(_x, _y, blockTypes[image_index])) {
if(!place_free(x, y)) instance_destroy();
}