From 2e978e540cad502c58a0e24ea19f8aaf1c8731af Mon Sep 17 00:00:00 2001 From: Duane Date: Wed, 6 Jul 2016 00:46:36 -0500 Subject: [PATCH] Adjust tree nodes. Return bucket from sap. --- init.lua | 1 + spec_bomb.lua | 42 ++++++++++++++++++++++++++++++++++++++++++ treegen.lua | 35 ++++++++++++++++++++++++++++------- 3 files changed, 71 insertions(+), 7 deletions(-) create mode 100644 spec_bomb.lua diff --git a/init.lua b/init.lua index 87dc0bb..54890e8 100644 --- a/init.lua +++ b/init.lua @@ -158,6 +158,7 @@ dofile(fun_caves.path .. "/fungal_tree.lua") dofile(fun_caves.path .. "/elixir.lua") dofile(fun_caves.path .. "/wallhammer.lua") dofile(fun_caves.path .. "/mapgen.lua") +dofile(fun_caves.path .. "/spec_bomb.lua") dofile(fun_caves.path .. "/chat.lua") if mobs and mobs.mod == "redo" then diff --git a/spec_bomb.lua b/spec_bomb.lua new file mode 100644 index 0000000..9b71cfe --- /dev/null +++ b/spec_bomb.lua @@ -0,0 +1,42 @@ +local function disintigrate(pos, radius, node_name, user) + local p1 = vector.subtract(pos, radius) + local p2 = vector.add(pos, radius) + local nodes = minetest.find_nodes_in_area(p1, p2, node_name) + for _, node in pairs(nodes) do + if not minetest.is_protected(node, user) then + minetest.remove_node(node) + end + end +end + + +local nodes = {{'fun_caves:pyramid_1', 'default:sandstone_block'},} +for _, node in pairs(nodes) do + local node_name = node[1] + local comp = node[2] or node_name + local node_texture = minetest.registered_items[node_name].tiles + if type(node_texture) == 'table' then + node_texture = node_texture[1] + end + local newnode = fun_caves.clone_node(node_name) + local _, d_name = node_name:match('(.*:)(.*)') + local d_name_u = d_name:gsub("(%l)(%w*)", function(a,b) return string.upper(a)..b end) + newnode.description = d_name_u.." Bomb" + newnode.inventory_image = '[inventorycube{tnt_top.png{'..node_texture..'{tnt_side.png' + newnode.on_punch = function(pos, node, puncher, pointed_thing) + minetest.after(5, function() + disintigrate(pos, 5, node_name, puncher) + minetest.remove_node(pos) + end) + end + minetest.register_node("fun_caves:"..d_name..'_bomb', newnode) + + minetest.register_craft({ + output = "fun_caves:"..d_name..'_bomb', + recipe = { + {"", comp, ""}, + {comp, "tnt:gunpowder", comp}, + {"", comp, ""} + } + }) +end diff --git a/treegen.lua b/treegen.lua index d6445dc..1490ea4 100644 --- a/treegen.lua +++ b/treegen.lua @@ -166,6 +166,27 @@ minetest.register_node("fun_caves:syrup", { sounds = default.node_sound_glass_defaults(), }) +minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv) + local name = itemstack:get_name() + if not (name and name == 'fun_caves:syrup') then + return + end + + local bucket + local index + for i = 1, player:get_inventory():get_size("craft") do + if (old_craft_grid[i]:get_name()):find('^fun_caves:bucket') then + bucket = old_craft_grid[i] + index = i + end + end + if not bucket then + return + end + + craft_inv:set_stack("craft", index, 'bucket:bucket_empty') +end) + newnode = fun_caves.clone_node("default:tree") newnode.description = "Glowing Fungal Wood" newnode.tiles = {"fun_caves_tree.png^vmg_glowing_fungal.png",} @@ -290,24 +311,24 @@ fun_caves.treegen = function(minp, maxp, data, p2data, area, node) if distance < r then if distance % 8 == 7 and wood_1[index3d] < 0.3 then data[ivm] = node['fun_caves:petrified_wood'] - elseif wood_1[index3d] < -0.98 then + elseif wood_1[index3d] < -1.1 then data[ivm] = node['fun_caves:weightless_water'] - elseif wood_1[index3d] < -0.8 then + elseif wood_1[index3d] < -0.9 then data[ivm] = node['air'] - elseif wood_1[index3d] < -0.05 then + elseif wood_1[index3d] < -0.1 then data[ivm] = node['fun_caves:tree'] - elseif wood_1[index3d] < 0.05 then + elseif wood_1[index3d] < 0.1 then data[ivm] = node['air'] - elseif wood_1[index3d] < 0.6 then + elseif wood_1[index3d] < 0.9 then data[ivm] = node['fun_caves:tree'] - elseif wood_1[index3d] < 0.97 then + elseif wood_1[index3d] < 1.3 then data[ivm] = node['fun_caves:ironwood'] else data[ivm] = node['fun_caves:diamondwood'] end if data[ivm] ~= node['air'] and data[ivm] ~= node['fun_caves:weightless_water'] then - if math_random(500) == 1 then + if math_random(100) == 1 then data[ivm] = node['fun_caves:sap'] elseif math_random(1000) == 1 then data[ivm] = node['fun_caves:tree_mineral']