-- 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"}
})