3dforniture/nodes.lua

623 lines
16 KiB
Lua

--[[
Modifed: 28.09.2019 Sokomine (see README)
3D Forniture
Copyright 2012 Tonyka
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
MA 02110-1301, USA.
Contributors:
InfinityProject
suggested creating bathroom kit.
cosarara97
code.
]]--
-- Deco Home
--Table
minetest.register_node("3dforniture:table",
{description = 'Table',
tiles = {
"forniture_wood.png",
"forniture_wood.png",
"forniture_wood_s1.png",
"forniture_wood_s1.png",
"forniture_wood_s2.png",
"forniture_wood_s2.png",
},
drawtype = "nodebox",
sunlight_propagates = true,
paramtype = 'light',
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
{-0.4,-0.5,-0.4, -0.3,0.4,-0.3},
{0.3,-0.5,-0.4, 0.4,0.4,-0.3},
{-0.4,-0.5,0.3, -0.3,0.4,0.4},
{0.3,-0.5,0.3, 0.4,0.4,0.4},
{-0.5,0.4,-0.5, 0.5,0.5,0.5},
{-0.4,-0.2,-0.3, -0.3,-0.1,0.3},
{0.3,-0.2,-0.4, 0.4,-0.1,0.3},
{-0.3,-0.2,-0.4, 0.4,-0.1,-0.3},
{-0.3,-0.2,0.3, 0.3,-0.1,0.4},
},
},
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}
})
--Chair
minetest.register_node("3dforniture:chair",
{ description = 'Chair',
tiles = {
"forniture_wood.png",
"forniture_wood.png",
"forniture_wood_s1.png",
"forniture_wood_s1.png",
"forniture_wood_s2.png",
"forniture_wood_s2.png",
},
drawtype = "nodebox",
sunlight_propagates = true,
paramtype = 'light',
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
{-0.3,-0.5,0.2, -0.2,0.5,0.3},
{0.2,-0.5,0.2, 0.3,0.5,0.3},
{-0.3,-0.5,-0.3, -0.2,-0.1,-0.2},
{0.2,-0.5,-0.3, 0.3,-0.1,-0.2},
{-0.3,-0.1,-0.3, 0.3,0,0.2},
{-0.2,0.1,0.25, 0.2,0.4,0.26}
},
},
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3},
},
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}
})
--Armchair
minetest.register_node("3dforniture:armchair",
{ description = 'Armchair',
tiles = {
"forniture_armchair_top.png",
"forniture_armchair_top.png",
"forniture_armchair_lat1.png",
"forniture_armchair_lat1.png",
"forniture_armchair_lat2.png",
"forniture_armchair_lat2.png",
},
drawtype = "nodebox",
sunlight_propagates = true,
paramtype = 'light',
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
--lat 1
{-0.5,-0.5,-0.45, -0.3,0.05,0.3},
{-0.45,-0.5,-0.5, -0.35,0.05,-0.45},
{-0.45,0.05,-0.45, -0.35,0.1,0.15},
--lat 2
{0.3,-0.5,-0.45, 0.5,0.05,0.3},{0.35,-0.5,-0.5,0.45,0.05,-0.45},{0.35,0.05,-0.45, 0.45,0.1,0.15},
--respaldo
{-0.5,-0.5,0.3, 0.5,0.45,0.5},{-0.45,0.45,0.35,0.45,0.5,0.45},
--base
{-0.3,-0.45,-0.35, 0.3,-0.1,0.3},{-0.3,-0.45,-0.4, 0.3,-0.15,-0.35},
--oreja 1
{-0.5,0.05,0.15, -0.3,0.45, 0.3},{-0.45,0.1,0.1, -0.35,0.45,0.15},{-0.45,0.45,0.15,-0.35,0.5,0.35},
--oreja 2
{0.3,0.05,0.15, 0.5,0.45,0.3},{0.35,0.1,0.1, 0.45,0.45,0.15},{0.35,0.45,0.15,0.45,0.5,0.35},
},
},
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}
},
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}
})
--Table Lamp
lamp_states = {"off", "low", "med", "hi", "max"}
light_level = 0
-- not_in_creative_inventory will be set to this value (we only want the FIRST lamp there)
nocr = 0
for i, state in ipairs(lamp_states) do
minetest.register_node("3dforniture:table_lamp_"..state,
{ description = 'Table Lamp ('..state..')',
drawtype = "nodebox",
tiles = {
"forniture_table_lamp_s.png",
"forniture_table_lamp_s.png",
"forniture_table_lamp_l.png",
},
paramtype = 'light',
paramtype2 == 'facedir',
node_box = {
type = "fixed",
fixed = {
--Lamp Base
{-0.15,-0.5,-0.15, 0.15,-0.45,0.15},
{-0.05,-0.45,-0.05, 0.05,-0.4,0.05},
{-0.025,-0.4,-0.025, 0.025,-0.1,0.025},
{-0.0125,-0.125,-0.2, 0.0125,-0.1,0.2},
{-0.2,-0.125,-0.0125, 0.2,-0.1,0.0125},
--Lamp Shade
{-0.2,-0.1,-0.2, -0.175,0.3,0.2},
{0.175,-0.1,-0.2, 0.2,0.3,0.2},
{-0.175,-0.1,-0.2, 0.175,0.3,-0.175},
{-0.175,-0.1,0.175, 0.175,0.3,0.2},
},
},
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5,0.5, 0.5},
},
groups = {cracky=2,oddly_breakable_by_hand=1, not_in_creative_inventory=nocr},
drop = "3dforniture:table_lamp_off",
light_source = light_level,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
minetest.swap_node(pos,
{name="3dforniture:table_lamp_"..lamp_states[i%#lamp_states +1]})
end,
})
light_level = light_level + 4
nocr = 1
end
-- Bathroom Kit
--Toilet
minetest.register_node("3dforniture:toilet",
{ description = 'Toilet',
tiles = {
"forniture_marble.png", "forniture_marble.png",
"forniture_marble_s1.png", "forniture_marble_s1.png",
"forniture_marble_s2.png", "forniture_marble_s2.png",
},
drawtype = "nodebox",
sunlight_propagates = false,
paramtype = 'light',
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
{-0.2,-0.5,-0.2, 0.2,-0.45,0.5},
{-0.1,-0.45,-0.1, 0.1,0,0.5},
{-0.3,-0.2,-0.3, 0.3,0,0.35},
{-0.25,0,-0.25, 0.25,0.05,0.25},
{-0.3,0,0.3, 0.3,0.4,0.5},
{-0.05,0.4,0.35, 0.05,0.45,0.45},
},
},
drop ="3dforniture:toilet",
groups = {cracky=3, not_in_creative_inventory=1},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
minetest.swap_node(pos, {name="3dforniture:toilet_open", param2=node.param2})
end,
})
minetest.register_node("3dforniture:toilet_open",
{ description = 'Toilet',
tiles = {
"forniture_marble_top_toilet.png", "forniture_marble.png",
"forniture_marble_sb1.png", "forniture_marble_sb1.png",
"forniture_marble_sb2.png", "forniture_marble_sb2.png",
},
drawtype = "nodebox",
sunlight_propagates = false,
paramtype = 'light',
paramtype2 = 'facedir',
node_box = {
type = "fixed",
fixed = {
{-0.2,-0.5,-0.2, 0.2,-0.45,0.5},
{-0.1,-0.45,-0.1, 0.1,-0.2,0.5},
{-0.1,-0.2,0.3, 0.1,0,0.5},
{-0.3,-0.2,0.1, 0.3,0,0.35},
{-0.3,-0.2,-0.3, -0.1,-0.15,0.1},
{-0.1,-0.2,-0.3, 0.1,-0.15,-0.1},
{0.1,-0.2,-0.3, 0.3,-0.15,0.1},
{-0.3,-0.15,-0.3, -0.2,0,0.1},
{-0.2,-0.15,-0.3, 0.2,0,-0.2},
{0.2,-0.15,-0.3, 0.3,0,0.1},
{-0.25,0,0.2, 0.25,0.5,0.25},
{-0.3,0,0.3, 0.3,0.4,0.5},
},
},
drop = "3dforniture:toilet",
groups = {cracky = 3, not_in_creative_inventory=1},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
minetest.swap_node(pos, {name="3dforniture:toilet", param2=node.param2})
minetest.sound_play("3dforniture_dig_toilet", {
pos=pos,
max_hear_distance = 10,
gain = 0.5,
})
end,
})
--Sink
minetest.register_node("3dforniture:sink",
{description = 'Sink',
tiles = {
"forniture_marble_top_sink.png", "forniture_marble.png",
"forniture_marble_sb1.png", "forniture_marble_sb1.png",
"forniture_marble_sb2.png", "forniture_marble_sb2.png",
},
inventory_image = "3dforniture_inv_sink.png",
drawtype = "nodebox",
sunlight_propagates = true,
paramtype = 'light',
paramtype2 = 'facedir',
node_box = {
type = "fixed",
fixed = {
{-0.15,0.35,0.2,0.15,0.4,0.5},
{-0.25,0.4,0.4, 0.25,0.45,0.5},
{-0.25,0.4,0.15, -0.15,0.45,0.4},
{0.15,0.4,0.15, 0.25,0.45,0.4},
{-0.15,0.4,0.15, 0.15,0.45,0.2},
{-0.3,0.45,0.4, 0.3,0.5,0.5},
{-0.3,0.45,0.1, -0.25,0.5,0.4},
{0.25,0.45,0.1, 0.3,0.5,0.4},
{-0.25,0.45,0.1, 0.25,0.5,0.15},
},
},
selection_box = {
type = "fixed",
fixed = {-0.3,0.35,0.1, 0.3,0.5,0.5},
},
groups = {cracky=2,}
})
--Taps
minetest.register_node("3dforniture:taps",
{ description = 'Taps',
tiles = {
"forniture_metal.png", "forniture_metal.png",
"forniture_metal_s1.png", "forniture_metal_s1.png",
"forniture_metal_s2.png", "forniture_metal_s2.png",
},
inventory_image = "3dforniture_inv_taps.png",
drawtype = "nodebox",
sunlight_propagates = true,
paramtype = 'light',
paramtype2 = 'facedir',
node_box = {
type = "fixed",
fixed = {
--Base
{-0.25,-0.45,0.49, 0.25,-0.3,0.5},
{-0.05,-0.4,0.25, 0.05,-0.35,0.5},
{-0.05,-0.425,0.25,0.05,-0.4,0.3},
--taps 1
{-0.2,-0.4,0.45, -0.15,-0.35,0.5},
{-0.2,-0.45,0.4, -0.15,-0.3,0.45},
{-0.25,-0.4,0.4, -0.1,-0.35,0.45},
--taps 2
{0.15,-0.4,0.45, 0.2,-0.35,0.5},
{0.15,-0.45,0.4, 0.2,-0.3,0.45},
{0.1,-0.4,0.4, 0.25,-0.35,0.45},
},
},
selection_box = {
type = "fixed",
fixed = {-0.25,-0.45,0.25, 0.25,-0.3,0.5},
},
groups = {cracky=2,}
})
--Shower Tray
minetest.register_node("3dforniture:shower_tray",
{ description = 'Shower Tray',
tiles = {
"forniture_marble_base_ducha_top.png",
"forniture_marble_base_ducha_top.png",
"forniture_marble_sb1.png",
"forniture_marble_sb1.png",
"forniture_marble_sb2.png",
"forniture_marble_sb2.png",
},
inventory_image = "3dforniture_inv_shower_tray.png",
drawtype = "nodebox",
sunlight_propagates = true,
paramtype = 'light',
paramtype2 = 'facedir',
legacy_facedir_simple = true,
node_box = {
type = "fixed",
fixed = {
{-0.5,-0.5,-0.5, 0.5,-0.45,0.5},
{-0.5,-0.45,-0.5, 0.5,-0.4,-0.45},
{-0.5,-0.45,0.45, 0.5,-0.4,0.5},
{-0.5,-0.45,-0.45, -0.45,-0.4,0.45},
{0.45,-0.45,-0.45, 0.5,-0.4,0.45},
},
},
selection_box = {
type = "fixed",
fixed = {-0.5,-0.5,-0.5, 0.5,-0.4,0.5},
},
groups = {cracky=2,}
})
--Shower Head
minetest.register_node("3dforniture:shower_head",
{description = 'Shower Head',
tiles = {
"forniture_metal.png",
"forniture_metal.png",
"forniture_metal_s1.png",
"forniture_metal_s1.png",
"forniture_metal_s2.png",
"forniture_metal_s2.png",
},
inventory_image = "3dforniture_inv_shower_head.png",
drawtype = "nodebox",
sunlight_propagates = true,
paramtype = 'light',
paramtype2 = 'facedir',
node_box = {
type = "fixed",
fixed = {
{-0.1,-0.5,0.1, 0.1,-0.4,0.3},
{-0.05,-0.4,0.15, 0.05,-0.3,0.25},
{-0.05,-0.35,0.25,0.05,-0.3,0.5},
{-0.1,-0.4,0.49, 0.1,-0.25,0.5},
},
},
selection_box = {
type = "fixed",
fixed = {-0.1,-0.5,0.1, 0.1,-0.25,0.5},
},
groups = {cracky=2,}
})
-- Medieval Forniture
--Bars
minetest.register_node("3dforniture:bars",
{ description = 'Bars',
tiles = {
"forniture_black_metal.png",
"forniture_black_metal.png",
"forniture_black_metal_s1.png",
"forniture_black_metal_s1.png",
"forniture_black_metal_s2.png",
"forniture_black_metal_s2.png",
},
drawtype = "nodebox",
sunlight_propagates = true,
paramtype = 'light',
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
{-0.5,-0.5,-0.1, -0.4,0.5,0.1},
{-0.1,-0.5,-0.1, 0.1,0.5,0.1},
{0.4,-0.5,-0.1, 0.5,0.5,0.1},
{-0.5,-0.5,-0.05, 0.5,-0.45,0.05},
{-0.5,0.45,-0.05, 0.5,0.5,0.05}
},
},
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.1, 0.5, 0.5, 0.1},
},
groups = {cracky=1}
})
--L Binding Bars
minetest.register_node("3dforniture:L_binding_bars",
{ description ='Binding Bars',
tiles = {
"forniture_black_metal.png",
"forniture_black_metal.png",
"forniture_black_metal_s1.png",
"forniture_black_metal_s1.png",
"forniture_black_metal_s2.png",
"forniture_black_metal_s2.png",
},
drawtype = "nodebox",
sunlight_propagates = true,
paramtype = 'light',
paramtype2 ="facedir",
node_box = {
type = "fixed",
fixed = {
{-0.1,-0.5,-0.5,0.1,0.5,-0.4},
{-0.15,-0.5,-0.15, 0.15,0.5,0.15},
{0.4,-0.5,-0.1, 0.5,0.5,0.1},
{0,-0.5,-0.05, 0.5,-0.45,0.05},
{-0.05,-0.5,-0.5, 0.05,-0.45,0},
{0,0.45,-0.05, 0.5,0.5,0.05},
{-0.05,0.45,-0.5, 0.05,0.5,0},
},
},
groups = {cracky=1,}
})
--Chains
minetest.register_node("3dforniture:chains",
{ description = 'Chains',
tiles = {
"forniture_black_metal.png",
"forniture_black_metal.png",
"forniture_black_metal_s1.png",
"forniture_black_metal_s1.png",
"forniture_black_metal_s2.png",
"forniture_black_metal_s2.png",
},
inventory_image = "3dforniture_inv_chains.png",
drawtype = "nodebox",
sunlight_propagates = true,
paramtype = 'light',
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
--chain a
--supporting
{-0.45,0.25,0.45, -0.2,0.5,0.5},
{-0.35,0.4,0.35, -0.3,0.45,0.45},
{-0.35,0.3,0.35, -0.3,0.35,0.45},
{-0.35,0.35,0.3, -0.3,0.4,0.35},
--link 1
{-0.4,0.35,0.35, -0.25,0.4,0.4},
{-0.4,0.15,0.35, -0.25,0.2,0.4},
{-0.45,0.2,0.35, -0.4,0.35,0.4},
{-0.25,0.2,0.35, -0.2,0.35,0.4},
--link 2
{-0.35,0.2,0.3, -0.3,0.25,0.45},
{-0.35,0,0.3, -0.3,0.05,0.45},
{-0.35,0.05,0.25, -0.3,0.2,0.3},
{-0.35,0.05,0.45, -0.3,0.2,0.5},
--link 3
{-0.4,0.05,0.35, -0.25,0.1,0.4},
{-0.4,-0.15,0.35, -0.25,-0.1,0.4},
{-0.45,-0.1,0.35, -0.4,0.05,0.4},
{-0.25,-0.1,0.35, -0.2,0.05,0.4},
--link 4
{-0.35,-0.1,0.3, -0.3,-0.05,0.45},
{-0.35,-0.3,0.3, -0.3,-0.25,0.45},
{-0.35,-0.25,0.25, -0.3,-0.1,0.3},
{-0.35,-0.25,0.45, -0.3,-0.1,0.5},
--link 5
{-0.4,-0.25,0.35, -0.25,-0.2,0.4},
{-0.4,-0.45,0.35, -0.25,-0.4,0.4},
{-0.45,-0.4,0.35, -0.4,-0.25,0.4},
{-0.25,-0.4,0.35, -0.2,-0.25,0.4},
--chain b
--supporting
{0.2,0.25,0.45, 0.45,0.5,0.5},
{0.3,0.4,0.35,0.35,0.45,0.45},
{0.3,0.3,0.35, 0.35,0.35,0.45},
{0.3,0.35,0.3, 0.35,0.4,0.35},
--link 1
{0.25,0.35,0.35, 0.4,0.4,0.4},
{0.25,0.15,0.35, 0.4,0.2,0.4},
{0.2,0.2,0.35, 0.25,0.35,0.4},
{0.4,0.2,0.35, 0.45,0.35,0.4},
--link 2
{0.3,0.2,0.3, 0.35,0.25,0.45},
{0.3,0,0.3, 0.35,0.05,0.45},
{0.3,0.05,0.25, 0.35,0.2,0.3},
{0.3,0.05,0.45, 0.35,0.2,0.5},
--link 3
{0.25,0.05,0.35, 0.4,0.1,0.4},
{0.25,-0.15,0.35, 0.4,-0.1,0.4},
{0.2,-0.1,0.35, 0.25,0.05,0.4},
{0.4,-0.1,0.35, 0.45,0.05,0.4},
--link 4
{0.3,-0.1,0.3, 0.35,-0.05,0.45},
{0.3,-0.3,0.3, 0.35,-0.25,0.45},
{0.3,-0.25,0.25, 0.35,-0.1,0.3},
{0.3,-0.25,0.45, 0.35,-0.1,0.5},
---link 5
{0.25,-0.25,0.35, 0.4,-0.2,0.4},
{0.25,-0.45,0.35,0.4,-0.4,0.4},
{0.2,-0.4,0.35, 0.25,-0.25,0.4},
{0.4,-0.4,0.35, 0.45,-0.25,0.4},
},
},
selection_box = {
type = "fixed",
fixed = {-1/2, -1/2, 1/4, 1/2, 1/2, 1/2}, },
groups = {cracky=1}
})
--Torch Wall
minetest.register_node("3dforniture:torch_wall",
{ description = 'Torch Wall',
drawtype = "nodebox",
tiles = {
"forniture_torch_wall_s.png",
"forniture_torch_wall_i.png",
{ name="forniture_torch_wall_anim.png",
animation={
type="vertical_frames",
aspect_w=40,
aspect_h=40,
length=1.0
}
}
},
inventory_image = "3dforniture_inv_torch_wall.png",
paramtype = 'light',
paramtype2 = "facedir",
node_box = {
type = "fixed",
fixed = {
--torch
{-0.05,-0.45,0.45, 0.05,-0.35,0.5},
{-0.05,-0.35,0.4, 0.05,-0.25,0.5},
{-0.05,-0.25,0.35, 0.05,-0.15,0.45},
{-0.05,-0.15,0.3, 0.05,-0.05,0.4},
{-0.05,-0.05,0.25, 0.05,0,0.35},
--fire
{-0.1,0,0.2, 0.1,0.05,0.4},
{-0.15,0.05,0.15, 0.15,0.15,0.45},
{-0.1,0.15,0.2, 0.1,0.25,0.4},
{-0.05,0.25,0.25, 0.05,0.35,0.35},
},
},
sunlight_propagates = true,
walkable = false,
light_source = 18,
selection_box = {
type = "fixed",
fixed = {-0.15, -0.45, 0.15, 0.15,0.35, 0.5},
},
groups = {cracky=2}
})