@@ -295,13 +295,12 @@ function default.make_nyancat(pos, facedir, length)
295295 elseif facedir == 3 then
296296 tailvec .x = - 1
297297 else
298- -- print("default.make_nyancat(): Invalid facedir: "+dump(facedir))
299298 facedir = 0
300299 tailvec .z = 1
301300 end
302301 local p = {x = pos .x , y = pos .y , z = pos .z }
303302 minetest .set_node (p , {name = " default:nyancat" , param2 = facedir })
304- for i = 1 ,length do
303+ for i = 1 , length do
305304 p .x = p .x + tailvec .x
306305 p .z = p .z + tailvec .z
307306 minetest .set_node (p , {name = " default:nyancat_rainbow" , param2 = facedir })
@@ -314,20 +313,16 @@ function generate_nyancats(seed, minp, maxp)
314313 if maxp .y < height_min or minp .y > height_max then
315314 return
316315 end
317- local y_min = math.max (minp .y , height_min )
318- local y_max = math.min (maxp .y , height_max )
319- local volume = (maxp .x - minp .x + 1 )* (y_max - y_min + 1 )* (maxp .z - minp .z + 1 )
320316 local pr = PseudoRandom (seed + 9324342 )
321- local max_num_nyancats = math.floor (volume / (16 * 16 * 16 ))
322- for i = 1 ,max_num_nyancats do
323- if pr :next (0 , 1000 ) == 0 then
324- local x0 = pr :next (minp .x , maxp .x )
325- local y0 = pr :next (minp .y , maxp .y )
326- local z0 = pr :next (minp .z , maxp .z )
327- local p0 = {x = x0 , y = y0 , z = z0 }
328- default .make_nyancat (p0 , pr :next (0 ,3 ), pr :next (3 ,15 ))
329- end
317+ if pr :next (0 , 1200 ) ~= 0 then
318+ return
330319 end
320+
321+ local x0 = pr :next (minp .x , maxp .x )
322+ local y0 = pr :next (minp .y , maxp .y )
323+ local z0 = pr :next (minp .z , maxp .z )
324+ local p0 = {x = x0 , y = y0 , z = z0 }
325+ default .make_nyancat (p0 , pr :next (0 ,3 ), pr :next (3 ,15 ))
331326end
332327
333328minetest .register_on_generated (function (minp , maxp , seed )
@@ -344,7 +339,6 @@ minetest.register_on_generated(function(minp, maxp, seed)
344339
345340 local n_papyrus = minetest .get_perlin (354 , 3 , 0.7 , 100 )
346341 local n_cactus = minetest .get_perlin (230 , 3 , 0.6 , 100 )
347- local sidelen = maxp .x - minp .x + 1
348342
349343 local vm = minetest .get_voxel_manip ()
350344 local emin , emax = vm :read_from_map (minp , maxp )
@@ -354,7 +348,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
354348 local rand = PseudoRandom (seed % 8000 )
355349 for z = minp .z + 2 , maxp .z - 2 , 4 do
356350 for x = minp .x + 2 , maxp .x - 2 , 4 do
357- local papyrus_amount = math.floor (n_papyrus :get2d ({x = x , y = z }) * 9 - 3 )
351+ local papyrus_amount = math.floor (n_papyrus :get2d ({x = x , y = z }) * 6 - 2 )
358352 for i = 1 , papyrus_amount do
359353 local p_pos = {
360354 x = rand :next (x - 2 , x + 2 ),
@@ -368,7 +362,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
368362 end
369363 end
370364
371- local cactus_amount = math.floor (n_cactus :get2d ({x = x , y = z }) * 4 - 2 )
365+ local cactus_amount = math.floor (n_cactus :get2d ({x = x , y = z }) * 3 )
372366 for i = 1 , cactus_amount do
373367 local p_pos = {
374368 x = rand :next (x - 2 , x + 2 ),
@@ -391,7 +385,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
391385 if last == c_grass then
392386 minetest .set_node (p_pos , {name = " default:grass_" .. rand :next (1 , 5 )})
393387 elseif last == c_sand then
394- if rand :next (1 , 5 ) >= 3 then
388+ if rand :next (1 , 5 ) >= 4 then
395389 default .make_cactus (p_pos , rand :next (3 , 4 ))
396390 else
397391 minetest .set_node (p_pos , {name = " default:dry_shrub" })
0 commit comments