mirror of
https://github.com/mt-mods/homedecor_modpack.git
synced 2025-07-19 06:00:19 +02:00
Split the big "homedecor" mod into multiple sub-mods
Any of these new submods can be run without any other components that were once part of the big "homedecor" mod, other than homedecor_common and homedecor_i18n Reduced dependencies where possible, but each submod still has its various dependencies more or less the same as before, i.e. some need basic_materials, others need unifieddyes, some need building_blocks, and so on. All of the stuff that used to be under homedecor/handlers got moved to homedecor_common, as did any models and/or textures that are used by more than one other homedecor component. All the miscellaneous items that didn't warrant their own mod ended up in homedecor_misc, which can also be thought of as the remains of the original "homedecor" mod, renamed.
This commit is contained in:
489
homedecor_fences/init.lua
Normal file
489
homedecor_fences/init.lua
Normal file
@ -0,0 +1,489 @@
|
||||
-- This file adds fences of various types
|
||||
|
||||
local signs_modpath = minetest.get_modpath("signs_lib")
|
||||
|
||||
local sign_post_model = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.4375, -0.25, -0.1875, 0.4375, 0.375, -0.125},
|
||||
{-0.125, -0.5, -0.125, 0.125, 0.5, 0.125},
|
||||
}
|
||||
}
|
||||
|
||||
if signs_modpath then
|
||||
sign_post_model = signs_lib.sign_post_model.nodebox
|
||||
end
|
||||
|
||||
local S = homedecor_i18n.gettext
|
||||
|
||||
local materials = {
|
||||
{ S("brass"), "brass" },
|
||||
{ S("wrought iron"), "wrought_iron" },
|
||||
}
|
||||
|
||||
for _, m in ipairs(materials) do
|
||||
|
||||
local desc, name = unpack(m)
|
||||
|
||||
homedecor.register("fence_"..name, {
|
||||
description = S("Fence/railing (@1)", desc),
|
||||
drawtype = "fencelike",
|
||||
tiles = {"homedecor_generic_metal_"..name..".png"},
|
||||
inventory_image = "homedecor_fence_"..name..".png",
|
||||
selection_box = homedecor.nodebox.bar_y(1/7),
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
-- brass/wrought iron with signs:
|
||||
|
||||
homedecor.register("fence_"..name.."_with_sign", {
|
||||
description = S("Fence/railing with sign (@1)", desc),
|
||||
tiles = {
|
||||
"homedecor_sign_"..name.."_post_top.png",
|
||||
"homedecor_sign_"..name.."_post_bottom.png",
|
||||
"homedecor_sign_"..name.."_post_side.png",
|
||||
"homedecor_sign_"..name.."_post_side.png",
|
||||
"homedecor_sign_"..name.."_post_back.png",
|
||||
"homedecor_sign_"..name.."_post_front.png",
|
||||
},
|
||||
wield_image = "homedecor_sign_"..name.."_post.png",
|
||||
node_box = sign_post_model,
|
||||
groups = {snappy=3,not_in_creative_inventory=1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
sunlight_propagates = true,
|
||||
drop = {
|
||||
max_items = 2,
|
||||
items = {
|
||||
{ items = { "default:sign_wall" }},
|
||||
{ items = { "homedecor:fence_"..name }},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
end
|
||||
|
||||
-- other types of fences
|
||||
|
||||
homedecor.register("fence_picket", {
|
||||
description = S("Unpainted Picket Fence"),
|
||||
tiles = {
|
||||
"homedecor_blanktile.png",
|
||||
"homedecor_blanktile.png",
|
||||
"homedecor_fence_picket.png",
|
||||
"homedecor_fence_picket.png",
|
||||
"homedecor_fence_picket_backside.png",
|
||||
"homedecor_fence_picket.png"
|
||||
},
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
selection_box = homedecor.nodebox.slab_z(-0.1),
|
||||
node_box = homedecor.nodebox.slab_z(-0.002),
|
||||
})
|
||||
|
||||
homedecor.register("fence_picket_corner", {
|
||||
description = S("Unpainted Picket Fence Corner"),
|
||||
tiles = {
|
||||
"homedecor_blanktile.png",
|
||||
"homedecor_blanktile.png",
|
||||
"homedecor_fence_picket.png",
|
||||
"homedecor_fence_picket_backside.png",
|
||||
"homedecor_fence_picket_backside.png",
|
||||
"homedecor_fence_picket.png",
|
||||
},
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
selection_box = homedecor.nodebox.corner_xz(0.1, -0.1),
|
||||
node_box = homedecor.nodebox.corner_xz(0.002, -0.002),
|
||||
})
|
||||
|
||||
homedecor.register("fence_picket_white", {
|
||||
description = S("White Picket Fence"),
|
||||
tiles = {
|
||||
"homedecor_blanktile.png",
|
||||
"homedecor_blanktile.png",
|
||||
"homedecor_fence_picket_white.png",
|
||||
"homedecor_fence_picket_white.png",
|
||||
"homedecor_fence_picket_white_backside.png",
|
||||
"homedecor_fence_picket_white.png"
|
||||
},
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
selection_box = homedecor.nodebox.slab_z(-0.1),
|
||||
node_box = homedecor.nodebox.slab_z(-0.002),
|
||||
})
|
||||
|
||||
homedecor.register("fence_picket_corner_white", {
|
||||
description = S("White Picket Fence Corner"),
|
||||
tiles = {
|
||||
"homedecor_blanktile.png",
|
||||
"homedecor_blanktile.png",
|
||||
"homedecor_fence_picket_white.png",
|
||||
"homedecor_fence_picket_white_backside.png",
|
||||
"homedecor_fence_picket_white_backside.png",
|
||||
"homedecor_fence_picket_white.png",
|
||||
},
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
selection_box = homedecor.nodebox.corner_xz(0.1, -0.1),
|
||||
node_box = homedecor.nodebox.corner_xz(0.002, -0.002),
|
||||
})
|
||||
|
||||
homedecor.register("fence_privacy", {
|
||||
description = S("Wooden Privacy Fence"),
|
||||
tiles = {
|
||||
"homedecor_fence_privacy_tb.png",
|
||||
"homedecor_fence_privacy_tb.png",
|
||||
"homedecor_fence_privacy_sides.png",
|
||||
"homedecor_fence_privacy_sides.png",
|
||||
"homedecor_fence_privacy_backside.png",
|
||||
"homedecor_fence_privacy_front.png"
|
||||
},
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
selection_box = homedecor.nodebox.slab_z(-3/16),
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -8/16, -8/16, 5/16, -5/16, 8/16, 7/16 }, -- left part
|
||||
{ -4/16, -8/16, 5/16, 3/16, 8/16, 7/16 }, -- middle part
|
||||
{ 4/16, -8/16, 5/16, 8/16, 8/16, 7/16 }, -- right part
|
||||
{ -8/16, -2/16, 7/16, 8/16, 2/16, 8/16 }, -- connecting rung
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
homedecor.register("fence_privacy_corner", {
|
||||
description = S("Wooden Privacy Fence Corner"),
|
||||
tiles = {
|
||||
"homedecor_fence_privacy_corner_tb.png",
|
||||
"homedecor_fence_privacy_corner_tb.png^[transformFY",
|
||||
"homedecor_fence_privacy_corner_right.png",
|
||||
"homedecor_fence_privacy_backside2.png",
|
||||
"homedecor_fence_privacy_backside.png",
|
||||
"homedecor_fence_privacy_corner_front.png"
|
||||
},
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
homedecor.box.slab_z(-3/16),
|
||||
{ -0.5, -0.5, -0.5, -5/16, 0.5, 5/16 },
|
||||
}
|
||||
},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -7/16, -8/16, 5/16, -5/16, 8/16, 7/16 }, -- left part
|
||||
{ -4/16, -8/16, 5/16, 3/16, 8/16, 7/16 }, -- middle part
|
||||
{ 4/16, -8/16, 5/16, 8/16, 8/16, 7/16 }, -- right part
|
||||
{ -8/16, -2/16, 7/16, 8/16, 2/16, 8/16 }, -- back-side connecting rung
|
||||
|
||||
{ -7/16, -8/16, 4/16, -5/16, 8/16, 7/16 }, -- back-most part
|
||||
{ -7/16, -8/16, -4/16, -5/16, 8/16, 3/16 }, -- middle part
|
||||
{ -7/16, -8/16, -8/16, -5/16, 8/16, -5/16 }, -- front-most part
|
||||
{ -8/16, -2/16, -8/16, -7/16, 2/16, 7/16 }, -- left-side connecting rung
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
homedecor.register("fence_barbed_wire", {
|
||||
description = S("Barbed Wire Fence"),
|
||||
mesh = "homedecor_fence_barbed_wire.obj",
|
||||
tiles = {"homedecor_fence_barbed_wire.png"},
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
selection_box = homedecor.nodebox.slab_z(-0.125),
|
||||
collision_box = homedecor.nodebox.slab_z(-0.125),
|
||||
})
|
||||
|
||||
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" },
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
selection_box = homedecor.nodebox.corner_xz(0.125, -0.125),
|
||||
collision_box = homedecor.nodebox.corner_xz(0.125, -0.125),
|
||||
})
|
||||
|
||||
homedecor.register("fence_chainlink", {
|
||||
description = S("Chainlink Fence"),
|
||||
mesh="homedecor_fence_chainlink.obj",
|
||||
tiles = {
|
||||
"homedecor_fence_chainlink_tb.png",
|
||||
"homedecor_fence_chainlink_tb.png",
|
||||
"homedecor_fence_chainlink_sides.png",
|
||||
"homedecor_fence_chainlink_sides.png",
|
||||
"homedecor_fence_chainlink_fb.png",
|
||||
"homedecor_fence_chainlink_fb.png",
|
||||
},
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
selection_box = homedecor.nodebox.slab_z(-0.125),
|
||||
collision_box = homedecor.nodebox.slab_z(-0.125),
|
||||
})
|
||||
|
||||
|
||||
homedecor.register("fence_chainlink_corner", {
|
||||
description = S("Chainlink Fence Corner"),
|
||||
mesh = "homedecor_fence_chainlink_corner.obj",
|
||||
tiles = {
|
||||
"homedecor_fence_chainlink_corner_top.png",
|
||||
"homedecor_fence_chainlink_corner_top.png",
|
||||
"homedecor_fence_chainlink_corner_front.png",
|
||||
"homedecor_fence_chainlink_corner_front.png",
|
||||
"homedecor_fence_chainlink_corner_front.png",
|
||||
"homedecor_fence_chainlink_corner_front.png",
|
||||
},
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
selection_box = homedecor.nodebox.corner_xz(0.125, -0.125),
|
||||
collision_box = homedecor.nodebox.corner_xz(0.125, -0.125),
|
||||
})
|
||||
|
||||
homedecor.register("fence_wrought_iron_2", {
|
||||
description = S("Wrought Iron fence (type 2)"),
|
||||
tiles = {
|
||||
"homedecor_fence_wrought_iron_2_tb.png",
|
||||
"homedecor_fence_wrought_iron_2_tb.png",
|
||||
"homedecor_fence_wrought_iron_2_sides.png",
|
||||
"homedecor_fence_wrought_iron_2_sides.png",
|
||||
"homedecor_fence_wrought_iron_2_fb.png",
|
||||
"homedecor_fence_wrought_iron_2_fb.png"
|
||||
},
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
selection_box = homedecor.nodebox.slab_z(-0.08),
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -8/16, -8/16, 14/32, -7.75/16, 8/16, 16/32 }, -- left post
|
||||
{ 7.75/16, -8/16, 14/32, 8/16, 8/16, 16/32 }, -- right post
|
||||
{ -8/16, 7.75/16, 14/32, 8/16, 8/16, 16/32 }, -- top piece
|
||||
{ -8/16, -0.015625, 14.75/32, 8/16, 0.015625, 15.25/32 }, -- cross piece
|
||||
{ -0.015625, -8/16, 14.75/32, 0.015625, 8/16, 15.25/32 }, -- cross piece
|
||||
{ -8/16, -8/16, 14/32, 8/16, -7.75/16, 16/32 }, -- bottom piece
|
||||
{ -8/16, -8/16, 15/32, 8/16, 8/16, 15/32 } -- the grid itself
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
homedecor.register("fence_wrought_iron_2_corner", {
|
||||
description = S("Wrought Iron fence (type 2) Corner"),
|
||||
tiles = {
|
||||
"homedecor_fence_corner_wrought_iron_2_tb.png",
|
||||
"homedecor_fence_corner_wrought_iron_2_tb.png",
|
||||
"homedecor_fence_corner_wrought_iron_2_sides.png^[transformFX",
|
||||
"homedecor_fence_corner_wrought_iron_2_sides.png",
|
||||
"homedecor_fence_corner_wrought_iron_2_sides.png^[transformFX",
|
||||
"homedecor_fence_corner_wrought_iron_2_sides.png"
|
||||
},
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
selection_box = homedecor.nodebox.corner_xz(0.08, -0.08),
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.5, -0.5, 0.453125, -0.453125, 0.5, 0.5 }, -- corner edge
|
||||
{ -7.5/16, 7.75/16, 14/32, 8/16, 8/16, 16/32 }, -- top piece
|
||||
{ -7.5/16, -8/16, 14/32, 8/16, -7.75/16, 16/32 }, -- bottom piece
|
||||
{ -16/32, 7.75/16, -8/16, -14/32, 8/16, 8/16 }, -- top piece, side
|
||||
{ -16/32, -8/16, -8/16, -14/32, -7.75/16, 8/16 }, -- bottom piece, side
|
||||
{ -7.5/16, -8/16, 7.5/16, 8/16, 8/16, 7.5/16 }, -- the grid itself
|
||||
{ -7.5/16, -8/16, -8/16, -7.5/16, 8/16, 7.5/16 }, -- the grid itself, side
|
||||
{ -15.5/32, -0.5, -0.5, -14.5/32, 0.5, -0.484375 }, -- left post side
|
||||
{ 7.75/16, -8/16, 14.5/32, 8/16, 8/16, 15.5/32 }, -- right post
|
||||
{ -8/16, -0.015625, 14.75/32, 8/16, 0.015625, 15.25/32 }, -- cross piece
|
||||
{ -0.015625, -8/16, 14.75/32, 0.015625, 8/16, 15.25/32 }, -- cross piece
|
||||
{ -15.25/32, -0.5, -0.015625, -14.75/32, 0.5, 0.015625 }, -- cross piece side
|
||||
{ -15.25/32, -0.015625, -0.5, -14.75/32, 0.015625, 0.5 } -- cross piece side
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
if signs_modpath then
|
||||
signs_lib.register_fence_with_sign("homedecor:fence_brass", "homedecor:fence_brass_with_sign")
|
||||
signs_lib.register_fence_with_sign("homedecor:fence_wrought_iron", "homedecor:fence_wrought_iron_with_sign")
|
||||
end
|
||||
|
||||
-- crafting
|
||||
|
||||
-- Brass/wrought iron fences
|
||||
|
||||
minetest.register_craft( {
|
||||
output = "homedecor:fence_brass 6",
|
||||
recipe = {
|
||||
{ "basic_materials:brass_ingot", "basic_materials:brass_ingot", "basic_materials:brass_ingot" },
|
||||
{ "basic_materials:brass_ingot", "basic_materials:brass_ingot", "basic_materials:brass_ingot" },
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
output = "homedecor:fence_wrought_iron 6",
|
||||
recipe = {
|
||||
{ "default:iron_lump","default:iron_lump","default:iron_lump" },
|
||||
{ "default:iron_lump","default:iron_lump","default:iron_lump" },
|
||||
},
|
||||
})
|
||||
|
||||
-- other types of fences
|
||||
|
||||
minetest.register_craft( {
|
||||
output = "homedecor:fence_wrought_iron_2 4",
|
||||
recipe = {
|
||||
{ "homedecor:pole_wrought_iron", "default:iron_lump" },
|
||||
{ "homedecor:pole_wrought_iron", "default:iron_lump" },
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
type = "shapeless",
|
||||
output = "homedecor:fence_wrought_iron_2_corner",
|
||||
recipe = {
|
||||
"homedecor:fence_wrought_iron_2",
|
||||
"homedecor:fence_wrought_iron_2"
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
type = "shapeless",
|
||||
output = "homedecor:fence_wrought_iron_2 2",
|
||||
recipe = {
|
||||
"homedecor:fence_wrought_iron_2_corner",
|
||||
},
|
||||
})
|
||||
|
||||
--
|
||||
|
||||
minetest.register_craft( {
|
||||
output = "homedecor:fence_picket 6",
|
||||
recipe = {
|
||||
{ "group:stick", "group:stick", "group:stick" },
|
||||
{ "group:stick", "", "group:stick" },
|
||||
{ "group:stick", "group:stick", "group:stick" }
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
type = "shapeless",
|
||||
output = "homedecor:fence_picket_corner",
|
||||
recipe = {
|
||||
"homedecor:fence_picket",
|
||||
"homedecor:fence_picket"
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
type = "shapeless",
|
||||
output = "homedecor:fence_picket 2",
|
||||
recipe = {
|
||||
"homedecor:fence_picket_corner"
|
||||
},
|
||||
})
|
||||
|
||||
--
|
||||
|
||||
|
||||
minetest.register_craft( {
|
||||
output = "homedecor:fence_picket_white 6",
|
||||
recipe = {
|
||||
{ "group:stick", "group:stick", "group:stick" },
|
||||
{ "group:stick", "dye:white", "group:stick" },
|
||||
{ "group:stick", "group:stick", "group:stick" }
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
type = "shapeless",
|
||||
output = "homedecor:fence_picket_corner_white",
|
||||
recipe = {
|
||||
"homedecor:fence_picket_white",
|
||||
"homedecor:fence_picket_white"
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
type = "shapeless",
|
||||
output = "homedecor:fence_picket_white 2",
|
||||
recipe = {
|
||||
"homedecor:fence_picket_corner_white"
|
||||
},
|
||||
})
|
||||
|
||||
--
|
||||
|
||||
|
||||
minetest.register_craft( {
|
||||
output = "homedecor:fence_privacy 6",
|
||||
recipe = {
|
||||
{ "group:wood", "group:stick", "group:wood" },
|
||||
{ "group:wood", "", "group:wood" },
|
||||
{ "group:wood", "group:stick", "group:wood" }
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
type = "shapeless",
|
||||
output = "homedecor:fence_privacy_corner",
|
||||
recipe = {
|
||||
"homedecor:fence_privacy",
|
||||
"homedecor:fence_privacy"
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
type = "shapeless",
|
||||
output = "homedecor:fence_privacy 2",
|
||||
recipe = {
|
||||
"homedecor:fence_privacy_corner"
|
||||
},
|
||||
})
|
||||
|
||||
--
|
||||
|
||||
|
||||
minetest.register_craft( {
|
||||
output = "homedecor:fence_barbed_wire 6",
|
||||
recipe = {
|
||||
{ "group:stick", "basic_materials:steel_wire", "group:stick" },
|
||||
{ "group:stick", "", "group:stick" },
|
||||
{ "group:stick", "basic_materials:steel_wire", "group:stick" }
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
type = "shapeless",
|
||||
output = "homedecor:fence_barbed_wire_corner",
|
||||
recipe = { "homedecor:fence_barbed_wire", "homedecor:fence_barbed_wire" },
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
type = "shapeless",
|
||||
output = "homedecor:fence_barbed_wire 2",
|
||||
recipe = { "homedecor:fence_barbed_wire_corner" },
|
||||
})
|
||||
|
||||
--
|
||||
|
||||
minetest.register_craft( {
|
||||
output = "homedecor:fence_chainlink 9",
|
||||
recipe = {
|
||||
{ "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" },
|
||||
{ "basic_materials:steel_wire", "basic_materials:steel_wire", "default:steel_ingot" },
|
||||
{ "basic_materials:steel_wire", "basic_materials:steel_wire", "default:steel_ingot" }
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
type = "shapeless",
|
||||
output = "homedecor:fence_chainlink_corner",
|
||||
recipe = { "homedecor:fence_chainlink", "homedecor:fence_chainlink" },
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
type = "shapeless",
|
||||
output = "homedecor:fence_chainlink 2",
|
||||
recipe = { "homedecor:fence_chainlink_corner" },
|
||||
})
|
Reference in New Issue
Block a user