From 0b7251fdce8382f108210c366f20b2361fe1235f Mon Sep 17 00:00:00 2001 From: LeMagnesium Date: Mon, 30 Mar 2015 20:54:58 +0200 Subject: [PATCH] Added all cherry things from Jordach's BFD - Added cherry trees' biomes - Added cherry wooden plank stairs - Added cherry nodes : sapling, log, wood, etc - Added cherry trees' generation system - Added cherry items' crafts --- minetestforfun_game/mods/default/crafting.lua | 9 ++ minetestforfun_game/mods/default/nodes.lua | 89 ++++++++++++ .../default_cherry_blossom_leaves.png | Bin 0 -> 876 bytes .../textures/default_cherry_sapling.png | Bin 0 -> 405 bytes .../default/textures/default_cherry_top.png | Bin 0 -> 849 bytes .../default/textures/default_cherry_tree.png | Bin 0 -> 902 bytes .../textures/default_wood_cherry_planks.png | Bin 0 -> 810 bytes minetestforfun_game/mods/default/trees.lua | 129 +++++++++++++++++- minetestforfun_game/mods/doors/init.lua | 20 +++ .../doors/textures/door_trapdoor_cherry.png | Bin 0 -> 724 bytes .../mods/doors/textures/door_wood_cherry.png | Bin 0 -> 477 bytes .../doors/textures/door_wood_cherry_a.png | Bin 0 -> 448 bytes .../doors/textures/door_wood_cherry_b.png | Bin 0 -> 548 bytes minetestforfun_game/mods/stairs/init.lua | 10 ++ 14 files changed, 256 insertions(+), 1 deletion(-) create mode 100644 minetestforfun_game/mods/default/textures/default_cherry_blossom_leaves.png create mode 100644 minetestforfun_game/mods/default/textures/default_cherry_sapling.png create mode 100644 minetestforfun_game/mods/default/textures/default_cherry_top.png create mode 100644 minetestforfun_game/mods/default/textures/default_cherry_tree.png create mode 100644 minetestforfun_game/mods/default/textures/default_wood_cherry_planks.png create mode 100644 minetestforfun_game/mods/doors/textures/door_trapdoor_cherry.png create mode 100644 minetestforfun_game/mods/doors/textures/door_wood_cherry.png create mode 100644 minetestforfun_game/mods/doors/textures/door_wood_cherry_a.png create mode 100644 minetestforfun_game/mods/doors/textures/door_wood_cherry_b.png diff --git a/minetestforfun_game/mods/default/crafting.lua b/minetestforfun_game/mods/default/crafting.lua index 10757c1d..41dc5469 100644 --- a/minetestforfun_game/mods/default/crafting.lua +++ b/minetestforfun_game/mods/default/crafting.lua @@ -711,6 +711,15 @@ minetest.register_craft({ -- Tool repair (combine 2 tools of the same type in th type = "toolrepair", additional_wear = -0.15, }) +-- From BFD: + +minetest.register_craft({ + output = 'default:cherry_plank 6', + recipe = { + {'default:cherry_log'}, + } +}) + -- Cooking recipes: minetest.register_craft({ diff --git a/minetestforfun_game/mods/default/nodes.lua b/minetestforfun_game/mods/default/nodes.lua index dcee24d5..5570baa7 100644 --- a/minetestforfun_game/mods/default/nodes.lua +++ b/minetestforfun_game/mods/default/nodes.lua @@ -1760,6 +1760,95 @@ minetest.register_node("default:pinewood", { sounds = default.node_sound_wood_defaults(), }) +-- From BFD: Cherry tree + +minetest.register_node("default:cherry_tree", { + description = "Cherry Log", + tiles = {"default_cherry_top.png", "default_cherry_top.png", "default_cherry_tree.png"}, + is_ground_content = false, + groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,flammable=2}, + sounds = default.node_sound_wood_defaults(), + drop = "default:cherry_log" +}) + +minetest.register_node("default:cherry_log", { + description = "Cherry Log", + tiles = {"default_cherry_top.png", "default_cherry_top.png", "default_cherry_tree.png"}, + paramtype2 = "facedir", + is_ground_content = false, + groups = {choppy=2,oddly_breakable_by_hand=1,flammable=2}, + sounds = default.node_sound_wood_defaults(), + on_place = minetest.rotate_node, +}) + +minetest.register_node("default:cherry_sapling", { + description = "Cherry Sapling", + waving = 1, + visual_scale = 1.0, + inventory_image = "default_cherry_sapling.png", + wield_image = "default_cherry_sapling.png", + drawtype = "plantlike", + paramtype = "light", + tiles = {"default_cherry_sapling.png"}, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} + }, + groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("default:cherry_blossom_leaves", { + description = "Cherry Blossom Leaves", + drawtype = "allfaces_optional", + visual_scale = 1.3, + tiles = {"default_cherry_blossom_leaves.png"}, + paramtype = "light", + waving = 1, + is_ground_content = false, + groups = {snappy=3, leafdecay=3, flammable=2, leaves=1}, + drop = { + max_items = 1, + items = { + { + items = {'default:cherry_sapling'}, + rarity = 32, + }, + { + items = {'default:cherry_blossom_leaves'}, + } + } + }, + sounds = default.node_sound_leaves_defaults(), + on_place = function(itemstack, placer, pointed_thing) + -- place a random grass node + local stack = ItemStack("default:cherry_leaves_deco") + local ret = minetest.item_place(stack, placer, pointed_thing) + return ItemStack("default:cherry_blossom_leaves".." "..itemstack:get_count()-(1-ret:get_count())) + end, +}) + +minetest.register_node("default:cherry_leaves_deco", { + description = "Cherry Leaves", + drawtype = "allfaces_optional", + visual_scale = 1.3, + tiles = {"default_cherry_blossom_leaves.png"}, + paramtype = "light", + waving=1, + is_ground_content = false, + groups = {snappy=3, flammable=2, leaves=1}, + sounds = default.node_sound_leaves_defaults(), + drop = {'default:cherry_blossom_leaves'}, +}) + +minetest.register_node("default:cherry_plank", { + description = "Cherry Planks", + tiles = {"default_wood_cherry_planks.png"}, + sounds = default.node_sound_wood_defaults(), + groups = {oddly_breakable_by_hand=1, flammable=1, choppy=3, wood=1}, +}) + if minetest.setting_getbool("xray") then -- Nodes to make partially see-through: minetest.override_item("default:stone_with_coal", {tiles = {"default_mineral_coal.png"}}) diff --git a/minetestforfun_game/mods/default/textures/default_cherry_blossom_leaves.png b/minetestforfun_game/mods/default/textures/default_cherry_blossom_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..0da90269d3f776f3093887861d1e09ee202e3076 GIT binary patch literal 876 zcmV-y1C#uTP)Px#24YJ`L;&9arvTG23!8iZ000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=D z02T^bMYgE`00QhuL_t(I%XN}pY*Td<$3MS&Z+qL?xv>pV@J}>?jASJ8Kzwj$1bmSM z5;bak(H9>~G;uLTwz-`+bdYcvDhj9^3~+^E**JFr&)PrIfQxIPPx4YOwoGWpp#x$?n} z!d=_ zpN(&9Q@4{D6JL$U=C`)1>0{%PAG|>O16=^LZEAMUa`0*^G{$D=e0CE6Q{Rk=5sMP| z0Y;*$4S?#@JRKXl34;)&6lPl-fM_y?Bojy&VqdN_zs93Dxe5}7Xb->GqX3@#e5dLi zct#m!1c3D~Jg#Pbm=HU69SK8}t}$6C0Z_Sg4ST7IX6Q{1irqmVp?2k`>mfF%SD5r9g|2Qod-W-&f(~|;FJUS+G!&7p5HvXH-shkwP z9&PPfW%yDv6l?C`p?yy%0O!^U%b6nOR89bPe7R4}ohit~kr83GMq_%OsiR{8pgA20 zDvQhX9oVa;kB>_^l@tAD9nH|0KldkppZrSz0zV+Ux`=1lD5a?WUThlr+`*Syy5gNl z=1yHCd4Cta?c&@U=aHATD1gFGS|PBAwo z&yLd_ivi%fP1e$htV9w~8jeqWbOx`(Y#qpc5nP}f)VoS4fK308bllfP?}tyT(qLBX z>~%ClBhlH;%3>8n=-L0glEWgU#q)S|8-UH`ZvF+j6k^sHvikl20000QL70(Y)*K0-AbW|YuPggK9%()i!^_VESb;*anIRD+&iT2y zsd*(pE(3#eQEFmIYKlU6W=V#EyQgnJie4%^Q2dRji(`nz>9dn;xehr9xWzYdP4ePC zKY@G6CZ9y*8(kB;ida`qS-Hnapu6D-mz=}w7=`o=7ra=Q*Im_<-pu*W#Bb|_ncw#+ zGS|mfPUxK9mOfAalY+3X!tUH1d+spon7{6bYtojDzPo^uJ3LJ{#J5s}J8&U;Got}?_~ZU2(?^V-$$!>*|k2aNvO&0KapyGZ!}OC+y&&v)mvv4FO#tpOngsv= literal 0 HcmV?d00001 diff --git a/minetestforfun_game/mods/default/textures/default_cherry_top.png b/minetestforfun_game/mods/default/textures/default_cherry_top.png new file mode 100644 index 0000000000000000000000000000000000000000..fdcbf6b085ed8bccd8e5c51cfedc80d41ec1ce23 GIT binary patch literal 849 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 literal 0 HcmV?d00001 diff --git a/minetestforfun_game/mods/default/trees.lua b/minetestforfun_game/mods/default/trees.lua index c146b41c..b7de7872 100644 --- a/minetestforfun_game/mods/default/trees.lua +++ b/minetestforfun_game/mods/default/trees.lua @@ -220,7 +220,7 @@ local function add_snow(data, vi, c_air, c_ignore, c_snow) end end -function default.grow_pinet_ree(pos) +function default.grow_pine_tree(pos) local x, y, z = pos.x, pos.y, pos.z local maxy = y + random(9, 13) -- Trunk top @@ -341,3 +341,130 @@ function default.grow_pinet_ree(pos) vm:write_to_map() vm:update_map() end + +-- From BFD: + +minetest.register_node("default:mg_cherry_sapling", { + description = "Impossible to get node.", + drawtype = "airlike", + paramtype = "light", + tiles = {"xfences_space.png"}, + groups = {not_in_creative_inventory=1}, +}) + +local c_mg_cherry_sapling = minetest.get_content_id("default:mg_cherry_sapling") + +minetest.register_on_generated(function(minp, maxp, seed) + local timer = os.clock() + local vm, emin, emax = minetest.get_mapgen_object("voxelmanip") + local data = vm:get_data() + local area = VoxelArea:new{MinEdge=emin, MaxEdge=emax} + local trees_grown = 0 + for z=minp.z, maxp.z, 1 do + for y=minp.y, maxp.y, 1 do + for x=minp.x, maxp.x, 1 do + local p_pos = area:index(x,y,z) + local content_id = data[p_pos] + if content_id == c_mg_cherry_sapling then + mapgen.grow_tree({x=x, y=y, z=z}, false, "default:cherry_tree", "default:cherry_blossom_leaves") + trees_grown = trees_grown + 1 + else + -- nope + end + end + end + end + local geninfo = string.format(" trees grown after: %.2fs", os.clock() - timer) + print (trees_grown..geninfo) +end) + +function default.grow_cherry_tree(pos, is_apple_tree, trunk_node, leaves_node) + --[[ + NOTE: Tree-placing code is currently duplicated in the engine + and in games that have saplings; both are deprecated but not + replaced yet + --]] + + local x, y, z = pos.x, pos.y, pos.z + local height = random(4, 5) + local c_tree = minetest.get_content_id(trunk_node) + local c_leaves = minetest.get_content_id(leaves_node) + + local vm = minetest.get_voxel_manip() + local minp, maxp = vm:read_from_map( + {x = pos.x - 2, y = pos.y, z = pos.z - 2}, + {x = pos.x + 2, y = pos.y + height + 1, z = pos.z + 2} + ) + local a = VoxelArea:new({MinEdge = minp, MaxEdge = maxp}) + local data = vm:get_data() + + add_trunk_and_leaves(data, a, pos, c_tree, c_leaves, height, 2, 8, is_apple_tree) + + vm:set_data(data) + vm:write_to_map() + vm:update_map() +end + +minetest.register_abm({ + nodenames = {"default:cherry_sapling"}, + interval = 80, + chance = 3, + action = function(pos, node) + + local nu = minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name + local is_soil = minetest.get_item_group(nu, "soil") + + if is_soil == 0 then + return + end + + + minetest.remove_node({x=pos.x, y=pos.y, z=pos.z}) + default.grow_cherry_tree(pos, false, "default:cherry_tree", "default:cherry_blossom_leaves") + end, +}) + +minetest.register_biome({ + name = "cherry_blossom_forest", + node_shore_filler = "default:sand", + node_top = "default:grass", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 3, + node_dust = "air", + node_underwater = "default:gravel", + y_min = 1, + y_max = 40, + heat_point = 50, + humidity_point = 55, +}) + +minetest.register_biome({ + name = "cherry_blossom_forest_floral", + node_shore_filler = "default:sand", + node_top = "default:grass", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 3, + node_dust = "air", + node_underwater = "default:gravel", + y_min = 1, + y_max = 40, + heat_point = 47, + humidity_point = 50, +}) + +minetest.register_biome({ + name = "cherry_blossom_forest_grassy", + node_shore_filler = "default:sand", + node_top = "default:grass", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 3, + node_dust = "air", + node_underwater = "default:gravel", + y_min = 1, + y_max = 42, + heat_point = 55, + humidity_point = 55, +}) diff --git a/minetestforfun_game/mods/doors/init.lua b/minetestforfun_game/mods/doors/init.lua index 82a5b01d..384f37a1 100644 --- a/minetestforfun_game/mods/doors/init.lua +++ b/minetestforfun_game/mods/doors/init.lua @@ -350,6 +350,26 @@ minetest.register_craft({ } }) +-- From BFD: Cherry planks doors + +doors.register_door("doors:door_cherry", { + description = "Cherry Door", + inventory_image = "door_wood_cherry.png", + groups = {choppy=2,oddly_breakable_by_hand=2,flammable=2,door=1}, + tiles_bottom = {"door_wood_cherry_b.png", "default_wood_cherry_planks.png"}, + tiles_top = {"door_wood_cherry_a.png", "default_wood_cherry_planks.png"}, + sounds = default.node_sound_wood_defaults(), + sunlight = false, +}) + +minetest.register_craft({ + output = "doors:door_cherry", + recipe = { + {"default:cherry_plank", "default:cherry_plank"}, + {"default:cherry_plank", "default:cherry_plank"}, + {"default:cherry_plank", "default:cherry_plank"} + } +}) ----trapdoor---- diff --git a/minetestforfun_game/mods/doors/textures/door_trapdoor_cherry.png b/minetestforfun_game/mods/doors/textures/door_trapdoor_cherry.png new file mode 100644 index 0000000000000000000000000000000000000000..048076b4eadb592b0dff7a3eeb4d541671fa446a GIT binary patch literal 724 zcmV;_0xSKAP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L04^f{04^f|c%?sf00007bV*G`2i^%B z4hJpsKe`bB00LA=L_t(I%Z-xVPt#x&#(&)kl6?~G)|JixgJdvSBH&PhKti}NLAfzV zxaSY@pD;1pcw@X(LxM)8#He!-P!dYVHi=!^B@9Zv7_C`ijOXe-=Xu`q@th;9k1x5) zt1EbRe&GNh27(>FXI|X*^P%fl+XsGNEIr&oc=F{HYq>=LJ{|6MVA;7_2wN+U-Kd(x z)T(42&QiC2`GmdA9RT7=l33~*eX{IhwXHIV=`3Q&I7Es#)D4}3jpu^bL1H@Vx^V>n z^IMg!W>9$hp#;Ft-J9;dp(9u_qGefxOq;E0iTmmT`-TpHV9EZwZs=CQ+=EIdjg@bPbggx`HAAJ;w)pZ2X|dN+ZrIc|zeB{mB?O zxRzy6P)BGP0Y<}VLeVgFt^&ARE<_>99rXr7a({b-soaFGu%s%~aG+8p6b%C~m7C~L zpXwQzxPlbvMJ%Wze_h|d%qx~X?nQj3ePtlxP}g*BKe|WDKJ|&^*W2xaM@P)AKJerD z{0w`WJ9LMyv_-6FEi_$Y_vwk?300V%aZC0g07p%YpD&&XUV_5>j9aXf3DhLS$><;p zxjD>um8hBoV59t!!9<#iR2G1KCx(<#{0=-!4J8o0nVO9TQlu^OWGagk>BT#wgcT$j zPx=WwEFsJ71Y_x8OsxtQu17kpH98Jyls{Okrm%15oE=|oVc*ap(y4T<_#S{vTp<&0 ze|V#PW-Yf!V^^nX+VsgX!ut4<`@idJIp+X$Ukbgvy25WkJ@^F=PhJB60000Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RZ3lI(zDAKIs)BpehZ%IT!R5;6p zlRZm9VHC%IT2p$t4XOFEWQ0T!SrJ9i5cG1vAqfhXE*T9K4Gt0AFVGm(-s(r_BiIrR z6%vR`icvV+AtAG#hETlMd#`6X9L@{>-#O3Y!er{ix=5zB>2>!2(D?l^}UKU^}qd07ALbr z@P|US4Y8#e;>U_T!ei}~&GSR@pCwCgUSh|9^vDVT(}OWfKje!zBiyW=h=FjBs2sFJ z@Xf~vY)#oCjLH!dP5tL>dq~aLY+e6CQ%N)KdWHRXLfBoP{?j0t+GgWyx7GIt7pj$C Tv}h~d00000NkvXXu0mjfAwtkI literal 0 HcmV?d00001 diff --git a/minetestforfun_game/mods/doors/textures/door_wood_cherry_a.png b/minetestforfun_game/mods/doors/textures/door_wood_cherry_a.png new file mode 100644 index 0000000000000000000000000000000000000000..9ae237c975d806d1831bb44e867e769e58b71d99 GIT binary patch literal 448 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0WW zg+Z8+Vb&Z8pdfpRr>`sfJ#GO$Mg4a_w;Tit$!3N`lsM<-=BDPA0J#hd&PAz-C8;S2 z<(VZJ3hti10V#T^>_EdcJzX3_EKVo;n11>BUS9AR19Sbqzo`izkeKB5@Gygq44+zL z`oI6R&)@#PUw-djyx=XK^mxsfzNx)yp8a|9_Ww+urKS(sUY=NS;O2KbyY|iNZFV+? z_D5^zyAiUkVn&1GCs`KmzS8aujVI{_=87JkF64z`S3WI^No`u_)Rt~sNlk(9<~#>4aZj`zdHO`0qDvlA4%l{c?Hcl*2iQSKAxoWJoE zRVZwBtzeNTIL5TeDdxe=)6;o;me0SZAW^#GM$Vl#6C9>Yn{tdpBdKBKUehcu7r(+C zOnftI>pp$^?{h*;shTnTfa2z*M~+Gc@Ei~=IKh_8qEw{wz^ir#&om+N^aN07=(mb= k{9w>wJ;ZeD%Dq{P44-B(AB&r(y$TeXp00i_>zopr0DG3W!TPx#32;bRa{vGf6951U69E94oEQKA00(qQO+^RZ3lI(>0)Pv?_BB)yj2_%T34n{)fpkok()SE{NFBmLfeS#Ba!3x*uin0+8Mgaig_d1bDLBveM z0G{K(CZ!C5S38IYqbL<*)dX}cEoGI)Z^d`$Vq=@c%JWFd8F<@8{H9Vt1^^h$MwALN z#EB7LZD@{^Q+ZNOS?j5`ZiN57@y!&g+(9K(n~J)1+hzXsHV_TEnV;Ua6LpVSX%z}_>wSQbGPb`qhV=z z!C(PHM@viDKf%$S=eYU?THxr$4Gz1pq8A2k;5YBF&%9{b5@G0000