--ROCCIA minetest.register_alias("desert_roccia_1","desert_roccia") minetest.register_alias("roccia_1","roccia") minetest.register_node("summer:roccia_1", { description = "Roccia", drawtype = "mesh", mesh = "roccia.obj", tiles = {"roccia.png"}, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, walkable = true, groups = {cracky = 3, stone = 1}, drop = '"summer:pietra" 5', selection_box = { type = "fixed", fixed = { -0.5, -0.5,-0.5, 0.5,0.1, 0.5 }, }, on_place = function(itemstack, placer, pointed_thing) -- place a random pebble node local stack = ItemStack("summer:roccia_"..math.random(1,2)) local ret = minetest.item_place(stack, placer, pointed_thing) return ItemStack("summer:roccia_1 "..itemstack:get_count()-(1-ret:get_count())) end,--legacy_mineral = true, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("summer:desert_roccia_1", { description = "Desert Roccia", drawtype = "mesh", mesh = "desert_roccia.obj", tiles = {"desert_roccia.png"}, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, walkable = true, groups = {cracky = 3, stone = 1}, drop = '"summer:desert_pietra" 5', selection_box = { type = "fixed", fixed = { -0.5, -0.5,-0.5, 0.5,0.1, 0.5 }, }, on_place = function(itemstack, placer, pointed_thing) -- place a random pebble node local stack = ItemStack("summer:desert_roccia_"..math.random(1,2)) local ret = minetest.item_place(stack, placer, pointed_thing) return ItemStack("summer:desert_roccia_1 "..itemstack:get_count()-(1-ret:get_count())) end, --legacy_mineral = true, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("summer:roccia_2", { description = "Roccia", drawtype = "mesh", mesh = "roccia.obj", tiles = {"roccia.png"}, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, walkable = true, groups = {cracky=3, stone=1, not_in_creative_inventory=1}, drop = '"summer:pietra" 5', selection_box = { type = "fixed", fixed = { -0.5, -0.5,-0.5, 0.5,0.1, 0.5 }, }, --legacy_mineral = true, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("summer:desert_roccia_2", { description = "Desert Roccia", drawtype = "mesh", mesh = "desert_roccia.obj", tiles = {"desert_roccia.png"}, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, walkable = true, groups = {cracky=3, stone=1, not_in_creative_inventory=1}, drop = '"summer:desert_pietra" 5', selection_box = { type = "fixed", fixed = { -0.5, -0.5,-0.5, 0.5,0.1, 0.5 }, }, --legacy_mineral = true, sounds = default.node_sound_stone_defaults(), }) --MAPGEN minetest.register_on_generated(function(minp, maxp, seed) if maxp.y >= 2 and minp.y <= 0 then -- Generate roccias local perlin1 = minetest.get_perlin(329, 3, 0.6, 100) -- Assume X and Z lengths are equal local divlen = 16 local divs = (maxp.x-minp.x)/divlen+1; for divx=0,divs-1 do for divz=0,divs-1 do local x0 = minp.x + math.floor((divx+0)*divlen) local z0 = minp.z + math.floor((divz+0)*divlen) local x1 = minp.x + math.floor((divx+1)*divlen) local z1 = minp.z + math.floor((divz+1)*divlen) -- Determine roccia amount from perlin noise local roccia_amount = math.floor(perlin1:get2d({x=x0, y=z0}) ^ 2 * 2) -- Find random positions for roccias based on this random local pr = PseudoRandom(seed+1) for i=0,roccia_amount do local x = pr:next(x0, x1) local z = pr:next(z0, z1) -- Find ground level (0...15) local ground_y = nil for y=30,0,-1 do if minetest.get_node({x=x,y=y,z=z}).name ~= "air" then ground_y = y break end end if ground_y then local p = {x=x,y=ground_y+1,z=z} local nn = minetest.get_node(p).name -- Check if the node can be replaced if minetest.registered_nodes[nn] and minetest.registered_nodes[nn].buildable_to then nn = minetest.get_node({x=x,y=ground_y,z=z}).name -- If desert sand, add dry shrub if nn == "default:dirt_with_grass" then minetest.set_node(p,{name="summer:roccia_"..pr:next(1,2), param2=math.random(0,3)}) elseif nn == "default:desert_sand" then minetest.set_node(p,{name="summer:desert_roccia_"..pr:next(1,2), param2=math.random(0,3)}) end end end end end end end end) --craft PIETRA minetest.register_craft({ output = '"summer:pietraA" 2', recipe = { { "", "", "" }, { "", "", "" }, { "summer:pietra", "summer:desert_pietra", "" }, }, }) minetest.register_craft({ output = '"summer:pietraP" 2', recipe = { { "", "", "" }, { "", "", "" }, { "summer:pietraA", "summer:desert_pietra", "" }, }, }) --craftitem PIETRA minetest.register_craftitem("summer:desert_pietra", { description = "Desert Pietra", inventory_image = "desert_pietra.png", }) minetest.register_craftitem("summer:pietraA", { description = "pietraA", inventory_image = "pietraA.png", }) minetest.register_craftitem("summer:pietra", { description = "pietra", inventory_image = "pietra.png", }) minetest.register_craftitem("summer:pietraP", { description = "pietraP", inventory_image = "pietraP.png", }) -- craftitem MATTONE