mirror of
https://github.com/minetest/minetest.git
synced 2024-11-23 16:13:46 +01:00
Fix MapgenV6::generateCaves possible division by 0 and misc. cosmetic fixes
This commit is contained in:
parent
414f0275cf
commit
c517215bcf
@ -928,20 +928,20 @@ void MapgenV6::growGrass() {
|
|||||||
|
|
||||||
void MapgenV6::defineCave(Cave &cave, PseudoRandom ps,
|
void MapgenV6::defineCave(Cave &cave, PseudoRandom ps,
|
||||||
v3s16 node_min, bool large_cave) {
|
v3s16 node_min, bool large_cave) {
|
||||||
cave.min_tunnel_diameter = 2;
|
cave.min_tunnel_diameter = 2;
|
||||||
cave.max_tunnel_diameter = ps.range(2,6);
|
cave.max_tunnel_diameter = ps.range(2,6);
|
||||||
cave.dswitchint = ps.range(1,14);
|
cave.dswitchint = ps.range(1,14);
|
||||||
cave.flooded = true; //large_cave && ps.range(0,4);
|
cave.flooded = true; //large_cave && ps.range(0,4);
|
||||||
if(large_cave){
|
if (large_cave){
|
||||||
cave.part_max_length_rs = ps.range(2,4);
|
cave.part_max_length_rs = ps.range(2,4);
|
||||||
cave.tunnel_routepoints = ps.range(5, ps.range(15,30));
|
cave.tunnel_routepoints = ps.range(5, ps.range(15,30));
|
||||||
cave.min_tunnel_diameter = 5;
|
cave.min_tunnel_diameter = 5;
|
||||||
cave.max_tunnel_diameter = ps.range(7, ps.range(8,24));
|
cave.max_tunnel_diameter = ps.range(7, ps.range(8,24));
|
||||||
} else {
|
} else {
|
||||||
cave.part_max_length_rs = ps.range(2,9);
|
cave.part_max_length_rs = ps.range(2,9);
|
||||||
cave.tunnel_routepoints = ps.range(10, ps.range(15,30));
|
cave.tunnel_routepoints = ps.range(10, ps.range(15,30));
|
||||||
}
|
}
|
||||||
cave.large_cave_is_flat = (ps.range(0,1) == 0);
|
cave.large_cave_is_flat = (ps.range(0,1) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1120,7 +1120,13 @@ void MapgenV6::generateCaves(int max_stone_y) {
|
|||||||
rp.Z = ar.Z-1;
|
rp.Z = ar.Z-1;
|
||||||
vec = rp - orp;
|
vec = rp - orp;
|
||||||
|
|
||||||
for(float f=0; f<1.0; f+=1.0/vec.getLength())
|
float veclen = vec.getLength();
|
||||||
|
// As odd as it sounds, veclen is *exactly*
|
||||||
|
// 0.0 sometimes, causing a FPE
|
||||||
|
if (veclen == 0.0)
|
||||||
|
veclen = 1.0;
|
||||||
|
|
||||||
|
for(float f=0; f<1.0; f+=1.0/veclen)
|
||||||
{
|
{
|
||||||
v3f fp = orp + vec * f;
|
v3f fp = orp + vec * f;
|
||||||
fp.X += 0.1*ps.range(-10,10);
|
fp.X += 0.1*ps.range(-10,10);
|
||||||
|
@ -822,6 +822,7 @@ private:
|
|||||||
std::map<std::string, content_t> m_name_id_mapping_with_aliases;
|
std::map<std::string, content_t> m_name_id_mapping_with_aliases;
|
||||||
// A mapping from groups to a list of content_ts (and their levels)
|
// A mapping from groups to a list of content_ts (and their levels)
|
||||||
// that belong to it. Necessary for a direct lookup in getIds().
|
// that belong to it. Necessary for a direct lookup in getIds().
|
||||||
|
// Note: Not serialized.
|
||||||
std::map<std::string, GroupItems> m_group_to_items;
|
std::map<std::string, GroupItems> m_group_to_items;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -727,7 +727,7 @@ static int l_register_ore(lua_State *L)
|
|||||||
|
|
||||||
if (ore->clust_scarcity <= 0 || ore->clust_num_ores <= 0) {
|
if (ore->clust_scarcity <= 0 || ore->clust_num_ores <= 0) {
|
||||||
errorstream << "register_ore: clust_scarcity and clust_num_ores"
|
errorstream << "register_ore: clust_scarcity and clust_num_ores"
|
||||||
"must be greater than 0";
|
" must be greater than 0" << std::endl;
|
||||||
delete ore;
|
delete ore;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user