mirror of
https://github.com/minetest/minetest_game.git
synced 2024-12-23 07:10:19 +01:00
d4b0b73ae0
Move chests code out of nodes.lua and into a new file. Credit torch code, and chest and torch models in README.txt. Remove 'torches' mod text from torch.lua. Minor cleanups in README.txt.
132 lines
3.9 KiB
Lua
132 lines
3.9 KiB
Lua
local function on_flood(pos, oldnode, newnode)
|
|
minetest.add_item(pos, ItemStack("default:torch 1"))
|
|
-- Play flame-extinguish sound if liquid is not an 'igniter'
|
|
local nodedef = minetest.registered_items[newnode.name]
|
|
if not (nodedef and nodedef.groups and
|
|
nodedef.groups.igniter and nodedef.groups.igniter > 0) then
|
|
minetest.sound_play(
|
|
"default_cool_lava",
|
|
{pos = pos, max_hear_distance = 16, gain = 0.1}
|
|
)
|
|
end
|
|
-- Remove the torch node
|
|
return false
|
|
end
|
|
|
|
minetest.register_node("default:torch", {
|
|
description = "Torch",
|
|
drawtype = "mesh",
|
|
mesh = "torch_floor.obj",
|
|
inventory_image = "default_torch_on_floor.png",
|
|
wield_image = "default_torch_on_floor.png",
|
|
tiles = {{
|
|
name = "default_torch_on_floor_animated.png",
|
|
animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3}
|
|
}},
|
|
paramtype = "light",
|
|
paramtype2 = "wallmounted",
|
|
sunlight_propagates = true,
|
|
walkable = false,
|
|
liquids_pointable = false,
|
|
light_source = 12,
|
|
groups = {choppy=2, dig_immediate=3, flammable=1, attached_node=1, torch=1},
|
|
drop = "default:torch",
|
|
selection_box = {
|
|
type = "wallmounted",
|
|
wall_bottom = {-1/8, -1/2, -1/8, 1/8, 2/16, 1/8},
|
|
},
|
|
sounds = default.node_sound_wood_defaults(),
|
|
on_place = function(itemstack, placer, pointed_thing)
|
|
local under = pointed_thing.under
|
|
local node = minetest.get_node(under)
|
|
local def = minetest.registered_nodes[node.name]
|
|
if def and def.on_rightclick and
|
|
not (placer and placer:is_player() and
|
|
placer:get_player_control().sneak) then
|
|
return def.on_rightclick(under, node, placer, itemstack,
|
|
pointed_thing) or itemstack
|
|
end
|
|
|
|
local above = pointed_thing.above
|
|
local wdir = minetest.dir_to_wallmounted(vector.subtract(under, above))
|
|
local fakestack = itemstack
|
|
if wdir == 0 then
|
|
fakestack:set_name("default:torch_ceiling")
|
|
elseif wdir == 1 then
|
|
fakestack:set_name("default:torch")
|
|
else
|
|
fakestack:set_name("default:torch_wall")
|
|
end
|
|
|
|
itemstack = minetest.item_place(fakestack, placer, pointed_thing, wdir)
|
|
itemstack:set_name("default:torch")
|
|
|
|
return itemstack
|
|
end,
|
|
floodable = true,
|
|
on_flood = on_flood,
|
|
})
|
|
|
|
minetest.register_node("default:torch_wall", {
|
|
drawtype = "mesh",
|
|
mesh = "torch_wall.obj",
|
|
tiles = {{
|
|
name = "default_torch_on_floor_animated.png",
|
|
animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3}
|
|
}},
|
|
paramtype = "light",
|
|
paramtype2 = "wallmounted",
|
|
sunlight_propagates = true,
|
|
walkable = false,
|
|
light_source = 12,
|
|
groups = {choppy=2, dig_immediate=3, flammable=1, not_in_creative_inventory=1, attached_node=1, torch=1},
|
|
drop = "default:torch",
|
|
selection_box = {
|
|
type = "wallmounted",
|
|
wall_side = {-1/2, -1/2, -1/8, -1/8, 1/8, 1/8},
|
|
},
|
|
sounds = default.node_sound_wood_defaults(),
|
|
floodable = true,
|
|
on_flood = on_flood,
|
|
})
|
|
|
|
minetest.register_node("default:torch_ceiling", {
|
|
drawtype = "mesh",
|
|
mesh = "torch_ceiling.obj",
|
|
tiles = {{
|
|
name = "default_torch_on_floor_animated.png",
|
|
animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3}
|
|
}},
|
|
paramtype = "light",
|
|
paramtype2 = "wallmounted",
|
|
sunlight_propagates = true,
|
|
walkable = false,
|
|
light_source = 12,
|
|
groups = {choppy=2, dig_immediate=3, flammable=1, not_in_creative_inventory=1, attached_node=1, torch=1},
|
|
drop = "default:torch",
|
|
selection_box = {
|
|
type = "wallmounted",
|
|
wall_top = {-1/8, -1/16, -5/16, 1/8, 1/2, 1/8},
|
|
},
|
|
sounds = default.node_sound_wood_defaults(),
|
|
floodable = true,
|
|
on_flood = on_flood,
|
|
})
|
|
|
|
minetest.register_lbm({
|
|
name = "default:3dtorch",
|
|
nodenames = {"default:torch", "torches:floor", "torches:wall"},
|
|
action = function(pos, node)
|
|
if node.param2 == 0 then
|
|
minetest.set_node(pos, {name = "default:torch_ceiling",
|
|
param2 = node.param2})
|
|
elseif node.param2 == 1 then
|
|
minetest.set_node(pos, {name = "default:torch",
|
|
param2 = node.param2})
|
|
else
|
|
minetest.set_node(pos, {name = "default:torch_wall",
|
|
param2 = node.param2})
|
|
end
|
|
end
|
|
})
|