b->m_nodenames.emplace_back("mapgen_river_water_source");
b->m_nodenames.emplace_back("mapgen_stone");
b->m_nodenames.emplace_back("ignore");
+ b->m_nodenames.emplace_back("ignore");
+ b->m_nodenames.emplace_back("ignore");
+ b->m_nodenames.emplace_back("ignore");
+ b->m_nodenames.emplace_back("ignore");
m_ndef->pendNodeResolve(b);
add(b);
}
}
- mysrand(pos.Y + (heat + humidity) / 2);
- if (biome_closest_blend &&
+ mysrand(pos.Y + (heat + humidity) * 0.9f);
+ if (biome_closest_blend && dist_min_blend <= dist_min &&
myrand_range(0, biome_closest_blend->vertical_blend) >=
pos.Y - biome_closest_blend->max_pos.Y)
return biome_closest_blend;
heatmap = noise_heat->result;
humidmap = noise_humidity->result;
+
biomemap = new biome_t[m_csize.X * m_csize.Z];
+ // Initialise with the ID of 'BIOME_NONE' so that cavegen can get the
+ // fallback biome when biome generation (which calculates the biomemap IDs)
+ // is disabled.
+ memset(biomemap, 0, sizeof(biome_t) * m_csize.X * m_csize.Z);
}
BiomeGenOriginal::~BiomeGenOriginal()
// Carefully tune pseudorandom seed variation to avoid single node dither
// and create larger scale blending patterns similar to horizontal biome
// blend.
- mysrand(pos.Y + (heat + humidity) / 2);
+ mysrand(pos.Y + (heat + humidity) * 0.9f);
- if (biome_closest_blend &&
+ if (biome_closest_blend && dist_min_blend <= dist_min &&
myrand_range(0, biome_closest_blend->vertical_blend) >=
pos.Y - biome_closest_blend->max_pos.Y)
return biome_closest_blend;
void Biome::resolveNodeNames()
{
- getIdFromNrBacklog(&c_top, "mapgen_stone", CONTENT_AIR);
- getIdFromNrBacklog(&c_filler, "mapgen_stone", CONTENT_AIR);
- getIdFromNrBacklog(&c_stone, "mapgen_stone", CONTENT_AIR);
- getIdFromNrBacklog(&c_water_top, "mapgen_water_source", CONTENT_AIR);
- getIdFromNrBacklog(&c_water, "mapgen_water_source", CONTENT_AIR);
- getIdFromNrBacklog(&c_river_water, "mapgen_river_water_source", CONTENT_AIR);
- getIdFromNrBacklog(&c_riverbed, "mapgen_stone", CONTENT_AIR);
- getIdFromNrBacklog(&c_dust, "ignore", CONTENT_IGNORE);
+ getIdFromNrBacklog(&c_top, "mapgen_stone", CONTENT_AIR, false);
+ getIdFromNrBacklog(&c_filler, "mapgen_stone", CONTENT_AIR, false);
+ getIdFromNrBacklog(&c_stone, "mapgen_stone", CONTENT_AIR, false);
+ getIdFromNrBacklog(&c_water_top, "mapgen_water_source", CONTENT_AIR, false);
+ getIdFromNrBacklog(&c_water, "mapgen_water_source", CONTENT_AIR, false);
+ getIdFromNrBacklog(&c_river_water, "mapgen_river_water_source", CONTENT_AIR, false);
+ getIdFromNrBacklog(&c_riverbed, "mapgen_stone", CONTENT_AIR, false);
+ getIdFromNrBacklog(&c_dust, "ignore", CONTENT_IGNORE, false);
+ getIdFromNrBacklog(&c_cave_liquid, "ignore", CONTENT_IGNORE, false);
+ getIdFromNrBacklog(&c_dungeon, "ignore", CONTENT_IGNORE, false);
+ getIdFromNrBacklog(&c_dungeon_alt, "ignore", CONTENT_IGNORE, false);
+ getIdFromNrBacklog(&c_dungeon_stair, "ignore", CONTENT_IGNORE, false);
}