Fix error when removing doors with a chainsaw.
This commit is contained in:
parent
7b6de7195c
commit
9c121b4c09
2 changed files with 86 additions and 57 deletions
6
init.lua
6
init.lua
|
@ -204,11 +204,7 @@ dofile(fun_caves.path .. "/fungal_tree.lua")
|
||||||
dofile(fun_caves.path .. "/wallhammer.lua")
|
dofile(fun_caves.path .. "/wallhammer.lua")
|
||||||
dofile(fun_caves.path .. "/mapgen.lua")
|
dofile(fun_caves.path .. "/mapgen.lua")
|
||||||
dofile(fun_caves.path .. "/wooden_buckets.lua")
|
dofile(fun_caves.path .. "/wooden_buckets.lua")
|
||||||
|
dofile(fun_caves.path .. "/tools.lua")
|
||||||
if minetest.get_modpath('tnt') then
|
|
||||||
dofile(fun_caves.path .. "/spec_bomb.lua")
|
|
||||||
end
|
|
||||||
|
|
||||||
dofile(fun_caves.path .. "/elixir.lua") -- must go after all items are registered
|
dofile(fun_caves.path .. "/elixir.lua") -- must go after all items are registered
|
||||||
dofile(fun_caves.path .. "/chat.lua")
|
dofile(fun_caves.path .. "/chat.lua")
|
||||||
|
|
||||||
|
|
|
@ -25,72 +25,74 @@ local function floor(pos, blocks, node_name, user_name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
-- Floor bombs
|
if minetest.get_modpath('tnt') then
|
||||||
local nodes = {{'default:sandstone', 'default:sandstone_block'}, {'default:wood', 'fun_caves:wood_block'}, {'default:stone', 'default:stone_block'},}
|
-- Floor bombs
|
||||||
for _, node in pairs(nodes) do
|
local nodes = {{'default:sandstone', 'default:sandstone_block'}, {'default:wood', 'fun_caves:wood_block'}, {'default:stone', 'default:stone_block'},}
|
||||||
local node_name = node[1]
|
for _, node in pairs(nodes) do
|
||||||
local comp = node[2] or node_name
|
local node_name = node[1]
|
||||||
if not minetest.registered_items[node_name] or (not minetest.registered_items[comp] and not comp:find('^fun_caves')) then
|
local comp = node[2] or node_name
|
||||||
break
|
if not minetest.registered_items[node_name] or (not minetest.registered_items[comp] and not comp:find('^fun_caves')) then
|
||||||
end
|
break
|
||||||
|
|
||||||
local node_texture = minetest.registered_items[node_name].tiles
|
|
||||||
if type(node_texture) == 'table' then
|
|
||||||
node_texture = node_texture[1]
|
|
||||||
end
|
|
||||||
local _, d_name = node_name:match('(.*:)(.*)')
|
|
||||||
local bomb_name = "fun_caves:"..d_name..'_floor_bomb'
|
|
||||||
local d_name_u = d_name:gsub("(%l)(%w*)", function(a,b) return string.upper(a)..b end)
|
|
||||||
|
|
||||||
local newnode = fun_caves.clone_node(node_name)
|
|
||||||
newnode.description = d_name_u.." Floor Bomb"
|
|
||||||
newnode.inventory_image = '[inventorycube{'..node_texture..'{'..node_texture..'{'..node_texture..'^fun_caves_expand.png'
|
|
||||||
newnode.drop = bomb_name
|
|
||||||
newnode.on_punch = function(pos, node, puncher, pointed_thing)
|
|
||||||
if not (pos and puncher) then
|
|
||||||
return
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local wield = puncher:get_wielded_item()
|
local node_texture = minetest.registered_items[node_name].tiles
|
||||||
if not wield or wield:get_name() ~= "default:torch" then
|
if type(node_texture) == 'table' then
|
||||||
return
|
node_texture = node_texture[1]
|
||||||
end
|
end
|
||||||
|
local _, d_name = node_name:match('(.*:)(.*)')
|
||||||
|
local bomb_name = "fun_caves:"..d_name..'_floor_bomb'
|
||||||
|
local d_name_u = d_name:gsub("(%l)(%w*)", function(a,b) return string.upper(a)..b end)
|
||||||
|
|
||||||
minetest.after(5, function()
|
local newnode = fun_caves.clone_node(node_name)
|
||||||
local pos_node = minetest.get_node_or_nil(pos)
|
newnode.description = d_name_u.." Floor Bomb"
|
||||||
if not (pos_node and pos_node.name == bomb_name) then
|
newnode.inventory_image = '[inventorycube{'..node_texture..'{'..node_texture..'{'..node_texture..'^fun_caves_expand.png'
|
||||||
|
newnode.drop = bomb_name
|
||||||
|
newnode.on_punch = function(pos, node, puncher, pointed_thing)
|
||||||
|
if not (pos and puncher) then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
floor(pos, 100, node_name, puncher:get_player_name())
|
local wield = puncher:get_wielded_item()
|
||||||
minetest.set_node(pos, {name = node_name})
|
if not wield or wield:get_name() ~= "default:torch" then
|
||||||
end)
|
return
|
||||||
end
|
end
|
||||||
minetest.register_node(bomb_name, newnode)
|
|
||||||
|
|
||||||
if not minetest.registered_items[comp] then
|
minetest.after(5, function()
|
||||||
newnode = fun_caves.clone_node(node_name)
|
local pos_node = minetest.get_node_or_nil(pos)
|
||||||
newnode.description = newnode.description .. ' Block'
|
if not (pos_node and pos_node.name == bomb_name) then
|
||||||
minetest.register_node(comp, newnode)
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
floor(pos, 100, node_name, puncher:get_player_name())
|
||||||
|
minetest.set_node(pos, {name = node_name})
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
minetest.register_node(bomb_name, newnode)
|
||||||
|
|
||||||
|
if not minetest.registered_items[comp] then
|
||||||
|
newnode = fun_caves.clone_node(node_name)
|
||||||
|
newnode.description = newnode.description .. ' Block'
|
||||||
|
minetest.register_node(comp, newnode)
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = comp,
|
||||||
|
recipe = {
|
||||||
|
{node_name, node_name, node_name},
|
||||||
|
{node_name, node_name, node_name},
|
||||||
|
{node_name, node_name, node_name}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = comp,
|
output = "fun_caves:"..d_name..'_floor_bomb',
|
||||||
recipe = {
|
recipe = {
|
||||||
{node_name, node_name, node_name},
|
{comp, comp, comp},
|
||||||
{node_name, node_name, node_name},
|
{comp, "tnt:gunpowder", comp},
|
||||||
{node_name, node_name, node_name}
|
{comp, comp, comp}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
output = "fun_caves:"..d_name..'_floor_bomb',
|
|
||||||
recipe = {
|
|
||||||
{comp, comp, comp},
|
|
||||||
{comp, "tnt:gunpowder", comp},
|
|
||||||
{comp, comp, comp}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local function power(player, pos, tool_type, max)
|
local function power(player, pos, tool_type, max)
|
||||||
|
@ -171,6 +173,10 @@ local function power(player, pos, tool_type, max)
|
||||||
diggable[data[ivm]] = diggable[data[ivm]] + minetest.get_item_group(names[data[ivm]], 'snappy') or 0
|
diggable[data[ivm]] = diggable[data[ivm]] + minetest.get_item_group(names[data[ivm]], 'snappy') or 0
|
||||||
diggable[data[ivm]] = diggable[data[ivm]] + minetest.get_item_group(names[data[ivm]], 'fleshy') or 0
|
diggable[data[ivm]] = diggable[data[ivm]] + minetest.get_item_group(names[data[ivm]], 'fleshy') or 0
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if names[data[ivm]] and names[data[ivm]]:find('^door') then
|
||||||
|
diggable[data[ivm]] = 0
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if count < max_nodes and diggable[data[ivm]] > 0 and not minetest.is_protected(p, player_name) then
|
if count < max_nodes and diggable[data[ivm]] > 0 and not minetest.is_protected(p, player_name) then
|
||||||
|
@ -392,3 +398,30 @@ minetest.register_craft({
|
||||||
{'', 'tnt:gunpowder', ''},
|
{'', 'tnt:gunpowder', ''},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if false then
|
||||||
|
minetest.register_tool("fun_caves:destroyer", {
|
||||||
|
description = "Destroyer",
|
||||||
|
inventory_image = "default_torch_on_floor.png",
|
||||||
|
tool_capabilities = {
|
||||||
|
full_punch_interval = 1.0,
|
||||||
|
max_drop_level=1,
|
||||||
|
groupcaps={
|
||||||
|
choppy={times={[1]=2.50, [2]=1.40, [3]=1.00}, uses=80, maxlevel=2},
|
||||||
|
},
|
||||||
|
damage_groups = {fleshy=4},
|
||||||
|
},
|
||||||
|
on_use = function(itemstack, user, pointed_thing)
|
||||||
|
if not (user and pointed_thing and pointed_thing.above) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local node = minetest.get_node_or_nil(pointed_thing.above)
|
||||||
|
if not node then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
print(dump(node))
|
||||||
|
minetest.remove_node(pointed_thing.above)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
Loading…
Add table
Add a link
Reference in a new issue