lantern/init.lua

354 lines
12 KiB
Lua
Executable File

-- Lantern-Mod by RHR for Minetest 0.49 --
--===========================================
--
-- register nodes:
--
minetest.register_node("lantern:lantern", {
description = "Lantern",
drawtype = "nodebox",
tiles = {"lantern_tb.png","lantern_tb.png","lantern.png","lantern.png","lantern.png","lantern.png"},
paramtype = "light",
sunlight_propagates = true,
light_source = default.LIGHT_MAX-1,
paramtype2 = "wallmounted",
walkable = false,
groups = {snappy = 2, cracky = 2, dig_immediate = 3},
sounds = default.node_sound_glass_defaults(),
node_box = {
type = "wallmounted",
wall_top = {-1/6, 1/6, -1/6, 1/6, 0.5, 1/6},
wall_bottom = {-1/6, -0.5, -1/6, 1/6, -1/6, 1/6},
wall_side = {-1/6, -1/6, -1/6, -0.5, 1/6, 1/6},
},
})
minetest.register_node("lantern:fence_black", {
description = "Black Fence",
drawtype = "fencelike",
tiles = {"default_obsidian.png"},
paramtype = "light",
is_ground_content = true,
walkable = true,
groups = {choppy = 2, flammable = 1, oddly_breakable_by_hand = 3},
sounds = default.node_sound_defaults(),
selection_box = {
type = "fixed",
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
},
})
minetest.register_node("lantern:candle", {
description = "Candle",
drawtype = "plantlike",
inventory_image = "candle_inv.png",
tiles = {
{name="candle.png", animation={type = "vertical_frames", aspect_w = 32, aspect_h = 32, length = 0.8}},
},
paramtype = "light",
sunlight_propagates = true,
walkable = false,
light_source = default.LIGHT_MAX - 1,
groups = {dig_immediate = 3, attached_node = 1},
sounds = default.node_sound_defaults(),
selection_box = {
type = "fixed",
fixed = { -0.15, -0.5, -0.15, 0.15, 0.2, 0.15 },
},
})
minetest.register_node("lantern:lamp", {
description = "Lamp",
tiles = {"default_obsidian.png", "default_obsidian.png", "lantern_lamp.png", "lantern_lamp.png", "lantern_lamp.png", "lantern_lamp.png"},
paramtype = "light",
sunlight_propagates = true,
walkable = true,
light_source = default.LIGHT_MAX - 1,
groups = {snappy = 2, cracky = 2, oddly_breakable_by_hand = 3},
sounds = default.node_sound_glass_defaults(),
})
--
-- register lampposts in all 4 directions
--
minetest.register_node("lantern:lantern_lampost1", {
description = "Lampost 1",
drawtype = "fencelike",
tiles = {"default_obsidian.png"},
inventory_image = "lamppost1.png",
wield_image = "lamppost_inv.png",
paramtype = "light",
is_ground_content = true,
walkable = true,
groups = {choppy = 2, dig_immediate = 2, flammable = 1},
sounds = default.node_sound_defaults(),
after_place_node = function(pos)
minetest.set_node({x = pos.x, y = pos.y + 1, z = pos.z},{name = "lantern:fence_lampost"})
minetest.set_node({x = pos.x, y = pos.y + 2, z = pos.z},{name = "lantern:fence_lampost"})
minetest.set_node({x = pos.x, y = pos.y + 3, z = pos.z},{name = "lantern:fence_lampost"})
minetest.set_node({x = pos.x - 1, y = pos.y + 3, z = pos.z },{name = "lantern:fence_lampost"})
minetest.set_node({x = pos.x - 1, y = pos.y + 2, z = pos.z },{name = "lantern:lamp1"})
end
})
minetest.register_node("lantern:lantern_lampost2", {
description = "Lampost 2",
drawtype = "fencelike",
tiles = {"default_obsidian.png"},
inventory_image = "lamppost2.png",
wield_image = "lamppost_inv.png",
paramtype = "light",
is_ground_content = true,
walkable = true,
groups = {choppy = 2, dig_immediate = 2, flammable = 1},
sounds = default.node_sound_defaults(),
after_place_node = function(pos)
minetest.set_node({x = pos.x, y = pos.y + 1, z = pos.z},{name = "lantern:fence_lampost"})
minetest.set_node({x = pos.x, y = pos.y + 2, z = pos.z},{name = "lantern:fence_lampost"})
minetest.set_node({x = pos.x, y = pos.y + 3, z = pos.z},{name = "lantern:fence_lampost"})
minetest.set_node({x = pos.x, y = pos.y + 3, z = pos.z - 1},{name = "lantern:fence_lampost"})
minetest.set_node({x = pos.x, y = pos.y + 2, z = pos.z - 1},{name = "lantern:lamp2"})
end
})
minetest.register_node("lantern:lantern_lampost3", {
description = "Lampost 3",
drawtype = "fencelike",
tiles = {"default_obsidian.png"},
inventory_image = "lamppost3.png",
wield_image = "lamppost_inv.png",
paramtype = "light",
is_ground_content = true,
walkable = true,
groups = {choppy = 2, dig_immediate = 2, flammable = 1},
sounds = default.node_sound_defaults(),
after_place_node = function(pos)
minetest.set_node({x = pos.x, y = pos.y + 1, z = pos.z},{name = "lantern:fence_lampost"})
minetest.set_node({x = pos.x, y = pos.y + 2, z = pos.z},{name = "lantern:fence_lampost"})
minetest.set_node({x = pos.x, y = pos.y + 3, z = pos.z},{name = "lantern:fence_lampost"})
minetest.set_node({x = pos.x + 1, y = pos.y + 3, z = pos.z},{name = "lantern:fence_lampost"})
minetest.set_node({x = pos.x + 1, y = pos.y + 2, z = pos.z},{name = "lantern:lamp3"})
end
})
minetest.register_node("lantern:lantern_lampost4", {
description = "Lampost 4",
drawtype = "fencelike",
tiles = {"default_obsidian.png"},
inventory_image = "lamppost4.png",
wield_image = "lamppost_inv.png",
paramtype = "light",
is_ground_content = true,
walkable = true,
groups = {choppy = 2, dig_immediate = 2, flammable = 1},
sounds = default.node_sound_defaults(),
after_place_node = function(pos)
minetest.set_node({x = pos.x, y = pos.y + 1, z = pos.z},{name = "lantern:fence_lampost"})
minetest.set_node({x = pos.x, y = pos.y + 2, z = pos.z},{name = "lantern:fence_lampost"})
minetest.set_node({x = pos.x, y = pos.y + 3, z = pos.z},{name = "lantern:fence_lampost"})
minetest.set_node({x = pos.x, y = pos.y + 3, z = pos.z + 1},{name = "lantern:fence_lampost"})
minetest.set_node({x = pos.x, y = pos.y + 2, z = pos.z + 1},{name = "lantern:lamp4"})
end
})
--
-- this node is only used for lampost and can't be crafted/used by the player
--
minetest.register_node("lantern:fence_lampost", {
description = "Fence Lamppost",
drawtype = "fencelike",
tiles = {"default_obsidian.png"},
paramtype = "light",
is_ground_content = true,
walkable = true,
groups = {choppy = 2, not_in_creative_inventory = 1},
sounds = default.node_sound_defaults(),
})
--
-- the nodes lantern:lamp1, lamp2, lamp3 and lamp4 are only used for the lamposts and can't be crafted/used by the player
-- these nodes are also removing the lantern with "after_dig_node"
--
minetest.register_node("lantern:lamp1", {
description = "Lamp1",
drop = 'lantern:lantern_lampost1',
tiles = {"default_obsidian.png", "default_obsidian.png", "lantern_lamp.png", "lantern_lamp.png", "lantern_lamp.png", "lantern_lamp.png"},
paramtype = "light",
sunlight_propagates = true,
walkable = true,
light_source = default.LIGHT_MAX - 1,
groups = {snappy = 2, cracky = 2, oddly_breakable_by_hand = 3, not_in_creative_inventory = 1},
sounds = default.node_sound_glass_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -2.5, -0.5, 1.5, 1.5, 0.5},
},
after_dig_node = function(pos)
minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z})
minetest.remove_node({x = pos.x + 1, y = pos.y + 1, z = pos.z })
minetest.remove_node({x = pos.x + 1, y = pos.y , z = pos.z })
minetest.remove_node({x = pos.x + 1, y = pos.y - 1, z = pos.z })
minetest.remove_node({x = pos.x + 1, y = pos.y - 2, z = pos.z })
end
})
minetest.register_node("lantern:lamp2", {
description = "Lamp2",
drop = 'lantern:lantern_lampost2',
tiles = {"default_obsidian.png", "default_obsidian.png", "lantern_lamp.png", "lantern_lamp.png", "lantern_lamp.png", "lantern_lamp.png"},
paramtype = "light",
sunlight_propagates = true,
walkable = true,
light_source = default.LIGHT_MAX - 1,
groups = {snappy = 2, cracky = 2, oddly_breakable_by_hand = 3, not_in_creative_inventory = 1},
sounds = default.node_sound_glass_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -2.5, -0.5, 0.5, 1.5, 1.5},
},
after_dig_node = function(pos)
minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z})
minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z + 1})
minetest.remove_node({x = pos.x, y = pos.y , z = pos.z + 1})
minetest.remove_node({x = pos.x, y = pos.y - 1, z = pos.z + 1})
minetest.remove_node({x = pos.x, y = pos.y - 2, z = pos.z + 1})
end
})
minetest.register_node("lantern:lamp3", {
description = "Lamp3",
drop = 'lantern:lantern_lampost3',
tiles = {"default_obsidian.png", "default_obsidian.png", "lantern_lamp.png", "lantern_lamp.png", "lantern_lamp.png", "lantern_lamp.png"},
paramtype = "light",
sunlight_propagates = true,
walkable = true,
light_source = default.LIGHT_MAX - 1,
groups = {snappy = 2, cracky = 2, oddly_breakable_by_hand = 3, not_in_creative_inventory = 1},
sounds = default.node_sound_glass_defaults(),
selection_box = {
type = "fixed",
fixed = {-1.5, -2.5, -0.5, 0.5, 1.5, 0.5},
},
after_dig_node = function(pos)
minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z})
minetest.remove_node({x = pos.x - 1, y = pos.y + 1, z = pos.z})
minetest.remove_node({x = pos.x - 1, y = pos.y , z = pos.z})
minetest.remove_node({x = pos.x - 1, y = pos.y - 1, z = pos.z})
minetest.remove_node({x = pos.x - 1, y = pos.y - 2, z = pos.z})
end
})
minetest.register_node("lantern:lamp4", {
description = "Lamp4",
drop = 'lantern:lantern_lampost4',
tiles = {"default_obsidian.png", "default_obsidian.png", "lantern_lamp.png", "lantern_lamp.png", "lantern_lamp.png", "lantern_lamp.png"},
paramtype = "light",
sunlight_propagates = true,
walkable = true,
light_source = default.LIGHT_MAX - 1,
groups = {snappy = 2, cracky = 2, oddly_breakable_by_hand = 3, not_in_creative_inventory = 1},
sounds = default.node_sound_glass_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -2.5, -1.5, 0.5, 1.5, 0.5},
},
after_dig_node = function(pos)
minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z})
minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z - 1})
minetest.remove_node({x = pos.x, y = pos.y , z = pos.z - 1})
minetest.remove_node({x = pos.x, y = pos.y - 1, z = pos.z - 1})
minetest.remove_node({x = pos.x, y = pos.y - 2, z = pos.z - 1})
end
})
--
-- register crafting recipes:
--
minetest.register_craft({
output = 'lantern:candle 12',
recipe = {
{'default:coal_lump','default:coal_lump'},
{'group:stick','group:stick'},
}
})
minetest.register_craft({
output = 'lantern:lantern 4',
recipe = {
{'','group:stick',''},
{'group:stick','lantern:candle','group:stick'},
{'','group:stick',''},
}
})
minetest.register_craft({
output = 'lantern:lantern 4',
recipe = {
{'group:stick','','group:stick'},
{'','lantern:candle',''},
{'group:stick','','group:stick'},
}
})
minetest.register_craft({
type = "shapeless",
output = 'lantern:fence_black',
recipe = {'default:coal_lump', 'default:fence_wood'},
})
minetest.register_craft({
output = 'lantern:lamp 4',
recipe = {
{'','default:steel_ingot',''},
{'default:steel_ingot','lantern:candle','default:steel_ingot'},
{'','default:steel_ingot',''},
}
})
minetest.register_craft({
output = 'lantern:lamp 4',
recipe = {
{'default:steel_ingot','','default:steel_ingot'},
{'','lantern:candle',''},
{'default:steel_ingot','','default:steel_ingot'},
}
})
minetest.register_craft({
output = 'lantern:lantern_lampost1',
recipe = {
{'lantern:fence_black','lantern:fence_black',''},
{'lantern:fence_black','lantern:lamp',''},
{'lantern:fence_black','',''},
}
})
minetest.register_craft({
type = "shapeless",
output = 'lantern:lantern_lampost2',
recipe = {"lantern:lantern_lampost1"}
})
minetest.register_craft({
type = "shapeless",
output = 'lantern:lantern_lampost3',
recipe = {"lantern:lantern_lampost2"}
})
minetest.register_craft({
type = "shapeless",
output = 'lantern:lantern_lampost4',
recipe = {"lantern:lantern_lampost3"}
})
minetest.register_craft({
type = "shapeless",
output = 'lantern:lantern_lampost1',
recipe = {"lantern:lantern_lampost4"}
})
minetest.log("action", "[lantern] loaded.")