Merge remote-tracking branch 'upstream/master'
							
								
								
									
										19
									
								
								bower.json
									
									
									
									
									
								
							
							
						
						@@ -1,19 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "homedecor_modpack",
 | 
			
		||||
    "description": "This mod adds a whole bunch of new items to Minetest suitable for decorating inside and outside a home.",
 | 
			
		||||
    "keywords": [
 | 
			
		||||
		"building",
 | 
			
		||||
		"cosmetic",
 | 
			
		||||
        "homedecor modpack",
 | 
			
		||||
		"homedecor_modpack"
 | 
			
		||||
    ],
 | 
			
		||||
    "homepage": "http://daconcepts.com/vanessa/hobbies/minetest/homedecor-crafting-guide/homedecor-craft-guide.html",
 | 
			
		||||
	"project": "https://github.com/minetest-mods/homedecor_modpack",
 | 
			
		||||
    "forum": "http://forum.minetest.net/viewtopic.php?f=11&t=2041",
 | 
			
		||||
    "screenshots": [
 | 
			
		||||
        "http://daconcepts.com/vanessa/hobbies/minetest/screenshots/homedecor1.png"
 | 
			
		||||
    ],
 | 
			
		||||
    "authors": [
 | 
			
		||||
        "VanessaE"
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
@@ -1,77 +1,48 @@
 | 
			
		||||
local S = minetest.get_translator("building_blocks")
 | 
			
		||||
 | 
			
		||||
local stairs_groups_names = {"cracky","choppy","flammable","crumbly","snappy"}
 | 
			
		||||
 | 
			
		||||
local function building_blocks_stairs(nodename, def)
 | 
			
		||||
	minetest.register_node(nodename, def)
 | 
			
		||||
	if minetest.get_modpath("moreblocks") or minetest.get_modpath("stairs") then
 | 
			
		||||
		local mod, name = nodename:match("(.*):(.*)")
 | 
			
		||||
		minetest.register_alias(mod .. ":slab_" .. name, "stairs:slab_" .. name)
 | 
			
		||||
		minetest.register_alias(mod .. ":stair_" .. name, "stairs:stair_" .. name)
 | 
			
		||||
		local stairs_groups = {}
 | 
			
		||||
		for _, groupname in ipairs(stairs_groups_names) do
 | 
			
		||||
			stairs_groups[groupname] = def.groups[groupname]
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
	if minetest.get_modpath("moreblocks") then
 | 
			
		||||
			stairsplus:register_all(
 | 
			
		||||
				mod,
 | 
			
		||||
				name,
 | 
			
		||||
				nodename,
 | 
			
		||||
				{
 | 
			
		||||
					description = def.description,
 | 
			
		||||
					tiles = def.tiles,
 | 
			
		||||
					groups = stairs_groups,
 | 
			
		||||
					sounds = def.sounds,
 | 
			
		||||
				}
 | 
			
		||||
			)
 | 
			
		||||
		else
 | 
			
		||||
			stairs.register_stair_and_slab(name,nodename,
 | 
			
		||||
				stairs_groups,
 | 
			
		||||
				def.tiles,
 | 
			
		||||
				def.stair_desc,
 | 
			
		||||
				def.slab_desc,
 | 
			
		||||
				def.sounds
 | 
			
		||||
				--FIXME: Missing descriptions for Inner and Outer stairs
 | 
			
		||||
				-- See https://github.com/minetest/minetest_game/pull/2584
 | 
			
		||||
			)
 | 
			
		||||
		end
 | 
			
		||||
		local mod, name = nodename:match("(.*):(.*)")
 | 
			
		||||
		stairsplus:register_all(mod, name, nodename, def)
 | 
			
		||||
 | 
			
		||||
		minetest.register_alias("stairs:slab_" .. name, mod .. ":slab_" .. name)
 | 
			
		||||
		minetest.register_alias("stairs:stair_" .. name, mod .. ":stair_" .. name)
 | 
			
		||||
		minetest.register_alias("stairs:stair_inner_" .. name, mod .. ":stair_" .. name .. "_inner")
 | 
			
		||||
		minetest.register_alias("stairs:stair_outer_" .. name, mod .. ":stair_" .. name .. "_outer")
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
building_blocks_stairs("building_blocks:grate", {
 | 
			
		||||
	drawtype = "glasslike",
 | 
			
		||||
	description = S("Grate"),
 | 
			
		||||
	stair_desc = S("Grate Stair"),
 | 
			
		||||
	slab = S("Grate Slab"),
 | 
			
		||||
	tiles = {"building_blocks_grate.png"},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	is_ground_content = true,
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = {cracky=1},
 | 
			
		||||
	sounds = default.node_sound_metal_defaults(),
 | 
			
		||||
})
 | 
			
		||||
building_blocks_stairs("building_blocks:smoothglass", {
 | 
			
		||||
	drawtype = "glasslike",
 | 
			
		||||
	description = S("Streak Free Glass"),
 | 
			
		||||
	stair_desc = S("Streak Free Glass Stair"),
 | 
			
		||||
	slab_desc = S("Streak Free Glass Slab"),
 | 
			
		||||
	tiles = {"building_blocks_sglass.png"},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	is_ground_content = true,
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = {snappy=3,cracky=3,oddly_breakable_by_hand=3},
 | 
			
		||||
	sounds = default.node_sound_glass_defaults(),
 | 
			
		||||
})
 | 
			
		||||
building_blocks_stairs("building_blocks:woodglass", {
 | 
			
		||||
	drawtype = "glasslike",
 | 
			
		||||
	description = S("Wood Framed Glass"),
 | 
			
		||||
	stair_desc = S("Wood Framed Glass Stair"),
 | 
			
		||||
	slab_desc = S("Wood Framed Glass Slab"),
 | 
			
		||||
	tiles = {"building_blocks_wglass.png"},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	is_ground_content = true,
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = {snappy=3,cracky=3,oddly_breakable_by_hand=3},
 | 
			
		||||
	sounds = default.node_sound_glass_defaults(),
 | 
			
		||||
})
 | 
			
		||||
@@ -79,8 +50,6 @@ building_blocks_stairs("building_blocks:woodglass", {
 | 
			
		||||
building_blocks_stairs("building_blocks:Adobe", {
 | 
			
		||||
	tiles = {"building_blocks_Adobe.png"},
 | 
			
		||||
	description = S("Adobe"),
 | 
			
		||||
	stair_desc = S("Adobe Stair"),
 | 
			
		||||
	slab_desc = S("Adobe Slab"),
 | 
			
		||||
	is_ground_content = true,
 | 
			
		||||
	groups = {crumbly=3},
 | 
			
		||||
	sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
@@ -88,8 +57,6 @@ building_blocks_stairs("building_blocks:Adobe", {
 | 
			
		||||
building_blocks_stairs("building_blocks:fakegrass", {
 | 
			
		||||
	tiles = {"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"},
 | 
			
		||||
	description = S("Fake Grass"),
 | 
			
		||||
	stair_desc = S("Fake Grass Stair"),
 | 
			
		||||
	slab_desc = S("Fake Grass Slab"),
 | 
			
		||||
	is_ground_content = true,
 | 
			
		||||
	groups = {crumbly=3},
 | 
			
		||||
	sounds = default.node_sound_dirt_defaults({
 | 
			
		||||
@@ -100,8 +67,6 @@ building_blocks_stairs("building_blocks:hardwood", {
 | 
			
		||||
	tiles = {"building_blocks_hardwood.png"},
 | 
			
		||||
	is_ground_content = true,
 | 
			
		||||
	description = S("Hardwood"),
 | 
			
		||||
	stair_desc = S("Hardwood Stair"),
 | 
			
		||||
	slab_desc = S("Hardwood Slab"),
 | 
			
		||||
	groups = {choppy=1,flammable=1},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
})
 | 
			
		||||
@@ -109,15 +74,11 @@ building_blocks_stairs("building_blocks:Roofing", {
 | 
			
		||||
	tiles = {"building_blocks_Roofing.png"},
 | 
			
		||||
	is_ground_content = true,
 | 
			
		||||
	description = S("Roof block"),
 | 
			
		||||
	stair_desc = S("Roof block Stair"),
 | 
			
		||||
	slab_desc = S("Roof block Slab"),
 | 
			
		||||
	groups = {snappy=3},
 | 
			
		||||
	sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
})
 | 
			
		||||
building_blocks_stairs("building_blocks:Tar", {
 | 
			
		||||
	description = S("Tar"),
 | 
			
		||||
	stair_desc = S("Tar Stair"),
 | 
			
		||||
	slab_desc = S("Tar Slab"),
 | 
			
		||||
	tiles = {"building_blocks_tar.png"},
 | 
			
		||||
	is_ground_content = true,
 | 
			
		||||
	groups = {crumbly=1, tar_block = 1},
 | 
			
		||||
@@ -125,8 +86,6 @@ building_blocks_stairs("building_blocks:Tar", {
 | 
			
		||||
})
 | 
			
		||||
building_blocks_stairs("building_blocks:Marble", {
 | 
			
		||||
	description = S("Marble"),
 | 
			
		||||
	stair_desc = S("Marble Stair"),
 | 
			
		||||
	slab_desc = S("Marble Slab"),
 | 
			
		||||
	tiles = {"building_blocks_marble.png"},
 | 
			
		||||
	is_ground_content = true,
 | 
			
		||||
	groups = {cracky=3, marble = 1},
 | 
			
		||||
 
 | 
			
		||||
@@ -179,6 +179,7 @@ minetest.register_node("fake_fire:fancy_fire", {
 | 
			
		||||
	mesh = "fancy_fire.obj",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = {oddly_breakable_by_hand=3, flammable=0},
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	light_source = 13,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,2 +1,2 @@
 | 
			
		||||
name = fake_fire
 | 
			
		||||
depends = default
 | 
			
		||||
depends = default, basic_materials
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,7 @@ if minetest.get_modpath("vessels") then
 | 
			
		||||
		},
 | 
			
		||||
		paramtype = "light",
 | 
			
		||||
		paramtype2 = "facedir",
 | 
			
		||||
		use_texture_alpha = true
 | 
			
		||||
		use_texture_alpha = "blend",
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	local sbox = {
 | 
			
		||||
@@ -35,7 +35,7 @@ if minetest.get_modpath("vessels") then
 | 
			
		||||
		tiles = {"homedecor_3d_vessels_shelf_glass.png"},
 | 
			
		||||
		inventory_image = "homedecor_3d_vessels_glass_bottle_inv.png",
 | 
			
		||||
		wield_image = "homedecor_3d_vessels_glass_bottle_inv.png",
 | 
			
		||||
		use_texture_alpha = true,
 | 
			
		||||
		use_texture_alpha = "blend",
 | 
			
		||||
		selection_box = sbox
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
@@ -54,7 +54,7 @@ if minetest.get_modpath("vessels") then
 | 
			
		||||
		tiles = {"homedecor_3d_vessels_shelf_glass.png"},
 | 
			
		||||
		inventory_image = "homedecor_3d_vessels_drinking_glass_inv.png",
 | 
			
		||||
		wield_image = "homedecor_3d_vessels_drinking_glass_inv.png",
 | 
			
		||||
		use_texture_alpha = true,
 | 
			
		||||
		use_texture_alpha = "blend",
 | 
			
		||||
		selection_box = sbox
 | 
			
		||||
	})
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
@@ -91,6 +91,10 @@ homedecor.register("medicine_cabinet", {
 | 
			
		||||
		node.name = "homedecor:medicine_cabinet_open"
 | 
			
		||||
		minetest.swap_node(pos, node)
 | 
			
		||||
	end,
 | 
			
		||||
	can_dig = function(pos)
 | 
			
		||||
		local inv = minetest.get_meta(pos):get_inventory("main")
 | 
			
		||||
		return inv:is_empty("main")
 | 
			
		||||
	end,
 | 
			
		||||
	infotext=S("Medicine cabinet"),
 | 
			
		||||
	inventory = {
 | 
			
		||||
		size=6,
 | 
			
		||||
@@ -115,6 +119,10 @@ homedecor.register("medicine_cabinet_open", {
 | 
			
		||||
		node.name = "homedecor:medicine_cabinet"
 | 
			
		||||
		minetest.swap_node(pos, node)
 | 
			
		||||
	end,
 | 
			
		||||
	can_dig = function(pos)
 | 
			
		||||
		local inv = minetest.get_meta(pos):get_inventory("main")
 | 
			
		||||
		return inv:is_empty("main")
 | 
			
		||||
	end,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- "Sanitation" related
 | 
			
		||||
 
 | 
			
		||||
@@ -31,7 +31,7 @@ local kbed_cbox = {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- local bed_on_rightclick = minetest.registered_nodes["beds:bed"].on_rightclick
 | 
			
		||||
local bed_on_rightclick = minetest.registered_nodes["beds:bed"].on_rightclick
 | 
			
		||||
 | 
			
		||||
homedecor.register("bed_regular", {
 | 
			
		||||
	mesh = "homedecor_bed_regular.obj",
 | 
			
		||||
@@ -67,9 +67,9 @@ homedecor.register("bed_regular", {
 | 
			
		||||
		if itemname == "homedecor:bed_regular" then
 | 
			
		||||
			homedecor.bed_expansion(pos, clicker, itemstack, pointed_thing, true)
 | 
			
		||||
			return itemstack
 | 
			
		||||
--		else
 | 
			
		||||
--			bed_on_rightclick(pos, node, clicker)
 | 
			
		||||
--			return itemstack
 | 
			
		||||
		else
 | 
			
		||||
			bed_on_rightclick(pos, node, clicker)
 | 
			
		||||
			return itemstack
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
})
 | 
			
		||||
@@ -96,10 +96,10 @@ homedecor.register("bed_extended", {
 | 
			
		||||
		homedecor.unextend_bed(pos)
 | 
			
		||||
	end,
 | 
			
		||||
	on_dig = unifieddyes.on_dig,
 | 
			
		||||
--	on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
 | 
			
		||||
--		bed_on_rightclick(pos, node, clicker)
 | 
			
		||||
--		return itemstack
 | 
			
		||||
--	end,
 | 
			
		||||
	on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
 | 
			
		||||
		bed_on_rightclick(pos, node, clicker)
 | 
			
		||||
		return itemstack
 | 
			
		||||
	end,
 | 
			
		||||
	drop = "homedecor:bed_regular"
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
@@ -133,10 +133,10 @@ homedecor.register("bed_kingsize", {
 | 
			
		||||
		end
 | 
			
		||||
	end,
 | 
			
		||||
	on_dig = unifieddyes.on_dig,
 | 
			
		||||
--	on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
 | 
			
		||||
--		bed_on_rightclick(pos, node, clicker)
 | 
			
		||||
--		return itemstack
 | 
			
		||||
--	end,
 | 
			
		||||
	on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
 | 
			
		||||
		bed_on_rightclick(pos, node, clicker)
 | 
			
		||||
		return itemstack
 | 
			
		||||
	end,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
for w, d in pairs({ ["mahogany"] = S("mahogany"), ["oak"] = S("oak") }) do
 | 
			
		||||
 
 | 
			
		||||
@@ -10,6 +10,7 @@ homedecor.register("air_conditioner", {
 | 
			
		||||
		"default_glass.png"
 | 
			
		||||
	},
 | 
			
		||||
	groups = { snappy = 3 },
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	sounds = default.node_sound_leaves_defaults(),
 | 
			
		||||
	selection_box = { type="regular" },
 | 
			
		||||
})
 | 
			
		||||
@@ -95,6 +96,7 @@ homedecor.register("ceiling_fan", {
 | 
			
		||||
			{ -0.0625, 0.375, -0.0625, 0.0625, 0.5, 0.0625 }
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = { snappy = 3 },
 | 
			
		||||
	light_source = default.LIGHT_MAX-1,
 | 
			
		||||
	sounds = default.node_sound_glass_defaults(),
 | 
			
		||||
 
 | 
			
		||||
@@ -88,6 +88,7 @@ homedecor.register("grandfather_clock", {
 | 
			
		||||
		"homedecor_grandfather_clock_face_edge.png",
 | 
			
		||||
		"homedecor_generic_metal_brass.png"
 | 
			
		||||
	},
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	inventory_image = "homedecor_grandfather_clock_inv.png",
 | 
			
		||||
	groups = { snappy = 3 },
 | 
			
		||||
	selection_box = gf_cbox,
 | 
			
		||||
 
 | 
			
		||||
@@ -30,6 +30,7 @@ minetest.register_node(":homedecor:cobweb_centered", {
 | 
			
		||||
	drawtype = "nodebox",
 | 
			
		||||
	tiles = { "homedecor_cobweb.png" },
 | 
			
		||||
	inventory_image = "homedecor_cobweb.png",
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
@@ -59,6 +60,7 @@ minetest.register_node(":homedecor:cobweb_flat", {
 | 
			
		||||
	inventory_image = "homedecor_cobweb.png",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	liquid_viscosity = 8,
 | 
			
		||||
	liquidtype = "source",
 | 
			
		||||
 
 | 
			
		||||
@@ -148,7 +148,8 @@ function homedecor.register_furnace(name, furnacedef)
 | 
			
		||||
		can_dig = furnace_can_dig,
 | 
			
		||||
		allow_metadata_inventory_put = furnace_allow_put,
 | 
			
		||||
		allow_metadata_inventory_move = furnace_allow_move,
 | 
			
		||||
		inventory = { lockable = true }
 | 
			
		||||
		inventory = { lockable = true },
 | 
			
		||||
		is_furnace = true
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	local def_active = {
 | 
			
		||||
@@ -162,7 +163,8 @@ function homedecor.register_furnace(name, furnacedef)
 | 
			
		||||
		can_dig = furnace_can_dig,
 | 
			
		||||
		allow_metadata_inventory_put = furnace_allow_put,
 | 
			
		||||
		allow_metadata_inventory_move = furnace_allow_move,
 | 
			
		||||
		inventory = { lockable = true }
 | 
			
		||||
		inventory = { lockable = true },
 | 
			
		||||
		is_furnace = true
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if furnacedef.extra_nodedef_fields then
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,12 @@
 | 
			
		||||
local S = minetest.get_translator("homedecor_common")
 | 
			
		||||
 | 
			
		||||
local has_hopper = minetest.get_modpath("hopper")
 | 
			
		||||
local has_safe_hopper = has_hopper and
 | 
			
		||||
	-- mod from https://github.com/minetest-mods/hopper respects the owner
 | 
			
		||||
	(hopper.neighbors or
 | 
			
		||||
	-- mod from https://notabug.org/TenPlus1/hopper respects the owner since 20220123
 | 
			
		||||
	(hopper.version and hopper.version >= "20220123"))
 | 
			
		||||
 | 
			
		||||
local default_can_dig = function(pos,player)
 | 
			
		||||
	local meta = minetest.get_meta(pos)
 | 
			
		||||
	return meta:get_inventory():is_empty("main")
 | 
			
		||||
@@ -97,6 +104,23 @@ function homedecor.handle_inventory(name, def, original_def)
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	local locked = inventory.locked
 | 
			
		||||
 | 
			
		||||
	if has_hopper and (not locked or has_safe_hopper) then
 | 
			
		||||
		if inventory.size then
 | 
			
		||||
			hopper:add_container({
 | 
			
		||||
				{"top",  "homedecor:"..name, "main"},
 | 
			
		||||
				{"bottom", "homedecor:"..name, "main"},
 | 
			
		||||
				{"side", "homedecor:"..name, "main"},
 | 
			
		||||
			})
 | 
			
		||||
		elseif original_def.is_furnace then
 | 
			
		||||
			hopper:add_container({
 | 
			
		||||
				{"top", "homedecor:"..name, "dst"},
 | 
			
		||||
				{"bottom", "homedecor:"..name, "src"},
 | 
			
		||||
				{"side", "homedecor:"..name, "fuel"},
 | 
			
		||||
			})
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	if locked then
 | 
			
		||||
		local after_place_node = def.after_place_node
 | 
			
		||||
		def.after_place_node = function(pos, placer)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
name = homedecor_common
 | 
			
		||||
description = Homedecor mod: common
 | 
			
		||||
depends = default, creative
 | 
			
		||||
optional_depends = screwdriver
 | 
			
		||||
optional_depends = screwdriver, hopper
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,8 @@ local placeholder_node = "homedecor:expansion_placeholder"
 | 
			
		||||
function homedecor.register(name, original_def)
 | 
			
		||||
	local def = table.copy(original_def)
 | 
			
		||||
 | 
			
		||||
	def.is_furnace = nil
 | 
			
		||||
 | 
			
		||||
	def.drawtype = def.drawtype
 | 
			
		||||
		or (def.mesh and "mesh")
 | 
			
		||||
		or (def.node_box and "nodebox")
 | 
			
		||||
 
 | 
			
		||||
@@ -4,209 +4,137 @@ local S = minetest.get_translator("homedecor_doors_and_gates")
 | 
			
		||||
local mesecons_mp = minetest.get_modpath("mesecons")
 | 
			
		||||
homedecor_doors_and_gates = {}
 | 
			
		||||
 | 
			
		||||
-- new doors using minetest_game doors API
 | 
			
		||||
 | 
			
		||||
local door_list = {
 | 
			
		||||
	{
 | 
			
		||||
		name = "wood_plain",
 | 
			
		||||
		description = S("Plain Wooden Door"),
 | 
			
		||||
		groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
 | 
			
		||||
		sounds = {
 | 
			
		||||
			main = default.node_sound_wood_defaults(),
 | 
			
		||||
			open = "homedecor_door_open",
 | 
			
		||||
			close = "homedecor_door_close",
 | 
			
		||||
		}
 | 
			
		||||
		sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
		sound_open = "homedecor_door_open",
 | 
			
		||||
		sound_close = "homedecor_door_close",
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	{
 | 
			
		||||
		name = "exterior_fancy",
 | 
			
		||||
		description = S("Fancy Wood/Glass Door"),
 | 
			
		||||
		groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
 | 
			
		||||
		sounds = {
 | 
			
		||||
			main = default.node_sound_wood_defaults(),
 | 
			
		||||
			open = "homedecor_door_open",
 | 
			
		||||
			close = "homedecor_door_close",
 | 
			
		||||
		sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
		sound_open = "homedecor_door_open",
 | 
			
		||||
		sound_close = "homedecor_door_close",
 | 
			
		||||
		mesh = "homedecor_door_fancy.obj"
 | 
			
		||||
	},
 | 
			
		||||
		backface = true,
 | 
			
		||||
		alpha = true,
 | 
			
		||||
		custom_model = "homedecor_door_fancy"
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	{
 | 
			
		||||
		name = "french_oak",
 | 
			
		||||
		description = S("French door, Oak-colored"),
 | 
			
		||||
		groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
 | 
			
		||||
		sounds = {
 | 
			
		||||
			main = default.node_sound_glass_defaults(),
 | 
			
		||||
		sounds = default.node_sound_glass_defaults(),
 | 
			
		||||
		mesh = "homedecor_door_french.obj"
 | 
			
		||||
	},
 | 
			
		||||
		backface = true,
 | 
			
		||||
		alpha = true,
 | 
			
		||||
		custom_model = "homedecor_door_french"
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	{
 | 
			
		||||
		name = "french_mahogany",
 | 
			
		||||
		description = S("French door, Mahogany-colored"),
 | 
			
		||||
		groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
 | 
			
		||||
		sounds = {
 | 
			
		||||
			main = default.node_sound_glass_defaults(),
 | 
			
		||||
		sounds = default.node_sound_glass_defaults(),
 | 
			
		||||
		mesh = "homedecor_door_french.obj"
 | 
			
		||||
	},
 | 
			
		||||
		backface = true,
 | 
			
		||||
		alpha = true,
 | 
			
		||||
		custom_model = "homedecor_door_french"
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	{
 | 
			
		||||
		name = "french_white",
 | 
			
		||||
		description = S("French door, White"),
 | 
			
		||||
		groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
 | 
			
		||||
		sounds = {
 | 
			
		||||
			main = default.node_sound_glass_defaults(),
 | 
			
		||||
		sounds = default.node_sound_glass_defaults(),
 | 
			
		||||
		mesh = "homedecor_door_french.obj"
 | 
			
		||||
	},
 | 
			
		||||
		backface = true,
 | 
			
		||||
		alpha = true,
 | 
			
		||||
		custom_model = "homedecor_door_french"
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	{
 | 
			
		||||
		name = "basic_panel",
 | 
			
		||||
		description = S("Basic white panel Door"),
 | 
			
		||||
		groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
 | 
			
		||||
		sounds = {
 | 
			
		||||
			main = default.node_sound_wood_defaults(),
 | 
			
		||||
			open = "homedecor_door_open",
 | 
			
		||||
			close = "homedecor_door_close",
 | 
			
		||||
		}
 | 
			
		||||
		sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
		sound_open = "homedecor_door_open",
 | 
			
		||||
		sound_close = "homedecor_door_close",
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	{
 | 
			
		||||
		name = "wrought_iron",
 | 
			
		||||
		description = S("Wrought Iron Gate/Door"),
 | 
			
		||||
		groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
 | 
			
		||||
		sounds = {
 | 
			
		||||
			main = default.node_sound_metal_defaults(),
 | 
			
		||||
			open = "doors_steel_door_open",
 | 
			
		||||
			close = "doors_steel_door_close",
 | 
			
		||||
		sounds = default.node_sound_metal_defaults(),
 | 
			
		||||
		sound_open = "doors_steel_door_open",
 | 
			
		||||
		sound_close = "doors_steel_door_close",
 | 
			
		||||
		mesh = "homedecor_door_wrought_iron.obj"
 | 
			
		||||
	},
 | 
			
		||||
		backface = true,
 | 
			
		||||
		custom_model = "homedecor_door_wrought_iron"
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	{
 | 
			
		||||
		name = "carolina",
 | 
			
		||||
		description = S("Wooden Carolina door"),
 | 
			
		||||
		groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
 | 
			
		||||
		sounds = {
 | 
			
		||||
			main = default.node_sound_wood_defaults(),
 | 
			
		||||
			open = "homedecor_door_open",
 | 
			
		||||
			close = "homedecor_door_close",
 | 
			
		||||
		sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
		sound_open = "homedecor_door_open",
 | 
			
		||||
		sound_close = "homedecor_door_close",
 | 
			
		||||
	},
 | 
			
		||||
		backface = true,
 | 
			
		||||
		alpha = true
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	{
 | 
			
		||||
		name = "woodglass",
 | 
			
		||||
		description = S("Wooden door with glass insert, type 3"),
 | 
			
		||||
		groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
 | 
			
		||||
		sounds = {
 | 
			
		||||
			main = default.node_sound_wood_defaults(),
 | 
			
		||||
			open = "homedecor_door_open",
 | 
			
		||||
			close = "homedecor_door_close",
 | 
			
		||||
		sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
		sound_open = "homedecor_door_open",
 | 
			
		||||
		sound_close = "homedecor_door_close",
 | 
			
		||||
		mesh = "homedecor_door_wood_glass_3.obj"
 | 
			
		||||
	},
 | 
			
		||||
		backface = true,
 | 
			
		||||
		alpha = true,
 | 
			
		||||
		custom_model = "homedecor_door_wood_glass_3"
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	{
 | 
			
		||||
		name = "closet_mahogany",
 | 
			
		||||
		description = S("Mahogany Closet Door"),
 | 
			
		||||
		groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
 | 
			
		||||
		sounds = {
 | 
			
		||||
			main = default.node_sound_wood_defaults(),
 | 
			
		||||
		sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
		mesh = "homedecor_door_closet.obj"
 | 
			
		||||
	},
 | 
			
		||||
		custom_model = "homedecor_door_closet"
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	{
 | 
			
		||||
		name = "closet_oak",
 | 
			
		||||
		description = S("Oak Closet Door"),
 | 
			
		||||
		groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
 | 
			
		||||
		sounds = {
 | 
			
		||||
			main = default.node_sound_wood_defaults(),
 | 
			
		||||
		},
 | 
			
		||||
		custom_model = "homedecor_door_closet"
 | 
			
		||||
		sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
		mesh = "homedecor_door_closet"
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
local old_doors = {}
 | 
			
		||||
local mesecons
 | 
			
		||||
 | 
			
		||||
-- This part blatantly copied from Mesecons, and modified :-)
 | 
			
		||||
if mesecons_mp then
 | 
			
		||||
local door_types = {"_a", "_b", "_c", "_d"}
 | 
			
		||||
 | 
			
		||||
local function generate_door(def)
 | 
			
		||||
	local default_settings = {
 | 
			
		||||
		tiles = {{ name = "homedecor_door_" .. def.name .. ".png", backface_culling = true }},
 | 
			
		||||
		inventory_image = "homedecor_door_" .. def.name .. "_inv.png",
 | 
			
		||||
		use_texture_alpha = "blend",
 | 
			
		||||
		groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
 | 
			
		||||
		mesecons = {
 | 
			
		||||
			effector = {
 | 
			
		||||
				action_on = function(pos, node)
 | 
			
		||||
					local door = doors.get(pos)
 | 
			
		||||
				if door then
 | 
			
		||||
					door:open()
 | 
			
		||||
				end
 | 
			
		||||
					if door then door:open() end
 | 
			
		||||
				end,
 | 
			
		||||
				action_off = function(pos, node)
 | 
			
		||||
					local door = doors.get(pos)
 | 
			
		||||
				if door then
 | 
			
		||||
					door:close()
 | 
			
		||||
				end
 | 
			
		||||
					if door then door:close() end
 | 
			
		||||
				end,
 | 
			
		||||
			rules = mesecon.rules.pplate
 | 
			
		||||
				rules = mesecon and mesecon.rules.pplate or nil
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for k, v in pairs(default_settings) do
 | 
			
		||||
		if not def[k] then def[k] = v end
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	def.name = nil
 | 
			
		||||
 | 
			
		||||
	return def
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local hd_3d = minetest.get_modpath("homedecor_3d_extras")
 | 
			
		||||
 | 
			
		||||
for _, door in ipairs(door_list) do
 | 
			
		||||
	doors.register("homedecor_"..door.name, {
 | 
			
		||||
			tiles = {{ name = "homedecor_door_"..door.name..".png", backface_culling = door.backface }},
 | 
			
		||||
			description = door.description,
 | 
			
		||||
			inventory_image = "homedecor_door_"..door.name.."_inv.png",
 | 
			
		||||
			groups = table.copy(door.groups),
 | 
			
		||||
			sounds = door.sounds.main,
 | 
			
		||||
			sound_open = door.sounds.open,
 | 
			
		||||
			sound_close = door.sounds.close,
 | 
			
		||||
			mesecons = mesecons
 | 
			
		||||
	local name = door.name
 | 
			
		||||
	doors.register("homedecor_" .. name, generate_door(door))
 | 
			
		||||
 | 
			
		||||
	--hack to get around doors not allowing custom meshes
 | 
			
		||||
	if door.mesh then
 | 
			
		||||
		for _, v in pairs(door_types) do
 | 
			
		||||
			minetest.override_item("doors:homedecor_" .. name .. v, {
 | 
			
		||||
				mesh = door.mesh
 | 
			
		||||
			})
 | 
			
		||||
 | 
			
		||||
	local nn_a = "doors:homedecor_"..door.name.."_a"
 | 
			
		||||
	local nn_b = "doors:homedecor_"..door.name.."_b"
 | 
			
		||||
 | 
			
		||||
	if door.alpha then
 | 
			
		||||
		local def = table.copy(minetest.registered_nodes[nn_a])
 | 
			
		||||
			def.use_texture_alpha = true
 | 
			
		||||
			def.mesh = "door_a.obj"                -- leaving this out will break the _a model
 | 
			
		||||
			minetest.register_node(":"..nn_a, def) -- assignment when the override takes place
 | 
			
		||||
 | 
			
		||||
		def = table.copy(minetest.registered_nodes[nn_b])
 | 
			
		||||
			def.use_texture_alpha = true
 | 
			
		||||
			minetest.register_node(":"..nn_b, def)
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	if door.custom_model and hd_3d then
 | 
			
		||||
		def = table.copy(minetest.registered_nodes[nn_a])
 | 
			
		||||
			def.mesh = door.custom_model.."_a.obj"
 | 
			
		||||
			minetest.register_node(":"..nn_a, def)
 | 
			
		||||
	--compatibility
 | 
			
		||||
	old_doors[#old_doors + 1] = "homedecor:door_"..name.."_left"
 | 
			
		||||
	old_doors[#old_doors + 1] = "homedecor:door_"..name.."_right"
 | 
			
		||||
 | 
			
		||||
		def = table.copy(minetest.registered_nodes[nn_b])
 | 
			
		||||
			def.mesh = door.custom_model.."_b.obj"
 | 
			
		||||
			minetest.register_node(":"..nn_b, def)
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	old_doors[#old_doors + 1] = "homedecor:door_"..door.name.."_left"
 | 
			
		||||
	old_doors[#old_doors + 1] = "homedecor:door_"..door.name.."_right"
 | 
			
		||||
 | 
			
		||||
	minetest.register_alias("doors:"..door.name.."_a", "doors:homedecor_"..door.name.."_a")
 | 
			
		||||
	minetest.register_alias("doors:"..door.name.."_b", "doors:homedecor_"..door.name.."_b")
 | 
			
		||||
	minetest.register_alias("doors:"..name.."_a", "doors:homedecor_"..name.."_a")
 | 
			
		||||
	minetest.register_alias("doors:"..name.."_b", "doors:homedecor_"..name.."_b")
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Gates
 | 
			
		||||
@@ -307,6 +235,7 @@ for i, g in ipairs(gate_list) do
 | 
			
		||||
		description = gatedesc,
 | 
			
		||||
		tiles = tiles,
 | 
			
		||||
		paramtype = "light",
 | 
			
		||||
		use_texture_alpha = "clip",
 | 
			
		||||
		groups = {snappy=3},
 | 
			
		||||
		sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
		paramtype2 = "facedir",
 | 
			
		||||
 
 | 
			
		||||
@@ -94,6 +94,7 @@ homedecor.register("lattice_"..name, {
 | 
			
		||||
	description = S("Garden Lattice (@1)", desc),
 | 
			
		||||
	tiles = {"homedecor_lattice"..texture},
 | 
			
		||||
	inventory_image = "homedecor_lattice"..texture,
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = { snappy=3 },
 | 
			
		||||
	node_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
@@ -121,6 +122,7 @@ homedecor.register("swing", {
 | 
			
		||||
		"homedecor_swing_top.png"
 | 
			
		||||
	},
 | 
			
		||||
	inventory_image = "homedecor_swing_inv.png",
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = { snappy=3, oddly_breakable_by_hand=3 },
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	walkable = false,
 | 
			
		||||
@@ -219,6 +221,7 @@ homedecor.register("well", {
 | 
			
		||||
	},
 | 
			
		||||
	inventory_image = "homedecor_well_inv.png",
 | 
			
		||||
	description = S("Water well"),
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = { snappy = 3 },
 | 
			
		||||
	selection_box = homedecor.nodebox.slab_y(2),
 | 
			
		||||
	collision_box = homedecor.nodebox.slab_y(2),
 | 
			
		||||
@@ -265,6 +268,7 @@ for color, color_loc in pairs(homedecor_exterior.shrub_colors) do
 | 
			
		||||
		tiles = {"homedecor_shrubbery_"..color..".png"},
 | 
			
		||||
		paramtype = "light",
 | 
			
		||||
		is_ground_content = false,
 | 
			
		||||
		use_texture_alpha = "clip",
 | 
			
		||||
		groups = {snappy=3, flammable=2},
 | 
			
		||||
		sounds = default.node_sound_leaves_defaults(),
 | 
			
		||||
	})
 | 
			
		||||
@@ -280,6 +284,7 @@ for color, color_loc in pairs(homedecor_exterior.shrub_colors) do
 | 
			
		||||
		},
 | 
			
		||||
		paramtype = "light",
 | 
			
		||||
		is_ground_content = false,
 | 
			
		||||
		use_texture_alpha = "clip",
 | 
			
		||||
		groups = {snappy=3, flammable=2},
 | 
			
		||||
		sounds = default.node_sound_leaves_defaults(),
 | 
			
		||||
		selection_box = shrub_cbox,
 | 
			
		||||
 
 | 
			
		||||
@@ -35,6 +35,7 @@ homedecor.register("fence_picket", {
 | 
			
		||||
		"homedecor_fence_picket_backside.png",
 | 
			
		||||
		"homedecor_fence_picket.png"
 | 
			
		||||
	},
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = {snappy=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	selection_box = homedecor.nodebox.slab_z(-0.1),
 | 
			
		||||
@@ -51,6 +52,7 @@ homedecor.register("fence_picket_corner", {
 | 
			
		||||
		"homedecor_fence_picket_backside.png",
 | 
			
		||||
		"homedecor_fence_picket.png",
 | 
			
		||||
	},
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = {snappy=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	selection_box = homedecor.nodebox.corner_xz(0.1, -0.1),
 | 
			
		||||
@@ -67,6 +69,7 @@ homedecor.register("fence_picket_white", {
 | 
			
		||||
		"homedecor_fence_picket_white_backside.png",
 | 
			
		||||
		"homedecor_fence_picket_white.png"
 | 
			
		||||
	},
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = {snappy=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	selection_box = homedecor.nodebox.slab_z(-0.1),
 | 
			
		||||
@@ -83,6 +86,7 @@ homedecor.register("fence_picket_corner_white", {
 | 
			
		||||
		"homedecor_fence_picket_white_backside.png",
 | 
			
		||||
		"homedecor_fence_picket_white.png",
 | 
			
		||||
	},
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = {snappy=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	selection_box = homedecor.nodebox.corner_xz(0.1, -0.1),
 | 
			
		||||
@@ -152,6 +156,7 @@ homedecor.register("fence_barbed_wire", {
 | 
			
		||||
	description = S("Barbed Wire Fence"),
 | 
			
		||||
	mesh = "homedecor_fence_barbed_wire.obj",
 | 
			
		||||
	tiles = {"homedecor_fence_barbed_wire.png"},
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = {snappy=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	selection_box = homedecor.nodebox.slab_z(-0.125),
 | 
			
		||||
@@ -162,6 +167,7 @@ homedecor.register("fence_barbed_wire_corner", {
 | 
			
		||||
	description = S("Barbed Wire Fence Corner"),
 | 
			
		||||
	mesh = "homedecor_fence_barbed_wire_corner.obj",
 | 
			
		||||
	tiles = { "homedecor_fence_barbed_wire.png" },
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = {snappy=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	selection_box = homedecor.nodebox.corner_xz(0.125, -0.125),
 | 
			
		||||
@@ -179,6 +185,7 @@ homedecor.register("fence_chainlink", {
 | 
			
		||||
		"homedecor_fence_chainlink_fb.png",
 | 
			
		||||
		"homedecor_fence_chainlink_fb.png",
 | 
			
		||||
	},
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = {snappy=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	selection_box = homedecor.nodebox.slab_z(-0.125),
 | 
			
		||||
@@ -197,6 +204,7 @@ homedecor.register("fence_chainlink_corner", {
 | 
			
		||||
		"homedecor_fence_chainlink_corner_front.png",
 | 
			
		||||
		"homedecor_fence_chainlink_corner_front.png",
 | 
			
		||||
	},
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = {snappy=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	selection_box = homedecor.nodebox.corner_xz(0.125, -0.125),
 | 
			
		||||
@@ -213,6 +221,7 @@ homedecor.register("fence_wrought_iron_2", {
 | 
			
		||||
		"homedecor_fence_wrought_iron_2_fb.png",
 | 
			
		||||
		"homedecor_fence_wrought_iron_2_fb.png"
 | 
			
		||||
	},
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = {snappy=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	selection_box = homedecor.nodebox.slab_z(-0.08),
 | 
			
		||||
@@ -240,6 +249,7 @@ homedecor.register("fence_wrought_iron_2_corner", {
 | 
			
		||||
		"homedecor_fence_corner_wrought_iron_2_sides.png^[transformFX",
 | 
			
		||||
		"homedecor_fence_corner_wrought_iron_2_sides.png"
 | 
			
		||||
	},
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = {snappy=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	selection_box = homedecor.nodebox.corner_xz(0.08, -0.08),
 | 
			
		||||
 
 | 
			
		||||
@@ -136,6 +136,7 @@ homedecor.register("toaster", {
 | 
			
		||||
	tiles = { "homedecor_toaster_sides.png" },
 | 
			
		||||
	inventory_image = "homedecor_toaster_inv.png",
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = { snappy=3 },
 | 
			
		||||
	node_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
@@ -165,6 +166,7 @@ homedecor.register("toaster_loaf", {
 | 
			
		||||
		"homedecor_toaster_sides.png"
 | 
			
		||||
	},
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = { snappy=3, not_in_creative_inventory=1 },
 | 
			
		||||
	node_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ read_globals = {
 | 
			
		||||
	"VoxelManip", "VoxelArea",
 | 
			
		||||
	"PseudoRandom", "ItemStack",
 | 
			
		||||
	"default",
 | 
			
		||||
	"screwdriver",
 | 
			
		||||
	"screwdriver", "homedecor",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
globals = {
 | 
			
		||||
@@ -3,7 +3,7 @@ local S = minetest.get_translator("inbox")
 | 
			
		||||
local inbox = {}
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output ="inbox:empty",
 | 
			
		||||
	output ="homedecor:inbox",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"","default:steel_ingot",""},
 | 
			
		||||
		{"default:steel_ingot","","default:steel_ingot"},
 | 
			
		||||
@@ -16,17 +16,17 @@ local mb_cbox = {
 | 
			
		||||
	fixed = { -5/16, -8/16, -8/16, 5/16, 2/16, 8/16 }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
minetest.register_node("inbox:empty", {
 | 
			
		||||
homedecor.register("inbox", {
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	drawtype = "mesh",
 | 
			
		||||
	mesh = "inbox_mailbox.obj",
 | 
			
		||||
	mesh = "homedecor_inbox_mailbox.obj",
 | 
			
		||||
	description = S("Mailbox"),
 | 
			
		||||
	tiles = {
 | 
			
		||||
		"inbox_red_metal.png",
 | 
			
		||||
		"inbox_white_metal.png",
 | 
			
		||||
		"inbox_grey_metal.png",
 | 
			
		||||
		"homedecor_inbox_red_metal.png",
 | 
			
		||||
		"homedecor_inbox_white_metal.png",
 | 
			
		||||
		"homedecor_inbox_grey_metal.png",
 | 
			
		||||
	},
 | 
			
		||||
	inventory_image = "mailbox_inv.png",
 | 
			
		||||
	inventory_image = "homedecor_mailbox_inv.png",
 | 
			
		||||
	selection_box = mb_cbox,
 | 
			
		||||
	collision_box = mb_cbox,
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
@@ -105,6 +105,8 @@ minetest.register_node("inbox:empty", {
 | 
			
		||||
	end,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("inbox:empty", "homedecor:inbox")
 | 
			
		||||
 | 
			
		||||
function inbox.get_inbox_formspec(pos)
 | 
			
		||||
	local spos = pos.x .. "," .. pos.y .. "," ..pos.z
 | 
			
		||||
	local formspec =
 | 
			
		||||
@@ -1,3 +1,3 @@
 | 
			
		||||
name = inbox
 | 
			
		||||
name = homedecor_inbox
 | 
			
		||||
depends = default, homedecor_common
 | 
			
		||||
optional_depends = screwdriver
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 152 B After Width: | Height: | Size: 152 B  | 
| 
		 Before Width: | Height: | Size: 319 B After Width: | Height: | Size: 319 B  | 
| 
		 Before Width: | Height: | Size: 156 B After Width: | Height: | Size: 156 B  | 
| 
		 Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB  | 
@@ -1,4 +1,4 @@
 | 
			
		||||
name = homedecor_kitchen
 | 
			
		||||
description = Homedecor mod: kitchen
 | 
			
		||||
depends = homedecor_common, default, basic_materials, dye
 | 
			
		||||
depends = homedecor_common, default, basic_materials, dye, unifieddyes
 | 
			
		||||
optional_depends = moreblocks, building_blocks, technic, bucket, screwdriver
 | 
			
		||||
 
 | 
			
		||||
@@ -77,6 +77,7 @@ homedecor.register("calendar", {
 | 
			
		||||
		wall_bottom = { -4/16, -8/16, -8/16,  4/16, -5/16, 5/16 },
 | 
			
		||||
		wall_top =    { -4/16,  5/16, -8/16,  4/16,  8/16, 5/16 }
 | 
			
		||||
	},
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = {choppy=2,attached_node=1},
 | 
			
		||||
	legacy_wallmounted = true,
 | 
			
		||||
	sounds = default.node_sound_defaults(),
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ read_globals = {
 | 
			
		||||
	"vector", "nodeupdate",
 | 
			
		||||
	"VoxelManip", "VoxelArea",
 | 
			
		||||
	"PseudoRandom", "ItemStack",
 | 
			
		||||
	"screwdriver",
 | 
			
		||||
	"screwdriver", "homedecor",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
globals = {
 | 
			
		||||
@@ -2,9 +2,9 @@ local S = minetest.get_translator("plasmascreen")
 | 
			
		||||
 | 
			
		||||
local sc_disallow = minetest.get_modpath("screwdriver") and screwdriver.disallow or nil
 | 
			
		||||
 | 
			
		||||
minetest.register_node("plasmascreen:stand", {
 | 
			
		||||
homedecor.register("tv_stand", {
 | 
			
		||||
	description = S("Plasma Screen TV Stand"),
 | 
			
		||||
	tiles = {"plasmascreen_back.png"},
 | 
			
		||||
	tiles = {"homedecor_plasmascreen_back.png"},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	drawtype = "nodebox",
 | 
			
		||||
@@ -26,13 +26,6 @@ minetest.register_node("plasmascreen:stand", {
 | 
			
		||||
	groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("plasmascreen:screen1", "air")
 | 
			
		||||
minetest.register_alias("plasmascreen:screen2", "air")
 | 
			
		||||
minetest.register_alias("plasmascreen:screen3", "air")
 | 
			
		||||
minetest.register_alias("plasmascreen:screen4", "air")
 | 
			
		||||
minetest.register_alias("plasmascreen:screen5", "plasmascreen:tv")
 | 
			
		||||
minetest.register_alias("plasmascreen:screen6", "air")
 | 
			
		||||
 | 
			
		||||
local fdir_to_left = {
 | 
			
		||||
	{ -1,  0 },
 | 
			
		||||
	{  0,  1 },
 | 
			
		||||
@@ -95,13 +88,13 @@ local function checkwall(pos)
 | 
			
		||||
	return true
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
minetest.register_node("plasmascreen:tv", {
 | 
			
		||||
homedecor.register("tv", {
 | 
			
		||||
	description = S("Plasma TV"),
 | 
			
		||||
	drawtype = "mesh",
 | 
			
		||||
	mesh = "plasmascreen_tv.obj",
 | 
			
		||||
	mesh = "homedecor_plasmascreen_tv.obj",
 | 
			
		||||
	tiles = {
 | 
			
		||||
		"plasmascreen_case.png",
 | 
			
		||||
		{ name="plasmascreen_video.png",
 | 
			
		||||
		"homedecor_plasmascreen_case.png",
 | 
			
		||||
		{ name="homedecor_plasmascreen_video.png",
 | 
			
		||||
			animation={
 | 
			
		||||
				type="vertical_frames",
 | 
			
		||||
				aspect_w = 42,
 | 
			
		||||
@@ -111,8 +104,8 @@ minetest.register_node("plasmascreen:tv", {
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	},
 | 
			
		||||
	inventory_image = "plasmascreen_tv_inv.png",
 | 
			
		||||
	wield_image = "plasmascreen_tv_inv.png",
 | 
			
		||||
	inventory_image = "homedecor_plasmascreen_tv_inv.png",
 | 
			
		||||
	wield_image = "homedecor_plasmascreen_tv_inv.png",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	light_source = 10,
 | 
			
		||||
@@ -127,20 +120,20 @@ minetest.register_node("plasmascreen:tv", {
 | 
			
		||||
		end
 | 
			
		||||
	end,
 | 
			
		||||
	on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
 | 
			
		||||
		minetest.set_node(pos, {name = "plasmascreen:tv_off", param2 = node.param2})
 | 
			
		||||
		minetest.set_node(pos, {name = "homedecor:tv_off", param2 = node.param2})
 | 
			
		||||
	end
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("plasmascreen:tv_off", {
 | 
			
		||||
homedecor.register("tv_off", {
 | 
			
		||||
	description = S("Plasma TV (off)"),
 | 
			
		||||
	drawtype = "mesh",
 | 
			
		||||
	mesh = "plasmascreen_tv.obj",
 | 
			
		||||
	mesh = "homedecor_plasmascreen_tv.obj",
 | 
			
		||||
	tiles = {
 | 
			
		||||
		"plasmascreen_case_off.png",
 | 
			
		||||
		"plasmascreen_screen_off.png",
 | 
			
		||||
		"homedecor_plasmascreen_case_off.png",
 | 
			
		||||
		"homedecor_plasmascreen_screen_off.png",
 | 
			
		||||
	},
 | 
			
		||||
	inventory_image = "plasmascreen_tv_inv.png",
 | 
			
		||||
	wield_image = "plasmascreen_tv_inv.png",
 | 
			
		||||
	inventory_image = "homedecor_plasmascreen_tv_inv.png",
 | 
			
		||||
	wield_image = "homedecor_plasmascreen_tv_inv.png",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	light_source = 10,
 | 
			
		||||
@@ -155,15 +148,15 @@ minetest.register_node("plasmascreen:tv_off", {
 | 
			
		||||
		end
 | 
			
		||||
	end,
 | 
			
		||||
	on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
 | 
			
		||||
		minetest.set_node(pos, {name = "plasmascreen:tv", param2 = node.param2})
 | 
			
		||||
		minetest.set_node(pos, {name = "homedecor:tv", param2 = node.param2})
 | 
			
		||||
	end,
 | 
			
		||||
	drop = "plasmascreen:tv"
 | 
			
		||||
	drop = "homedecor:tv"
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- crafting recipes
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "plasmascreen:tv",
 | 
			
		||||
	output = "homedecor:tv",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{'default:glass', 'default:coal_lump', 'default:glass'},
 | 
			
		||||
		{'default:steel_ingot', 'default:copper_ingot', 'default:steel_ingot'},
 | 
			
		||||
@@ -173,12 +166,12 @@ minetest.register_craft({
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	type = "shapeless",
 | 
			
		||||
	output = "plasmascreen:tv",
 | 
			
		||||
	output = "homedecor:tv",
 | 
			
		||||
	recipe = {'homedecor:television', 'homedecor:television'},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "plasmascreen:stand",
 | 
			
		||||
	output = "homedecor:tv_stand",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{'', '', ''},
 | 
			
		||||
		{'', 'default:steel_ingot', ''},
 | 
			
		||||
@@ -186,4 +179,14 @@ minetest.register_craft({
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("plasmascreen:screen1", "air")
 | 
			
		||||
minetest.register_alias("plasmascreen:screen2", "air")
 | 
			
		||||
minetest.register_alias("plasmascreen:screen3", "air")
 | 
			
		||||
minetest.register_alias("plasmascreen:screen4", "air")
 | 
			
		||||
minetest.register_alias("plasmascreen:screen6", "air")
 | 
			
		||||
minetest.register_alias("plasmascreen:screen5", "homedecor:tv")
 | 
			
		||||
minetest.register_alias("plasmascreen:stand", "homedecor:tv_stand")
 | 
			
		||||
minetest.register_alias("plasmascreen:tv", "homedecor:tv")
 | 
			
		||||
minetest.register_alias("plasmascreen:tv_off", "homedecor:tv_off")
 | 
			
		||||
 | 
			
		||||
minetest.log("action", "[plasmascreen] loaded.")
 | 
			
		||||
@@ -1,3 +1,3 @@
 | 
			
		||||
name = plasmascreen
 | 
			
		||||
name = homedecor_plasmascreen
 | 
			
		||||
depends = default, homedecor_common, homedecor_electronics
 | 
			
		||||
optional_depends = screwdriver
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 184 B After Width: | Height: | Size: 184 B  | 
| 
		 Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB  | 
| 
		 Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB  | 
| 
		 Before Width: | Height: | Size: 313 B After Width: | Height: | Size: 313 B  | 
| 
		 Before Width: | Height: | Size: 105 B After Width: | Height: | Size: 105 B  | 
| 
		 Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB  | 
@@ -134,6 +134,7 @@ homedecor_roofing.register_slope = function(modname, subname, recipeitem, groups
 | 
			
		||||
		paramtype2 = "facedir",
 | 
			
		||||
		selection_box = slope_cbox,
 | 
			
		||||
		collision_box = slope_cbox,
 | 
			
		||||
		use_texture_alpha = "blend",
 | 
			
		||||
		groups = groups,
 | 
			
		||||
		on_place = minetest.rotate_node,
 | 
			
		||||
		sounds = default.node_sound_wood_defaults()
 | 
			
		||||
 
 | 
			
		||||
@@ -47,7 +47,6 @@ minetest.register_node(":lrfurn:longsofa", {
 | 
			
		||||
		end
 | 
			
		||||
		pos.y = pos.y-0.5
 | 
			
		||||
		clicker:setpos(pos)
 | 
			
		||||
		clicker:set_hp(20)
 | 
			
		||||
		return itemstack
 | 
			
		||||
	end
 | 
			
		||||
})
 | 
			
		||||
 
 | 
			
		||||
@@ -47,7 +47,6 @@ minetest.register_node(":lrfurn:sofa", {
 | 
			
		||||
		end
 | 
			
		||||
		pos.y = pos.y-0.5
 | 
			
		||||
		clicker:setpos(pos)
 | 
			
		||||
		clicker:set_hp(20)
 | 
			
		||||
		return itemstack
 | 
			
		||||
	end
 | 
			
		||||
})
 | 
			
		||||
 
 | 
			
		||||
@@ -57,6 +57,7 @@ minetest.register_node(":lrfurn:coffeetable", {
 | 
			
		||||
	},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	use_texture_alpha = "blend",
 | 
			
		||||
	groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	node_box = {
 | 
			
		||||
 
 | 
			
		||||
@@ -15,6 +15,7 @@ minetest.register_node(":lrfurn:endtable", {
 | 
			
		||||
	},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	use_texture_alpha = "blend",
 | 
			
		||||
	groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	node_box = {
 | 
			
		||||
 
 | 
			
		||||
@@ -34,6 +34,7 @@ for _, t in ipairs(leg_materials) do
 | 
			
		||||
		inventory_image = "homedecor_table_legs_"..name..".png",
 | 
			
		||||
		wield_image = "homedecor_table_legs_"..name..".png",
 | 
			
		||||
		walkable = false,
 | 
			
		||||
		use_texture_alpha = "blend",
 | 
			
		||||
		groups = {snappy=3},
 | 
			
		||||
		sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
		selection_box = {
 | 
			
		||||
@@ -76,6 +77,7 @@ for i, mat in ipairs(tabletop_materials) do
 | 
			
		||||
				'homedecor_blanktile.png',
 | 
			
		||||
			},
 | 
			
		||||
			wield_image = 'homedecor_'..m..'_table_'..shape..'_inv.png',
 | 
			
		||||
			use_texture_alpha = "blend",
 | 
			
		||||
			groups = { snappy = 3 },
 | 
			
		||||
			sounds = s,
 | 
			
		||||
			selection_box = tables_cbox,
 | 
			
		||||
@@ -111,6 +113,7 @@ for i, mat in ipairs(tabletop_materials) do
 | 
			
		||||
					'homedecor_'..m..'_table_edges.png',
 | 
			
		||||
					"homedecor_table_legs_"..leg_mat..".png",
 | 
			
		||||
				},
 | 
			
		||||
				use_texture_alpha = "blend",
 | 
			
		||||
				groups = { snappy = 3 },
 | 
			
		||||
				sounds = s,
 | 
			
		||||
			})
 | 
			
		||||
 
 | 
			
		||||
@@ -61,6 +61,7 @@ homedecor.register("trash_can", {
 | 
			
		||||
	tiles = { "homedecor_trash_can.png" },
 | 
			
		||||
	inventory_image = "homedecor_trash_can_inv.png",
 | 
			
		||||
	description = S("Small Trash Can"),
 | 
			
		||||
	use_texture_alpha = "clip",
 | 
			
		||||
	groups = {snappy=3},
 | 
			
		||||
	selection_box = trash_cbox,
 | 
			
		||||
	collision_box = trash_cbox,
 | 
			
		||||
 
 | 
			
		||||
@@ -173,7 +173,7 @@ if not skinsdb_mod_path then -- If not managed by skinsdb
 | 
			
		||||
 | 
			
		||||
	minetest.register_on_joinplayer(function(player)
 | 
			
		||||
 | 
			
		||||
		local skin = player:get_attribute("homedecor:player_skin")
 | 
			
		||||
		local skin = player:get_meta():get("homedecor:player_skin")
 | 
			
		||||
 | 
			
		||||
		if skin and skin ~= "" then
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -100,7 +100,7 @@ local update_item = function(pos, node)
 | 
			
		||||
		local e = minetest.add_entity(pos,"itemframes:item")
 | 
			
		||||
		if node.name == "itemframes:frame" then
 | 
			
		||||
			local yaw = math.pi * 2 - node.param2 * math.pi / 2
 | 
			
		||||
			e:setyaw(yaw)
 | 
			
		||||
			e:set_yaw(yaw)
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||