1
0
mirror of https://github.com/mt-mods/homedecor_modpack.git synced 2025-07-19 14:00:20 +02:00

Compare commits

..

1 Commits

Author SHA1 Message Date
6c6cb347fd move door 3d models to "3d extras" mod
by extension, require its presence to cause doors to be 3d

for consistency with the appearance/style of mtg doors in worlds that
wouldn't normally use the 3d extras mod
2019-05-28 07:57:23 -04:00
28 changed files with 623 additions and 743 deletions

View File

@ -89,19 +89,28 @@ end
-- 3d-ify default mtg wood and steel doors and trap doors
if minetest.get_modpath("doors") then
local function clone_node(name)
local node2 = {}
local node = minetest.registered_nodes[name]
for k,v in pairs(node) do
node2[k]=v
end
return node2
end
local def
for _,mat in ipairs({"wood", "steel"}) do
def = table.copy(minetest.registered_nodes["doors:door_"..mat.."_a"])
def = clone_node("doors:door_"..mat.."_a")
def.mesh = "homedecor_3d_door_"..mat.."_a.obj"
minetest.register_node(":doors:door_"..mat.."_a", def)
def = table.copy(minetest.registered_nodes["doors:door_"..mat.."_b"])
def = clone_node("doors:door_"..mat.."_b")
def.mesh = "homedecor_3d_door_"..mat.."_b.obj"
minetest.register_node(":doors:door_"..mat.."_b", def)
end
for _,mat in ipairs({"", "_steel"}) do
def = table.copy(minetest.registered_nodes["doors:trapdoor"..mat])
def = clone_node("doors:trapdoor"..mat)
def.drawtype = "mesh"
def.mesh = "homedecor_3d_trapdoor"..mat..".obj"
def.tiles = {
@ -110,7 +119,7 @@ if minetest.get_modpath("doors") then
}
minetest.register_node(":doors:trapdoor"..mat, def)
def = table.copy(minetest.registered_nodes["doors:trapdoor"..mat.."_open"])
def = clone_node("doors:trapdoor"..mat.."_open")
def.mesh = "homedecor_3d_trapdoor"..mat.."_open.obj"
def.drawtype = "mesh"
def.tiles = {

View File

@ -1,3 +1,3 @@
default
creative
intllib?

View File

Before

Width:  |  Height:  |  Size: 524 B

After

Width:  |  Height:  |  Size: 524 B

View File

@ -3,6 +3,17 @@
local S = homedecor.gettext
local mesecons_mp = minetest.get_modpath("mesecons")
-- clone node
function hd_doors_clone_node(name)
local node2 = {}
local node = minetest.registered_nodes[name]
for k,v in pairs(node) do
node2[k]=v
end
return node2
end
-- new doors using minetest_game doors API
local door_list = {
@ -29,41 +40,41 @@ local door_list = {
custom_model = "homedecor_door_fancy"
},
{ name = "french_oak",
description = "French door, Oak-colored",
{ name = "wood_glass_oak",
description = "Glass and Wood, Oak-colored",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = {
main = default.node_sound_glass_defaults(),
},
backface = true,
alpha = true,
custom_model = "homedecor_door_french"
custom_model = "homedecor_door_wood_glass"
},
{ name = "french_mahogany",
description = "French door, Mahogany-colored",
{ name = "wood_glass_mahogany",
description = "Glass and Wood, Mahogany-colored",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = {
main = default.node_sound_glass_defaults(),
},
backface = true,
alpha = true,
custom_model = "homedecor_door_french"
custom_model = "homedecor_door_wood_glass"
},
{ name = "french_white",
description = "French door, White",
{ name = "wood_glass_white",
description = "Glass and Wood, White",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = {
main = default.node_sound_glass_defaults(),
},
backface = true,
alpha = true,
custom_model = "homedecor_door_french"
custom_model = "homedecor_door_wood_glass"
},
{ name = "basic_panel",
description = "Basic white panel Door",
{ name = "bedroom",
description = "White Bedroom Door",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = {
main = default.node_sound_wood_defaults(),
@ -84,8 +95,8 @@ local door_list = {
custom_model = "homedecor_door_wrought_iron"
},
{ name = "carolina",
description = "Wooden Carolina door",
{ name = "woodglass2",
description = "Wooden door with glass insert, type 2",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = {
main = default.node_sound_wood_defaults(),
@ -155,7 +166,7 @@ end
local hd_3d = minetest.get_modpath("homedecor_3d_extras")
for _, door in ipairs(door_list) do
doors.register("homedecor_"..door.name, {
doors.register(door.name, {
tiles = {{ name = "homedecor_door_"..door.name..".png", backface_culling = door.backface }},
description = door.description,
inventory_image = "homedecor_door_"..door.name.."_inv.png",
@ -166,35 +177,33 @@ for _, door in ipairs(door_list) do
mesecons = mesecons
})
local nn_a = "doors:homedecor_"..door.name.."_a"
local nn_b = "doors:homedecor_"..door.name.."_b"
local nn_a = "doors:"..door.name.."_a"
local nn_b = "doors:"..door.name.."_b"
if door.alpha then
local def = table.copy(minetest.registered_nodes[nn_a])
local def = hd_doors_clone_node(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 = hd_doors_clone_node(nn_b)
def.use_texture_alpha = true
minetest.register_node(":"..nn_b, def)
end
if door.custom_model and hd_3d then
def = table.copy(minetest.registered_nodes[nn_a])
def = hd_doors_clone_node(nn_a)
def.mesh = door.custom_model.."_a.obj"
minetest.register_node(":"..nn_a, def)
def = table.copy(minetest.registered_nodes[nn_b])
def = hd_doors_clone_node(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")
end
-- Gates
@ -457,8 +466,8 @@ minetest.register_craft( {
type = "shapeless",
output = "homedecor:gate_half_door_closed 4",
recipe = {
"doors:homedecor_wood_plain_a",
"doors:homedecor_wood_plain_a"
"homedecor:door_wood_plain_a",
"homedecor:door_wood_plain_a"
},
})
@ -466,8 +475,8 @@ minetest.register_craft( {
type = "shapeless",
output = "homedecor:gate_half_door_white_closed 4",
recipe = {
"doors:homedecor_bedroom_a",
"doors:homedecor_bedroom_a"
"homedecor:door_bedroom_a",
"homedecor:door_bedroom_a"
},
})
@ -542,7 +551,7 @@ minetest.register_craft( {
-- plain wood, non-windowed
minetest.register_craft( {
output = "doors:homedecor_wood_plain 2",
output = "homedecor:door_wood_plain_a 2",
recipe = {
{ "group:wood", "group:wood", "" },
{ "group:wood", "group:wood", "default:steel_ingot" },
@ -553,7 +562,7 @@ minetest.register_craft( {
-- fancy exterior
minetest.register_craft( {
output = "doors:homedecor_exterior_fancy 2",
output = "homedecor:door_exterior_fancy_a 2",
recipe = {
{ "group:wood", "default:glass" },
{ "group:wood", "group:wood" },
@ -561,10 +570,12 @@ minetest.register_craft( {
},
})
-- French style wood/glass
-- wood and glass (grid style)
-- bare
minetest.register_craft( {
output = "doors:homedecor_french_oak 2",
output = "homedecor:door_wood_glass_oak_a 2",
recipe = {
{ "default:glass", "group:wood" },
{ "group:wood", "default:glass" },
@ -573,7 +584,7 @@ minetest.register_craft( {
})
minetest.register_craft( {
output = "doors:homedecor_french_oak 2",
output = "homedecor:door_wood_glass_oak_a 2",
recipe = {
{ "group:wood", "default:glass" },
{ "default:glass", "group:wood" },
@ -581,23 +592,27 @@ minetest.register_craft( {
},
})
-- mahogany
minetest.register_craft( {
type = "shapeless",
output = "doors:homedecor_french_mahogany 2",
output = "homedecor:door_wood_glass_mahogany_a 2",
recipe = {
"dye:brown",
"doors:homedecor_wood_glass_oak_a",
"doors:homedecor_wood_glass_oak_a"
"homedecor:door_wood_glass_oak_a",
"homedecor:door_wood_glass_oak_a"
},
})
-- white
minetest.register_craft( {
type = "shapeless",
output = "doors:homedecor_french_white 2",
output = "homedecor:door_wood_glass_white_a 2",
recipe = {
"dye:white",
"doors:homedecor_wood_glass_oak_a",
"doors:homedecor_wood_glass_oak_a"
"homedecor:door_wood_glass_oak_a",
"homedecor:door_wood_glass_oak_a"
},
})
@ -606,7 +621,7 @@ minetest.register_craft( {
-- oak
minetest.register_craft( {
output = "doors:homedecor_closet_oak 2",
output = "homedecor:door_closet_oak_a 2",
recipe = {
{ "", "group:stick", "group:stick" },
{ "default:steel_ingot", "group:stick", "group:stick" },
@ -618,18 +633,18 @@ minetest.register_craft( {
minetest.register_craft( {
type = "shapeless",
output = "doors:homedecor_closet_mahogany 2",
output = "homedecor:door_closet_mahogany_a 2",
recipe = {
"doors:homedecor_closet_oak_a",
"doors:homedecor_closet_oak_a",
"homedecor:door_closet_oak_a",
"homedecor:door_closet_oak_a",
"dye:brown"
},
})
-- wrought iron fence-like door
-- wrought fence-like door
minetest.register_craft( {
output = "doors:homedecor_wrought_iron 2",
output = "homedecor:door_wrought_iron_a 2",
recipe = {
{ "homedecor:pole_wrought_iron", "default:iron_lump" },
{ "homedecor:pole_wrought_iron", "default:iron_lump" },
@ -637,21 +652,21 @@ minetest.register_craft( {
},
})
-- bedroom/panel door
-- bedroom door
minetest.register_craft( {
output = "doors:homedecor_basic_panel",
output = "homedecor:door_bedroom_a",
recipe = {
{ "dye:white", "dye:white", "" },
{ "doors:homedecor_wood_plain_a", "basic_materials:brass_ingot", "" },
{ "homedecor:door_wood_plain_a", "basic_materials:brass_ingot", "" },
{ "", "", "" },
},
})
-- basic wood/glass single-lite door
-- woodglass door
minetest.register_craft( {
output = "doors:homedecor_woodglass",
output = "homedecor:door_woodglass_a",
recipe = {
{ "group:wood", "default:glass", "" },
{ "group:wood", "default:glass", "basic_materials:brass_ingot" },
@ -659,10 +674,10 @@ minetest.register_craft( {
},
})
-- "Carolina" door
-- woodglass door type 2
minetest.register_craft( {
output = "doors:homedecor_carolina",
output = "homedecor:door_woodglass2_a",
recipe = {
{ "default:glass", "default:glass", "" },
{ "group:wood", "group:wood", "default:iron_lump" },
@ -681,64 +696,19 @@ minetest.register_craft({
-- aliases
minetest.register_alias("homedecor:jpn_door_top", "air")
minetest.register_alias("homedecor:jpn_door_top_open", "air")
minetest.register_alias("homedecor:jpn_door_top", "air")
minetest.register_alias("homedecor:jpn_door_bottom", "homedecor:door_japanese_closed")
minetest.register_alias("homedecor:jpn_door_bottom", "homedecor:door_japanese_closed")
minetest.register_alias("homedecor:jpn_door_bottom_open", "homedecor:door_japanese_open")
minetest.register_alias("homedecor:jpn_door_top_open", "air")
minetest.register_alias("homedecor:jpn_door_bottom_open", "homedecor:door_japanese_open")
minetest.register_alias("homedecor:door_glass_right", "doors:door_glass_b")
minetest.register_alias("homedecor:door_glass_left", "doors:door_glass_a")
minetest.register_alias("doors:wood_glass_oak_a", "doors:homedecor_french_oak_a")
minetest.register_alias("doors:wood_glass_oak_b", "doors:homedecor_french_oak_b")
minetest.register_alias("doors:wood_glass_white_a", "doors:homedecor_french_white_a")
minetest.register_alias("doors:wood_glass_white_b", "doors:homedecor_french_white_b")
minetest.register_alias("doors:wood_glass_mahogany_a", "doors:homedecor_french_mahogany_a")
minetest.register_alias("doors:wood_glass_mahogany_b", "doors:homedecor_french_mahogany_b")
minetest.register_alias("doors:homedecor_wood_glass_oak_a", "doors:homedecor_french_oak_a")
minetest.register_alias("doors:homedecor_wood_glass_oak_b", "doors:homedecor_french_oak_b")
minetest.register_alias("doors:homedecor_wood_glass_white_a", "doors:homedecor_french_white_a")
minetest.register_alias("doors:homedecor_wood_glass_white_b", "doors:homedecor_french_white_b")
minetest.register_alias("doors:homedecor_wood_glass_mahogany_a", "doors:homedecor_french_mahogany_a")
minetest.register_alias("doors:homedecor_wood_glass_mahogany_b", "doors:homedecor_french_mahogany_b")
minetest.register_alias("doors:homedecor_woodglass2_a", "doors:homedecor_carolina_a")
minetest.register_alias("doors:homedecor_woodglass2_b", "doors:homedecor_carolina_b")
minetest.register_alias("doors:woodglass2_a", "doors:homedecor_carolina_a")
minetest.register_alias("doors:woodglass2_b", "doors:homedecor_carolina_b")
minetest.register_alias("doors:homedecor_bedroom_a", "doors:homedecor_basic_panel_a")
minetest.register_alias("doors:homedecor_bedroom_b", "doors:homedecor_basic_panel_b")
minetest.register_alias("doors:bedroom_a", "doors:homedecor_basic_panel_a")
minetest.register_alias("doors:bedroom_b", "doors:homedecor_basic_panel_b")
minetest.register_alias("homedecor:door_glass_right", "doors:door_glass_b")
minetest.register_alias("homedecor:door_glass_left", "doors:door_glass_a")
-- flip old homedecor doors around, since they use minetest_game doors API now
old_doors[#old_doors + 1] = "homedecor:door_wood_glass_oak_left"
old_doors[#old_doors + 1] = "homedecor:door_wood_glass_oak_right"
old_doors[#old_doors + 1] = "homedecor:door_wood_glass_white_left"
old_doors[#old_doors + 1] = "homedecor:door_wood_glass_white_right"
old_doors[#old_doors + 1] = "homedecor:door_wood_glass_mahogany_left"
old_doors[#old_doors + 1] = "homedecor:door_wood_glass_mahogany_right"
old_doors[#old_doors + 1] = "homedecor:door_woodglass2_left"
old_doors[#old_doors + 1] = "homedecor:door_woodglass2_right"
old_doors[#old_doors + 1] = "homedecor:door_bedroom_left"
old_doors[#old_doors + 1] = "homedecor:door_bedroom_right"
minetest.register_lbm({
name = ":homedecor:convert_doors_3",
name = ":homedecor:convert_doors",
label = "Convert Homedecor doors to mtg doors API",
nodenames = old_doors,
run_at_every_load = false,
@ -747,12 +717,10 @@ minetest.register_lbm({
local newparam2 = (node.param2 + 2) % 4
local e = string.find(node.name, "_", -7)
local dir = string.sub(node.name, e+1)
local newname = "doors:homedecor_"..string.sub(node.name, 16, e-1)
local newname = "doors:"..string.sub(node.name, 16, e-1)
if dir == "right" then
print("Want to replace "..node.name.." with "..newname.."_a")
minetest.set_node(pos, {name = newname.."_a", param2 = newparam2 })
else
print("Want to replace "..node.name.." with "..newname.."_b")
minetest.set_node(pos, {name = newname.."_b", param2 = newparam2 })
end
minetest.set_node({x=pos.x, y=pos.y+1, z=pos.z}, {name = "doors:hidden"})

View File

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -2,10 +2,9 @@
local S = homedecor.gettext
function homedecor.toggle_switch(pos, node, clicker, itemstack, pointed_thing)
if not clicker then return false end
local playername = clicker:get_player_name()
if minetest.is_protected(pos, playername) then
minetest.record_protection_violation(pos, playername)
if minetest.is_protected(pos, clicker:get_player_name()) then
minetest.record_protection_violation(pos,
sender:get_player_name())
return false
end
local sep = string.find(node.name, "_o", -5)

View File

@ -58,10 +58,61 @@ homedecor.register("chains", {
sounds = default.node_sound_stone_defaults(),
})
homedecor.register("torch_wall", {
description = S("Wall Torch"),
mesh = "forniture_torch.obj",
tiles = {
{
name="forniture_torch_flame.png",
animation={
type="vertical_frames",
aspect_w=40,
aspect_h=40,
length=1.0,
},
},
{ name = "homedecor_generic_metal.png", color = homedecor.color_black },
{ name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
"forniture_coal.png",
},
inventory_image="forniture_torch_inv.png",
walkable = false,
light_source = 14,
selection_box = {
type = "fixed",
fixed = { -0.15, -0.45, 0.15, 0.15,0.35, 0.5 },
},
groups = {cracky=3},
})
local wl_cbox = {
type = "fixed",
fixed = { -0.2, -0.5, 0, 0.2, 0.5, 0.5 },
}
homedecor.register("wall_lamp", {
description = S("Wall Lamp"),
mesh = "homedecor_wall_lamp.obj",
tiles = {
{ name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
homedecor.lux_wood,
"homedecor_light.png",
"homedecor_generic_metal_wrought_iron.png"
},
use_texture_alpha = true,
inventory_image = "homedecor_wall_lamp_inv.png",
groups = {snappy=3},
light_source = 11,
selection_box = wl_cbox,
walkable = false
})
minetest.register_alias("3dforniture:bars", "homedecor:bars")
minetest.register_alias("3dforniture:L_binding_bars", "homedecor:L_binding_bars")
minetest.register_alias("3dforniture:chains", "homedecor:chains")
minetest.register_alias("3dforniture:torch_wall", "homedecor:torch_wall")
minetest.register_alias('bars', 'homedecor:bars')
minetest.register_alias('binding_bars', 'homedecor:L_binding_bars')
minetest.register_alias('chains', 'homedecor:chains')
minetest.register_alias('torch_wall', 'homedecor:torch_wall')

View File

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -7,4 +7,3 @@ moreblocks?
building_blocks?
darkage?
mesecons?
digilines?

File diff suppressed because it is too large Load Diff

View File

@ -106,7 +106,7 @@ minetest.register_node(":homedecor:curtain_closed", {
drawtype = 'signlike',
use_texture_alpha = true,
walkable = false,
groups = { snappy = 3, ud_param2_colorable = 1, not_in_creative_inventory=1 },
groups = { snappy = 3, ud_param2_colorable = 1 },
sounds = default.node_sound_leaves_defaults(),
paramtype = "light",
paramtype2 = "colorwallmounted",
@ -116,7 +116,12 @@ minetest.register_node(":homedecor:curtain_closed", {
unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
end,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
minetest.set_node(pos, { name = "homedecor:curtain_open", param2 = node.param2 })
local topnode = minetest.get_node({x=pos.x, y=pos.y+1.0, z=pos.z})
if string.find(topnode.name, "homedecor:curtainrod") then
-- Open the curtains
local fdir = node.param2
minetest.set_node(pos, { name = "homedecor:curtain_open", param2 = fdir })
end
return itemstack
end
})
@ -138,7 +143,12 @@ minetest.register_node(":homedecor:curtain_open", {
unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
end,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
minetest.set_node(pos, { name = "homedecor:curtain_closed", param2 = node.param2 })
local topnode = minetest.get_node({x=pos.x, y=pos.y+1.0, z=pos.z})
if string.find(topnode.name, "homedecor:curtainrod") then
-- Close the curtains
local fdir = node.param2
minetest.set_node(pos, { name = "homedecor:curtain_closed", param2 = fdir })
end
return itemstack
end
})
@ -380,7 +390,7 @@ minetest.register_craft({
minetest.register_craft( {
output = "homedecor:curtain_open 4",
output = "homedecor:curtain_closed 4",
recipe = {
{ "wool:white", "", ""},
{ "wool:white", "", ""},
@ -389,7 +399,7 @@ minetest.register_craft( {
})
minetest.register_craft( {
output = "homedecor:curtain_open 4",
output = "homedecor:curtain_closed 4",
recipe = {
{ "cottages:wool", "", ""},
{ "cottages:wool", "", ""},