From fcba924ce97bf3fe9d1dc8b1ad673a92b15b94a5 Mon Sep 17 00:00:00 2001 From: 4Evergreen4 Date: Wed, 18 Sep 2013 18:00:48 -0400 Subject: [PATCH] Added stalctites and pebbles --- cave-stuff/depends.txt | 2 + cave-stuff/init.lua | 296 ++++++++++++++++++ .../textures/undergrowth_desert_pebble.png | Bin 0 -> 1203 bytes cave-stuff/textures/undergrowth_pebble.png | Bin 0 -> 1203 bytes 4 files changed, 298 insertions(+) create mode 100644 cave-stuff/depends.txt create mode 100644 cave-stuff/init.lua create mode 100644 cave-stuff/textures/undergrowth_desert_pebble.png create mode 100644 cave-stuff/textures/undergrowth_pebble.png diff --git a/cave-stuff/depends.txt b/cave-stuff/depends.txt new file mode 100644 index 0000000..3a7daa1 --- /dev/null +++ b/cave-stuff/depends.txt @@ -0,0 +1,2 @@ +default + diff --git a/cave-stuff/init.lua b/cave-stuff/init.lua new file mode 100644 index 0000000..e6974bd --- /dev/null +++ b/cave-stuff/init.lua @@ -0,0 +1,296 @@ +--Rocks + +minetest.register_node("cave-stuff:pebble_1",{ + drawtype = "nodebox", + description = "Pebble", + tiles = {"undergrowth_pebble.png"}, + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky=3, stone=1}, + node_box = { + type = "fixed", + fixed = { +-- { left, bottom, front, right, top , back} + {-5/16, -2/16, -3/16, 1/16, -1/16, -1/16}, + {-4/16, -2/16, -4/16, 0 , -1/16, 0 }, +-- { left, bottom, front, right, top , back} + {-7/16, -7/16, -3/16, -6/16, -3/16, 1/16}, + {-6/16, -7/16, -4/16, -5/16, -3/16, 2/16}, + {-5/16, -7/16, -5/16, 3/16, -3/16, 3/16}, + {-4/16, -7/16, -6/16, 1/16, -3/16, -5/16}, + {-3/16, -7/16, 3/16, 3/16, -3/16, 4/16}, + { 0 , -7/16, 4/16, 3/16, -3/16, 5/16}, + { 3/16, -7/16, -4/16, 4/16, -3/16, 5/16}, + { 4/16, -7/16, -3/16, 5/16, -3/16, 4/16}, + { 5/16, -7/16, -1/16, 6/16, -3/16, 2/16}, +-- { left, bottom, front, right, top , back} + {-6/16, -8/16, -3/16, 3/16, -2/16, 0 }, + {-5/16, -8/16, -4/16, 2/16, -2/16, 1/16}, + {-4/16, -8/16, -5/16, 0 , -2/16, 2/16}, + {-2/16, -8/16, -2/16, 4/16, -2/16, 3/16}, + { 0 , -8/16, 3/16, 3/16, -2/16, 4/16}, + { 4/16, -8/16, -1/16, 5/16, -2/16, 2/16}, + }, + }, + selection_box = { + type = "fixed", + fixed = {-7/16, -1/2, -6/16, 6/16, -1/16, 5/16}, + }, + on_place = function(itemstack, placer, pointed_thing) + -- place a random pebble node + local stack = ItemStack("cave-stuff:pebble_"..math.random(1,2)) + local ret = minetest.item_place(stack, placer, pointed_thing) + return ItemStack("cave-stuff:pebble_1 "..itemstack:get_count()-(1-ret:get_count())) + end, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cave-stuff:pebble_2",{ + drawtype = "nodebox", + drop = "cave-stuff:pebble_1", + tiles = {"undergrowth_pebble.png"}, + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky=3, stone=1, not_in_creative_inventory=1}, + node_box = { + type = "fixed", + fixed = { +-- { left, bottom, front, right, top , back} + {-5/16, -1/16, -3/16, 1/16, 0 , -1/16}, + {-4/16, -1/16, -4/16, 0 , 0 , 0 }, +-- { left, bottom, front, right, top , back} + {-7/16, -7/16, -3/16, -6/16, -2/16, 1/16}, + {-6/16, -7/16, -4/16, -5/16, -2/16, 2/16}, + {-5/16, -7/16, -5/16, 3/16, -2/16, 3/16}, + {-4/16, -7/16, -6/16, 1/16, -2/16, -5/16}, + {-3/16, -7/16, 3/16, 3/16, -2/16, 4/16}, + { 0 , -7/16, 4/16, 3/16, -2/16, 5/16}, + { 3/16, -7/16, -4/16, 4/16, -2/16, 5/16}, + { 4/16, -7/16, -3/16, 5/16, -2/16, 4/16}, + { 5/16, -7/16, -1/16, 6/16, -2/16, 2/16}, +-- { left, bottom, front, right, top , back} + {-6/16, -8/16, -3/16, 3/16, -1/16, 0 }, + {-5/16, -8/16, -4/16, 2/16, -1/16, 1/16}, + {-4/16, -8/16, -5/16, 0 , -1/16, 2/16}, + {-2/16, -8/16, -2/16, 4/16, -1/16, 3/16}, + { 0 , -8/16, 3/16, 3/16, -1/16, 4/16}, + { 4/16, -8/16, -1/16, 5/16, -1/16, 2/16}, + }, + }, + selection_box = { + type = "fixed", + fixed = {-7/16, -1/2, -6/16, 6/16, 0, 5/16}, + }, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cave-stuff:desert_pebble_1",{ + drawtype = "nodebox", + description = "Desert Pebble", + tiles = {"default_desert_stone.png"}, + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky=3, stone=1}, + node_box = { + type = "fixed", + fixed = { +-- { left, bottom, front, right, top , back} + {-5/16, -2/16, -3/16, 1/16, -1/16, -1/16}, + {-4/16, -2/16, -4/16, 0 , -1/16, 0 }, +-- { left, bottom, front, right, top , back} + {-7/16, -7/16, -3/16, -6/16, -3/16, 1/16}, + {-6/16, -7/16, -4/16, -5/16, -3/16, 2/16}, + {-5/16, -7/16, -5/16, 3/16, -3/16, 3/16}, + {-4/16, -7/16, -6/16, 1/16, -3/16, -5/16}, + {-3/16, -7/16, 3/16, 3/16, -3/16, 4/16}, + { 0 , -7/16, 4/16, 3/16, -3/16, 5/16}, + { 3/16, -7/16, -4/16, 4/16, -3/16, 5/16}, + { 4/16, -7/16, -3/16, 5/16, -3/16, 4/16}, + { 5/16, -7/16, -1/16, 6/16, -3/16, 2/16}, +-- { left, bottom, front, right, top , back} + {-6/16, -8/16, -3/16, 3/16, -2/16, 0 }, + {-5/16, -8/16, -4/16, 2/16, -2/16, 1/16}, + {-4/16, -8/16, -5/16, 0 , -2/16, 2/16}, + {-2/16, -8/16, -2/16, 4/16, -2/16, 3/16}, + { 0 , -8/16, 3/16, 3/16, -2/16, 4/16}, + { 4/16, -8/16, -1/16, 5/16, -2/16, 2/16}, + }, + }, + selection_box = { + type = "fixed", + fixed = {-7/16, -1/2, -6/16, 6/16, -1/16, 5/16}, + }, + on_place = function(itemstack, placer, pointed_thing) + -- place a random pebble node + local stack = ItemStack("cave-stuff:desert_pebble_"..math.random(1,2)) + local ret = minetest.item_place(stack, placer, pointed_thing) + return ItemStack("cave-stuff:desert_pebble_1 "..itemstack:get_count()-(1-ret:get_count())) + end, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("cave-stuff:desert_pebble_2",{ + drawtype = "nodebox", + drop = "cave-stuff:desert_pebble_1", + tiles = {"default_desert_stone.png"}, + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky=3, stone=1, not_in_creative__inventory=1}, + node_box = { + type = "fixed", + fixed = { +-- { left, bottom, front, right, top , back} + {-5/16, -1/16, -3/16, 1/16, 0 , -1/16}, + {-4/16, -1/16, -4/16, 0 , 0 , 0 }, +-- { left, bottom, front, right, top , back} + {-7/16, -7/16, -3/16, -6/16, -2/16, 1/16}, + {-6/16, -7/16, -4/16, -5/16, -2/16, 2/16}, + {-5/16, -7/16, -5/16, 3/16, -2/16, 3/16}, + {-4/16, -7/16, -6/16, 1/16, -2/16, -5/16}, + {-3/16, -7/16, 3/16, 3/16, -2/16, 4/16}, + { 0 , -7/16, 4/16, 3/16, -2/16, 5/16}, + { 3/16, -7/16, -4/16, 4/16, -2/16, 5/16}, + { 4/16, -7/16, -3/16, 5/16, -2/16, 4/16}, + { 5/16, -7/16, -1/16, 6/16, -2/16, 2/16}, +-- { left, bottom, front, right, top , back} + {-6/16, -8/16, -3/16, 3/16, -1/16, 0 }, + {-5/16, -8/16, -4/16, 2/16, -1/16, 1/16}, + {-4/16, -8/16, -5/16, 0 , -1/16, 2/16}, + {-2/16, -8/16, -2/16, 4/16, -1/16, 3/16}, + { 0 , -8/16, 3/16, 3/16, -1/16, 4/16}, + { 4/16, -8/16, -1/16, 5/16, -1/16, 2/16}, + }, + }, + selection_box = { + type = "fixed", + fixed = {-7/16, -1/2, -6/16, 6/16, 0, 5/16}, + }, + sounds = default.node_sound_stone_defaults(), +}) + +--Staclactites + +minetest.register_node("cave-stuff:stalactite_1",{ + drawtype="nodebox", + tiles = {"undergrowth_pebble.png"}, + groups = {cracky=3,attached_node=1}, + description = "Stalactite", + paramtype = "light", + paramtype2 = "wallmounted", + node_box = { + type = "fixed", + fixed = { + {-0.187500,0.425000,-0.150003,0.162500,0.500000,0.162500}, + {-0.112500,0.162500,-0.100000,0.087500,0.475000,0.087500}, + {-0.062500,-0.275000,-0.062500,0.062500,0.500000,0.062500}, + {-0.037500,-0.837500,0.037500,0.037500,0.500000,-0.025000}, + } + }, + + on_place = function(itemstack, placer, pointed_thing) + local pt = pointed_thing + if minetest.get_node(pt.under).name=="default:stone" + and minetest.get_node({x=pt.under.x, y=pt.under.y-1, z=pt.under.z}).name=="air" + and minetest.get_node({x=pt.under.x, y=pt.under.y-2, z=pt.under.z}).name=="air" then + minetest.set_node({x=pt.under.x, y=pt.under.y-1, z=pt.under.z}, {name="undergrowth:stalactite_"..math.random(1,3)}) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + end + return itemstack + end, +}) + +minetest.register_node("cave-stuff:stalactite_2",{ + drawtype="nodebox", + tiles = {"undergrowth_pebble.png"}, + groups = {cracky=3,attached_node=1,not_in_creative_inventory=1}, + drop = "cave-stuff:stalactite_1", + paramtype = "light", + paramtype2 = "wallmounted", + node_box = { + type = "fixed", + fixed = { + {-0.187500,0.387500,-0.150003,0.162500,0.500000,0.162500}, + {-0.112500,0.112500,-0.100000,0.087500,0.475000,0.087500}, + {-0.062500,-0.675000,-0.062500,0.062500,0.500000,0.062500}, + {-0.037500,-0.975000,0.037500,0.037500,0.500000,-0.025000}, + } + }, +}) + +minetest.register_node("cave-stuff:stalactite_3",{ + drawtype="nodebox", + tiles = {"undergrowth_pebble.png"}, + groups = {cracky=3,attached_node=1,not_in_creative_inventory=1}, + drop = "cave-stuff:stalactite_1", + paramtype = "light", + paramtype2 = "wallmounted", + node_box = { + type = "fixed", + fixed = { + {-0.187500,0.387500,-0.150003,0.162500,0.500000,0.162500}, + {-0.112500,0.037500,-0.100000,0.087500,0.475000,0.087500}, + {-0.062500,-0.437500,-0.062500,0.062500,0.500000,0.062500}, + {-0.037500,-1.237500,0.037500,0.037500,0.500000,-0.025000}, + } + }, +}) + +--Stalagmites + + + + +--Mapgen Stuff + +minetest.register_on_generated(function(minp, maxp, seed) + if maxp.y >= 2 and minp.y <= 0 then + -- Generate pebbles + 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 pebble amount from perlin noise + local pebble_amount = math.floor(perlin1:get2d({x=x0, y=z0}) ^ 2 * 2) + -- Find random positions for pebbles based on this random + local pr = PseudoRandom(seed+1) + for i=0,pebble_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="cave-stuff:pebble_"..pr:next(1,2)}) + elseif nn == "default:desert_sand" then + minetest.set_node(p,{name="cave-stuff:desert_pebble"..pr:next(1,2)}) + end + end + end + + end + end + end + end +end) diff --git a/cave-stuff/textures/undergrowth_desert_pebble.png b/cave-stuff/textures/undergrowth_desert_pebble.png new file mode 100644 index 0000000000000000000000000000000000000000..f85dbbd89441c715a05bf9dbb0460608cd30a36f GIT binary patch literal 1203 zcmZ8gzi-n}5WW|`*l|)fX#+H+2s-cwupqHQ6QvPq6(J;Gqo|Q!C{$q48N`Cb#)dk; z#0C>16MqL{0Ym{2$WPm`6YhKNg_JLP@$=ogyYIete%joud-;=jBJvvR)hqlgVdZT8 zKhvFT@x#7#xn89SelOp@e$Ezmcm2i#qCy!<(Tn{G8y&x~QFA`J#j@?GXA9eGTJ~$# z{k3~LJFUAut=(^J`K|5My*vKx)p}#2dF|2s5|LhMR4-n=u%Jr1JyQG4^AipvODQ}k znQ&EJV`DWY3X_B!%SvAk|1*4Cag3gKv@vzUn6Ura4JgarU&Dw_6mrJKMa>xmbi)x9 zbJ=M!{iQQBFOIh8=OCir99Z#kbiCk96H7oZicQsnUPu-wFf=HGo^54lI7;YLF;Cxn zfpL0HS_xHA9ezQ=J;viP>3lY&7bRok!y!~hFaiMt18(-H4y+t$RG#9{4-sd3b-BGP zuTBurpCC;t1vJzj#wj(>0&+S{3Sosd=mI*E`hqw#j4}n=qGNg6XaI^>5DhEj#9)Yl zI=eVWEAuW5MzLv8+R>;2fOZh4RiyVH{m|TqB1H$hmouN*eUk*&o+@Zk{G+avWvDNE zuF*m>3si)di!LUf2%_WKHL?Pz{(qm+k_;QpVJ}11j}p=dT$*#J$WBlO+N|`sO3Cz# zcMOg|dPj9Y!yr1~Hp;F;m<@;}b`+4kB$Del-vXQv4uPLL1HxD*lcT*N@H9^;faCyX z!rTJ-lHMR3An#HMwr@P*m6W!2)lb^> zd~>vAP4dCb)e=Vhef;w2t@Wgyt=)S81bM21_aA1h)2o!%SG@13$^3NjtGidXu3}~7 zZe{uD&d&Ce3YMR5Z&kJ*F1>tQd9<`zUf;a)YO(;B`Eu#{?Q7?p&@_&n-QC@h1tO71 z&|o+mVl=Xut*Z2TJ@~$_Td|JgfNFvu5J$V+2ETv){vnsO4%?WXnn6097G)5VFfNnH z2!@NP)oQXyCX+_g#miTaw*0bvHgBuDl%j_l}bsloY+Mtv)`z}cm~Ja0Tve*LC{`x z4-4}PLN4PC%c8Js22j)&)gwER0FFtZUaw0`+>cSMR*}o)B++R-0{d4w$>Kx`GX*qT zN0@MJfTfCLh9TcQWaK2?=!;|a@jhMn(jza^mIzexXuI7m41xK4ULFg3rW_p};^Ku% zX9V)$sOTsgjfS}79q7D|djtCdQ}BXN!0KlL{nm?g{PJJm;Xx-t+RtLY8X@Vsn3y~r zCHtgOip8Q>9WBW=1hXIQZFc4~NcWnFNVY<-wn0+m0?jZUJYKS%OZu^emxbSgtMQe0 Pm+3CAY?MCVxc~YO){ius literal 0 HcmV?d00001