Charakterbewegungen hinzugefügt, Deko hinzugefügt, Kochrezepte angepasst

This commit is contained in:
N-Nachtigal 2025-05-14 16:36:42 +02:00
parent 95945c0306
commit a0c893ca0b
1124 changed files with 64294 additions and 763 deletions

View file

@ -0,0 +1,61 @@
# ma_pops_furniture
A revamp of Ma and Pop's Furniture Mod
================================================================
Credits:
Radio Mod Code (Mihobre)
BlockMen (Lots and lots) |For helping me alot with the code
|Letting me experiment with his mod
|Supporting me all the time
|Encouraging me
DanJohansen(Newgrounds) |All music used
Nathan.S Helped with a ton of the coding and models making this mod possible
Freezer Mod:
https://forum.minetest.net/viewtopic.php?f=9&t=14925
Textures (c) 2016 Gabriel Pérez-Cerezo, WTFPL
This mod is based on the default furnace, license for the code below:
Copyright (C) 2011-2012 celeron55, Perttu Ahola <celeron55@gmail.com>
Copyright (C) 2016 Gabriel Pérez-Cerezo <gabriel@gpcf.eu>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
================================================================
Special thanks to:
Wizzerine
BillyS
Noodlemire
For helping out with the microwave.
=================================================================
Each item used as tool and what it does:
Hammer: Rotates and/or changes the type of sofa and bookshelf.
Hammer1: Rotates and/or changes the type of counter and table.
Shears: "Trims" the hedges making it possible for different rotation and direction of hedge.
Saw: Used to turn a bookshelf into a wall bookshelf.
==================================================================
License of source code and textures: WTFPL
------------------------------------------------------------------
This program is free software. It comes without any warranty, to
the extent permitted by applicable law. You can redistribute it
and/or modify it under the terms of the do whatever you want with it.
To Public License, Version 2, as published by Sam Hocevar. See
http://sam.zoy.org/wtfpl/COPYING for more details.
==================================================================

View file

@ -0,0 +1,60 @@
# ma_pops_furniture
A revamp of Ma and Pop's Furniture Mod
================================================================
Credits:
Radio Mod Code (Mihobre)
BlockMen (Lots and lots) |For helping me alot with the code
|Letting me experiment with his mod
|Supporting me all the time
|Encouraging me
DanJohansen(Newgrounds) |All music used
Nathan.S Helped with a ton of the coding and models making this mod possible
Toaster Code:
Special thanks to GreenDimond for the code.
Freezer Mod:
https://forum.minetest.net/viewtopic.php?f=9&t=14925
Textures (c) 2016 Gabriel Pérez-Cerezo, WTFPL
This mod is based on the default furnace, license for the code below:
Copyright (C) 2011-2012 celeron55, Perttu Ahola <celeron55@gmail.com>
Copyright (C) 2016 Gabriel Pérez-Cerezo <gabriel@gpcf.eu>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
================================================================
Special thanks to:
Wizzerine
BillyS
Noodlemire
For helping out with the microwave.
=================================================================
Each item used as tool and what it does:
Hammer: Rotates and/or changes the type of sofa.
Shears: "Trims" the hedges making it possible for different rotation and direction of hedge.
==================================================================
License of source code and textures: WTFPL
------------------------------------------------------------------
This program is free software. It comes without any warranty, to
the extent permitted by applicable law. You can redistribute it
and/or modify it under the terms of the do whatever you want with it.
To Public License, Version 2, as published by Sam Hocevar. See
http://sam.zoy.org/wtfpl/COPYING for more details.
==================================================================

View file

@ -0,0 +1,54 @@
minetest.register_abm({ -- Controls the contained fires.
nodenames = {'ma_pops_furniture:fireplace', 'ma_pops_furniture:fireplace_on'},
interval = 1.0,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local meta = minetest.env:get_meta(pos)
for i, name in ipairs({
'fuel_totaltime',
'fuel_time',
}) do
if meta:get_string(name) == '' then
meta:set_float(name, 0.0)
end
end
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local was_active = false
if meta:get_float('fuel_time') < meta:get_float('fuel_totaltime') then
was_active = true
meta:set_float('fuel_time', meta:get_float('fuel_time') + 0.25)
end
if meta:get_float('fuel_time') < meta:get_float('fuel_totaltime') then
minetest.sound_play({name='fire_small'},{gain=0.07, pos = pos},
{loop=true})
local percent = math.floor(meta:get_float('fuel_time') /
meta:get_float('fuel_totaltime') * 100)
meta:set_string('infotext','Fireplace active: '..percent..'%')
minetest.swap_node(pos, {name = 'ma_pops_furniture:fireplace_on', param2 = node.param2})
meta:set_string('formspec', ma_pops_furniture.fireplace_formspec)
return
end
local fuel = nil
local fuellist = inv:get_list('fuel')
if fuellist then
fuel = minetest.get_craft_result({method = 'fuel', width = 1, items = fuellist})
end
if fuel.time <= 0 then
local node = minetest.get_node(pos)
if node.name == 'ma_pops_furniture:fireplace_on' then
meta:set_string('infotext','Put more wood in the fireplace!')
minetest.swap_node(pos, {name = 'ma_pops_furniture:fireplace', param2 = node.param2})
meta:set_string('formspec', ma_pops_furniture.fireplace_formspec)
local timer = minetest.get_node_timer(pos)
timer:start(190)
end
return
end
meta:set_string('fuel_totaltime', fuel.time)
meta:set_string('fuel_time', 0)
local stack = inv:get_stack('fuel', 1)
stack:take_item()
inv:set_stack('fuel', 1, stack)
end,
})

View file

@ -0,0 +1,282 @@
minetest.register_node("ma_pops_furniture:bath_faucet", {
description = "Bathroom Faucet",
tiles = {
"mp_knob_top.png",
"mp_knob_bottom.png",
"mp_knob_right.png",
"mp_knob_left.png",
"mp_knob_back.png",
"mp_knob_front.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
node_box = {
type = "fixed",
fixed = {
{-0.0625, -0.5, 0.3125, 0.0625, -0.1875, 0.4375},
{-0.0625, -0.1875, 0.125, 0.0625, -0.125, 0.4375},
{0.125, -0.25, 0.25, 0.25, -0.0625, 0.4375},
{-0.25, -0.25, 0.25, -0.125, -0.0625, 0.4375},
{-0.0625, -0.25, 0.125, 0.0625, -0.125, 0.1875},
{-0.125, -0.1875, 0.3125, 0.125, -0.125, 0.375},
},
}
})
minetest.register_node("ma_pops_furniture:toilet_paper_roll_dispenser", {
description = "Toilet Paper Roll Dispenser",
tiles = {
"mp_tp_top.png",
"mp_tp_bottom.png",
"mp_tp_right.png",
"mp_tp_left.png",
"mp_tp_back.png",
"mp_tp_front.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
node_box = {
type = "fixed",
fixed = {
{-0.3125, -0.1875, 0.4375, 0.3125, 0.125, 0.5},
{-0.1875, -0.125, 0.25, 0.1875, 0.0625, 0.4375},
{-0.25, -0.0625, 0.3125, 0.25, 0, 0.5},
},
}
})
minetest.register_node('ma_pops_furniture:toilet_open', {
description = 'Toilet',
drawtype = 'mesh',
mesh = 'FM_toilet_open.obj',
tiles = {{name='default_coral_skeleton.png'},{name='default_wood.png'}},
groups = {choppy=2, oddly_breakably_by_hand=2, furniture=1, not_in_creative_inventory=1},
--inventory_image = 'fm_chair_stone.png',
paramtype = 'light',
paramtype2 = 'facedir',
drop = 'ma_pops_furniture:toilet_close',
sounds = moditems.WOOD_SOUNDS,
selection_box = {
type = 'fixed',
fixed = {
{-.35, -.5, -.35, .35, 0, .5}, -- Right, Bottom, Back, Left, Top, Front
{-.35, 0, .2, .35, .5, .5},
}
},
collision_box = {
fixed = {
{-.35, -.5, -.35, .35, 0, .5}, -- Right, Bottom, Back, Left, Top, Front
{-.35, 0, .2, .35, .5, .5},
}
},
on_rightclick = function(pos, node, clicker)
ma_pops_furniture.sit(pos, node, clicker)
end,
on_punch = function (pos, node, puncher)
node.name = "ma_pops_furniture:toilet_close"
minetest.set_node(pos, node)
end,
})
minetest.register_node('ma_pops_furniture:toilet_close', {
description = 'Toilet',
drawtype = 'mesh',
mesh = 'FM_toilet_close.obj',
tiles = {{name='default_coral_skeleton.png'},{name='default_wood.png'}},
groups = {choppy=2, oddly_breakably_by_hand=2, furniture=1},
paramtype = 'light',
paramtype2 = 'facedir',
sounds = moditems.WOOD_SOUNDS,
selection_box = {
type = 'fixed',
fixed = {
{-.35, -.5, -.35, .35, 0, .5}, -- Right, Bottom, Back, Left, Top, Front
{-.35, 0, .2, .35, .5, .5},
}
},
collision_box = {
fixed = {
{-.35, -.5, -.35, .35, 0, .5}, -- Right, Bottom, Back, Left, Top, Front
{-.35, 0, .2, .35, .5, .5},
}
},
on_rightclick = function(pos, node, clicker)
ma_pops_furniture.sit(pos, node, clicker)
end,
on_punch = function (pos, node, puncher)
node.name = "ma_pops_furniture:toilet_open"
minetest.set_node(pos, node)
end,
})
minetest.register_node("ma_pops_furniture:br_sink", {
description = "Sink (Bathroom)",
tiles = {
"mp_hw_top.png",
"mp_hw_bottom.png",
"mp_hw_right.png",
"mp_hw_left.png",
"mp_hw_back.png",
"mp_hw_front.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
node_box = {
type = "fixed",
fixed = {
{-0.4375, 0.25, -0.3125, 0.4375, 0.5, 0.5},
{-0.125, -0.5, 0.125, 0.125, 0.25, 0.4375},
},
}
})
minetest.register_node("ma_pops_furniture:mirror_closed", {
description = "Mirror",
tiles = {
"mp_mirror_top.png",
"mp_mirror_bottom.png",
"mp_mirror_right.png",
"mp_mirror_left.png",
"default_wood.png",
"mp_mirror_front.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
on_punch = function(pos, node, puncher)
minetest.env:add_node(pos, {name = "ma_pops_furniture:mirror", param2 = node.param2})
ma_pops_furniture.window_operate( pos, "ma_pops_furniture:mirror_closed", "ma_pops_furniture:mirror" );
end,
node_box = {
type = "fixed",
fixed = {
{-0.4375, -0.375, 0.3125, 0.4375, 0.5, 0.5},
{0, -0.375, 0.25, 0.4375, 0.5, 0.3125},
{-0.4375, -0.375, 0.25, 2.98023e-008, 0.5, 0.3125},
},
}
})
minetest.register_node("ma_pops_furniture:mirror", {
description = "Mirror (Open)",
tiles = {
"mp_mirror_open_top.png",
"mp_mirror_open_bottom.png",
"mp_mirror_open_right.png",
"mp_mirror_open_left.png",
"mp_mirror_front.png",
"mp_mirror_open_front.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
drop = "ma_pops_furniture:mirror_closed",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, not_in_creative_inventory = 1},
on_punch = function(pos, node, puncher)
minetest.env:add_node(pos, {name = "ma_pops_furniture:mirror_closed", param2 = node.param2})
ma_pops_furniture.window_operate( pos, "ma_pops_furniture:mirror", "ma_pops_furniture:mirror_closed" );
end,
on_construct = function(pos)
local meta = minetest.env:get_meta(pos)
local inv = meta:get_inventory()
inv:set_size('main', 8*4)
inv:set_size('storage', 4*4)
meta:set_string('formspec',
'size [9,10]'..
'bgcolor[#080808BB;true]'..
'list[current_name;storage;3,1.5;3,3;]'..
'list[current_player;main;0.5,6.5;8,4;]')
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty('storage') and inv:is_empty('storage1')
end,
node_box = {
type = "fixed",
fixed = {
{-0.4375, -0.375, 0.3125, 0.4375, 0.5, 0.5},
{0.4375, -0.375, -0.125, 0.5, 0.5, 0.3125},
{-0.5, -0.375, -0.125, -0.4375, 0.5, 0.3125},
},
}
})
minetest.register_node("ma_pops_furniture:shower_base", {
description = "Shower Base",
tiles = {
"mp_showbas_top.png",
"mp_showbas_top.png",
"mp_showbas_sides.png",
"mp_showbas_sides.png",
"mp_showbas_sides.png",
"mp_showbas_sides.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
node_box = {
type = "fixed",
fixed = {
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375},
{0.4375, -0.5, -0.5, 0.5, -0.3125, 0.5},
{-0.5, -0.5, 0.4375, 0.5, -0.3125, 0.5},
{-0.5, -0.5, -0.5, -0.4375, -0.3125, 0.5},
{-0.5, -0.5, -0.5, 0.5, -0.3125, -0.4375},
{-0.125, -0.5, 0.125, 0.125, -0.375, 0.375},
}
},
})
minetest.register_node("ma_pops_furniture:shower_top", {
description = "Shower Head",
tiles = {
"mp_shk_top.png",
"mp_shk_bottom.png",
"mp_shk_right.png",
"mp_shk_left.png",
"mp_shk_back.png",
"mp_shk_front.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
node_box = {
type = "fixed",
fixed = {
{-0.25, -0.5, 0.4375, 0.25, 0.5, 0.5},
{-0.125, 0.3125, -0.1875, 0.125, 0.4375, 0.25},
{-0.1875, -0.25, 0.375, -0.125, -0.1875, 0.4375},
{0.125, -0.25, 0.375, 0.1875, -0.1875, 0.4375},
{-0.1875, -0.25, 0.3125, -0.125, -0.0625, 0.375},
{0.125, -0.25, 0.3125, 0.1875, -0.0625, 0.375},
{-0.0625, 0.375, 0.25, 0.0625, 0.4375, 0.4375},
},
}
})
minetest.register_node('ma_pops_furniture:br_tile', {
description = 'Bathroom Tile',
drawtype = 'nodebox',
tiles = {
"mp_bathroom_tile.png"
},
groups = {cracky=2, oddly_breakable_by_hand=5, furniture=1},
paramtype = 'light',
sounds = moditems.WOOD_SOUNDS,
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
},
}
})

View file

@ -0,0 +1,51 @@
local night_table = { --name, material, invimg
{'Wood Nightstand', 'wood'},
{'Acacia Wood Nightstand', 'acacia_wood'},
{'Aspen Wood Nightstand', 'aspen_wood'},
{'Pine Wood Nightstand', 'pine_wood'},
{'Jungle Wood Nightstand', 'junglewood'}
}
for i in ipairs (night_table) do
local name = night_table[i][1]
local material = night_table[i][2]
local invimg = night_table[i][3]
minetest.register_node('ma_pops_furniture:nightstand_'..material, {
description = name,
drawtype = 'nodebox',
tiles = {'default_'..material..'.png'},
groups = {choppy=2, oddly_breakably_by_hand=2, furniture=1, flammable=1},
paramtype = 'light',
paramtype2 = 'facedir',
sounds = moditems.WOOD_SOUNDS,
on_construct = function(pos)
local meta = minetest.env:get_meta(pos)
local inv = meta:get_inventory()
inv:set_size('main', 8*4)
inv:set_size('storage', 3*3)
meta:set_string('formspec',
'size [9,10]'..
'bgcolor[#080808BB;true]'..
'list[current_name;storage;3,1.5;3,3;]'..
'list[current_player;main;0.5,6.2;8,4;]')
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty('storage') and inv:is_empty('storage1')
end,
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.4375, 0.5, -0.4375, 0.5}, -- NodeBox1
{-0.5, 0.4375, -0.4375, 0.5, 0.5, 0.5}, -- NodeBox2
{-0.5, -0.4375, -0.375, 0.5, 0.4375, 0.5}, -- NodeBox3
{-0.4375, 0.0625, -0.4375, 0.4375, 0.375, -0.375}, -- NodeBox4
{-0.4375, -0.375, -0.4375, 0.4375, -0.0625, -0.375}, -- NodeBox5
{-0.125, -0.3125, -0.5, 0.125, -0.125, -0.4375}, -- NodeBox6
{-0.125, 0.125, -0.5, 0.125, 0.3125, -0.4375}, -- NodeBox7
}
}
})
end

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,189 @@
local chair_table = { --name, material, invimg
{'Stone Chair', 'cobble', 'mp_chair_stone.png'},
{'Wood Chair', 'wood', 'mp_chair_wood.png'},
{'Acacia Wood Chair', 'acacia_wood', 'mp_chair_acacia_wood.png'},
{'Aspen Wood Chair', 'aspen_wood', 'mp_chair_aspen_wood.png'},
{'Pine Wood Chair', 'pine_wood', 'mp_chair_pine_wood.png'},
{'Jungle Wood Chair', 'junglewood', 'mp_chair_junglewood.png'}
}
for i in ipairs (chair_table) do
local name = chair_table[i][1]
local material = chair_table[i][2]
local invimg = chair_table[i][3]
minetest.register_node('ma_pops_furniture:chair_'..material, {
description = name,
drawtype = 'nodebox',
tiles = {'default_'..material..'.png'},
groups = {choppy=2, oddly_breakably_by_hand=2, furniture=1, flammable=1},
paramtype = 'light',
paramtype2 = 'facedir',
sounds = moditems.WOOD_SOUNDS,
can_dig = ma_pops_furniture.sit_dig,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y + 0 -- Sitting position
ma_pops_furniture.sit(pos, node, clicker, pointed_thing)
return itemstack
end,
node_box = {
type = "fixed",
fixed = {
{-0.4375, -0.5, 0.3125, -0.3125, -0.0625, 0.4375}, -- NodeBox10
{0.3125, -0.5, 0.3125, 0.4375, -0.0625, 0.4375}, -- NodeBox11
{-0.4375, -0.5, -0.4375, -0.3125, -0.0625, -0.3125}, -- NodeBox12
{0.3125, -0.5, -0.4375, 0.4375, -0.0625, -0.3125}, -- NodeBox13
{-0.4375, -0.0625, -0.4375, 0.4375, 0.0625, 0.4375}, -- NodeBox14
{-0.4375, 0.0625, 0.3125, 0.4375, 0.8125, 0.4375}, -- NodeBox15
}
}
})
end
local table_table = { --name, material, invimg
{'Stone Table', 'cobble', 'mp_table_stone.png'},
{'Wood Table', 'wood', 'mp_table_wood.png'},
{'Acacia Wood Table', 'acacia_wood', 'mp_table_wood_acacia.png'},
{'Aspen Wood Table', 'aspen_wood', 'mp_table_wood_aspen.png'},
{'Pine Wood Table', 'pine_wood', 'mp_table_wood_pine.png'},
{'Jungle Wood Table', 'junglewood', 'mp_table_wood_jungle.png'}
}
for i in ipairs (table_table) do
local name = table_table[i][1]
local material = table_table[i][2]
local invimg = table_table[i][3]
minetest.register_node('ma_pops_furniture:table_'..material, {
description = name,
drawtype = 'nodebox',
tiles = {'default_'..material..'.png'},
align_style="world",
groups = {snappy = 2, oddly_breakable_by_hand = 2, furniture = 1, flammable = 1, table = 1},
paramtype = 'light',
paramtype2 = 'facedir',
sounds = moditems.WOOD_SOUNDS,
node_box = {
type = "fixed",
fixed = {
{-0.125, -0.5, -0.125, 0.125, 0.375, 0.125}, -- NodeBox8
{-0.5, 0.375, -0.5, 0.5, 0.5, 0.5}, -- NodeBox9
}
},
after_dig_node = function(pos) ma_pops_furniture.check_table(pos, material, false, true) end,
after_place_node = function(pos) ma_pops_furniture.check_table(pos, material, true, true) end,
on_punch = function(pos) ma_pops_furniture.check_table(pos, material, true, true) end
})
end
local table2_table = { --name, material, invimg
{'Stone Table', 'cobble', 'mp_table_stone.png'},
{'Wood Table', 'wood', 'mp_table_wood.png'},
{'Acacia Wood Table', 'acacia_wood', 'mp_table_wood_acacia.png'},
{'Aspen Wood Table', 'aspen_wood', 'mp_table_wood_aspen.png'},
{'Pine Wood Table', 'pine_wood', 'mp_table_wood_pine.png'},
{'Jungle Wood Table', 'junglewood', 'mp_table_wood_jungle.png'}
}
for i in ipairs (table2_table) do
local name = table2_table[i][1]
local material = table2_table[i][2]
local invimg = table2_table[i][3]
minetest.register_node('ma_pops_furniture:table2_'..material, {
description = name,
drawtype = 'nodebox',
tiles = {'default_'..material..'.png'},
align_style="world",
groups = {snappy = 2, oddly_breakable_by_hand = 2, furniture = 1, flammable = 1, table = 1},
paramtype = 'light',
paramtype2 = 'facedir',
sounds = moditems.WOOD_SOUNDS,
node_box = {
type = "fixed",
fixed = {
{-0.5, 0.375, -0.5, 0.5, 0.5, 0.5}, -- NodeBox5
{-0.4375, -0.5, -0.4375, -0.3125, 0.375, -0.3125}, -- NodeBox6
{-0.4375, -0.5, 0.3125, -0.3125, 0.375, 0.4375}, -- NodeBox7
{0.3125, -0.5, 0.3125, 0.4375, 0.375, 0.4375}, -- NodeBox8
{0.3125, -0.5, -0.4375, 0.4375, 0.375, -0.3125}, -- NodeBox9
}
},
})
end
local table_c_table = { --name, material, invimg
{'Stone Corner Table', 'cobble', 'mp_table_stone.png'},
{'Wood Corner Table', 'wood', 'mp_table_wood.png'},
{'Acacia Corner Wood Table', 'acacia_wood', 'mp_table_wood_acacia.png'},
{'Aspen Corner Wood Table', 'aspen_wood', 'mp_table_wood_aspen.png'},
{'Pine Corner Wood Table', 'pine_wood', 'mp_table_wood_pine.png'},
{'Jungle Corner Wood Table', 'junglewood', 'mp_table_wood_jungle.png'}
}
for i in ipairs (table_c_table) do
local name = table_c_table[i][1]
local material = table_c_table[i][2]
local invimg = table_c_table[i][3]
minetest.register_node('ma_pops_furniture:table_c_'..material, {
description = name,
drawtype = 'nodebox',
tiles = {'default_'..material..'.png'},
align_style="world",
groups = {snappy = 2, oddly_breakable_by_hand = 2, furniture = 1, flammable = 1, table = 1, not_in_creative_inventory = 1},
drop = 'ma_pops_furniture:table_'..material,
paramtype = 'light',
paramtype2 = 'facedir',
sounds = moditems.WOOD_SOUNDS,
node_box = {
type = "fixed",
fixed = {
{-0.5, 0.3125, -0.5, 0.5, 0.5, 0.5}, -- NodeBox1
{-0.375, -0.5, -0.125, -0.125, 0.3125, 0.125}, -- NodeBox3
}
},
after_dig_node = function(pos) ma_pops_furniture.check_table(pos, material, false, true) end,
after_place_node = function(pos) ma_pops_furniture.check_table(pos, material, true, true) end,
on_punch = function(pos) ma_pops_furniture.check_table(pos, material, true, true) end
})
end
local table_center_table = { --name, material, invimg
{'Stone Center Table', 'cobble', 'mp_table_stone.png'},
{'Wood Center Table', 'wood', 'mp_table_wood.png'},
{'Acacia Center Wood Table', 'acacia_wood', 'mp_table_wood_acacia.png'},
{'Aspen Center Wood Table', 'aspen_wood', 'mp_table_wood_aspen.png'},
{'Pine Center Wood Table', 'pine_wood', 'mp_table_wood_pine.png'},
{'Jungle Center Wood Table', 'junglewood', 'mp_table_wood_jungle.png'}
}
for i in ipairs (table_center_table) do
local name = table_center_table[i][1]
local material = table_center_table[i][2]
local invimg = table_center_table[i][3]
minetest.register_node('ma_pops_furniture:table_center_'..material, {
description = name,
drawtype = 'nodebox',
tiles = {'default_'..material..'.png'},
align_style="user",
groups = {snappy = 2, oddly_breakable_by_hand = 2, furniture = 1, flammable = 1, table = 1, not_in_creative_inventory = 1},
drop = 'ma_pops_furniture:table_'..material,
paramtype = 'light',
paramtype2 = 'facedir',
sounds = moditems.WOOD_SOUNDS,
node_box = {
type = "fixed",
fixed = {
{-0.5, 0.3125, -0.5, 0.5, 0.5, 0.5},
}
},
after_dig_node = function(pos) ma_pops_furniture.check_table(pos, material, false, true) end,
after_place_node = function(pos) ma_pops_furniture.check_table(pos, material, true, true) end,
on_punch = function(pos) ma_pops_furniture.check_table(pos, material, true, true) end
})
end

View file

@ -0,0 +1,9 @@
ma_pops_furniture.fireplace_formspec =
'size[8,6]'..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
'background[8,6;0,0;default_brick.png;true]'..
'list[current_name;fuel;1,0;1,1;]'..
'list[current_player;main;0,2.5;8,4;]'
default.get_hotbar_bg(0,4.85)

View file

@ -0,0 +1,300 @@
--
-- Freezer for mintest: a device which turns water (in buckets) into ice
-- And does a couple of other tricks, discovering which is left as a pleasant
-- surprise for the player.
--
-- enable extra popsicle types provided there are both vessels and fruits/veggies available
-- fruit + glass -> juice; juice @ freezer -> popsicle + empty glass
--
-- Formspecs
--
local function active_formspec(fuel_percent, item_percent)
local formspec =
"size[8,8.5]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"list[current_name;src;2.5,1;1,1;]"..
"image[3.75,1.5;1,1;gui_furnace_arrow_bg.png^[lowpart:"..
(item_percent)..":gui_furnace_arrow_fg.png^[transformR270]"..
"list[current_name;dst;4.75,0.96;3,2;]"..
"list[current_player;main;0,4.25;8,1;]"..
"list[current_player;main;0,5.5;8,3;8]"..
"listring[current_name;dst]"..
"listring[current_player;main]"..
"listring[current_name;src]"..
"listring[current_player;main]"..
default.get_hotbar_bg(0, 4.25)
return formspec
end
local inactive_formspec =
"size[8,8.5]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"list[current_name;src;2.5,1.5;1,1;]"..
"image[3.75,1.5;1,1;gui_furnace_arrow_bg.png^[transformR270]"..
"list[current_name;dst;4.75,0.96;3,2;]"..
"list[current_player;main;0,4.25;8,1;]"..
"list[current_player;main;0,5.5;8,3;8]"..
"listring[current_name;dst]"..
"listring[current_player;main]"..
"listring[current_name;src]"..
"listring[current_player;main]"..
default.get_hotbar_bg(0, 4.25)
--
-- Node callback functions that are the same for active and inactive freezer
--
local function can_dig(pos, player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("dst") and inv:is_empty("src")
end
local function allow_metadata_inventory_put(pos, listname, index, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
return 0
end
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
if listname == "src" then
return stack:get_count()
elseif listname == "dst" then
return 0
end
end
local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local stack = inv:get_stack(from_list, from_index)
return allow_metadata_inventory_put(pos, to_list, to_index, stack, player)
end
local function allow_metadata_inventory_take(pos, listname, index, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
return 0
end
return stack:get_count()
end
local function swap_node(pos, name)
local node = minetest.get_node(pos)
if node.name == name then
return
end
node.name = name
minetest.swap_node(pos, node)
end
local function freezer_node_timer(pos, elapsed)
--
-- Inizialize metadata
--
local meta = minetest.get_meta(pos)
local src_time = meta:get_float("src_time") or 0
local inv = meta:get_inventory()
local srclist = inv:get_list("src")
local dstlist = inv:get_list("dst")
--
-- Cooking
--
-- takes both regular and river water
if inv:contains_item("src", "bucket:bucket_water") or
inv:contains_item("src", "bucket:bucket_river_water") then
if inv:room_for_item("dst", "default:ice") then
inv:remove_item("src", "bucket:bucket_water")
inv:remove_item("src", "bucket:bucket_river_water")
inv:add_item("dst", "default:ice")
inv:add_item("dst", "bucket:bucket_empty")
end
end
-- Check if we have cookable content
return
end
--
-- Node definitions
--
color1 = minetest.setting_get("color1") or "292421"
color2 = minetest.setting_get("color2") or "0000FF"
color3 = minetest.setting_get("color3") or "00FF00"
color4 = minetest.setting_get("color4") or "F5F5F5"
color5 = minetest.setting_get("color5") or "FF6103"
color6 = minetest.setting_get("color6") or "FF0000"
color7 = minetest.setting_get("color7") or "FFFF00"
color8 = minetest.setting_get("color8") or "FF69B4"
local fridges_list = {
{"black", "Darkened Fridge", color1},
{"blue", "Blue Fridge", color2},
{"green", "Green Fridge", color3},
{"white", "White Fridge", color4},
{"orange", "Orange Fridge", color5},
{"red", "Red Fridge", color6},
{"yellow", "Yellow Fridge", color7},
{"pink", "Pink Fridge", color8}
}
for i, fridge in ipairs(fridges_list) do
local colour = fridge[1]
local fridgedesc = fridge[2]
local colour2 = fridge[3]
minetest.register_node("ma_pops_furniture:fridge_"..colour, {
description = fridgedesc,
drawtype = "nodebox",
tiles = {
"mp_dfridge_top.png^[colorize:#"..colour2..":70",
"mp_dfridge_bottom.png^[colorize:#"..colour2..":70",
"mp_dfridge_right.png^[colorize:#"..colour2..":70",
"mp_dfridge_left.png^[colorize:#"..colour2..":70",
"mp_dfridge_back.png^[colorize:#"..colour2..":70",
"mp_dfridge_front.png^[colorize:#"..colour2..":70"
},
paramtype = "light",
paramtype2 = "facedir",
stack_max = 1,
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
sounds = default.node_sound_wood_defaults(),
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.3125, 0.5, 0.5, 0.5}, -- NodeBox1
{-0.5, -0.25, -0.375, 0.5, 0.5, -0.3125}, -- NodeBox2
{-0.5, -0.5, -0.375, 0.5, -0.3125, -0.3125}, -- NodeBox3
{0.375, 0, -0.4375, 0.4375, 0.5, -0.375}, -- NodeBox4
}
},
after_place_node = function(pos, placer, itemstack)
local node = minetest.env:get_node(pos)
local p = {x=pos.x, y=pos.y, z=pos.z}
local param2 = node.param2
node.name = "ma_pops_furniture:fridge_top_"..colour
pos.y = pos.y+1
if minetest.registered_nodes[minetest.env:get_node(pos).name].buildable_to then
minetest.env:set_node(pos, node)
else
minetest.env:remove_node(p)
return true
end
end,
on_construct = function(pos)
local meta = minetest.env:get_meta(pos)
local inv = meta:get_inventory()
inv:set_size('main', 8*4)
inv:set_size('storage', 6*4)
meta:set_string('formspec',
'size [9,10]'..
'bgcolor[#080808BB;true]'..
'list[current_name;storage;2,1.5;6,4;]'..
'list[current_player;main;0.5,6.2;8,4;]')
end,
on_destruct = function(pos)
local node = minetest.env:get_node(pos)
local param2 = node.param2
local abovepos = {x=pos.x, y=pos.y+1, z=pos.z}
local abovenode = minetest.env:get_node(abovepos)
if abovenode.name == "ma_pops_furniture:fridge_top_"..colour and
abovenode.param2 == param2 then
minetest.env:remove_node(abovepos)
end
end,
})
minetest.register_node("ma_pops_furniture:fridge_top_"..colour, {
description = fridgedesc,
drawtype = "nodebox",
tiles = {
"mp_ufridge_top.png^[colorize:#"..colour2..":70",
"default_wood.png^[colorize:#"..colour2..":70",
"mp_ufridge_right.png^[colorize:#"..colour2..":70",
"mp_ufridge_left.png^[colorize:#"..colour2..":70",
"mp_fridge_back.png^[colorize:#"..colour2..":70",
"mp_ufridge_front.png^[colorize:#"..colour2..":70"
},
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,not_in_creative_inventory=1},
sounds = default.node_sound_wood_defaults(),
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.3125, 0.5, 0.5, 0.5}, -- NodeBox1
{-0.5, 0.3125, -0.375, 0.5, 0.5, -0.3125}, -- NodeBox2
{-0.5, -0.3125, -0.375, 0.5, 0.25, -0.3125}, -- NodeBox3
{-0.5, -0.5, -0.375, 0.5, -0.375, -0.3125}, -- NodeBox4
{0.375, -0.25, -0.4375, 0.4375, 0.125, -0.375}, -- NodeBox6
}
},
can_dig = can_dig,
on_timer = freezer_node_timer,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", inactive_formspec)
local inv = meta:get_inventory()
inv:set_size('src', 1)
inv:set_size('dst', 6)
end,
on_metadata_inventory_move = function(pos)
local timer = minetest.get_node_timer(pos)
timer:start(1.0)
end,
on_metadata_inventory_put = function(pos)
-- start timer function, it will sort out whether freezer will work or not.
local timer = minetest.get_node_timer(pos)
timer:start(1.0)
end,
on_blast = function(pos)
local drops = {}
default.get_inventory_drops(pos, "src", drops)
default.get_inventory_drops(pos, "dst", drops)
drops[#drops+1] = "ma_pops_furniture:freezer"
minetest.remove_node(pos)
return drops
end,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_move = allow_metadata_inventory_move,
allow_metadata_inventory_take = allow_metadata_inventory_take,
})
minetest.register_alias("fridges:fridge_"..colour, "fridges:fridge_bottom_"..colour)
end
minetest.register_craft({
output = "default:snowblock 3",
type = "shapeless",
recipe = {
"default:ice"
}
})

View file

@ -0,0 +1,198 @@
local function top_face(pointed_thing)
if not pointed_thing then return end
return pointed_thing.above.y > pointed_thing.under.y
end
function ma_pops_furniture.sit(pos, node, clicker, pointed_thing)
if not top_face(pointed_thing) then return end
local player_name = clicker:get_player_name()
local objs = minetest.get_objects_inside_radius(pos, 0.1)
local vel = clicker:get_player_velocity()
local ctrl = clicker:get_player_control()
for _, obj in pairs(objs) do
if obj:is_player() and obj:get_player_name() ~= player_name then
return
end
end
if default.player_attached[player_name] then
pos.y = pos.y - 0.5
clicker:setpos(pos)
clicker:set_eye_offset({x=0, y=0, z=0}, {x=0, y=0, z=0})
clicker:set_physics_override({ speed = 1,
jump = 1,
gravity = 1 })
default.player_attached[player_name] = false
default.player_set_animation(clicker, "stand", 30)
elseif not default.player_attached[player_name] and node.param2 <= 3 and
not ctrl.sneak and vector.equals(vel, {x=0,y=0,z=0}) then
clicker:set_eye_offset({x=0, y=-7, z=2}, {x=0, y=0, z=0})
clicker:set_physics_override({ speed = 0,
jump = 0,
gravity = 0 })
clicker:setpos(pos)
default.player_attached[player_name] = true
default.player_set_animation(clicker, "sit", 30)
if node.param2 == 0 then clicker:set_look_yaw(3.15)
elseif node.param2 == 1 then clicker:set_look_yaw(7.9)
elseif node.param2 == 2 then clicker:set_look_yaw(6.28)
elseif node.param2 == 3 then clicker:set_look_yaw(4.75) end
end
end
function ma_pops_furniture.sit_dig(pos, digger)
for _, player in pairs(minetest.get_objects_inside_radius(pos, 0.1)) do
if player:is_player() and
default.player_attached[player:get_player_name()] then
return false
end
end
return true
end
ma_pops_furniture.window_operate = function( pos, old_node_state_name, new_node_state_name )
local offsets = {-1,1,-2,2,-3,3};
local stop_up = 0;
local stop_down = 0;
for i,v in ipairs(offsets) do
local node = minetest.get_node_or_nil( {x=pos.x, y=(pos.y+v), z=pos.z } );
if( node and node.name and node.name==old_node_state_name
and ( (v > 0 and stop_up == 0 )
or (v < 0 and stop_down == 0 ))) then
minetest.add_node({x=pos.x, y=(pos.y+v), z=pos.z }, {name = new_node_state_name, param2 = node.param2})
-- found a diffrent node - no need to search further up
elseif( v > 0 and stop_up == 0 ) then
stop_up = 1;
elseif( v < 0 and stop_down == 0 ) then
stop_down = 1;
end
end
end
--[[
minetest.register_abm({
nodenames = {"ma_pops_furniture:table_wood"},
interval = 1, --This will be checked every second
action = function(pos, node, active_object_count, active_object_count_wider)
if pos then
if minetest.get_item_group(minetest.get_node({x = pos.x+1, y = pos.y, z = pos.z}).name, "table") == 1
and minetest.get_item_group(minetest.get_node({x = pos.x-1, y = pos.y, z = pos.z}).name, "table") == 1 then
minetest.set_node(pos, {name = "ma_pops_furniture:table_c2_wood"})
elseif minetest.get_item_group(minetest.get_node({x = pos.x, y = pos.y, z = pos.z+1}).name, "table") == 1
and minetest.get_item_group(minetest.get_node({x = pos.x, y = pos.y, z = pos.z-1}).name, "table") == 1 then
minetest.set_node(pos, {name = "ma_pops_furniture:table_c2_wood"})
end
end
end
})
--]]
function ma_pops_furniture.check_table(pos, material, check_this, check_others)
if pos then
local north_table = minetest.get_node({x = pos.x, y = pos.y, z = pos.z+1})
local north_table_exists = minetest.get_item_group(north_table.name, "table") == 1
local east_table = minetest.get_node({x = pos.x+1, y = pos.y, z = pos.z})
local east_table_exists = minetest.get_item_group(east_table.name, "table") == 1
local south_table = minetest.get_node({x = pos.x, y = pos.y, z = pos.z-1})
local south_table_exists = minetest.get_item_group(south_table.name, "table") == 1
local west_table = minetest.get_node({x = pos.x-1, y = pos.y, z = pos.z})
local west_table_exists = minetest.get_item_group(west_table.name, "table") == 1
if check_this then
if north_table_exists and east_table_exists and south_table_exists and west_table_exists then
minetest.set_node(pos, {name = "ma_pops_furniture:table_center_"..material})
elseif east_table_exists and west_table_exists then
if north_table_exists then
minetest.set_node(pos, {name = "ma_pops_furniture:table_c_"..material, param2 = 3})
elseif south_table_exists then
minetest.set_node(pos, {name = "ma_pops_furniture:table_c_"..material, param2 = 1})
else
minetest.set_node(pos, {name = "ma_pops_furniture:table_center_"..material})
end
elseif north_table_exists and south_table_exists then
if east_table_exists then
minetest.set_node(pos, {name = "ma_pops_furniture:table_c_"..material, param2 = 0})
elseif west_table_exists then
minetest.set_node(pos, {name = "ma_pops_furniture:table_c_"..material, param2 = 2})
else
minetest.set_node(pos, {name = "ma_pops_furniture:table_center_"..material})
end
elseif north_table_exists ~= east_table_exists ~= south_table_exists ~= west_table_exists then
local facedir
if north_table_exists then facedir = 3
elseif east_table_exists then facedir = 0
elseif south_table_exists then facedir = 1
else facedir = 2
end
minetest.set_node(pos, {name = "ma_pops_furniture:table_c_"..material, param2 = facedir})
else
minetest.set_node(pos, {name = "ma_pops_furniture:table_"..material})
end
end
if check_others then
if north_table_exists then
if north_table.name:sub(24, 31) == "_center_" then
ma_pops_furniture.check_table({x = pos.x, y = pos.y, z = pos.z+1}, north_table.name:sub(32), true, false)
elseif north_table.name:sub(24, 26) == "_c_" then
ma_pops_furniture.check_table({x = pos.x, y = pos.y, z = pos.z+1}, north_table.name:sub(27), true, false)
else
ma_pops_furniture.check_table({x = pos.x, y = pos.y, z = pos.z+1}, north_table.name:sub(25), true, false)
end
end
if east_table_exists then
if east_table.name:sub(24, 31) == "_center_" then
ma_pops_furniture.check_table({x = pos.x+1, y = pos.y, z = pos.z}, east_table.name:sub(32), true, false)
elseif east_table.name:sub(24, 26) == "_c_" then
ma_pops_furniture.check_table({x = pos.x+1, y = pos.y, z = pos.z}, east_table.name:sub(27), true, false)
else
ma_pops_furniture.check_table({x = pos.x+1, y = pos.y, z = pos.z}, east_table.name:sub(25), true, false)
end
end
if south_table_exists then
if south_table.name:sub(24, 31) == "_center_" then
ma_pops_furniture.check_table({x = pos.x, y = pos.y, z = pos.z-1}, south_table.name:sub(32), true, false)
elseif south_table.name:sub(24, 26) == "_c_" then
ma_pops_furniture.check_table({x = pos.x, y = pos.y, z = pos.z-1}, south_table.name:sub(27), true, false)
else
ma_pops_furniture.check_table({x = pos.x, y = pos.y, z = pos.z-1}, south_table.name:sub(25), true, false)
end
end
if west_table_exists then
if west_table.name:sub(24, 31) == "_center_" then
ma_pops_furniture.check_table({x = pos.x-1, y = pos.y, z = pos.z}, west_table.name:sub(32), true, false)
elseif west_table.name:sub(24, 26) == "_c_" then
ma_pops_furniture.check_table({x = pos.x-1, y = pos.y, z = pos.z}, west_table.name:sub(27), true, false)
else
ma_pops_furniture.check_table({x = pos.x-1, y = pos.y, z = pos.z}, west_table.name:sub(25), true, false)
end
end
end
end
end

View file

@ -0,0 +1,246 @@
local minetest = minetest
local grill_nodebox = {
type = "fixed",
fixed = {
{-0.450, -0.5, -0.450, -0.350, -0.3, -0.350},
{0.450, -0.5, -0.450, 0.350, -0.3, -0.350},
{-0.450, -0.5, 0.450, -0.350, -0.3, 0.350},
{0.450, -0.5, 0.450, 0.350, -0.3, 0.350},
{-0.4, -0.3, -0.4, -0.3, 0.0, -0.3},
{0.4, -0.3, -0.4, 0.3, 0.0, -0.3},
{-0.4, -0.3, 0.4, -0.3, 0.0, 0.3},
{0.4, -0.3, 0.4, 0.3, 0.0, 0.3},
{-0.4, -0.0, -0.4, 0.4, 0.2, 0.4},
{-0.5, 0.190, -0.5, 0.5, 0.4, 0.5},
{-0.4375, 0.4, 0.5, -0.5, 0.5, -0.5},
{0.4375, 0.4, 0.5, 0.5, 0.5, -0.5},
{-0.5, 0.4, 0.4375, 0.5, 0.5, 0.5},
{-0.5, 0.4, -0.4375, 0.5, 0.5, -0.5},
}
}
local top_closed_nodebox = {
type = "fixed",
fixed = {
{-0.4375, -0.375, -0.4375, 0.4375, -0.3125, 0.4375},
{-0.5, -0.5, -0.4375, -0.4375, -0.375, 0.5},
{0.4375, -0.5, -0.5, 0.5, -0.375, 0.4375},
{-0.5, -0.5, -0.5, 0.4375, -0.375, -0.4375},
{-0.4375, -0.5, 0.4375, 0.5, -0.375, 0.5},
}
}
local top_open_nodebox = {
type = "fixed",
fixed = {
{-0.5, -0.4375, 0.3125, -0.4375, 0.5, 0.4375},
{0.4375, -0.5, 0.3125, 0.5, 0.4375, 0.4375},
{-0.4375, 0.4375, 0.3125, 0.5, 0.5, 0.4375},
{-0.5, -0.5, 0.3125, 0.4375, -0.4375, 0.4375},
{-0.4375, -0.4375, 0.4375, 0.4375, 0.4375, 0.5},
}
}
local grill_texture = 'default_stone.png'
local grill_name = 'ma_pops_furniture:grill'
local grill_on_name = 'ma_pops_furniture:grill_on'
local grill2_off_name = 'ma_pops_furniture:grill2'
local grill2_on_name = 'ma_pops_furniture:grill2_on'
local grill2_on_no_light_name = 'ma_pops_furniture:grill2_on_nolight'
local grill_top_name = 'ma_pops_furniture:grill2_top'
local grill_top_open_name = 'ma_pops_furniture:grill2_top_open'
local function above(pos)
return {x=pos.x, y=pos.y+1, z=pos.z}
end
local function below(pos)
return {x=pos.x, y=pos.y-1, z=pos.z}
end
local function after_dig(pos, oldnode, oldmetadata, digger)
local node_above = minetest.get_node(above(pos))
if node_above.name == grill_top_open_name or
node_above.name == grill_top_name then
minetest.dig_node(above(pos))
end
end
minetest.register_node(grill_name, {
description = "Grill",
tiles = {
"default_coal_block.png^mp_grillt.png",
grill_texture,
grill_texture .. "^mp_grills.png",
grill_texture .. "^mp_grills.png",
grill_texture .. "^mp_grills.png",
grill_texture .. "^mp_grills.png"
},
drawtype = "nodebox",
drop = grill_name,
paramtype = "light",
sounds = moditems.WOOD_SOUNDS,
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
minetest.swap_node(pos, {name = grill_on_name})
end,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
node_box = grill_nodebox
})
minetest.register_node("ma_pops_furniture:grill_on", {
description = "Grill (on)",
tiles = {
"default_coal_block.png^mp_grillton.png",
grill_texture,
grill_texture .. "^mp_grills.png",
grill_texture .. "^mp_grills.png",
grill_texture .. "^mp_grills.png",
grill_texture .. "^mp_grills.png"
},
drawtype = "nodebox",
drop = grill_name,
paramtype = "light",
light_source = 10,
sounds = moditems.WOOD_SOUNDS,
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
minetest.swap_node(pos, {name = grill_name})
end,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, not_in_creative_inventory = 1},
node_box = grill_nodebox
})
minetest.register_node(grill2_off_name, {
description = "Lidded Grill",
tiles = {
grill_texture .. "^mp_grillt.png",
grill_texture,
grill_texture .. "^mp_grills.png",
grill_texture .. "^mp_grills.png",
grill_texture .. "^mp_grills.png",
grill_texture .. "^mp_grills.png",
},
drawtype = "nodebox",
drop = grill2_off_name,
paramtype = "light",
sounds = moditems.WOOD_SOUNDS,
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
local node_above = minetest.get_node(above(pos))
if node_above.name == grill_top_open_name then
minetest.swap_node(pos, {name = grill2_on_name})
end
if node_above.name == grill_top_name then
minetest.swap_node(pos, {name = grill2_on_no_light_name})
end
end,
after_dig_node = after_dig,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
on_construct = function(pos)
local pos_above = above(pos)
local node_above = minetest.get_node(pos_above)
minetest.place_node(pos_above, {name = grill_top_name})
if node_above.name == "air" then
--
end
end,
node_box = grill_nodebox
})
minetest.register_node(grill2_on_name, {
description = "Lidded Grill (on)",
tiles = {
grill_texture .. "^mp_grillton.png",
grill_texture,
grill_texture .. "^mp_grills.png",
grill_texture .. "^mp_grills.png",
grill_texture .. "^mp_grills.png",
grill_texture .. "^mp_grills.png",
},
drawtype = "nodebox",
drop = grill2_off_name,
paramtype = "light",
light_source = 10,
paramtype2 = "facedir",
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
minetest.swap_node(pos, {name = grill2_off_name})
end,
after_dig_node = after_dig,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, not_in_creative_inventory = 1},
node_box = grill_nodebox
})
minetest.register_node(grill2_on_no_light_name, {
description = "Lidded Grill (on)",
tiles = {
grill_texture .. "^mp_grillton.png",
grill_texture,
grill_texture .. "^mp_grills.png",
grill_texture .. "^mp_grills.png",
grill_texture .. "^mp_grills.png",
grill_texture .. "^mp_grills.png",
},
drawtype = "nodebox",
drop = grill2_off_name,
paramtype = "light",
paramtype2 = "facedir",
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
minetest.swap_node(pos, {name=grill2_off_name})
end,
after_dig_node = after_dig,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, not_in_creative_inventory = 1},
node_box = grill_nodebox
})
minetest.register_node(grill_top_name, {
description = "Grill lid",
tiles = {
grill_texture
},
drawtype = "nodebox",
drop = '',
paramtype = "light",
paramtype2 = "facedir",
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
-- open lid
if minetest.get_node(below(pos)).name == grill2_on_no_light_name then
minetest.swap_node(below(pos), {name = grill2_on_name})
end
minetest.swap_node(pos, {name = grill_top_open_name})
end,
groups = {not_in_creative_inventory = 1},
node_box = top_closed_nodebox
})
minetest.register_node(grill_top_open_name, {
description = "Grill lid",
tiles = {
grill_texture
},
drawtype = "nodebox",
drop = '',
paramtype = "light",
paramtype2 = "facedir",
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
-- close lid
if minetest.get_node(below(pos)).name == grill2_on_name then
minetest.swap_node(below(pos), {name = grill2_on_no_light_name})
end
minetest.swap_node(pos, {name = grill_top_name})
end,
groups = {not_in_creative_inventory = 1},
node_box = top_open_nodebox
})

View file

@ -0,0 +1,71 @@
ma_pops_furniture = {}
--GreenDimond's code from waffle mod
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
ma_pops_furniture.intllib = S
dofile(minetest.get_modpath('ma_pops_furniture')..'/intllib.lua')
moditems = {} -- switcher
if core.get_modpath("mcl_core") and mcl_core then -- means MineClone 2 is loaded, this is its core mod
moditems.IRON_ITEM = "mcl_core:iron_ingot" -- MCL version of iron ingot
moditems.COAL_ITEM = "mcl_core:coalblock" -- MCL version of coal block
moditems.CORAL_SKELETON = "mcl_nether:quartz_block" -- MCL version of green dye
moditems.SILVER_SANDSTONE = "mcl_nether:quartz_block" -- MCL version of green dye
moditems.INVENTORY = "mcl_inventory:crafting_formspec_bg2" -- MCL version of green dye
moditems.INFOBOX_CAN = {}
moditems.INFOBOX_DUMP = {}
moditems.BOXART = "bgcolor[#d0d0d0;false]listcolors[#9d9d9d;#9d9d9d;#5c5c5c;#000000;#ffffff]" -- trying to imitate MCL boxart
else -- fallback, assume default (MineTest Game) is loaded, otherwise it will error anyway here.
moditems.IRON_ITEM = "default:steel_ingot" -- MTG iron ingot
moditems.COAL_ITEM = "default:coalblock" -- MTG coal block
moditems.CORAL_SKELETON = "default:coral_skeleton" -- MCL version of green dye
moditems.SILVER_SANDSTONE = "default:silver_sandstone" -- MCL version of green dye
moditems.INVENTORY = "default:silver_sandstone" -- MCL version of green dye
moditems.INFOBOX_CAN = "Trash Can"
moditems.INFOBOX_DUMP = "Dumpster"
moditems.BOXART = ""
end
-- actual use in the code down somewhere.
material = moditems.IRON_ITEM
sounds = moditems.WOOD_SOUNDS
_doc_items_longdesc = moditems.STRING_ITEM
local sounds
if mcl_sounds then
sounds = mcl_sounds.node_sound_metal_defaults()
else
if default.node_sound_metal_defaults then
sounds = default.node_sound_metal_defaults()
else
sounds = default.node_sound_stone_defaults()
end
end
dofile(minetest.get_modpath('ma_pops_furniture')..'/toaster.lua')
dofile(minetest.get_modpath('ma_pops_furniture')..'/abm.lua')
dofile(minetest.get_modpath('ma_pops_furniture')..'/bathroom.lua')
dofile(minetest.get_modpath('ma_pops_furniture')..'/bedroom.lua')
dofile(minetest.get_modpath('ma_pops_furniture')..'/kitchen.lua')
dofile(minetest.get_modpath('ma_pops_furniture')..'/living_room.lua')
dofile(minetest.get_modpath('ma_pops_furniture')..'/microwave.lua')
dofile(minetest.get_modpath('ma_pops_furniture')..'/dining_room.lua')
dofile(minetest.get_modpath('ma_pops_furniture')..'/outside.lua')
dofile(minetest.get_modpath('ma_pops_furniture')..'/misc.lua')
dofile(minetest.get_modpath('ma_pops_furniture')..'/oven.lua')
dofile(minetest.get_modpath('ma_pops_furniture')..'/joyb.lua')
dofile(minetest.get_modpath('ma_pops_furniture')..'/stereo.lua')
dofile(minetest.get_modpath('ma_pops_furniture')..'/sofa.lua')
dofile(minetest.get_modpath('ma_pops_furniture')..'/tv.lua')
dofile(minetest.get_modpath('ma_pops_furniture')..'/toys.lua')
dofile(minetest.get_modpath('ma_pops_furniture')..'/tools.lua')
dofile(minetest.get_modpath('ma_pops_furniture')..'/functions.lua')
dofile(minetest.get_modpath('ma_pops_furniture')..'/formspecs.lua')
dofile(minetest.get_modpath('ma_pops_furniture')..'/fridge.lua')
dofile(minetest.get_modpath('ma_pops_furniture')..'/crafts.lua')

View file

@ -0,0 +1,45 @@
-- Fallback functions for when `intllib` is not installed.
-- Code released under Unlicense <http://unlicense.org>.
-- Get the latest version of this file at:
-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
local function format(str, ...)
local args = { ... }
local function repl(escape, open, num, close)
if escape == "" then
local replacement = tostring(args[tonumber(num)])
if open == "" then
replacement = replacement..close
end
return replacement
else
return "@"..open..num..close
end
end
return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
end
local gettext, ngettext
if minetest.get_modpath("intllib") then
if intllib.make_gettext_pair then
-- New method using gettext.
gettext, ngettext = intllib.make_gettext_pair()
else
-- Old method using text files.
gettext = intllib.Getter()
end
end
-- Fill in missing functions.
gettext = gettext or function(msgid, ...)
return format(msgid, ...)
end
ngettext = ngettext or function(msgid, msgid_plural, n, ...)
return format(n==1 and msgid or msgid_plural, ...)
end
return gettext, ngettext

View file

@ -0,0 +1,85 @@
minetest.register_node("ma_pops_furniture:venext_console", {
description = "jOyBoX",
tiles = {
"mp_venext_top1.png",
"mp_venext_bottom.png",
"mp_venext_side.png",
"mp_venext_side2.png",
"mp_venext_back.png",
"mp_venext_front.png",
},
groups = {snappy=1,bendy=2,cracky=1},
sounds = moditems.WOOD_SOUNDS,
drawtype = "nodebox",
paramtype = "light",
paramtype2 = 'facedir',
node_box = {
type = "fixed",
fixed = {
{-0.4375, -0.5, -0.4375, 0.4375, -0.1875, 0.4375},
{-0.375, -0.1875, -0.375, 0.375, -0.0625, 0.375},
{0.3125, -0.4375, -0.5, 0.375, -0.375, -0.4375},
{0.1875, -0.4375, -0.5, 0.25, -0.375, -0.4375},
}
},
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
if itemstack:get_name() == 'ma_pops_furniture:cartridge' then
node.name = "ma_pops_furniture:jOyBoX_cart"
minetest.set_node(pos, node)
if not minetest.is_creative_enabled(player:get_player_name()) then
itemstack:take_item()
player:set_wielded_item(itemstack)
end
end
end,
})
minetest.register_node("ma_pops_furniture:jOyBoX_cart", {
description = "jOyBoX (with cartridge)",
tiles = {
"mp_venext_top.png",
"mp_venext_bottom.png",
"mp_venext_side.png",
"mp_venext_side2.png",
"mp_venext_back.png",
"mp_venext_front.png",
},
groups = {snappy=1,bendy=2,cracky=1},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = 'facedir',
sounds = moditems.WOOD_SOUNDS,
node_box = {
type = "fixed",
fixed = {
{-0.4375, -0.5, -0.4375, 0.4375, -0.1875, 0.4375},
{-0.375, -0.1875, -0.375, 0.375, -0.0625, 0.375},
{0.3125, -0.4375, -0.5, 0.375, -0.375, -0.4375},
{0.1875, -0.4375, -0.5, 0.25, -0.375, -0.4375},
{0.25, 0.1, -0.07, -0.25, -0.4375, 0.14},
}
}
})
minetest.register_node("ma_pops_furniture:cartridge", {
description = "cartridge",
tiles = {
"mp_cartridge.png",
"mp_cartridge_bottom.png",
"mp_cartridge.png",
"mp_cartridge.png",
"mp_cartridge_back.png",
"mp_cartridge_front.png",
},
groups = {snappy=1,bendy=2,cracky=1},
sounds = moditems.WOOD_SOUNDS,
drawtype = "nodebox",
paramtype = "light",
paramtype2 = 'facedir',
node_box = {
type = "fixed",
fixed = {
{0.25, -0.1900, -0.07, -0.25, -0.5, 0.14},
}
}
})

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,492 @@
minetest.register_node('ma_pops_furniture:fireplace', {
description = 'Fireplace',
drawtype = 'mesh',
mesh = 'FM_fireplace_off.obj',
tiles = {{name='default_brick.png'},{name='xpanes_bar.png'}},
groups = {cracky=2, oddly_breakable_by_hand=6, furniture=1},
paramtype = 'light',
paramtype2 = 'facedir',
sounds = moditems.STONE_SOUNDS,
on_construct = function(pos)
local meta = minetest.env:get_meta(pos)
local inv = meta:get_inventory()
inv:set_size('fuel', 1)
inv:set_size('main', 8*4)
meta:set_string('formspec', ma_pops_furniture.fireplace_formspec)
meta:set_string('infotext', 'Fireplace')
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty('fuel')
end,
})
minetest.register_node('ma_pops_furniture:fireplace_on', {
description = 'Fireplace',
drawtype = 'mesh',
mesh = 'FM_fireplace_on.obj',
tiles = {{name='default_brick.png'},{name='xpanes_bar.png'},{name='default_tree.png'},{name='fire_basic_flame_animated.png', animation={type='vertical_frames', aspect_w=16, aspect_h=16, length=1}}},
groups = {cracky=2, oddly_breakable_by_hand=3, furniture=1, not_in_creative_inventory=1},
light_source = 14,
paramtype = 'light',
paramtype2 = 'facedir',
drops = 'ma_pops_furniture:fireplace',
sounds = moditems.STONE_SOUNDS,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty('fuel')
end,
})
local c_table = { --name, material, invimg
{'Stone Coffee Table', 'cobble'},
{'Wood Coffee Table', 'wood'},
{'Acacia Wood Coffee Table', 'acacia_wood'},
{'Aspen Wood Coffee Table', 'aspen_wood'},
{'Pine Wood Coffee Table', 'pine_wood'},
{'Jungle Wood Coffee Table', 'junglewood'}
}
for i in ipairs (c_table) do
local name = c_table[i][1]
local material = c_table[i][2]
local invimg = c_table[i][3]
minetest.register_node('ma_pops_furniture:c_'..material, {
description = name,
drawtype = 'nodebox',
tiles = {'default_'..material..'.png'},
groups = {choppy=2, oddly_breakably_by_hand=2, furniture=1, flammable=1},
paramtype = 'light',
paramtype2 = 'facedir',
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
for _, obj in ipairs (minetest.get_connected_players()) do
local item = obj:get_wielded_item():get_name()
if item == 'ma_pops_furniture:c_'..material then
node.name = 'ma_pops_furniture:end_table_'..material
minetest.set_node(pos, node)
else
end
end
end,
sounds = moditems.WOOD_SOUNDS,
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, -0.4, 0.0, -0.4},
{-0.5, -0.5, 0.5, -0.4, 0.0, 0.4},
{0.5, -0.5, -0.5, 0.4, 0.0, -0.4},
{0.5, -0.5, 0.5, 0.4, 0.0, 0.4},
{0.5, 0.1, 0.5, -0.5, 0.0, -0.5},
{0.5, -0.3, 0.5, -0.5, -0.4, -0.5},
},
}
})
end
local end_table = { --name, material, invimg
{'Stone End Table', 'cobble'},
{'Wood End Table', 'wood'},
{'Acacia Wood End Table', 'acacia_wood'},
{'Aspen Wood End Table', 'aspen_wood'},
{'Pine Wood End Table', 'pine_wood'},
{'Jungle Wood End Table', 'junglewood'}
}
for i in ipairs (end_table) do
local name = end_table[i][1]
local material = end_table[i][2]
local invimg = end_table[i][3]
minetest.register_node('ma_pops_furniture:end_table_'..material, {
description = name,
drawtype = 'nodebox',
tiles = {'default_'..material..'.png'},
groups = {choppy=2, oddly_breakably_by_hand=2, furniture=1, flammable=1},
paramtype = 'light',
paramtype2 = 'facedir',
sounds = moditems.WOOD_SOUNDS,
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, -0.4, 0.5, -0.4},
{-0.5, -0.5, 0.5, -0.4, 0.5, 0.4},
{0.5, -0.5, -0.5, 0.4, 0.5, -0.4},
{0.5, -0.5, 0.5, 0.4, 0.5, 0.4},
{0.5, 0.4, 0.5, -0.5, 0.5, -0.5},
{0.5, -0.3, 0.5, -0.5, -0.2, -0.5},
},
}
})
end
local unit_table = { --name, material
{'Wood Entertainment Unit', 'wood'},
{'Acacia Wood Entertainment Unit', 'acacia_wood'},
{'Aspen Wood Entertainment Unit', 'aspen_wood'},
{'Pine Wood Entertainment Unit', 'pine_wood'},
{'Jungle Wood Entertainment Unit', 'junglewood'}
}
for i in ipairs (unit_table) do
local name = unit_table[i][1]
local material = unit_table[i][2]
local invimg = unit_table[i][3]
minetest.register_node("ma_pops_furniture:e_u_"..material, {
description= name,
tiles= {'default_'..material..'.png'},
drawtype= "nodebox",
paramtype= "light",
paramtype2 = "facedir",
sounds = moditems.WOOD_SOUNDS,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, furniture = 1},
on_construct = function(pos)
local meta = minetest.env:get_meta(pos)
local inv = meta:get_inventory()
inv:set_size('main', 8*4)
inv:set_size('storage', 3*3)
meta:set_string('formspec',
'size [9,10]'..
'bgcolor[#080808BB;true]'..
'list[current_name;storage;3,1.5;3,3;]'..
'list[current_player;main;0.5,6.5;8,4;]')
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty('storage') and inv:is_empty('storage1')
end,
node_box= {
type= "fixed",
fixed= {
{-0.5, -0.5, -0.5, -0.4, 0.5, 0.5},
{0.5, -0.5, -0.5, 0.4, 0.5, 0.5},
{-0.5, 0.4, -0.5, 0.5, 0.5, 0.5},
{-0.5, -0.050, -0.5, 0.5, 0.050, 0.5},
{-0.5, -0.5, 0.5, 0.5, 0.5, 0.4},
},
}
})
end
minetest.register_node('ma_pops_furniture:vcr_on', {
description= "VCR",
tiles = {
"default_coal_block.png",
"default_coal_block.png",
"default_coal_block.png",
"default_coal_block.png",
"default_coal_block.png",
"default_coal_block.png^mp_vcr_on.png"
},
drawtype= "nodebox",
paramtype= "light",
paramtype2 = "facedir",
drop = 'ma_pops_furniture:vcr_off',
sounds = moditems.WOOD_SOUNDS,
groups = {choppy = 2, oddly_breakable_by_hand = 2, not_in_creative_inventory=1, furniture = 1},
node_box= {
type= "fixed",
fixed= {
{-0.375, -0.5, -0.25, 0.375, -0.4375, 0.25},
{-0.4375, -0.4375, -0.3125, 0.4375, -0.25, 0.3125},
},
},
on_rightclick = function (pos, node, puncher)
node.name = "ma_pops_furniture:vcr_off"
minetest.set_node(pos, node)
end,
})
minetest.register_node('ma_pops_furniture:vcr_off', {
description= "VCR",
tiles = {
"default_coal_block.png",
"default_coal_block.png",
"default_coal_block.png",
"default_coal_block.png",
"default_coal_block.png",
"default_coal_block.png^mp_vcr_off.png"
},
drawtype= "nodebox",
paramtype= "light",
paramtype2 = "facedir",
drop = 'ma_pops_furniture:vcr_off',
sounds = moditems.WOOD_SOUNDS,
groups = {choppy = 2, oddly_breakable_by_hand = 2, furniture = 1},
node_box= {
type= "fixed",
fixed= {
{-0.375, -0.5, -0.25, 0.375, -0.4375, 0.25},
{-0.4375, -0.4375, -0.3125, 0.4375, -0.25, 0.3125},
},
},
on_rightclick = function (pos, node, puncher)
node.name = "ma_pops_furniture:vcr_on"
minetest.set_node(pos, node)
end,
})
local chair2_table = { --name, color, colorize(hex or color name:intensity(1-255))
{'Black', 'black', 'black:225'},
{'Blue', 'blue', 'blue:225'},
{'Brown', 'brown', 'brown:225'},
{'Cyan', 'cyan', 'cyan:200'},
{'Dark Green', 'dark_green', 'green:225'},
{'Dark Grey', 'dark_grey', 'black:200'},
{'Green', 'green', '#32cd32:150'},
{'Grey', 'grey', 'black:100'},
{'Magenta', 'magenta', 'magenta:200'},
{'Orange', 'orange', 'orange:225'},
{'Pink', 'pink', 'pink:225'},
{'Red', 'red', 'red:225'},
{'Violet', 'violet', 'violet:225'},
{'White', 'white', 'white:1'},
{'Yellow', 'yellow', 'yellow:225'},
}
for i in ipairs (chair2_table) do
local name = chair2_table[i][1]
local color = chair2_table[i][2]
local hex = chair2_table[i][3]
local cb = "^([combine:16x16:0,0=mp_cb.png^[mask:mp_mask.png)"
local cf = "^([combine:16x16:0,0=mp_cf.png^[mask:mp_mask.png)"
minetest.register_node("ma_pops_furniture:chair2_"..color, {
description = name.." Chair",
tiles = {"wool_"..color..".png","wool_"..color..".png"..cb,"wool_"..color..".png"..cf,"wool_"..color..".png"..cf,"wool_"..color..".png"..cf,"wool_"..color..".png"..cf,},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, furniture = 1, fall_damage_add_percent=-80, bouncy=80},
sounds = {wood = {name="furn_bouncy", gain=0.8}},
can_dig = ma_pops_furniture.sit_dig,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y + 0 -- Sitting position
ma_pops_furniture.sit(pos, node, clicker, pointed_thing)
return itemstack
end,
node_box = {
type = "fixed",
fixed = {
{-0.4, -0.5, -0.4, -0.3, -0.4, -0.3},
{-0.4, -0.5, 0.4, -0.3, -0.4, 0.3},
{0.4, -0.5, 0.4, 0.3, -0.4, 0.3},
{0.4, -0.5, -0.4, 0.3, -0.4, -0.3},
-----------------------------------
{-0.450, -0.4, -0.450, 0.450, 0.1, 0.450},
{-0.5, 0.1, -0.5, -0.3, 0.3, 0.0},
{0.5, 0.1, -0.5, 0.3, 0.3, 0.0},
{0.450, 0.1, -0.0, -0.450, 0.5, 0.450},
},
},
on_punch = function(pos, node, clicker)
for _, obj in ipairs (minetest.get_connected_players()) do
local item = obj:get_wielded_item():get_name()
if item == 'dye:black' then
node.name = "ma_pops_furniture:chair2_black"
minetest.set_node(pos, node)
else
if item == 'dye:white' then
node.name = "ma_pops_furniture:chair2_white"
minetest.set_node(pos, node)
else
if item == 'dye:grey' then
node.name = "ma_pops_furniture:chair2_grey"
minetest.set_node(pos, node)
else
if item == 'dye:dark_grey' then
node.name = "ma_pops_furniture:chair2_dark_grey"
minetest.set_node(pos, node)
else
if item == 'dye:violet' then
node.name = "ma_pops_furniture:chair2_violet"
minetest.set_node(pos, node)
else
if item == 'dye:blue' then
node.name = "ma_pops_furniture:chair2_blue"
minetest.set_node(pos, node)
else
if item == 'dye:cyan' then
node.name = "ma_pops_furniture:chair2_cyan"
minetest.set_node(pos, node)
else
if item == 'dye:dark_green' then
node.name = "ma_pops_furniture:chair2_dark_green"
minetest.set_node(pos, node)
else
if item == 'dye:green' then
node.name = "ma_pops_furniture:chair2_green"
minetest.set_node(pos, node)
else
if item == 'dye:yellow' then
node.name = "ma_pops_furniture:chair2_yellow"
minetest.set_node(pos, node)
else
if item == 'dye:orange' then
node.name = "ma_pops_furniture:chair2_orange"
minetest.set_node(pos, node)
else
if item == 'dye:red' then
node.name = "ma_pops_furniture:chair2_red"
minetest.set_node(pos, node)
else
if item == 'dye:magenta' then
node.name = "ma_pops_furniture:chair2_magenta"
minetest.set_node(pos, node)
else
if item == 'dye:pink' then
node.name = "ma_pops_furniture:chair2_pink"
minetest.set_node(pos, node)
else
if item == 'dye:brown' then
node.name = "ma_pops_furniture:chair2_brown"
minetest.set_node(pos, node)
else
ma_pops_furniture.sit(pos, node, clicker)
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
})
end
local fs_table = { --name, color, colorize(hex or color name:intensity(1-255))
{'Black', 'black', 'black:225'},
{'Blue', 'blue', 'blue:225'},
{'Brown', 'brown', 'brown:225'},
{'Cyan', 'cyan', 'cyan:200'},
{'Dark Green', 'dark_green', 'green:225'},
{'Dark Grey', 'dark_grey', 'black:200'},
{'Green', 'green', '#32cd32:150'},
{'Grey', 'grey', 'black:100'},
{'Magenta', 'magenta', 'magenta:200'},
{'Orange', 'orange', 'orange:225'},
{'Pink', 'pink', 'pink:225'},
{'Red', 'red', 'red:225'},
{'Violet', 'violet', 'violet:225'},
{'White', 'white', 'white:1'},
{'Yellow', 'yellow', 'yellow:225'},
}
for i in ipairs (fs_table) do
local name = fs_table[i][1]
local color = fs_table[i][2]
local hex = fs_table[i][3]
minetest.register_node("ma_pops_furniture:fs_"..color, {
description = name.." Footstool",
tiles = {"wool_"..color..".png","wool_"..color..".png^mp_cb.png","wool_"..color..".png^mp_cf.png","wool_"..color..".png^mp_cf.png","wool_"..color..".png^mp_cf.png","wool_"..color..".png^mp_cf.png",},
drawtype = "nodebox",
paramtype = "light",
sounds = moditems.WOOD_SOUNDS,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, furniture = 1},
node_box = {
type = "fixed",
fixed = {
{-0.4, -0.5, -0.4, -0.3, -0.4, -0.3},
{-0.4, -0.5, 0.4, -0.3, -0.4, 0.3},
{0.4, -0.5, 0.4, 0.3, -0.4, 0.3},
{0.4, -0.5, -0.4, 0.3, -0.4, -0.3},
-----------------------------------
{-0.450, -0.4, -0.450, 0.450, -0.1, 0.450},
},
},
on_punch = function(pos, node, clicker)
for _, obj in ipairs (minetest.get_connected_players()) do
local item = obj:get_wielded_item():get_name()
if item == 'dye:black' then
node.name = "ma_pops_furniture:fs_black"
minetest.set_node(pos, node)
else
if item == 'dye:white' then
node.name = "ma_pops_furniture:fs_white"
minetest.set_node(pos, node)
else
if item == 'dye:grey' then
node.name = "ma_pops_furniture:fs_grey"
minetest.set_node(pos, node)
else
if item == 'dye:dark_grey' then
node.name = "ma_pops_furniture:fs_dark_grey"
minetest.set_node(pos, node)
else
if item == 'dye:violet' then
node.name = "ma_pops_furniture:fs_violet"
minetest.set_node(pos, node)
else
if item == 'dye:blue' then
node.name = "ma_pops_furniture:fs_blue"
minetest.set_node(pos, node)
else
if item == 'dye:cyan' then
node.name = "ma_pops_furniture:fs_cyan"
minetest.set_node(pos, node)
else
if item == 'dye:dark_green' then
node.name = "ma_pops_furniture:fs_dark_green"
minetest.set_node(pos, node)
else
if item == 'dye:green' then
node.name = "ma_pops_furniture:fs_green"
minetest.set_node(pos, node)
else
if item == 'dye:yellow' then
node.name = "ma_pops_furniture:fs_yellow"
minetest.set_node(pos, node)
else
if item == 'dye:orange' then
node.name = "ma_pops_furniture:fs_orange"
minetest.set_node(pos, node)
else
if item == 'dye:red' then
node.name = "ma_pops_furniture:fs_red"
minetest.set_node(pos, node)
else
if item == 'dye:magenta' then
node.name = "ma_pops_furniture:fs_magenta"
minetest.set_node(pos, node)
else
if item == 'dye:pink' then
node.name = "ma_pops_furniture:fs_pink"
minetest.set_node(pos, node)
else
if item == 'dye:brown' then
node.name = "ma_pops_furniture:fs_brown"
minetest.set_node(pos, node)
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
})
end

View file

@ -0,0 +1,162 @@
--microwave code by Wizzerine
--item_percent code by Noodlemire
local microwave_fs =
"size[9,9.5]"
.."background[0,0;9,4.5;mp_microwave_GUI.png]"
.."image_button[6.88,3.45;.85,.84;mp_microwave_start.png;btn_start;start]"
.."image[7.05,.05;2,.4;mp_mw_bar.png^[transformR270]"
.."list[current_player;main;.5,5;8,1;]"
.."list[current_player;main;.5,6.5;8,3;8]"
.."list[context;cook_slot;3.3,3;1,1;]"
.."label[1.5,0.4;Microwave]"
-- possibly add "fire" image?
local function get_active_microwave_fs(item_percent)
return "size[9,9.5]"
.."background[0,0;9,4.5;mp_microwave_GUI.png]"
.."image_button[6.88,3.45;.85,.84;mp_microwave_start.png;btn_start;start]"
.."image[7.05,.05;2,.4;mp_mw_bar.png^[lowpart:"
..(item_percent)..":mp_mw_bar_on.png^[transformR270]"
.."list[current_player;main;.5,5;8,1;]"
.."list[current_player;main;.5,6.5;8,3;8]"
.."list[context;cook_slot;3.3,3;1,1;]"
.."label[1.5,0.4;Microwave]"
-- possibly add "fire" image?
end
--x,y;w,h
-- Adding recipe API so we don't end up hardcoding items
ma_pops_furniture.microwave = {}
local microwave = ma_pops_furniture.microwave
microwave.recipes = {}
function microwave.register_recipe(input, output) microwave.recipes[input] = output end
local function update_formspec(progress, goal, meta)
local formspec
if progress > 0 and progress <= goal then
local item_percent = math.floor(progress / goal * 100)
formspec = get_active_microwave_fs(item_percent)
else
formspec = microwave_fs
end
meta:set_string("formspec", formspec)
end
local function recalculate(pos)
local meta, timer = minetest.get_meta(pos), minetest.get_node_timer(pos)
local inv = meta:get_inventory()
local stack = inv:get_stack("cook_slot", 1)
local goal = 3 * stack:get_count()
local k = microwave.recipes[stack:get_name()]
if not k then return end
timer:stop()
update_formspec(0, goal, meta)
timer:start(1)
end
local function do_cook_all(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local stack = meta:get_inventory():get_stack("cook_slot", 1)
local food_uncooked = inv:remove_item("cook_slot", inv:get_stack("cook_slot", 1)) -- Clear the slot
local food_cooked = microwave.recipes[food_uncooked:get_name()] .. " " .. tostring(food_uncooked:get_count()) -- Get the cooked food
inv:add_item("cook_slot", food_cooked) -- Put the cooked food in the slot
end
minetest.register_node("ma_pops_furniture:microwave", {
description = "Microwave",
tiles = {"mp_mw_top.png", "mp_mw_bottom.png", "mp_mw_right.png", "mp_mw_left.png", "mp_mw_back.png", "mp_mw_front.png"},
paramtype2 = "facedir",
groups = {cracky = 2}, -- currently no pipeworks compat as I don't know how it works
sounds = moditems.STONE_SOUNDS,
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-0.4375, -0.4375, -0.3125, 0.4375, 0.0625, 0.3125},
{-0.375, -0.5, -0.25, 0.375, -0.4375, 0.25},
},
},
can_dig = function(pos, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
return inv:is_empty("cook_slot")
end,
on_timer = function(pos, elapsed)
local meta = minetest.get_meta(pos)
local stack = meta:get_inventory():get_stack("cook_slot", 1)
local goal = 3 * stack:get_count()
local cooking_time = meta:get_int("cooking_time") or 0
cooking_time = cooking_time + 1
update_formspec(cooking_time, goal, meta)
meta:set_int("cooking_time", cooking_time)
--Keep cooking until there is nothing left to cook.
if cooking_time <= goal then
return true
else
do_cook_all(pos)
meta:set_int("cooking_time", 0)
update_formspec(0, goal, meta)
return false
end
end,
--on_metadata_inventory_put = recalculate,
--on_metadata_inventory_take = recalculate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", microwave_fs)
local inv = meta:get_inventory()
inv:set_size("cook_slot", 1)
end,
on_receive_fields = function(pos, _, fields)
if fields.quit then return end
if fields.btn_start then
recalculate(pos)
end
end,
on_blast = function(pos)
local drops = {}
default.get_inventory_drops(pos, "cook_slot", drops)
table.insert(drops, "ma_pops_furniture:microwave")
minetest.remove_node(pos)
return drops
end,
allow_metadata_inventory_put = function(pos, list, index, stack, player)
return microwave.recipes[stack:get_name()] and stack:get_count() or 0
end,
--Only allow items to be taken if the microwave hasn't started yet
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
if not minetest.get_node_timer(pos):is_started() then
return stack:get_count()
else
return 0
end
end
})
-- Recipe Registration
microwave.register_recipe("default:ice", "default:water_source")
-- No milk bucket as this doesn't support substitutes for now
microwave.register_recipe("mobs_mc:chicken_raw", "mobs_mc:chicken_cooked")
--[[ We don't need to check mod existance when registering recipe
Recipe won't even be executed if there is no raw chicken in input ]]--
microwave.register_recipe("mobs_mc:beef_raw", "mobs_mc:beef_cooked")
microwave.register_recipe("mobs:meat_raw", "mobs:meat")
microwave.register_recipe("farming:coffee_cup", "farming:coffee_cup_hot") -- What a crutch there was...
microwave.register_recipe("farming:corn", "farming:corn_cob")
-- Add needed recipes as you go, note that other mods can add more recipes too

View file

@ -0,0 +1,973 @@
minetest.register_node("ma_pops_furniture:smoke_detector", {
description = "Smoke Detector",
tiles = {
"mp_t.png",
"mp_b.png",
"mp_si.png",
"mp_si.png",
"mp_si.png",
"mp_si.png"
},
groups = {cracky = 3, oddly_breakable_by_hand = 3},
on_timer = function(pos,elapsed)
if minetest.find_node_near(pos, 20, {"fire:basic_flame"}, false) then
local node = minetest.get_node(pos)
node.name = "ma_pops_furniture:smoke_detector_on"
minetest.remove_node(pos)
minetest.add_node(pos, node)
minetest.get_node_timer(pos):start(0.0)
else
-- Update every 10 seconds.
minetest.get_node_timer(pos):start(10.0)
end
end,
after_place_node = function(pos, placer, itemstack, pointed_thing)
minetest.get_node_timer(pos):start(0.0)
end,
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-0.375, 0.375, -0.375, 0.375, 0.5, 0.375}, -- NodeBox1
{-0.3125, 0.3125, -0.3125, 0.3125, 0.375, 0.3125}, -- NodeBox2
}
}
})
minetest.register_node("ma_pops_furniture:smoke_detector_on", {
description = "Smoke Detector",
tiles = {
"mp_t.png",
"mp_b.png",
"mp_si.png",
"mp_si.png",
"mp_si.png",
"mp_si.png"
},
on_destruct = function(pos)
local meta = minetest.get_meta(pos)
if meta then
local tmp = meta:to_table()
if tmp then
if tmp.fields.sound_handle then
minetest.sound_stop(tmp.fields.sound_handle)
tmp.fields.sound_handle = nil
meta:from_table(tmp)
end
end
end
end,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local meta = minetest.get_meta(pos)
if meta then
local tmp = meta:to_table()
if tmp then
if tmp.fields.sound_handle then
minetest.sound_stop(tmp.fields.sound_handle)
tmp.fields.sound_handle = nil
minetest.get_node_timer(pos):start(3.0)
meta:from_table(tmp)
end
end
end
end,
drop = 'ma_pops_furniture:smoke_detector',
groups = {cracky = 3, oddly_breakable_by_hand = 3, not_in_creative_inventory= 1},
on_timer = function(pos,elapsed)
if minetest.find_node_near(pos, 20, {"fire:basic_flame"}, false) then
-- Play sound.
local meta = minetest.get_meta(pos)
if meta then
local tmp = meta:to_table()
if tmp then
if not tmp.fields.sound_handle then
local handle = minetest.sound_play("mp_smoke_detector", {pos = pos, gain = 2.1,max_hear_distance = 96,loop = true})
tmp.fields.sound_handle = handle
end
end
meta:from_table(tmp)
end
-- Update every 1.0 second.
minetest.get_node_timer(pos):start(1.0)
else
local meta = minetest.get_meta(pos)
if meta then
local tmp = meta:to_table()
if tmp then
minetest.sound_stop(tmp.fields.sound_handle)
if tmp.fields.sound_handle then
tmp.fields.sound_handle = nil
meta:from_table(tmp)
end
end
end
local node = minetest.get_node(pos)
node.name = "ma_pops_furniture:smoke_detector"
minetest.remove_node(pos)
minetest.add_node(pos, node)
minetest.get_node_timer(pos):start(0.0)
end
end,
drawtype = "nodebox",
paramtype = "light",
light_source = light,
node_box = {
type = "fixed",
fixed = {
{-0.375, 0.375, -0.375, 0.375, 0.5, 0.375}, -- NodeBox1
{-0.3125, 0.3125, -0.3125, 0.3125, 0.375, 0.3125}, -- NodeBox2
}
}
})
minetest.register_lbm({
label = "Replace all smoke detector's that are turned on.",
name = "ma_pops_furniture:replace_smoke_detector_on",
nodenames = {"ma_pops_furniture:smoke_detector_on"},
run_at_every_load = true,
action = function(pos, node)
node.name = "ma_pops_furniture:smoke_detector"
minetest.remove_node(pos)
minetest.add_node(pos, node)
minetest.get_node_timer(pos):start(0.0)
end
})
minetest.register_node("ma_pops_furniture:barrel", {
description = "Barrel",
paramtype2 = "facedir",
place_param2 = 0,
tiles = {
"mp_barrel.png", --top
"mp_barrel.png", --bottom
"mp_barrel.png^[transformR90", --right
"mp_barrel.png^[transformR90", --left
"mp_barrel_top.png", --back
"mp_barrel_top.png" --front
},
is_ground_content = false,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1},
on_construct = function(pos)
local meta = minetest.env:get_meta(pos)
local inv = meta:get_inventory()
inv:set_size('main', 8*4)
inv:set_size('storage', 9*3)
meta:set_string('formspec',
'size [9,9]'..
'bgcolor[#080808BB;false]'..
'list[current_name;storage;0,0.2;9,3;]'..
'list[current_player;main;0.5,5;8,4;]')
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty('storage') and inv:is_empty('storage1')
end,
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
}
}
})
minetest.register_node("ma_pops_furniture:blinds", {
description = "Blinds",
tiles = {"mp_blinds.png"},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, furniture = 1},
sunlight_propagates = true;
node_box = {
type = "fixed",
fixed = {
{-0.5, 0.5, 0.5, 0.5, 0.4, 0.4},
{-0.5, 0.3, 0.5, 0.5, 0.2, 0.4},
{-0.5, 0.1, 0.5, 0.5, 0.0, 0.4},
{-0.5, -0.1, 0.5, 0.5, -0.2, 0.4},
{-0.5, -0.3, 0.5, 0.5, -0.4, 0.4},
},
}
})
minetest.register_node("ma_pops_furniture:light", {
description = "Ceiling Light",
tiles = {
"default_coral_skeleton.png",
"mp_ceiling_light_bottom.png",
"mp_ceiling_light_side.png",
"mp_ceiling_light_side.png",
"mp_ceiling_light_side.png",
"mp_ceiling_light_side.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
node.name = "ma_pops_furniture:light_on"
minetest.set_node(pos, node)
end,
groups = {choppy = 2, oddly_breakable_by_hand = 2},
node_box = {
type = "fixed",
fixed = {
{-0.25, 0.4375, -0.25, 0.25, 0.5, 0.25}, -- NodeBox1
{-0.125, 0.3125, -0.125, 0.125, 0.4375, 0.125}, -- NodeBox2
{-0.1875, -0.0625, -0.1875, 0.1875, 0.3125, 0.1875}, -- NodeBox3
},
}
})
minetest.register_node("ma_pops_furniture:light_on", {
description = "Ceiling Light",
tiles = {
"default_coral_skeleton.png",
"mp_ceiling_light_bottom.png",
"mp_ceiling_light_side.png",
"mp_ceiling_light_side.png",
"mp_ceiling_light_side.png",
"mp_ceiling_light_side.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
drop = "ma_pops_furniture:light",
light_source = 14,
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
node.name = "ma_pops_furniture:light"
minetest.set_node(pos, node)
end,
groups = {choppy = 2, oddly_breakable_by_hand = 2, not_in_creative_inventory = 1},
node_box = {
type = "fixed",
fixed = {
{-0.25, 0.4375, -0.25, 0.25, 0.5, 0.25}, -- NodeBox1
{-0.125, 0.3125, -0.125, 0.125, 0.4375, 0.125}, -- NodeBox2
{-0.1875, -0.0625, -0.1875, 0.1875, 0.3125, 0.1875}, -- NodeBox3
},
}
})
minetest.register_node("ma_pops_furniture:ceiling_lamp", {
description = "Ceiling Lamp",
tiles = {
"default_stone.png",
"default_stone.png^mp_light_off.png",
"default_stone.png",
"default_stone.png",
"default_stone.png",
"default_stone.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
node.name = "ma_pops_furniture:ceiling_lamp_on"
minetest.set_node(pos, node)
end,
groups = {choppy = 2, oddly_breakable_by_hand = 2},
node_box = {
type = "fixed",
fixed = {
{-0.050, 0.5, -0.050, 0.050, -0.2, 0.050},
{-0.1, -0.0, -0.1, 0.1, -0.2, 0.1},
{-0.2, -0.1, -0.2, 0.2, -0.2, 0.2},
{-0.3, -0.2, -0.3, 0.3, -0.5, 0.3},
},
}
})
minetest.register_node("ma_pops_furniture:ceiling_lamp_on", {
description = "Ceiling Lamp On",
tiles = {
"default_stone.png",
"default_stone.png^mp_light_on.png",
"default_stone.png",
"default_stone.png",
"default_stone.png",
"default_stone.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
light_source = 14,
drop = 'ma_pops_furniture:ceiling_lamp',
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
node.name = "ma_pops_furniture:ceiling_lamp"
minetest.set_node(pos, node)
end,
groups = {choppy = 2, oddly_breakable_by_hand = 2, not_in_creative_inventory = 1},
node_box = {
type = "fixed",
fixed = {
{-0.050, 0.5, -0.050, 0.050, -0.2, 0.050},
{-0.1, -0.0, -0.1, 0.1, -0.2, 0.1},
{-0.2, -0.1, -0.2, 0.2, -0.2, 0.2},
{-0.3, -0.2, -0.3, 0.3, -0.5, 0.3},
},
}
})
minetest.register_node("ma_pops_furniture:fan_on", {
description = "Fan (on)",
tiles = {
"default_coral_skeleton.png",
"default_coral_skeleton.png",
"default_coral_skeleton.png",
"default_coral_skeleton.png",
{
name = "mp_fan_on.png",
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 0.3
},
},
},
drawtype = "nodebox",
drop = 'ma_pops_furniture:fan_off',
paramtype2 = "facedir",
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
node.name = "ma_pops_furniture:fan_off"
minetest.set_node(pos, node)
end,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, not_in_creative_inventory = 1},
node_box = {
type = "fixed",
fixed = {
{-0.5, 0.5, 0.2, 0.5, -0.5, -0.2},
},
}
})
minetest.register_node("ma_pops_furniture:fan_off", {
description = "Fan",
tiles = {
"default_coral_skeleton.png",
"default_coral_skeleton.png",
"default_coral_skeleton.png",
"default_coral_skeleton.png",
"mp_fan_off.png",
"mp_fan_off.png",
},
drawtype = "nodebox",
drop = 'ma_pops_furniture:fan_off',
paramtype2 = "facedir",
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
node.name = "ma_pops_furniture:fan_on"
minetest.set_node(pos, node)
end,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
node_box = {
type = "fixed",
fixed = {
{-0.5, 0.5, 0.2, 0.5, -0.5, -0.2},
},
}
})
minetest.register_node("ma_pops_furniture:ac", {
description = "AC",
tiles = {
"mp_ac_top.png",
"mp_ac_top.png",
"mp_ac_top.png",
"mp_ac_top.png",
"mp_ac_b.png",
"mp_ac_f.png",
},
drawtype = "nodebox",
paramtype = "light",
drop = 'ma_pops_furniture:ac',
paramtype2 = "facedir",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
node_box = {
type = "fixed",
fixed = {
{0.5, 0.5, 0.5, -0.5, -0.5, -0.4},
{0.5, 0.2, -0.5, -0.5, -0.5, -0.4},
},
}
})
-- Define a table for lamp colors
local lamp_table = {
{'Black', 'black', 'black:225'},
{'Blue', 'blue', 'blue:225'},
{'Brown', 'brown', 'brown:225'},
{'Cyan', 'cyan', 'cyan:200'},
{'Dark Green', 'dark_green', 'green:225'},
{'Dark Grey', 'dark_grey', 'black:200'},
{'Green', 'green', '#32cd32:150'},
{'Grey', 'grey', 'black:100'},
{'Magenta', 'magenta', 'magenta:200'},
{'Orange', 'orange', 'orange:225'},
{'Pink', 'pink', 'pink:225'},
{'Red', 'red', 'red:225'},
{'Violet', 'violet', 'violet:225'},
{'White', 'white', 'white:1'},
{'Yellow', 'yellow', 'yellow:225'}
}
-- Create a lookup table for dye names and corresponding lamp colors
local dye_to_color = {
['dye:black'] = 'black',
['dye:white'] = 'white',
['dye:grey'] = 'grey',
['dye:dark_grey'] = 'dark_grey',
['dye:violet'] = 'violet',
['dye:blue'] = 'blue',
['dye:cyan'] = 'cyan',
['dye:dark_green'] = 'dark_green',
['dye:green'] = 'green',
['dye:yellow'] = 'yellow',
['dye:orange'] = 'orange',
['dye:red'] = 'red',
['dye:magenta'] = 'magenta',
['dye:pink'] = 'pink',
['dye:brown'] = 'brown'
}
-- Register lamps for each color
for _, lamp in ipairs(lamp_table) do
local name = lamp[1]
local color = lamp[2]
local hex = lamp[3]
-- Register the "on" version of the lamp
minetest.register_node("ma_pops_furniture:lamp_"..color, {
description = name .. " Lamp",
tiles = {
"mp_lt.png",
"mp_lb_middle.png^[colorize:" .. hex .. "^mp_lb.png",
"mp_ls.png^[colorize:" .. hex .. "^mp_ls_top.png",
"mp_ls.png^[colorize:" .. hex .. "^mp_ls_top.png",
"mp_ls.png^[colorize:" .. hex .. "^mp_ls_top.png",
"mp_ls.png^[colorize:" .. hex .. "^mp_ls_top.png"
},
drawtype = "nodebox",
light_source = 14,
paramtype = "facedir",
drop = 'ma_pops_furniture:lamp_off_'..color,
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
node.name = "ma_pops_furniture:lamp_off_"..color
minetest.set_node(pos, node)
end,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, not_in_creative_inventory = 1, furniture = 1},
node_box = {
type = "fixed",
fixed = {
{-0.25, -0.4375, -0.25, 0.25, -0.0625, 0.25},
{-0.375, -0.0625, -0.375, 0.375, 0.5, 0.375},
{-0.1875, -0.4375, -0.1875, 0.1875, -0.5, 0.1875}
}
},
on_punch = function(pos, node, clicker)
local item = clicker:get_wielded_item():get_name()
local new_color = dye_to_color[item]
if new_color then
node.name = "ma_pops_furniture:lamp_" .. new_color
minetest.set_node(pos, node)
end
end
})
-- Register the "off" version of the lamp
minetest.register_node("ma_pops_furniture:lamp_off_"..color, {
description = name .. " Lamp",
tiles = {
"mp_lt.png",
"mp_lb_middle.png^[colorize:" .. hex .. "^mp_lb.png",
"mp_ls.png^[colorize:" .. hex .. "^mp_ls_top.png",
"mp_ls.png^[colorize:" .. hex .. "^mp_ls_top.png",
"mp_ls.png^[colorize:" .. hex .. "^mp_ls_top.png",
"mp_ls.png^[colorize:" .. hex .. "^mp_ls_top.png"
},
drawtype = "nodebox",
paramtype = "facedir",
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
node.name = "ma_pops_furniture:lamp_"..color
minetest.set_node(pos, node)
end,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, furniture = 1},
node_box = {
type = "fixed",
fixed = {
{-0.25, -0.4375, -0.25, 0.25, -0.0625, 0.25},
{-0.375, -0.0625, -0.375, 0.375, 0.5, 0.375},
{-0.1875, -0.4375, -0.1875, 0.1875, -0.5, 0.1875}
}
},
on_punch = function(pos, node, clicker)
local item = clicker:get_wielded_item():get_name()
local new_color = dye_to_color[item]
if new_color then
node.name = "ma_pops_furniture:lamp_off_" .. new_color
minetest.set_node(pos, node)
end
end
})
end
local curtain_table = {
{'Black', 'black', 'black:225'},
{'Blue', 'blue', 'blue:225'},
{'Brown', 'brown', 'brown:225'},
{'Cyan', 'cyan', 'cyan:200'},
{'Dark Green', 'dark_green', 'green:225'},
{'Dark Grey', 'dark_grey', 'black:200'},
{'Green', 'green', '#32cd32:150'},
{'Grey', 'grey', 'black:100'},
{'Magenta', 'magenta', 'magenta:200'},
{'Orange', 'orange', 'orange:225'},
{'Pink', 'pink', 'pink:225'},
{'Red', 'red', 'red:225'},
{'Violet', 'violet', 'violet:225'},
{'White', 'white', 'white:1'},
{'Yellow', 'yellow', 'yellow:225'},
}
for i in ipairs(curtain_table) do
local name = curtain_table[i][1]
local color = curtain_table[i][2]
local hex = curtain_table[i][3]
-- Small Curtains
minetest.register_node("ma_pops_furniture:curtains_"..color, {
description = name.." Curtains",
tiles = {"default_acacia_tree.png","wool_"..color..".png^mp_curtainb.png","wool_"..color..".png^mp_curtains.png","wool_"..color..".png^mp_curtains.png","wool_"..color..".png^mp_curtains.png","wool_"..color..".png^mp_curtains.png"},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, furniture = 1},
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
node.name = "ma_pops_furniture:curtains_closed_"..color
minetest.set_node(pos, node)
end,
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.3, 0.5, -0.2, 0.5, 0.4},
{-0.5, -0.5, 0.5, -0.3, -0.3, 0.4},
{-0.5, 0.5, 0.5, 0.5, 0.2, 0.4},
{-0.5, 0.5, 0.5, 0.5, 0.440, 0.350},
{0.5, -0.3, 0.5, 0.2, 0.5, 0.4},
{0.5, -0.5, 0.5, 0.3, -0.3, 0.4},
},
},
on_punch = function(pos, node, clicker)
local item = clicker:get_wielded_item():get_name()
local color_map = {
["dye:black"] = "black",
["dye:white"] = "white",
["dye:grey"] = "grey",
["dye:dark_grey"] = "dark_grey",
["dye:violet"] = "violet",
["dye:blue"] = "blue",
["dye:cyan"] = "cyan",
["dye:dark_green"] = "dark_green",
["dye:green"] = "green",
["dye:yellow"] = "yellow",
["dye:orange"] = "orange",
["dye:red"] = "red",
["dye:magenta"] = "magenta",
["dye:pink"] = "pink",
["dye:brown"] = "brown",
}
local new_color = color_map[item]
if new_color then
node.name = "ma_pops_furniture:curtains_"..new_color
minetest.set_node(pos, node)
end
end,
})
-- Closed Small Curtains
minetest.register_node("ma_pops_furniture:curtains_closed_"..color, {
description = name.." Closed Curtains",
tiles = {"default_acacia_tree.png","wool_"..color..".png^mp_curtainb.png","wool_"..color..".png^mp_curtains.png","wool_"..color..".png^mp_curtains.png","wool_"..color..".png^mp_curtains.png","wool_"..color..".png^mp_curtains.png"},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, not_in_creative_inventory = 1, furniture = 1},
drop = "ma_pops_furniture:curtains_"..color,
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
node.name = "ma_pops_furniture:curtains_"..color
minetest.set_node(pos, node)
end,
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, 0.5, 0.5, 0.5, 0.4},
{-0.5, 0.5, 0.5, 0.5, 0.440, 0.350},
},
},
on_punch = function(pos, node, clicker)
local item = clicker:get_wielded_item():get_name()
local color_map = {
["dye:black"] = "black",
["dye:white"] = "white",
["dye:grey"] = "grey",
["dye:dark_grey"] = "dark_grey",
["dye:violet"] = "violet",
["dye:blue"] = "blue",
["dye:cyan"] = "cyan",
["dye:dark_green"] = "dark_green",
["dye:green"] = "green",
["dye:yellow"] = "yellow",
["dye:orange"] = "orange",
["dye:red"] = "red",
["dye:magenta"] = "magenta",
["dye:pink"] = "pink",
["dye:brown"] = "brown",
}
local new_color = color_map[item]
if new_color then
node.name = "ma_pops_furniture:curtains_closed_"..new_color
minetest.set_node(pos, node)
end
end,
})
-- Tall Curtains
minetest.register_node("ma_pops_furniture:curtains_2_tall_"..color, {
description = name.." Tall Curtains",
tiles = {"wool_"..color..".png"},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, furniture = 1},
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
node.name = "ma_pops_furniture:curtains_2_tall_closed_"..color
minetest.set_node(pos, node)
end,
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.3, 0.5, -0.2, 0.5, 0.4},
{-0.5, -0.5, 0.5, -0.3, -0.3, 0.4},
{-0.5, 0.5, 0.5, 0.5, 0.2, 0.4},
{0.5, -0.3, 0.5, 0.2, 0.5, 0.4},
{0.5, -0.5, 0.5, 0.3, -0.3, 0.4},
{-0.5, -0.5, 0.5, -0.3, -1.2, 0.4},
{0.5, -0.5, 0.5, 0.3, -1.2, 0.4},
},
},
on_punch = function(pos, node, clicker)
local item = clicker:get_wielded_item():get_name()
local color_map = {
["dye:black"] = "black",
["dye:white"] = "white",
["dye:grey"] = "grey",
["dye:dark_grey"] = "dark_grey",
["dye:violet"] = "violet",
["dye:blue"] = "blue",
["dye:cyan"] = "cyan",
["dye:dark_green"] = "dark_green",
["dye:green"] = "green",
["dye:yellow"] = "yellow",
["dye:orange"] = "orange",
["dye:red"] = "red",
["dye:magenta"] = "magenta",
["dye:pink"] = "pink",
["dye:brown"] = "brown",
}
local new_color = color_map[item]
if new_color then
node.name = "ma_pops_furniture:curtains_2_tall_"..new_color
minetest.set_node(pos, node)
end
end,
})
-- Closed Tall Curtains
minetest.register_node("ma_pops_furniture:curtains_2_tall_closed_"..color, {
description = name.." Closed Tall Curtains",
tiles = {"wool_"..color..".png"},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, not_in_creative_inventory = 1, furniture = 1},
drop = "ma_pops_furniture:curtains_2_tall_"..color,
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
node.name = "ma_pops_furniture:curtains_2_tall_"..color
minetest.set_node(pos, node)
end,
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, 0.5, 0.5, 0.5, 0.4},
{-0.5, -1.2, 0.5, 0.5, -0.5, 0.4},
},
},
})
end
-- On placement check if there is a small curtain directly below
minetest.register_on_placenode(function(pos, new_node, placer, itemstack, pointed_thing)
if new_node.name:match("ma_pops_furniture:curtains_") then
local node_below = minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z})
if node_below.name:match("ma_pops_furniture:curtains_") and node_below.name ~= new_node.name then
local color = new_node.name:match("_(%w+)$")
local tall_node_name = "ma_pops_furniture:curtains_2_tall_"..color
minetest.set_node(pos, {name = tall_node_name})
minetest.set_node({x=pos.x, y=pos.y-1, z=pos.z}, {name = "air"})
end
end
end)
minetest.register_node("ma_pops_furniture:computer", {
description = "Computer",
tiles = {
"mp_s.png^mp_top.png",
"mp_s.png",
"mp_s.png",
"mp_s.png",
"mp_s.png",
"mp_s.png^mp_f.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=2, oddly_breakable_by_hand=2, furniture=1, flammable=1},
sounds = moditems.WOOD_SOUNDS,
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.1875, 0.5, -0.25, 0.5},
{-0.5, -0.5, -0.5, 0.1875, -0.375, -0.25},
{0.25, -0.5, -0.5, 0.4375, -0.375, -0.25},
{-0.125, -0.25, 0.0625, 0.125, -0.0625, 0.25},
{-0.3125, -0.125, -0.25, 0.3125, 0.5, 0.3125},
{-0.25, 0, 0.3125, 0.25, 0.375, 0.5},
}
}
})
-- Define the stool color table
local stool_table = {
{'Black', 'black', 'black:225'},
{'Blue', 'blue', 'blue:150'},
{'Brown', 'brown', 'brown:100'},
{'Cyan', 'cyan', 'cyan:150'},
{'Dark Green', 'dark_green', 'green:200'},
{'Green', 'green', '#32cd32:150'},
{'Magenta', 'magenta', 'magenta:200'},
{'Orange', 'orange', 'orange:150'},
{'Pink', 'pink', 'pink:150'},
{'Red', 'red', 'red:150'},
{'Violet', 'violet', 'violet:150'},
{'White', 'white', 'white:150'},
{'Yellow', 'yellow', 'yellow:150'}
}
-- Create a lookup table for dye names and corresponding stool colors
local dye_to_stool = {
['dye:black'] = 'black',
['dye:white'] = 'white',
['dye:grey'] = 'grey',
['dye:dark_grey'] = 'dark_grey',
['dye:violet'] = 'violet',
['dye:blue'] = 'blue',
['dye:cyan'] = 'cyan',
['dye:dark_green'] = 'dark_green',
['dye:green'] = 'green',
['dye:yellow'] = 'yellow',
['dye:orange'] = 'orange',
['dye:red'] = 'red',
['dye:magenta'] = 'magenta',
['dye:pink'] = 'pink',
['dye:brown'] = 'brown'
}
-- Register each stool color
for _, stool in ipairs(stool_table) do
local name = stool[1]
local color = stool[2]
local hex = stool[3]
minetest.register_node("ma_pops_furniture:stool_"..color, {
description = name.." Stool",
tiles = {
"mp_stool_top1.png^mp_stool_top.png^[colorize:"..hex.."^mp_stool_top1.png",
"default_coral_skeleton.png",
"default_coral_skeleton.png",
"default_coral_skeleton.png",
"default_coral_skeleton.png",
"default_coral_skeleton.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {choppy = 2, oddly_breakable_by_hand = 2, furniture = 1},
can_dig = ma_pops_furniture.sit_dig,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y + 0 -- Sitting position
ma_pops_furniture.sit(pos, node, clicker, pointed_thing)
return itemstack
end,
node_box = {
type = "fixed",
fixed = {
{-0.375, -0.5, -0.375, -0.1875, 0.375, -0.1875},
{-0.375, -0.5, 0.1875, -0.1875, 0.375, 0.375},
{0.1875, -0.5, 0.1875, 0.375, 0.375, 0.375},
{0.1875, -0.5, -0.375, 0.375, 0.375, -0.1875},
{-0.375, 0.1875, -0.375, 0.375, 0.375, 0.375},
{0.25, -0.375, -0.1875, 0.3125, -0.3125, 0.1875},
{-0.1875, -0.375, -0.3125, 0.1875, -0.3125, -0.25},
{-0.1875, -0.375, 0.25, 0.1875, -0.3125, 0.3125},
{-0.3125, -0.375, -0.1875, -0.25, -0.3125, 0.1875},
{-0.3125, 0.375, -0.3125, 0.3125, 0.4375, 0.3125}
}
},
on_punch = function(pos, node, clicker)
local item = clicker:get_wielded_item():get_name()
local new_color = dye_to_stool[item]
if new_color then
node.name = "ma_pops_furniture:stool_"..new_color
minetest.set_node(pos, node)
else
ma_pops_furniture.sit(pos, node, clicker)
end
end
})
end
minetest.register_node("ma_pops_furniture:stairs", {
description= "Stairs",
tiles = {
"default_coral_skeleton.png",
"default_coral_skeleton.png",
"default_coral_skeleton.png^mp_stairs_side.png",
"default_coral_skeleton.png^mp_stairs_side.png^[transformFX",
"default_coral_skeleton.png^mp_stairs_back.png",
"default_coral_skeleton.png^mp_stairs_front.png"
},
drawtype = "mesh",
mesh= "stairs.obj",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 3, oddly_breakable_by_hand = 3},
node_box = {
type = "fixed",
fixed = {
{-0.5, 0.375, 0, 0.5, 0.5, 0.5}, -- NodeBox18
{-0.5, -0.125, -0.5, 0.5, 0, 0}, -- NodeBox19
{-0.0625, -0.375, -0.3125, 0.0625, -0.125, -0.1875}, -- NodeBox20
{-0.0625, -0.25, 0.1875, 0.0625, 0.375, 0.3125}, -- NodeBox21
{-0.0625, -0.375, -0.1875, 0.0625, -0.25, 0.3125}, -- NodeBox23
{-0.0625, -0.25, 0.0625, 0.0625, -0.125, 0.1875}, -- NodeBox24
}
}
})
-- Register the base lamp
minetest.register_node("ma_pops_furniture:lamp_1", {
description = "Floor Lamp",
tiles = {
"default_stone.png",
"default_stone.png",
"default_stone.png",
"default_stone.png",
"default_stone.png",
"default_stone.png"
},
groups = {cracky=2, oddly_breakable_by_hand=3},
on_construct = function(pos)
if minetest.get_node(vector.add(pos, vector.new(0, 1, 0))).name == "air" then
minetest.set_node({x = pos.x, y = pos.y + 1, z = pos.z}, {name = "ma_pops_furniture:lamp_2_off"})
end
if minetest.get_node(vector.add(pos, vector.new(0, 1, 0))).name ~= "air" and
minetest.get_node(vector.add(pos, vector.new(0, 1, 0))).name ~= "ma_pops_furniture:lamp_2_off" then
minetest.set_node({x = pos.x, y = pos.y, z = pos.z},{name = "air"})
end
end,
on_dig = function(pos, node, player)
minetest.set_node({x = pos.x, y = pos.y + 1, z = pos.z}, {name = "air"})
minetest.set_node({x = pos.x, y = pos.y, z = pos.z}, {name = "air"})
end,
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{-0.25, -0.5, -0.25, 0.25, -0.375, 0.25}, -- NodeBox16
{-0.0625, -0.375, -0.0625, 0.0625, 0.5, 0.0625} -- NodeBox17
}
}
})
-- Register the "on" version of the lamp
minetest.register_node("ma_pops_furniture:lamp_2_on", {
description = "Floor Lamp 2",
tiles = {
"mp_lt.png",
"mp_lt.png",
"default_stone.png^mp_ls_top.png",
"default_stone.png^mp_ls_top.png",
"default_stone.png^mp_ls_top.png",
"default_stone.png^mp_ls_top.png"
},
groups = {cracky=2, oddly_breakable_by_hand=3, not_in_creative_inventory = 1},
drop = "test:node_1",
on_dig = function(pos, node, player)
minetest.set_node({x = pos.x, y = pos.y - 1, z = pos.z}, {name = "air"})
minetest.set_node({x = pos.x, y = pos.y, z = pos.z}, {name = "air"})
end,
drawtype = "nodebox",
paramtype = "light",
light_source = 14,
drop = 'ma_pops_furniture:lamp_2_off',
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
node.name = "ma_pops_furniture:lamp_2_off"
minetest.set_node(pos, node)
end,
node_box = {
type = "fixed",
fixed = {
{-0.375, -0.0625, -0.375, 0.375, 0.5, 0.375}, -- NodeBox16
{-0.0625, -0.5, -0.0625, 0.0625, 0.1875, 0.0625} -- NodeBox17
}
},
})
-- Register the "off" version of the lamp
minetest.register_node("ma_pops_furniture:lamp_2_off", {
description = "Floor Lamp 2",
tiles = {
"mp_lt.png",
"mp_lt.png",
"default_stone.png^mp_ls_top.png",
"default_stone.png^mp_ls_top.png",
"default_stone.png^mp_ls_top.png",
"default_stone.png^mp_ls_top.png"
},
groups = {cracky=2, oddly_breakable_by_hand=3, not_in_creative_inventory = 1},
drop = "test:node_1",
on_dig = function(pos, node, player)
minetest.set_node({x = pos.x, y = pos.y - 1, z = pos.z}, {name = "air"})
minetest.set_node({x = pos.x, y = pos.y, z = pos.z}, {name = "air"})
end,
drawtype = "nodebox",
paramtype = "light",
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
node.name = "ma_pops_furniture:lamp_2_on"
minetest.set_node(pos, node)
end,
node_box = {
type = "fixed",
fixed = {
{-0.375, -0.0625, -0.375, 0.375, 0.5, 0.375}, -- NodeBox16
{-0.0625, -0.5, -0.0625, 0.0625, 0.1875, 0.0625} -- NodeBox17
}
},
on_punch = function(pos, node, clicker)
change_lamp_color(pos, node, clicker)
end
})

View file

@ -0,0 +1,7 @@
name = ma_pops_furniture
description = A revamp of Ma and Pop's Furniture Mod
optional_depends = default, fire, wool, dye, farming, mobs_mc, mcl_farming
author = GamingAssociation39
title = Ma & Pop's Furniture Mod
release = 27688

View file

@ -0,0 +1,96 @@
# Blender v2.75 (sub 4) OBJ File: 'birdbath.blend'
# www.blender.org
o Cube.001
v -0.400000 -0.500000 0.400000
v -0.400000 -0.400000 0.400000
v -0.400000 -0.500000 -0.400000
v -0.400000 -0.400000 -0.400000
v 0.400000 -0.500000 0.400000
v 0.400000 -0.400000 0.400000
v 0.400000 -0.500000 -0.400000
v 0.400000 -0.400000 -0.400000
v -0.100000 -0.400000 0.100000
v -0.100000 -0.400000 -0.100000
v 0.100000 -0.400000 -0.100000
v 0.100000 -0.400000 0.100000
v -0.100000 0.200000 0.100000
v -0.100000 0.200000 -0.100000
v 0.100000 0.200000 -0.100000
v 0.100000 0.200000 0.100000
v -0.500000 0.200000 0.500000
v -0.500000 0.200000 -0.500000
v 0.500000 0.200000 -0.500000
v 0.500000 0.200000 0.500000
v -0.500000 0.450000 0.500000
v -0.500000 0.450000 -0.500000
v 0.500000 0.450000 -0.500000
v 0.500000 0.450000 0.500000
v -0.404231 0.376539 0.404231
v -0.404231 0.376539 -0.404231
v 0.404231 0.376539 -0.404231
v 0.404231 0.376539 0.404231
vt 0.100000 0.100000
vt 0.900000 0.100000
vt 0.900000 0.000000
vt 0.100000 0.000000
vt 0.100000 0.900000
vt 0.900000 0.900000
vt 0.400000 0.400000
vt 0.400000 0.600000
vt 0.400000 0.100000
vt 0.600000 0.100000
vt 0.600000 0.700000
vt 0.400000 0.700000
vt 0.600000 0.400000
vt 0.600000 0.600000
vt 1.000000 0.000000
vt 0.000000 0.000000
vt 0.000000 0.700000
vt 1.000000 0.700000
vt 1.000000 0.950000
vt 0.000000 0.950000
vt 0.000000 1.000000
vt 1.000000 1.000000
vt 0.095769 0.095769
vt 0.095769 0.904231
vt 0.904231 0.095769
vt 0.904231 0.904231
vn -1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 0.000000
vn 0.608600 0.793500 0.000000
vn 0.000000 0.793500 -0.608600
vn 0.000000 0.793500 0.608600
vn -0.608600 0.793500 0.000000
g Cube.001_Cube.001_Material
s off
f 2/1/1 4/2/1 3/3/1 1/4/1
f 4/1/2 8/2/2 7/3/2 3/4/2
f 8/2/3 6/1/3 5/4/3 7/3/3
f 6/2/4 2/1/4 1/4/4 5/3/4
f 1/1/5 3/5/5 7/6/5 5/2/5
f 4/5/6 2/1/6 9/7/6 10/8/6
f 12/9/3 11/10/3 15/11/3 16/12/3
f 2/1/6 6/2/6 12/13/6 9/7/6
f 8/6/6 4/5/6 10/8/6 11/14/6
f 6/2/6 8/6/6 11/14/6 12/13/6
f 13/7/5 16/13/5 20/15/5 17/16/5
f 10/10/1 9/9/1 13/12/1 14/11/1
f 9/9/4 12/10/4 16/11/4 13/12/4
f 11/10/2 10/9/2 14/12/2 15/11/2
f 20/17/3 19/18/3 23/19/3 24/20/3
f 15/14/5 14/8/5 18/21/5 19/22/5
f 16/13/5 15/14/5 19/22/5 20/15/5
f 14/8/5 13/7/5 17/16/5 18/21/5
f 22/21/7 21/16/7 25/23/7 26/24/7
f 18/18/1 17/17/1 21/20/1 22/19/1
f 17/17/4 20/18/4 24/19/4 21/20/4
f 19/18/2 18/17/2 22/20/2 23/19/2
f 21/16/8 24/15/8 28/25/8 25/23/8
f 23/22/9 22/21/9 26/24/9 27/26/9
f 24/15/10 23/22/10 27/26/10 28/25/10
g Cube.001_Cube.001_Water.001
f 28/15/6 27/22/6 26/21/6 25/16/6

View file

@ -0,0 +1,233 @@
# Blender v2.75 (sub 0) OBJ File: ''
# www.blender.org
mtllib fireplace_empty.mtl
o Cube.009_Cube.010
v -1.875625 -0.331071 -0.956249
v -1.882333 -0.303344 0.871280
v -1.871355 -0.873750 -0.947999
v -1.878062 -0.846023 0.879529
v -1.970013 -0.331819 -0.956584
v -1.976720 -0.304092 0.870945
v -1.965742 -0.874498 -0.948335
v -1.972450 -0.846771 0.879194
vn 1.000000 0.007900 0.003500
vn 0.007900 -0.999900 0.015200
vn -1.000000 -0.007900 -0.003500
vn -0.007900 0.999900 -0.015200
vn 0.003700 -0.015200 -0.999900
vn -0.003700 0.015200 0.999900
usemtl None
s off
f 2//1 4//1 3//1 1//1
f 4//2 8//2 7//2 3//2
f 8//3 6//3 5//3 7//3
f 6//4 2//4 1//4 5//4
f 1//5 3//5 7//5 5//5
f 6//6 8//6 4//6 2//6
o Cube.008_Cube.009
v -1.914666 1.976250 0.049641
v -1.914666 2.249527 0.049641
v -1.914666 1.976250 -0.283576
v -1.914666 2.249527 -0.283576
v -0.054283 1.976250 0.049641
v -0.054283 2.249527 0.049641
v -0.054283 1.976250 -0.283576
v -0.054283 2.249527 -0.283576
vn -1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 0.000000
usemtl None
s off
f 10//7 12//7 11//7 9//7
f 12//8 16//8 15//8 11//8
f 16//9 14//9 13//9 15//9
f 14//10 10//10 9//10 13//10
f 9//11 11//11 15//11 13//11
f 14//12 16//12 12//12 10//12
o Cube.007_Cube.008
v -1.911818 1.599512 0.223404
v -1.911818 1.990067 0.223404
v -1.911818 1.599512 -0.401498
v -1.911818 1.990067 -0.401498
v -0.072114 1.599512 0.223404
v -0.072114 1.990067 0.223404
v -0.072114 1.599512 -0.401498
v -0.072114 1.990067 -0.401498
vn -1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 0.000000
usemtl None
s off
f 18//13 20//13 19//13 17//13
f 20//14 24//14 23//14 19//14
f 24//15 22//15 21//15 23//15
f 22//16 18//16 17//16 21//16
f 17//17 19//17 23//17 21//17
f 22//18 24//18 20//18 18//18
o Cube.006_Cube.007
v -1.919788 1.283157 0.334455
v -1.919788 1.673711 0.334455
v -1.919788 1.283157 -0.532109
v -1.919788 1.673711 -0.532109
v -0.007317 1.283157 0.334455
v -0.007317 1.673711 0.334455
v -0.007317 1.283157 -0.532109
v -0.007317 1.673711 -0.532109
vn -1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 0.000000
usemtl None
s off
f 26//19 28//19 27//19 25//19
f 28//20 32//20 31//20 27//20
f 32//21 30//21 29//21 31//21
f 30//22 26//22 25//22 29//22
f 25//23 27//23 31//23 29//23
f 30//24 32//24 28//24 26//24
o Cube.005_Cube.006
v -1.931623 1.001512 0.792719
v -1.931623 1.392066 0.792719
v -1.931623 1.001512 -0.918889
v -1.931623 1.392066 -0.918889
v 0.044714 1.001512 0.792719
v 0.044714 1.392066 0.792719
v 0.044714 1.001512 -0.918889
v 0.044714 1.392066 -0.918889
vn -1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 0.000000
usemtl None
s off
f 34//25 36//25 35//25 33//25
f 36//26 40//26 39//26 35//26
f 40//27 38//27 37//27 39//27
f 38//28 34//28 33//28 37//28
f 33//29 35//29 39//29 37//29
f 38//30 40//30 36//30 34//30
o Cube.004_Cube.005
v 0.056191 0.896049 -1.031979
v 0.056191 0.899351 0.941779
v -1.943517 0.930250 -1.032036
v -1.943517 0.933552 0.941721
v 0.057803 0.990334 -1.032137
v 0.057804 0.993636 0.941621
v -1.941904 1.024536 -1.032194
v -1.941904 1.027838 0.941564
vn -0.017100 -0.999900 0.001700
vn -0.999900 0.017100 -0.000000
vn 0.017100 0.999900 -0.001700
vn 0.999900 -0.017100 0.000000
vn -0.000000 -0.001700 -1.000000
vn 0.000000 0.001700 1.000000
usemtl None
s off
f 42//31 44//31 43//31 41//31
f 44//32 48//32 47//32 43//32
f 48//33 46//33 45//33 47//33
f 46//34 42//34 41//34 45//34
f 41//35 43//35 47//35 45//35
f 46//36 48//36 44//36 42//36
o Cube.003_Cube.004
v 0.016186 -0.966420 -0.971699
v 0.016186 -0.915652 0.951856
v -1.983521 -0.932231 -0.972601
v -1.983521 -0.881463 0.950953
v 0.017799 -0.872167 -0.974186
v 0.017799 -0.821400 0.949368
v -1.981909 -0.837978 -0.975089
v -1.981909 -0.787210 0.948466
vn -0.017100 -0.999500 0.026400
vn -0.999900 0.017100 -0.000500
vn 0.017100 0.999500 -0.026400
vn 0.999900 -0.017100 0.000500
vn 0.000000 -0.026400 -0.999700
vn -0.000000 0.026400 0.999700
usemtl None
s off
f 50//37 52//37 51//37 49//37
f 52//38 56//38 55//38 51//38
f 56//39 54//39 53//39 55//39
f 54//40 50//40 49//40 53//40
f 49//41 51//41 55//41 53//41
f 54//42 56//42 52//42 50//42
o Cube.002_Cube.003
v 0.016186 -0.997135 -0.902221
v 0.016186 1.002865 -0.902221
v -1.983521 -0.997135 -0.936423
v -1.983521 1.002865 -0.936423
v 0.017799 -0.997135 -0.996509
v 0.017799 1.002865 -0.996509
v -1.981909 -0.997135 -1.030711
v -1.981909 1.002865 -1.030711
vn -0.017100 0.000000 0.999900
vn -0.999900 0.000000 -0.017100
vn 0.017100 0.000000 -0.999900
vn 0.999900 0.000000 0.017100
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 0.000000
usemtl None
s off
f 58//43 60//43 59//43 57//43
f 60//44 64//44 63//44 59//44
f 64//45 62//45 61//45 63//45
f 62//46 58//46 57//46 61//46
f 57//47 59//47 63//47 61//47
f 62//48 64//48 60//48 58//48
o Cube.001_Cube.002
v 0.048057 -1.004804 0.990161
v 0.048057 0.995196 0.990161
v -1.951651 -1.004804 0.955960
v -1.951651 0.995196 0.955960
v 0.049669 -1.004804 0.895873
v 0.049669 0.995196 0.895873
v -1.950038 -1.004804 0.861672
v -1.950038 0.995196 0.861672
vn -0.017100 0.000000 0.999900
vn -0.999900 0.000000 -0.017100
vn 0.017100 0.000000 -0.999900
vn 0.999900 0.000000 0.017100
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 -0.000000
usemtl None
s off
f 66//49 68//49 67//49 65//49
f 68//50 72//50 71//50 67//50
f 72//51 70//51 69//51 71//51
f 70//52 66//52 65//52 69//52
f 65//53 67//53 71//53 69//53
f 70//54 72//54 68//54 66//54
o Cube_Cube.001
v -0.047151 -1.000000 1.000000
v -0.047151 1.000000 1.000000
v -0.047151 -1.000000 -1.000000
v -0.047151 1.000000 -1.000000
v 0.047151 -1.000000 1.000000
v 0.047151 1.000000 1.000000
v 0.047151 -1.000000 -1.000000
v 0.047151 1.000000 -1.000000
vn -1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 0.000000
usemtl None
s off
f 74//55 76//55 75//55 73//55
f 76//56 80//56 79//56 75//56
f 80//57 78//57 77//57 79//57
f 78//58 74//58 73//58 77//58
f 73//59 75//59 79//59 77//59
f 78//60 80//60 76//60 74//60

View file

@ -0,0 +1,201 @@
# Blender v2.75 (sub 4) OBJ File: 'fireplace_empty.blend'
# www.blender.org
o Fireplace_off_Plane
v 0.447003 -0.064595 -0.457685
v 0.447003 -0.364595 -0.457685
v -0.447003 -0.064595 -0.457685
v -0.447003 -0.364595 -0.457685
v -0.500000 -0.400000 -0.500000
v -0.500000 0.500000 -0.500000
v 0.500000 -0.400000 -0.500000
v 0.500000 0.500000 -0.500000
v -0.500000 -0.400000 0.500000
v -0.500000 0.500000 0.500000
v 0.500000 -0.400000 0.500000
v 0.500000 0.500000 0.500000
v -0.400000 0.500000 -0.500000
v 0.400000 0.500000 -0.500000
v 0.400000 -0.400000 -0.500000
v -0.400000 -0.400000 -0.500000
v 0.400000 0.500000 0.500000
v -0.400000 0.500000 0.500000
v -0.400000 -0.400000 0.500000
v 0.400000 -0.400000 0.500000
v -0.500000 -0.300000 -0.500000
v -0.500000 0.400000 -0.500000
v 0.500000 0.400000 -0.500000
v 0.500000 -0.300000 -0.500000
v 0.500000 0.400000 0.500000
v 0.500000 -0.300000 0.500000
v -0.500000 0.400000 0.500000
v -0.500000 -0.300000 0.500000
v 0.400000 0.400000 0.500000
v 0.400000 -0.300000 0.500000
v -0.400000 0.400000 0.500000
v -0.400000 -0.300000 0.500000
v -0.400000 0.400000 -0.500000
v -0.400000 -0.300000 -0.500000
v 0.400000 0.400000 -0.500000
v 0.400000 -0.300000 -0.500000
v -0.400000 0.400000 0.400000
v -0.400000 -0.300000 0.400000
v 0.400000 0.400000 0.400000
v 0.400000 -0.300000 0.400000
v -0.400000 -0.500000 -0.500000
v -0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
v 0.400000 -0.500000 0.500000
v -0.500000 -0.500000 0.500000
v 0.400000 -0.500000 -0.500000
v -0.400000 -0.500000 0.500000
v -0.400000 0.675000 -0.500000
v 0.400000 0.675000 -0.500000
v -0.400000 0.675000 0.500000
v 0.400000 0.675000 0.500000
v 0.400000 0.675000 0.500000
v -0.400000 0.675000 0.500000
v 0.400000 0.675000 -0.500000
v -0.400000 0.675000 -0.500000
v 0.240000 0.675000 0.500000
v -0.240000 0.675000 0.500000
v 0.240000 0.675000 -0.500000
v -0.240000 0.675000 -0.500000
v 0.240000 0.875000 0.500000
v -0.240000 0.875000 0.500000
v 0.240000 0.875000 -0.500000
v -0.240000 0.875000 -0.500000
v 0.120000 0.875000 0.500000
v -0.120000 0.875000 0.500000
v 0.120000 0.875000 -0.500000
v -0.120000 0.875000 -0.500000
v 0.120000 1.075000 0.500000
v -0.120000 1.075000 0.500000
v 0.120000 1.075000 -0.500000
v -0.120000 1.075000 -0.500000
vt 0.980066 -0.232831
vt 1.103207 -0.232831
vt 1.103207 -0.355973
vt 0.980066 -0.355973
vt -0.128207 -0.232831
vt -0.128207 -0.355973
vt -0.005066 -0.232831
vt -0.005066 -0.355973
vt -0.005066 -0.479114
vt -0.128207 -0.479114
vt 1.103207 0.629159
vt 1.103207 0.752301
vt -0.128207 0.752301
vt -0.128207 0.629159
vt 1.103207 -0.479114
vt 0.980066 -0.479114
vt -0.005066 0.752301
vt 0.980066 0.752301
vt 0.980066 0.629159
vt -0.005066 0.629159
vt -0.128207 0.967798
vt 1.103207 0.967798
vt 1.103207 1.214081
vt -0.128207 1.214081
vt 0.121793 -0.355973
vt 1.353207 -0.355973
vt 1.353207 -0.158946
vt 0.121793 -0.158946
vt 1.353207 -0.011176
vt 0.121793 -0.011176
vt 1.353207 0.629159
vt 0.121793 0.629159
vt 0.121793 0.432133
vt 1.353207 0.432133
vt 0.121793 0.284363
vt 1.353207 0.284363
vt 1.103207 1.460364
vt -0.128207 1.460364
vt 0.341929 1.457455
vt 0.633902 1.457455
vt 0.633902 1.214144
vt 0.341929 1.214144
vt 0.339730 1.214081
vt 0.635270 1.214081
vt 0.635270 1.460364
vt 0.339730 1.460364
vt 0.191961 1.214081
vt 0.783040 1.214081
vt 0.783040 0.967798
vt 0.191961 0.967798
vt 0.980066 0.967798
vt -0.005066 0.967798
vt -0.043259 1.000983
vt -0.043259 0.631558
vt 1.057632 0.631558
vt 1.057632 1.000983
vn 0.000000 0.000000 -1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.000000
vn -1.000000 0.000000 -0.000000
vn 0.000000 1.000000 0.000000
vn 0.000000 -1.000000 0.000000
g Fireplace_off_Plane_FirePlace
s off
f 36/1/1 24/2/1 7/3/1 15/4/1
f 24/5/2 26/2/2 11/3/2 7/6/2
f 32/7/3 28/5/3 9/6/3 19/8/3
f 28/2/4 21/5/4 5/6/4 9/3/4
f 5/6/1 16/8/1 41/9/1 42/10/1
f 17/11/5 12/12/5 8/13/5 14/14/5
f 10/15/5 18/3/5 13/6/5 6/10/5
f 15/4/1 7/3/1 44/15/1 47/16/1
f 16/6/6 15/14/6 20/11/6 19/3/6
f 26/2/3 30/1/3 20/4/3 11/3/3
f 30/1/3 32/7/3 19/8/3 20/4/3
f 21/5/1 34/7/1 16/8/1 5/6/1
f 34/7/1 36/1/1 15/4/1 16/8/1
f 13/17/1 14/18/1 35/19/1 33/20/1
f 36/14/5 34/6/5 38/4/5 40/19/5
f 6/13/1 13/17/1 33/20/1 22/14/1
f 22/14/1 33/20/1 34/7/1 21/5/1
f 17/18/3 18/17/3 31/20/3 29/19/3
f 29/19/3 31/20/3 32/7/3 30/1/3
f 12/12/3 17/18/3 29/19/3 25/11/3
f 25/11/3 29/19/3 30/1/3 26/2/3
f 10/12/4 6/13/4 22/14/4 27/11/4
f 27/11/4 22/14/4 21/5/4 28/2/4
f 18/17/3 10/13/3 27/14/3 31/20/3
f 31/20/3 27/14/3 28/5/3 32/7/3
f 8/13/2 12/12/2 25/11/2 23/14/2
f 23/14/2 25/11/2 26/2/2 24/5/2
f 14/18/1 8/12/1 23/11/1 35/19/1
f 35/19/1 23/11/1 24/2/1 36/1/1
f 37/20/1 39/19/1 40/1/1 38/7/1
f 35/14/4 36/5/4 40/1/4 39/19/4
f 34/5/2 33/14/2 37/19/2 38/1/2
f 33/6/6 35/14/6 39/19/6 37/4/6
f 47/14/6 44/13/6 43/12/6 45/11/6
f 42/10/6 41/6/6 48/3/6 46/15/6
f 20/3/4 15/6/4 47/10/4 45/15/4
f 7/6/2 11/3/2 43/15/2 44/10/2
f 16/6/2 19/3/2 48/15/2 41/10/2
f 9/3/4 5/6/4 42/10/4 46/15/4
f 11/3/3 20/4/3 45/16/3 43/15/3
f 19/8/3 9/6/3 46/10/3 48/9/3
f 60/21/4 58/22/4 62/23/4 64/24/4
f 17/12/2 14/13/2 50/21/2 52/22/2
f 13/13/4 18/12/4 51/22/4 49/21/4
f 56/25/5 54/26/5 58/27/5 60/28/5
f 49/6/3 51/3/3 54/3/3 56/6/3
f 64/28/5 62/27/5 66/29/5 68/30/5
f 57/22/2 59/21/2 63/24/2 61/23/2
f 53/31/5 55/32/5 59/33/5 57/34/5
f 52/11/3 50/14/3 55/14/3 53/11/3
f 61/34/5 63/33/5 67/35/5 65/36/5
f 68/24/4 66/23/4 70/37/4 72/38/4
f 65/23/2 67/24/2 71/38/2 69/37/2
f 71/35/5 72/30/5 70/29/5 69/36/5
f 72/39/1 71/40/1 67/41/1 68/42/1
f 66/43/3 65/44/3 69/45/3 70/46/3
f 64/47/1 68/43/1 67/44/1 63/48/1 59/49/1 60/50/1
f 58/50/3 57/49/3 61/48/3 65/44/3 66/43/3 62/47/3
f 18/17/3 17/18/3 52/51/3 54/52/3 58/50/3 57/49/3 53/51/3 51/52/3
f 13/17/1 49/52/1 55/51/1 59/49/1 60/50/1 56/52/1 50/51/1 14/18/1
g Fireplace_off_Plane_Grate
f 1/53/1 2/54/1 4/55/1 3/56/1

View file

@ -0,0 +1,271 @@
# Blender v2.75 (sub 4) OBJ File: 'fireplace_empty.blend'
# www.blender.org
o Fireplace_on_Plane.002
v -0.351930 -0.351930 0.025126
v -0.351930 0.351930 0.025126
v 0.351930 -0.351930 0.025126
v 0.351930 0.351930 0.025126
v 0.400000 0.041703 0.249151
v -0.400000 0.041703 0.249151
v 0.400000 -0.008757 0.370972
v -0.400000 -0.008757 0.370972
v 0.400000 -0.302859 0.249151
v -0.400000 -0.302859 0.249151
v 0.400000 -0.252399 0.127330
v -0.400000 -0.252399 0.127330
v 0.400000 -0.130578 0.076870
v -0.400000 -0.130578 0.076870
v 0.400000 -0.008757 0.127330
v -0.400000 -0.008757 0.127330
v 0.400000 -0.079822 -0.150849
v -0.400000 -0.079822 -0.150849
v 0.400000 -0.112470 -0.072030
v -0.400000 -0.112470 -0.072030
v 0.400000 -0.191289 -0.039382
v -0.400000 -0.191289 -0.039382
v 0.400000 -0.302756 -0.150849
v -0.400000 -0.302756 -0.150849
v 0.400000 -0.270108 -0.229668
v -0.400000 -0.270108 -0.229668
v 0.400000 -0.191289 -0.262316
v -0.400000 -0.191289 -0.262316
v 0.400000 -0.112470 -0.229668
v -0.400000 -0.112470 -0.229668
v 0.447003 -0.064595 -0.457685
v 0.447003 -0.364595 -0.457685
v -0.447003 -0.064595 -0.457685
v -0.447003 -0.364595 -0.457685
v -0.500000 -0.400000 -0.500000
v -0.500000 0.500000 -0.500000
v 0.500000 -0.400000 -0.500000
v 0.500000 0.500000 -0.500000
v -0.500000 -0.400000 0.500000
v -0.500000 0.500000 0.500000
v 0.500000 -0.400000 0.500000
v 0.500000 0.500000 0.500000
v -0.400000 0.500000 -0.500000
v 0.400000 0.500000 -0.500000
v 0.400000 -0.400000 -0.500000
v -0.400000 -0.400000 -0.500000
v 0.400000 0.500000 0.500000
v -0.400000 0.500000 0.500000
v -0.400000 -0.400000 0.500000
v 0.400000 -0.400000 0.500000
v -0.500000 -0.300000 -0.500000
v -0.500000 0.400000 -0.500000
v 0.500000 0.400000 -0.500000
v 0.500000 -0.300000 -0.500000
v 0.500000 0.400000 0.500000
v 0.500000 -0.300000 0.500000
v -0.500000 0.400000 0.500000
v -0.500000 -0.300000 0.500000
v 0.400000 0.400000 0.500000
v 0.400000 -0.300000 0.500000
v -0.400000 0.400000 0.500000
v -0.400000 -0.300000 0.500000
v -0.400000 0.400000 -0.500000
v -0.400000 -0.300000 -0.500000
v 0.400000 0.400000 -0.500000
v 0.400000 -0.300000 -0.500000
v -0.400000 0.400000 0.400000
v -0.400000 -0.300000 0.400000
v 0.400000 0.400000 0.400000
v 0.400000 -0.300000 0.400000
v -0.400000 -0.500000 -0.500000
v -0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
v 0.400000 -0.500000 0.500000
v -0.500000 -0.500000 0.500000
v 0.400000 -0.500000 -0.500000
v -0.400000 -0.500000 0.500000
v -0.400000 0.675000 -0.500000
v 0.400000 0.675000 -0.500000
v -0.400000 0.675000 0.500000
v 0.400000 0.675000 0.500000
v 0.400000 0.675000 0.500000
v -0.400000 0.675000 0.500000
v 0.400000 0.675000 -0.500000
v -0.400000 0.675000 -0.500000
v 0.240000 0.675000 0.500000
v -0.240000 0.675000 0.500000
v 0.240000 0.675000 -0.500000
v -0.240000 0.675000 -0.500000
v 0.240000 0.875000 0.500000
v -0.240000 0.875000 0.500000
v 0.240000 0.875000 -0.500000
v -0.240000 0.875000 -0.500000
v 0.120000 0.875000 0.500000
v -0.120000 0.875000 0.500000
v 0.120000 0.875000 -0.500000
v -0.120000 0.875000 -0.500000
v 0.120000 1.075000 0.500000
v -0.120000 1.075000 0.500000
v 0.120000 1.075000 -0.500000
v -0.120000 1.075000 -0.500000
vt 0.980066 -0.232831
vt 1.103207 -0.232831
vt 1.103207 -0.355973
vt 0.980066 -0.355973
vt -0.128207 -0.232831
vt -0.128207 -0.355973
vt -0.005066 -0.232831
vt -0.005066 -0.355973
vt -0.005066 -0.479114
vt -0.128207 -0.479114
vt 1.103207 0.629159
vt 1.103207 0.752301
vt -0.128207 0.752301
vt -0.128207 0.629159
vt 1.103207 -0.479114
vt 0.980066 -0.479114
vt -0.005066 0.752301
vt 0.980066 0.752301
vt 0.980066 0.629159
vt -0.005066 0.629159
vt -0.128207 0.967798
vt 1.103207 0.967798
vt 1.103207 1.214081
vt -0.128207 1.214081
vt 0.121793 -0.355973
vt 1.353207 -0.355973
vt 1.353207 -0.158946
vt 0.121793 -0.158946
vt 1.353207 -0.011176
vt 0.121793 -0.011176
vt 1.353207 0.629159
vt 0.121793 0.629159
vt 0.121793 0.432133
vt 1.353207 0.432133
vt 0.121793 0.284363
vt 1.353207 0.284363
vt 1.103207 1.460364
vt -0.128207 1.460364
vt 0.344398 1.457912
vt 0.635804 1.457912
vt 0.635804 1.215073
vt 0.344398 1.215073
vt 0.339730 1.214081
vt 0.635270 1.214081
vt 0.635270 1.460364
vt 0.339730 1.460364
vt 0.191961 1.214081
vt 0.783040 1.214081
vt 0.783040 0.967798
vt 0.191961 0.967798
vt 0.980066 0.967798
vt -0.005066 0.967798
vt -0.043259 1.000983
vt -0.043259 0.631558
vt 1.057632 0.631558
vt 1.057632 1.000983
vt 0.621575 0.000134
vt 0.621575 0.999866
vt 0.496809 0.999866
vt 0.496810 0.000134
vt 0.122515 0.000134
vt 0.122514 0.999866
vt -0.002251 0.999866
vt -0.002250 0.000134
vt 0.995869 0.000134
vt 0.995869 0.999866
vt 0.871105 0.999866
vt 0.871105 0.000134
vt 0.746340 0.000134
vt 0.746340 0.999866
vt 0.372044 0.999866
vt 0.372045 0.000134
vt 0.999900 0.000100
vt 0.999900 0.999900
vt 0.000100 0.999900
vt 0.000100 0.000100
vn 0.000000 0.000000 -1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.000000
vn -1.000000 0.000000 -0.000000
vn 0.000000 1.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 0.923900 0.382700
vn -0.000000 -0.923900 -0.382700
vn 0.000000 -0.382700 -0.923900
vn 0.000000 0.923900 -0.382700
vn 0.000000 0.382700 -0.923900
vn -0.000000 0.382700 0.923900
g Fireplace_on_Plane.002_FirePlace
s off
f 66/1/1 54/2/1 37/3/1 45/4/1
f 54/5/2 56/2/2 41/3/2 37/6/2
f 62/7/3 58/5/3 39/6/3 49/8/3
f 58/2/4 51/5/4 35/6/4 39/3/4
f 35/6/1 46/8/1 71/9/1 72/10/1
f 47/11/5 42/12/5 38/13/5 44/14/5
f 40/15/5 48/3/5 43/6/5 36/10/5
f 45/4/1 37/3/1 74/15/1 77/16/1
f 46/6/6 45/14/6 50/11/6 49/3/6
f 56/2/3 60/1/3 50/4/3 41/3/3
f 60/1/3 62/7/3 49/8/3 50/4/3
f 51/5/1 64/7/1 46/8/1 35/6/1
f 64/7/1 66/1/1 45/4/1 46/8/1
f 43/17/1 44/18/1 65/19/1 63/20/1
f 66/14/5 64/6/5 68/4/5 70/19/5
f 36/13/1 43/17/1 63/20/1 52/14/1
f 52/14/1 63/20/1 64/7/1 51/5/1
f 47/18/3 48/17/3 61/20/3 59/19/3
f 59/19/3 61/20/3 62/7/3 60/1/3
f 42/12/3 47/18/3 59/19/3 55/11/3
f 55/11/3 59/19/3 60/1/3 56/2/3
f 40/12/4 36/13/4 52/14/4 57/11/4
f 57/11/4 52/14/4 51/5/4 58/2/4
f 48/17/3 40/13/3 57/14/3 61/20/3
f 61/20/3 57/14/3 58/5/3 62/7/3
f 38/13/2 42/12/2 55/11/2 53/14/2
f 53/14/2 55/11/2 56/2/2 54/5/2
f 44/18/1 38/12/1 53/11/1 65/19/1
f 65/19/1 53/11/1 54/2/1 66/1/1
f 67/20/1 69/19/1 70/1/1 68/7/1
f 65/14/4 66/5/4 70/1/4 69/19/4
f 64/5/2 63/14/2 67/19/2 68/1/2
f 63/6/6 65/14/6 69/19/6 67/4/6
f 77/14/6 74/13/6 73/12/6 75/11/6
f 72/10/6 71/6/6 78/3/6 76/15/6
f 50/3/4 45/6/4 77/10/4 75/15/4
f 37/6/2 41/3/2 73/15/2 74/10/2
f 46/6/2 49/3/2 78/15/2 71/10/2
f 39/3/4 35/6/4 72/10/4 76/15/4
f 41/3/3 50/4/3 75/16/3 73/15/3
f 49/8/3 39/6/3 76/10/3 78/9/3
f 90/21/4 88/22/4 92/23/4 94/24/4
f 47/12/2 44/13/2 80/21/2 82/22/2
f 43/13/4 48/12/4 81/22/4 79/21/4
f 86/25/5 84/26/5 88/27/5 90/28/5
f 79/6/3 81/3/3 84/3/3 86/6/3
f 94/28/5 92/27/5 96/29/5 98/30/5
f 87/22/2 89/21/2 93/24/2 91/23/2
f 83/31/5 85/32/5 89/33/5 87/34/5
f 82/11/3 80/14/3 85/14/3 83/11/3
f 91/34/5 93/33/5 97/35/5 95/36/5
f 98/24/4 96/23/4 100/37/4 102/38/4
f 95/23/2 97/24/2 101/38/2 99/37/2
f 101/35/5 102/30/5 100/29/5 99/36/5
f 102/39/1 101/40/1 97/41/1 98/42/1
f 96/43/3 95/44/3 99/45/3 100/46/3
f 94/47/1 98/43/1 97/44/1 93/48/1 89/49/1 90/50/1
f 88/50/3 87/49/3 91/48/3 95/44/3 96/43/3 92/47/3
f 48/17/3 47/18/3 82/51/3 84/52/3 88/50/3 87/49/3 83/51/3 81/52/3
f 43/17/1 79/52/1 85/51/1 89/49/1 90/50/1 86/52/1 80/51/1 44/18/1
g Fireplace_on_Plane.002_Grate
f 31/53/1 32/54/1 34/55/1 33/56/1
g Fireplace_on_Plane.002_Wood
f 5/57/7 6/58/7 8/59/7 7/60/7
f 9/61/8 10/62/8 12/63/8 11/64/8
f 11/65/9 12/66/9 14/67/9 13/68/9
f 15/69/10 16/70/10 6/58/10 5/57/10
f 13/68/11 14/67/11 16/70/11 15/69/11
f 17/57/7 18/58/7 20/59/7 19/60/7
f 19/60/12 20/59/12 22/71/12 21/72/12
f 23/61/8 24/62/8 26/63/8 25/64/8
f 25/65/9 26/66/9 28/67/9 27/68/9
f 29/69/10 30/70/10 18/58/10 17/57/10
f 27/68/11 28/67/11 30/70/11 29/69/11
g Fireplace_on_Plane.002_Fire
f 1/73/1 2/74/1 4/75/1 3/76/1

View file

@ -0,0 +1,282 @@
# Blender v2.79 (sub 7) OBJ File: ''
# www.blender.org
o Cube.001
v 0.997299 -0.405856 0.054064
v 0.997299 0.792446 0.054064
v -0.988460 0.792446 0.054064
v -0.988460 -0.405856 0.054064
v -0.988460 0.792446 -0.048275
v -0.988460 -0.405856 -0.048275
v -0.926462 0.730449 -0.048275
v 0.935302 0.730449 -0.048275
v 0.935302 0.730449 -0.036038
v -0.926462 0.730449 -0.036038
v 0.997299 -0.405856 -0.048275
v 0.997299 0.792446 -0.048275
v 0.964361 -0.496219 -0.032477
v 0.939937 -0.405063 0.001871
v 0.891382 -0.418073 0.001871
v 0.915807 -0.509229 -0.032477
v 0.886933 -0.401467 -0.045364
v 0.911358 -0.492623 -0.079712
v 0.935487 -0.388457 -0.045364
v 0.959912 -0.479613 -0.079712
v 0.959912 -0.479613 0.084787
v 0.935487 -0.388456 0.050439
v 0.886932 -0.401467 0.050439
v 0.911358 -0.492623 0.084787
v 0.891383 -0.418073 0.003203
v 0.915807 -0.509229 0.037552
v 0.939937 -0.405064 0.003203
v 0.964361 -0.496219 0.037552
v -0.906280 -0.509229 -0.032477
v -0.881854 -0.418073 0.001871
v -0.930408 -0.405063 0.001871
v -0.954834 -0.496219 -0.032477
v -0.925959 -0.388457 -0.045364
v -0.950383 -0.479613 -0.079712
v -0.877405 -0.401467 -0.045364
v -0.901829 -0.492623 -0.079712
v -0.901830 -0.492623 0.084787
v -0.877405 -0.401466 0.050439
v -0.925959 -0.388456 0.050439
v -0.950383 -0.479613 0.084787
v -0.930408 -0.405064 0.003203
v -0.954834 -0.496219 0.037552
v -0.881854 -0.418073 0.003203
v -0.906279 -0.509229 0.037552
v 0.910700 -0.020382 0.099698
v 0.910700 0.769627 0.056819
v -0.901861 0.769627 0.056819
v -0.901861 -0.020382 0.099698
v -0.901861 0.764564 -0.036457
v -0.901861 -0.025445 0.006422
v 0.910700 0.764564 -0.036457
v 0.910700 -0.025445 0.006422
v -0.926462 -0.343858 -0.048275
v 0.935302 -0.343858 -0.048275
v -0.926462 -0.343858 -0.036038
v 0.935302 -0.343858 -0.036038
vt 1.000000 0.375000
vt 1.000000 1.000000
vt 0.500000 1.000000
vt 0.500000 0.375000
vt 1.000000 0.187500
vt 0.687500 0.187500
vt 0.687500 0.250000
vt 1.000000 0.250000
vt 0.500000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.968750
vt 0.500000 0.968750
vt 1.000000 0.281250
vt 0.687500 0.281250
vt 0.687500 0.343750
vt 1.000000 0.343750
vt 1.000000 0.125000
vt 1.000000 0.062500
vt 0.500000 0.062500
vt 0.500000 0.125000
vt 0.500000 -0.000000
vt 0.500000 0.062500
vt 1.000000 0.062500
vt 1.000000 0.000000
vt 0.593750 0.281250
vt 0.593750 0.343750
vt 0.609375 0.343750
vt 0.609375 0.281250
vt 0.625000 0.343750
vt 0.625000 0.281250
vt 0.593750 0.281250
vt 0.593750 0.343750
vt 0.609375 0.343750
vt 0.609375 0.281250
vt 0.625000 0.343750
vt 0.625000 0.281250
vt 0.625000 0.281250
vt 0.609375 0.281250
vt 0.609375 0.312500
vt 0.625000 0.312500
vt 0.625000 0.312500
vt 0.609375 0.312500
vt 0.609375 0.343750
vt 0.625000 0.343750
vt 0.593750 0.281250
vt 0.593750 0.343750
vt 0.609375 0.343750
vt 0.609375 0.281250
vt 0.625000 0.343750
vt 0.625000 0.281250
vt 0.593750 0.281250
vt 0.593750 0.343750
vt 0.609375 0.343750
vt 0.609375 0.281250
vt 0.625000 0.343750
vt 0.625000 0.281250
vt 0.625000 0.281250
vt 0.609375 0.281250
vt 0.609375 0.312500
vt 0.625000 0.312500
vt 0.625000 0.312500
vt 0.609375 0.312500
vt 0.609375 0.343750
vt 0.625000 0.343750
vt 0.640625 0.281250
vt 0.640625 0.343750
vt 0.656250 0.343750
vt 0.656250 0.281250
vt 0.671875 0.343750
vt 0.671875 0.281250
vt 0.640625 0.281250
vt 0.640625 0.343750
vt 0.656250 0.343750
vt 0.656250 0.281250
vt 0.671875 0.343750
vt 0.671875 0.281250
vt 0.671875 0.281250
vt 0.656250 0.281250
vt 0.656250 0.312500
vt 0.671875 0.312500
vt 0.671875 0.312500
vt 0.656250 0.312500
vt 0.656250 0.343750
vt 0.671875 0.343750
vt 0.640625 0.281250
vt 0.640625 0.343750
vt 0.656250 0.343750
vt 0.656250 0.281250
vt 0.671875 0.343750
vt 0.671875 0.281250
vt 0.640625 0.281250
vt 0.640625 0.343750
vt 0.656250 0.343750
vt 0.656250 0.281250
vt 0.671875 0.343750
vt 0.671875 0.281250
vt 0.671875 0.281250
vt 0.656250 0.281250
vt 0.656250 0.312500
vt 0.671875 0.312500
vt 0.671875 0.312500
vt 0.656250 0.312500
vt 0.656250 0.343750
vt 0.671875 0.343750
vt 0.421875 0.000000
vt 0.421875 0.343750
vt 0.015625 0.343750
vt 0.015625 0.000000
vt 0.000000 0.343750
vt 0.000000 0.000000
vt 0.500000 0.375000
vt 0.500000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.375000
vt 0.437500 0.000000
vt 0.437500 0.343750
vt 0.015625 0.375000
vt 0.015625 0.343750
vt 0.421875 0.343750
vt 0.421875 0.375000
vt 0.421875 0.343750
vt 0.015625 0.375000
vt 0.421875 0.375000
vt 0.484375 0.968750
vt 0.484375 0.406250
vt 0.500000 0.375000
vt 0.500000 1.000000
vt 0.015625 0.406250
vt 0.000000 0.375000
vt 0.015625 0.968750
vt 0.000000 1.000000
vt 0.484375 0.375000
vt 0.484375 1.000000
vt 0.500000 1.000000
vt 0.500000 0.375000
vt 0.000000 0.375000
vt 0.015625 0.375000
vt 0.015625 1.000000
vt 0.421875 0.375000
vt 0.421875 0.406250
vt 0.000000 0.406250
vt 0.968750 0.406250
vt 0.968750 0.968750
vt 0.031250 0.968750
vt 0.031250 0.406250
vn -0.0000 0.0000 1.0000
vn -1.0000 0.0000 -0.0000
vn 0.0000 -1.0000 0.0000
vn 1.0000 -0.0000 0.0000
vn 0.0000 1.0000 0.0000
vn 0.0885 -0.3304 0.9397
vn -0.9659 -0.2588 -0.0000
vn -0.0885 0.3304 -0.9397
vn 0.9659 0.2588 -0.0000
vn 0.2432 -0.9077 -0.3420
vn -0.2432 0.9077 0.3420
vn -0.0885 0.3304 0.9397
vn 0.0885 -0.3304 -0.9397
vn 0.2432 -0.9077 0.3420
vn -0.2432 0.9077 -0.3420
vn -0.0885 -0.3304 0.9397
vn -0.9659 0.2588 -0.0000
vn 0.0885 0.3304 -0.9397
vn 0.9659 -0.2588 0.0000
vn -0.2432 -0.9077 -0.3420
vn 0.2432 0.9077 0.3420
vn 0.0885 0.3304 0.9397
vn -0.0885 -0.3304 -0.9397
vn -0.2432 -0.9077 0.3420
vn 0.2432 0.9077 -0.3420
vn -0.0000 0.0542 0.9985
vn 0.0000 -0.0542 -0.9985
vn -0.0000 -0.9985 0.0542
vn 0.0000 0.9985 -0.0542
vn 0.0000 -0.0000 -1.0000
g Cube.001_Cube.001_None
s off
f 1/1/1 2/2/1 3/3/1 4/4/1
f 4/5/2 3/6/2 5/7/2 6/8/2
f 7/9/3 8/10/3 9/11/3 10/12/3
f 11/13/4 12/14/4 2/15/4 1/16/4
f 4/17/3 6/18/3 11/19/3 1/20/3
f 5/21/5 3/22/5 2/23/5 12/24/5
f 13/25/6 14/26/6 15/27/6 16/28/6
f 16/28/7 15/27/7 17/29/7 18/30/7
f 18/31/8 17/32/8 19/33/8 20/34/8
f 20/34/9 19/33/9 14/35/9 13/36/9
f 16/37/10 18/38/10 20/39/10 13/40/10
f 17/41/11 15/42/11 14/43/11 19/44/11
f 21/45/12 22/46/12 23/47/12 24/48/12
f 24/48/7 23/47/7 25/49/7 26/50/7
f 26/51/13 25/52/13 27/53/13 28/54/13
f 28/54/9 27/53/9 22/55/9 21/56/9
f 24/57/14 26/58/14 28/59/14 21/60/14
f 25/61/15 23/62/15 22/63/15 27/64/15
f 29/65/16 30/66/16 31/67/16 32/68/16
f 32/68/17 31/67/17 33/69/17 34/70/17
f 34/71/18 33/72/18 35/73/18 36/74/18
f 36/74/19 35/73/19 30/75/19 29/76/19
f 32/77/20 34/78/20 36/79/20 29/80/20
f 33/81/21 31/82/21 30/83/21 35/84/21
f 37/85/22 38/86/22 39/87/22 40/88/22
f 40/88/17 39/87/17 41/89/17 42/90/17
f 42/91/23 41/92/23 43/93/23 44/94/23
f 44/94/19 43/93/19 38/95/19 37/96/19
f 40/97/24 42/98/24 44/99/24 37/100/24
f 41/101/25 39/102/25 38/103/25 43/104/25
f 45/105/26 46/106/26 47/107/26 48/108/26
f 48/108/2 47/107/2 49/109/2 50/110/2
f 50/111/27 49/112/27 51/113/27 52/114/27
f 52/115/4 51/116/4 46/106/4 45/105/4
f 48/117/28 50/118/28 52/119/28 45/120/28
f 49/121/29 47/107/29 46/122/29 51/123/29
f 7/124/30 53/125/30 6/126/30 5/127/30
f 53/125/30 54/128/30 11/129/30 6/126/30
f 8/130/30 7/124/30 5/127/30 12/131/30
f 54/128/30 8/130/30 12/131/30 11/129/30
f 53/132/4 7/133/4 10/134/4 55/135/4
f 8/10/2 54/136/2 56/137/2 9/138/2
f 54/136/5 53/139/5 55/140/5 56/141/5
g Cube.001_Cube.001_None_screen.png
s 1
f 55/142/30 10/143/30 9/144/30 56/145/30

View file

@ -0,0 +1,119 @@
# Blender v2.75 (sub 4) OBJ File: 'sofa.blend'
# www.blender.org
o Sofa_Cube.001
v 0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
v -0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.500000
v 0.500000 0.500000 0.200000
v 0.500000 -0.500000 0.200000
v -0.500000 0.500000 0.200000
v -0.500000 -0.500000 0.200000
v 0.500000 0.000000 -0.500000
v 0.500000 0.000000 0.500000
v -0.500000 0.000000 0.500000
v -0.500000 0.000000 -0.500000
v -0.500000 0.000000 0.200000
v 0.500000 0.000000 0.200000
v -0.447309 -0.124050 -0.450000
v -0.447309 0.273622 -0.450000
v -0.447309 -0.124050 0.250000
v -0.447309 0.273622 0.250000
v -0.647309 -0.124050 -0.450000
v -0.647309 0.273622 -0.450000
v -0.647309 -0.124050 0.250000
v -0.647309 0.273622 0.250000
v 0.652691 -0.124050 -0.450000
v 0.652691 0.273622 -0.450000
v 0.652691 -0.124050 0.250000
v 0.652691 0.273622 0.250000
v 0.452691 -0.124050 -0.450000
v 0.452691 0.273622 -0.450000
v 0.452691 -0.124050 0.250000
v 0.452691 0.273622 0.250000
vt 0.700422 0.500000
vt 1.000000 0.500000
vt 1.000000 0.000000
vt 0.700422 0.000000
vt 0.001407 0.500000
vt 0.001407 0.000000
vt 0.992586 0.555593
vt 0.008821 0.555593
vt 0.008821 0.063711
vt 0.992586 0.063711
vt 0.001407 0.700000
vt 0.001407 1.000000
vt 1.000000 1.000000
vt 1.000000 0.700000
vt 0.996225 0.617831
vt 0.996225 0.915144
vt 0.005182 0.915144
vt 0.005182 0.617831
vt 1.000000 0.736766
vt 0.001407 0.736766
vt 0.001407 0.034817
vt 1.000000 0.034817
vt 0.700422 1.000000
vt 0.008891 0.936254
vt 0.008891 0.444442
vt 0.992516 0.444442
vt 0.992516 0.936254
vt 0.158077 0.708334
vt 0.691052 0.708334
vt 0.691052 0.405549
vt 0.158077 0.405549
vt 0.841281 0.708334
vt 0.993559 0.708334
vt 0.993559 0.405549
vt 0.841281 0.405549
vt 0.774934 0.755988
vt 0.074195 0.755988
vt 0.074195 0.357896
vt 0.774934 0.357896
vt 0.841281 0.157374
vt 0.841281 0.690348
vt 0.993559 0.690348
vt 0.993559 0.157374
vt 0.003749 0.708334
vt 0.156028 0.708334
vt 0.156028 0.405549
vt 0.003749 0.405549
vt 0.003749 0.157374
vt 0.003749 0.690348
vt 0.156028 0.690348
vt 0.156028 0.157374
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.000000
vn -1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 0.000000
s off
f 16/1/1 12/2/1 2/3/1 8/4/1
f 12/5/2 13/2/2 5/3/2 2/6/2
f 15/1/3 14/5/3 4/6/3 10/4/3
f 14/7/4 11/8/4 1/9/4 4/10/4
f 8/11/5 2/12/5 5/13/5 10/14/5
f 9/15/6 6/16/6 3/17/6 7/18/6
f 15/19/6 16/20/6 11/21/6 14/22/6
f 1/6/5 8/11/5 10/14/5 4/3/5
f 13/2/3 15/1/3 10/4/3 5/3/3
f 11/5/1 16/1/1 8/4/1 1/6/1
f 6/13/3 9/23/3 15/1/3 13/2/3
f 7/24/4 16/25/4 15/26/4 9/27/4
f 3/12/2 6/13/2 13/2/2 12/5/2
f 7/23/1 3/13/1 12/2/1 16/1/1
f 18/28/1 20/29/1 19/30/1 17/31/1
f 20/32/2 24/33/2 23/34/2 19/35/2
f 24/36/3 22/37/3 21/38/3 23/39/3
f 22/33/4 18/32/4 17/35/4 21/34/4
f 17/40/5 19/41/5 23/42/5 21/43/5
f 22/43/6 24/42/6 20/41/6 18/40/6
f 26/37/1 28/36/1 27/39/1 25/38/1
f 28/44/2 32/45/2 31/46/2 27/47/2
f 32/29/3 30/28/3 29/31/3 31/30/3
f 30/45/4 26/44/4 25/47/4 29/46/4
f 25/48/5 27/49/5 31/50/5 29/51/5
f 30/51/6 32/50/6 28/49/6 26/48/6

View file

@ -0,0 +1,96 @@
# Blender v2.75 (sub 4) OBJ File: 'sofa.blend'
# www.blender.org
o Sofa_C_Cube.006
v 0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
v -0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.500000
v 0.500000 0.500000 0.200000
v 0.500000 -0.500000 0.200000
v -0.500000 0.500000 0.200000
v -0.500000 -0.500000 0.200000
v 0.500000 0.000000 -0.500000
v 0.500000 0.000000 0.500000
v -0.500000 0.000000 0.500000
v -0.500000 0.000000 -0.500000
v -0.500000 0.000000 0.200000
v 0.500000 0.000000 0.200000
v -0.199400 0.500000 0.500000
v -0.199400 -0.500000 0.500000
v -0.199400 -0.500000 -0.500000
v -0.199400 0.500000 0.200000
v -0.199400 -0.500000 0.200000
v -0.199400 0.000000 0.200000
v -0.199400 0.000000 -0.500000
v -0.199400 0.000000 0.500000
v -0.199400 0.500000 -0.500000
v -0.500000 0.500000 -0.500000
vt 0.700000 0.500000
vt 1.000000 0.500000
vt 1.000000 -0.000000
vt 0.700000 -0.000000
vt 0.700574 0.496063
vt 1.000000 0.496063
vt 0.700574 0.000000
vt 0.000000 0.500000
vt 0.000000 0.000000
vt 0.696668 0.500000
vt 0.696668 -0.000000
vt 0.696625 0.688976
vt 0.696625 0.984251
vt 0.996032 0.984251
vt 0.996032 0.688976
vt 0.700593 0.694488
vt 0.700593 0.992126
vt 0.003968 0.992126
vt 0.003968 0.694488
vt 0.003968 0.000000
vt 0.696625 0.000000
vt 0.996032 0.000000
vt 1.000000 1.000000
vt 0.700000 1.000000
vt 1.000000 0.992126
vt 0.003906 0.992126
vt 0.003906 0.496063
vt -0.000000 1.000000
vt 0.696668 1.000000
vt 0.000000 0.688976
vt 1.000000 0.694488
vt 0.000000 0.984251
vt 0.996094 0.500000
vt 0.996094 -0.000000
vt 0.003906 0.000000
vt 0.996094 1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.000000
vn -1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 0.000000
s off
f 16/1/1 12/2/1 2/3/1 8/4/1
f 24/5/2 13/6/2 5/3/2 18/7/2
f 15/1/3 14/8/3 4/9/3 10/4/3
f 23/10/4 11/8/4 1/9/4 19/11/4
f 21/12/5 18/13/5 5/14/5 10/15/5
f 20/16/6 17/17/6 3/18/6 7/19/6
f 22/16/6 16/19/6 11/20/6 23/7/6
f 19/21/5 21/12/5 10/15/5 4/22/5
f 13/2/3 15/1/3 10/4/3 5/3/3
f 11/8/1 16/1/1 8/4/1 1/9/1
f 6/23/3 9/24/3 15/1/3 13/2/3
f 17/17/2 6/25/2 13/6/2 24/5/2
f 7/24/1 3/23/1 12/2/1 16/1/1
f 3/26/2 17/17/2 24/5/2 12/27/2
f 7/28/4 16/8/4 22/10/4 20/29/4
f 1/9/5 8/30/5 21/12/5 19/21/5
f 9/31/6 6/25/6 17/17/6 20/16/6
f 8/30/5 2/32/5 18/13/5 21/12/5
f 14/33/4 23/10/4 19/11/4 4/34/4
f 12/27/2 24/5/2 18/7/2 2/35/2
f 23/10/4 14/33/4 26/36/4 25/29/4
f 9/31/6 20/16/6 25/7/6 26/3/6
f 22/1/1 23/8/1 25/28/1 20/24/1
f 14/8/3 15/1/3 9/24/3 26/28/3

View file

@ -0,0 +1,97 @@
# Blender v2.75 (sub 4) OBJ File: 'sofa.blend'
# www.blender.org
o Sofa_L_Cube.004
v 0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
v -0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.500000
v 0.500000 0.500000 0.200000
v 0.500000 -0.500000 0.200000
v -0.500000 0.500000 0.200000
v -0.500000 -0.500000 0.200000
v 0.500000 0.000000 -0.500000
v 0.500000 0.000000 0.500000
v -0.500000 0.000000 0.500000
v -0.500000 0.000000 -0.500000
v -0.500000 0.000000 0.200000
v 0.500000 0.000000 0.200000
v -0.447309 -0.124050 -0.450000
v -0.447309 0.273622 -0.450000
v -0.447309 -0.124050 0.250000
v -0.447309 0.273622 0.250000
v -0.647309 -0.124050 -0.450000
v -0.647309 0.273622 -0.450000
v -0.647309 -0.124050 0.250000
v -0.647309 0.273622 0.250000
vt 0.700422 0.500000
vt 1.000000 0.500000
vt 1.000000 0.000000
vt 0.700422 0.000000
vt 0.001407 0.500000
vt 0.001407 0.000000
vt 0.992586 0.555593
vt 0.008821 0.555593
vt 0.008821 0.063711
vt 0.992586 0.063711
vt 0.001407 0.700000
vt 0.001407 1.000000
vt 1.000000 1.000000
vt 1.000000 0.700000
vt 0.996225 0.617831
vt 0.996225 0.915144
vt 0.005182 0.915144
vt 0.005182 0.617831
vt 1.000000 0.736766
vt 0.001407 0.736766
vt 0.001407 0.034817
vt 1.000000 0.034817
vt 0.700422 1.000000
vt 0.008891 0.936254
vt 0.008891 0.444442
vt 0.992516 0.444442
vt 0.992516 0.936254
vt 0.158077 0.708334
vt 0.691052 0.708334
vt 0.691052 0.405549
vt 0.158077 0.405549
vt 0.841281 0.708334
vt 0.993559 0.708334
vt 0.993559 0.405549
vt 0.841281 0.405549
vt 0.774934 0.755988
vt 0.074195 0.755988
vt 0.074195 0.357896
vt 0.774934 0.357896
vt 0.841281 0.157374
vt 0.841281 0.690348
vt 0.993559 0.690348
vt 0.993559 0.157374
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.000000
vn -1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 0.000000
s off
f 16/1/1 12/2/1 2/3/1 8/4/1
f 12/5/2 13/2/2 5/3/2 2/6/2
f 15/1/3 14/5/3 4/6/3 10/4/3
f 14/7/4 11/8/4 1/9/4 4/10/4
f 8/11/5 2/12/5 5/13/5 10/14/5
f 9/15/6 6/16/6 3/17/6 7/18/6
f 15/19/6 16/20/6 11/21/6 14/22/6
f 1/6/5 8/11/5 10/14/5 4/3/5
f 13/2/3 15/1/3 10/4/3 5/3/3
f 11/5/1 16/1/1 8/4/1 1/6/1
f 6/13/3 9/23/3 15/1/3 13/2/3
f 7/24/4 16/25/4 15/26/4 9/27/4
f 3/12/2 6/13/2 13/2/2 12/5/2
f 7/23/1 3/13/1 12/2/1 16/1/1
f 18/28/1 20/29/1 19/30/1 17/31/1
f 20/32/2 24/33/2 23/34/2 19/35/2
f 24/36/3 22/37/3 21/38/3 23/39/3
f 22/33/4 18/32/4 17/35/4 21/34/4
f 17/40/5 19/41/5 23/42/5 21/43/5
f 22/43/6 24/42/6 20/41/6 18/40/6

View file

@ -0,0 +1,67 @@
# Blender v2.75 (sub 4) OBJ File: 'sofa.blend'
# www.blender.org
o Sofa_M_Cube.002
v 0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
v -0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.500000
v 0.500000 0.500000 0.200000
v 0.500000 -0.500000 0.200000
v -0.500000 0.500000 0.200000
v -0.500000 -0.500000 0.200000
v 0.500000 0.000000 -0.500000
v 0.500000 0.000000 0.500000
v -0.500000 0.000000 0.500000
v -0.500000 0.000000 -0.500000
v -0.500000 0.000000 0.200000
v 0.500000 0.000000 0.200000
vt 0.700422 0.500000
vt 1.000000 0.500000
vt 1.000000 0.000000
vt 0.700422 0.000000
vt 0.001407 0.500000
vt 0.001407 0.000000
vt 0.992586 0.555593
vt 0.008821 0.555593
vt 0.008821 0.063711
vt 0.992586 0.063711
vt 0.001407 0.700000
vt 0.001407 1.000000
vt 1.000000 1.000000
vt 1.000000 0.700000
vt 0.996225 0.617831
vt 0.996225 0.915144
vt 0.005182 0.915144
vt 0.005182 0.617831
vt 1.000000 0.736766
vt 0.001407 0.736766
vt 0.001407 0.034817
vt 1.000000 0.034817
vt 0.700422 1.000000
vt 0.008891 0.936254
vt 0.008891 0.444442
vt 0.992516 0.444442
vt 0.992516 0.936254
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.000000
vn -1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 0.000000
s off
f 16/1/1 12/2/1 2/3/1 8/4/1
f 12/5/2 13/2/2 5/3/2 2/6/2
f 15/1/3 14/5/3 4/6/3 10/4/3
f 14/7/4 11/8/4 1/9/4 4/10/4
f 8/11/5 2/12/5 5/13/5 10/14/5
f 9/15/6 6/16/6 3/17/6 7/18/6
f 15/19/6 16/20/6 11/21/6 14/22/6
f 1/6/5 8/11/5 10/14/5 4/3/5
f 13/2/3 15/1/3 10/4/3 5/3/3
f 11/5/1 16/1/1 8/4/1 1/6/1
f 6/13/3 9/23/3 15/1/3 13/2/3
f 7/24/4 16/25/4 15/26/4 9/27/4
f 3/12/2 6/13/2 13/2/2 12/5/2
f 7/23/1 3/13/1 12/2/1 16/1/1

View file

@ -0,0 +1,97 @@
# Blender v2.75 (sub 4) OBJ File: 'sofa.blend'
# www.blender.org
o Sofa_R_Cube.005
v 0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
v -0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.500000
v 0.500000 0.500000 0.200000
v 0.500000 -0.500000 0.200000
v -0.500000 0.500000 0.200000
v -0.500000 -0.500000 0.200000
v 0.500000 0.000000 -0.500000
v 0.500000 0.000000 0.500000
v -0.500000 0.000000 0.500000
v -0.500000 0.000000 -0.500000
v -0.500000 0.000000 0.200000
v 0.500000 0.000000 0.200000
v 0.652691 -0.124050 -0.450000
v 0.652691 0.273622 -0.450000
v 0.652691 -0.124050 0.250000
v 0.652691 0.273622 0.250000
v 0.452691 -0.124050 -0.450000
v 0.452691 0.273622 -0.450000
v 0.452691 -0.124050 0.250000
v 0.452691 0.273622 0.250000
vt 0.700422 0.500000
vt 1.000000 0.500000
vt 1.000000 0.000000
vt 0.700422 0.000000
vt 0.001407 0.500000
vt 0.001407 0.000000
vt 0.992586 0.555593
vt 0.008821 0.555593
vt 0.008821 0.063711
vt 0.992586 0.063711
vt 0.001407 0.700000
vt 0.001407 1.000000
vt 1.000000 1.000000
vt 1.000000 0.700000
vt 0.996225 0.617831
vt 0.996225 0.915144
vt 0.005182 0.915144
vt 0.005182 0.617831
vt 1.000000 0.736766
vt 0.001407 0.736766
vt 0.001407 0.034817
vt 1.000000 0.034817
vt 0.700422 1.000000
vt 0.008891 0.936254
vt 0.008891 0.444442
vt 0.992516 0.444442
vt 0.992516 0.936254
vt 0.074195 0.755988
vt 0.774934 0.755988
vt 0.774934 0.357896
vt 0.074195 0.357896
vt 0.003749 0.708334
vt 0.156028 0.708334
vt 0.156028 0.405549
vt 0.003749 0.405549
vt 0.691052 0.708334
vt 0.158077 0.708334
vt 0.158077 0.405549
vt 0.691052 0.405549
vt 0.003749 0.157374
vt 0.003749 0.690348
vt 0.156028 0.690348
vt 0.156028 0.157374
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.000000
vn -1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 0.000000
s off
f 16/1/1 12/2/1 2/3/1 8/4/1
f 12/5/2 13/2/2 5/3/2 2/6/2
f 15/1/3 14/5/3 4/6/3 10/4/3
f 14/7/4 11/8/4 1/9/4 4/10/4
f 8/11/5 2/12/5 5/13/5 10/14/5
f 9/15/6 6/16/6 3/17/6 7/18/6
f 15/19/6 16/20/6 11/21/6 14/22/6
f 1/6/5 8/11/5 10/14/5 4/3/5
f 13/2/3 15/1/3 10/4/3 5/3/3
f 11/5/1 16/1/1 8/4/1 1/6/1
f 6/13/3 9/23/3 15/1/3 13/2/3
f 7/24/4 16/25/4 15/26/4 9/27/4
f 3/12/2 6/13/2 13/2/2 12/5/2
f 7/23/1 3/13/1 12/2/1 16/1/1
f 18/28/1 20/29/1 19/30/1 17/31/1
f 20/32/2 24/33/2 23/34/2 19/35/2
f 24/36/3 22/37/3 21/38/3 23/39/3
f 22/33/4 18/32/4 17/35/4 21/34/4
f 17/40/5 19/41/5 23/42/5 21/43/5
f 22/43/6 24/42/6 20/41/6 18/40/6

View file

@ -0,0 +1,77 @@
# Blender v2.75 (sub 4) OBJ File: 'stone_path.blend'
# www.blender.org
o Path_1_Plane.007
v -0.400000 -0.500000 -0.100000
v 0.100000 -0.500000 -0.100000
v -0.400000 -0.500000 -0.400000
v 0.100000 -0.500000 -0.400000
v 0.400000 -0.500000 0.100000
v -0.100000 -0.500000 0.100000
v 0.400000 -0.500000 0.400000
v -0.100000 -0.500000 0.400000
v -0.200000 -0.400000 0.000000
v -0.400000 -0.400000 0.000000
v -0.400000 -0.500000 0.000000
v -0.400000 -0.500000 0.400000
v 0.200000 -0.400000 -0.000000
v 0.400000 -0.400000 -0.000000
v 0.200000 -0.400000 -0.400000
v 0.400000 -0.400000 -0.400000
v 0.400000 -0.500000 -0.400000
v 0.200000 -0.500000 -0.400000
v 0.400000 -0.500000 -0.000000
v 0.200000 -0.500000 -0.000000
v -0.200000 -0.500000 0.400000
v -0.200000 -0.500000 0.000000
v -0.200000 -0.400000 0.400000
v -0.400000 -0.400000 0.400000
v -0.100000 -0.400000 0.400000
v 0.400000 -0.400000 0.400000
v -0.100000 -0.400000 0.100000
v 0.400000 -0.400000 0.100000
v 0.100000 -0.400000 -0.400000
v -0.400000 -0.400000 -0.400000
v 0.100000 -0.400000 -0.100000
v -0.400000 -0.400000 -0.100000
vt 0.000000 0.500000
vt 0.000000 0.000000
vt 0.375000 0.000000
vt 1.000000 0.000000
vt 0.625000 1.000000
vt 0.000000 1.000000
vt 1.000000 1.000000
vt 0.750000 1.000000
vt 0.000000 0.625000
vt 0.750000 0.500000
vt 1.000000 0.500000
vt 0.250000 0.000000
vt 0.250000 0.500000
vt 1.000000 0.375000
vt 0.625000 0.625000
vt 0.375000 0.375000
vn -1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 1.000000 0.000000
vn 1.000000 0.000000 0.000000
s off
f 10/1/1 11/1/1 12/2/1 24/2/1
f 25/3/2 8/3/2 7/4/2 26/4/2
f 29/5/3 4/5/3 3/6/3 30/6/3
f 16/7/3 17/7/3 18/8/3 15/8/3
f 30/6/1 3/6/1 1/9/1 32/9/1
f 13/10/2 20/10/2 19/11/2 14/11/2
f 24/2/4 23/12/4 9/13/4 10/1/4
f 24/2/2 12/2/2 21/12/2 23/12/2
f 15/8/1 18/8/1 20/10/1 13/10/1
f 26/4/5 7/4/5 5/14/5 28/14/5
f 31/15/5 2/15/5 4/5/5 29/5/5
f 23/12/5 21/12/5 22/13/5 9/13/5
f 14/11/5 19/11/5 17/7/5 16/7/5
f 28/14/3 5/14/3 6/16/3 27/16/3
f 32/9/2 1/9/2 2/15/2 31/15/2
f 13/10/4 14/11/4 16/7/4 15/8/4
f 32/9/4 31/15/4 29/5/4 30/6/4
f 9/13/3 22/13/3 11/1/3 10/1/3
f 27/16/1 6/16/1 8/3/1 25/3/1
f 25/3/4 26/4/4 28/14/4 27/16/4

View file

@ -0,0 +1,77 @@
# Blender v2.75 (sub 4) OBJ File: 'stone_path.blend'
# www.blender.org
o Path_2_Plane.005
v -0.401461 -0.400000 -0.098539
v 0.001461 -0.400000 -0.098539
v -0.401461 -0.400000 -0.401461
v 0.001461 -0.400000 -0.401461
v -0.401461 -0.400000 0.401461
v -0.098539 -0.400000 0.401461
v -0.401461 -0.400000 -0.001461
v -0.098539 -0.400000 -0.001461
v -0.401461 -0.500000 0.401461
v -0.098539 -0.500000 0.401461
v -0.401461 -0.500000 -0.001461
v -0.098539 -0.500000 -0.001461
v 0.098539 -0.400000 -0.198539
v 0.501461 -0.400000 -0.198539
v 0.098539 -0.400000 -0.501461
v 0.501461 -0.400000 -0.501461
v -0.401461 -0.500000 -0.098539
v 0.001461 -0.500000 -0.098539
v -0.401461 -0.500000 -0.401461
v 0.001461 -0.500000 -0.401461
v 0.098539 -0.500000 -0.198539
v 0.501461 -0.500000 -0.198539
v 0.098539 -0.500000 -0.501461
v 0.501461 -0.500000 -0.501461
v 0.401461 -0.500000 -0.001461
v -0.001461 -0.500000 -0.001461
v 0.401461 -0.500000 0.301461
v -0.001461 -0.500000 0.301461
v 0.401461 -0.400000 -0.001461
v -0.001461 -0.400000 -0.001461
v 0.401461 -0.400000 0.301461
v -0.001461 -0.400000 0.301461
vt 0.000000 0.553758
vt 0.446242 0.553758
vt 0.446242 0.889249
vt 0.000000 0.889249
vt 0.000000 0.446242
vt 0.000000 0.000000
vt 0.553757 0.664509
vt 1.000000 0.664509
vt 1.000000 1.000000
vt 0.553757 1.000000
vt 0.889248 0.110752
vt 0.889248 0.446242
vt 0.335491 0.000000
vt 0.335491 0.446242
vt 0.443006 0.446242
vt 0.443006 0.110752
vn 0.000000 1.000000 0.000000
vn -1.000000 0.000000 0.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 0.000000 1.000000
s off
f 1/1/1 2/2/1 4/3/1 3/4/1
f 7/5/2 11/5/2 9/6/2 5/6/2
f 13/7/1 14/8/1 16/9/1 15/10/1
f 31/11/3 27/11/3 25/12/3 29/12/3
f 16/9/4 24/9/4 23/10/4 15/10/4
f 5/6/1 6/13/1 8/14/1 7/5/1
f 29/12/4 25/12/4 26/15/4 30/15/4
f 5/6/5 9/6/5 10/13/5 6/13/5
f 32/16/5 28/16/5 27/11/5 31/11/5
f 8/14/4 12/14/4 11/5/4 7/5/4
f 30/15/2 26/15/2 28/16/2 32/16/2
f 6/13/3 10/13/3 12/14/3 8/14/3
f 3/4/2 19/4/2 17/1/2 1/1/2
f 32/16/1 31/11/1 29/12/1 30/15/1
f 13/7/5 21/7/5 22/8/5 14/8/5
f 1/1/5 17/1/5 18/2/5 2/2/5
f 15/10/2 23/10/2 21/7/2 13/7/2
f 2/2/3 18/2/3 20/3/3 4/3/3
f 14/8/3 22/8/3 24/9/3 16/9/3
f 4/3/4 20/3/4 19/4/4 3/4/4

View file

@ -0,0 +1,94 @@
# Blender v2.75 (sub 4) OBJ File: 'stone_path.blend'
# www.blender.org
o Path_3_Plane.006
v -0.398223 -0.400000 -0.098539
v 0.004699 -0.400000 -0.098539
v -0.398223 -0.400000 -0.401461
v 0.004699 -0.400000 -0.401461
v -0.198223 -0.400000 0.501461
v 0.104699 -0.400000 0.501461
v -0.198223 -0.400000 0.098539
v 0.104699 -0.400000 0.098539
v 0.101777 -0.400000 -0.098539
v 0.504699 -0.400000 -0.098539
v 0.101777 -0.400000 -0.401461
v 0.504699 -0.400000 -0.401461
v 0.206537 -0.400000 0.396701
v 0.499939 -0.400000 0.396701
v 0.206537 -0.400000 0.003299
v 0.499939 -0.400000 0.003299
v -0.500061 -0.400000 0.396701
v -0.500061 -0.400000 0.003299
v -0.300061 -0.400000 0.396701
v -0.300061 -0.400000 0.003299
v -0.398223 -0.500000 -0.098539
v 0.004699 -0.500000 -0.098539
v -0.398223 -0.500000 -0.401461
v 0.004699 -0.500000 -0.401461
v -0.198223 -0.500000 0.501461
v 0.104699 -0.500000 0.501461
v -0.198223 -0.500000 0.098539
v 0.104699 -0.500000 0.098539
v 0.101777 -0.500000 -0.098539
v 0.504699 -0.500000 -0.098539
v 0.101777 -0.500000 -0.401461
v 0.504699 -0.500000 -0.401461
v 0.206537 -0.500000 0.396701
v 0.499939 -0.500000 0.396701
v 0.206537 -0.500000 0.003299
v 0.499939 -0.500000 0.003299
v -0.500061 -0.500000 0.396701
v -0.500061 -0.500000 0.003299
v -0.300061 -0.500000 0.396701
v -0.300061 -0.500000 0.003299
vt 0.101355 0.664509
vt 0.502369 0.664509
vt 0.502369 1.000000
vt 0.101355 1.000000
vt 0.300408 0.000000
vt 0.601895 0.000000
vt 0.601895 0.446242
vt 0.300408 0.446242
vt 0.598987 0.664509
vt 1.000000 0.664509
vt 1.000000 1.000000
vt 0.598987 1.000000
vt 0.703250 0.116023
vt 0.995263 0.116023
vt 0.995263 0.551722
vt 0.703250 0.551722
vt 0.000000 0.116023
vt 0.199053 0.116023
vt 0.199053 0.551722
vt 0.000000 0.551722
vn 0.000000 1.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn -1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.000000
vn 1.000000 0.000000 0.000000
s off
f 1/1/1 2/2/1 4/3/1 3/4/1
f 5/5/1 6/6/1 8/7/1 7/8/1
f 9/9/1 10/10/1 12/11/1 11/12/1
f 13/13/1 14/14/1 16/15/1 15/16/1
f 17/17/1 19/18/1 20/19/1 18/20/1
f 12/11/2 32/11/2 31/12/2 11/12/2
f 7/8/3 27/8/3 25/5/3 5/5/3
f 17/17/4 37/17/4 39/18/4 19/18/4
f 15/16/3 35/16/3 33/13/3 13/13/3
f 5/5/4 25/5/4 26/6/4 6/6/4
f 13/13/4 33/13/4 34/14/4 14/14/4
f 6/6/5 26/6/5 28/7/5 8/7/5
f 14/14/5 34/14/5 36/15/5 16/15/5
f 8/7/2 28/7/2 27/8/2 7/8/2
f 3/4/3 23/4/3 21/1/3 1/1/3
f 16/15/2 36/15/2 35/16/2 15/16/2
f 11/12/3 31/12/3 29/9/3 9/9/3
f 1/1/4 21/1/4 22/2/4 2/2/4
f 18/20/3 38/20/3 37/17/3 17/17/3
f 9/9/4 29/9/4 30/10/4 10/10/4
f 2/2/5 22/2/5 24/3/5 4/3/5
f 19/18/5 39/18/5 40/19/5 20/19/5
f 10/10/5 30/10/5 32/11/5 12/11/5
f 4/3/2 24/3/2 23/4/2 3/4/2
f 20/19/2 40/19/2 38/20/2 18/20/2

View file

@ -0,0 +1,76 @@
# Blender v2.75 (sub 4) OBJ File: 'stone_path.blend'
# www.blender.org
o Path_4_Plane.004
v -0.400000 -0.500000 -0.000000
v -0.000000 -0.500000 -0.000000
v -0.400000 -0.500000 -0.400000
v -0.000000 -0.500000 -0.400000
v 0.400000 -0.500000 0.000000
v 0.000000 -0.500000 0.000000
v 0.400000 -0.500000 0.400000
v 0.000000 -0.500000 0.400000
v 0.180000 -0.500000 -0.180000
v 0.420000 -0.500000 -0.180000
v 0.180000 -0.500000 -0.420000
v 0.420000 -0.500000 -0.420000
v -0.180000 -0.500000 0.180000
v -0.420000 -0.500000 0.180000
v -0.180000 -0.500000 0.420000
v -0.420000 -0.500000 0.420000
v -0.420000 -0.400000 0.420000
v -0.180000 -0.400000 0.420000
v -0.420000 -0.400000 0.180000
v -0.180000 -0.400000 0.180000
v 0.420000 -0.400000 -0.420000
v 0.180000 -0.400000 -0.420000
v 0.420000 -0.400000 -0.180000
v 0.180000 -0.400000 -0.180000
v 0.000000 -0.400000 0.400000
v 0.400000 -0.400000 0.400000
v 0.000000 -0.400000 0.000000
v 0.400000 -0.400000 0.000000
v -0.000000 -0.400000 -0.400000
v -0.400000 -0.400000 -0.400000
v -0.000000 -0.400000 -0.000000
v -0.400000 -0.400000 -0.000000
vt 1.000000 1.000000
vt 0.714286 1.000000
vt 0.500000 0.023810
vt 0.976191 0.023810
vt 1.000000 0.714286
vt 0.500000 0.976191
vt 0.023810 0.976191
vt 0.000000 0.000000
vt 0.285714 0.000000
vt 0.285714 0.285714
vt 0.000000 0.285714
vt 0.023810 0.500000
vt 0.714286 0.714286
vt 0.976191 0.500000
vt 0.500000 0.500000
vn 0.000000 0.000000 -1.000000
vn 0.000000 0.000000 1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 1.000000 0.000000
vn -1.000000 0.000000 0.000000
s off
f 21/1/1 12/1/1 11/2/1 22/2/1
f 25/3/2 8/3/2 7/4/2 26/4/2
f 23/5/3 10/5/3 12/1/3 21/1/3
f 29/6/1 4/6/1 3/7/1 30/7/1
f 17/8/4 18/9/4 20/10/4 19/11/4
f 30/7/5 3/7/5 1/12/5 32/12/5
f 19/11/5 14/11/5 16/8/5 17/8/5
f 24/13/4 23/5/4 21/1/4 22/2/4
f 22/2/5 11/2/5 9/13/5 24/13/5
f 17/8/2 16/8/2 15/9/2 18/9/2
f 26/4/3 7/4/3 5/14/3 28/14/3
f 31/15/3 2/15/3 4/6/3 29/6/3
f 18/9/3 15/9/3 13/10/3 20/10/3
f 28/14/1 5/14/1 6/15/1 27/15/1
f 32/12/2 1/12/2 2/15/2 31/15/2
f 20/10/1 13/10/1 14/11/1 19/11/1
f 32/12/4 31/15/4 29/6/4 30/7/4
f 24/13/2 9/13/2 10/5/2 23/5/2
f 27/15/5 6/15/5 8/3/5 25/3/5
f 25/3/4 26/4/4 28/14/4 27/15/4

View file

@ -0,0 +1,231 @@
# Blender v2.75 (sub 0) OBJ File: 'toilet.blend'
# www.blender.org
o Toilet_close_Cube.001
v -0.216380 -0.364267 -0.195066
v 0.230162 -0.364267 -0.195066
v 0.230162 -0.364267 0.375364
v -0.216380 -0.364267 0.375364
v -0.216380 -0.503120 -0.195066
v -0.216380 -0.503120 0.375364
v 0.230162 -0.503120 0.375364
v 0.230162 -0.503120 -0.195065
v -0.026301 0.497050 0.418905
v -0.099953 0.497050 0.418905
v -0.099953 0.495923 0.354172
v -0.026301 0.495923 0.354172
v -0.099953 0.541235 0.418294
v -0.099953 0.540108 0.353560
v -0.026301 0.541235 0.418294
v -0.026301 0.540108 0.353560
v 0.332628 0.485120 0.489409
v -0.318846 0.485120 0.489409
v 0.332628 0.485120 0.286360
v -0.318846 0.485120 0.286360
v -0.318846 -0.032421 0.286360
v 0.332628 -0.032421 0.286360
v 0.332628 -0.367155 0.286360
v -0.318846 -0.367155 0.286360
v 0.332628 -0.032421 0.489409
v -0.318846 -0.032421 0.489409
v -0.318846 -0.367155 0.489409
v 0.332628 -0.367155 0.489409
v -0.318846 -0.032421 -0.334670
v -0.318846 -0.367155 -0.334670
v 0.332628 -0.032421 -0.334670
v 0.332628 -0.367155 -0.334670
v 0.074405 0.497050 0.418905
v 0.000753 0.497050 0.418905
v 0.000753 0.495923 0.354172
v 0.074405 0.495923 0.354172
v 0.000753 0.541235 0.418294
v 0.000753 0.540108 0.353560
v 0.074405 0.541235 0.418294
v 0.074405 0.540108 0.353560
v 0.298674 0.038404 0.235087
v -0.290831 0.038404 0.235087
v -0.290831 -0.026774 0.235208
v 0.298674 -0.026774 0.235208
v -0.290831 0.038576 -0.305720
v -0.290831 -0.026603 -0.305600
v 0.298674 0.038575 -0.305720
v 0.298674 -0.026603 -0.305601
v -0.230085 -0.040764 0.201747
v 0.243868 -0.040764 0.201747
v 0.243868 -0.040764 -0.250057
v -0.230085 -0.040764 -0.250057
v -0.230085 -0.318566 0.201747
v 0.243867 -0.318566 0.201747
v 0.163555 -0.203467 -0.206424
v -0.149773 -0.203467 -0.206424
vt 0.839078 0.324803
vt -0.012876 0.324803
vt -0.012876 0.991727
vt 0.839077 0.991727
vt -0.096533 0.324803
vt -0.303914 0.324803
vt -0.303914 0.991727
vt -0.096533 0.991727
vt 0.839078 -0.096533
vt 0.839077 -0.303914
vt -0.012876 -0.303914
vt -0.012876 -0.096533
vt -0.077905 0.608692
vt -0.077905 0.498690
vt 0.018775 0.498690
vt 0.018775 0.608692
vt -0.077905 1.189870
vt -0.076993 1.255861
vt 0.019689 1.254178
vt 0.018775 1.188187
vt -0.076993 0.498690
vt -0.076993 0.608692
vt 0.019689 0.608692
vt 0.019689 0.498690
vt 1.188187 0.608692
vt 1.188187 0.498690
vt 1.254178 0.498690
vt 1.254178 0.608692
vt 1.255861 0.608692
vt 1.255861 0.498690
vt 1.189870 0.498690
vt 1.189870 0.608692
vt 0.120055 1.144763
vt 0.120055 0.171767
vt -0.183205 0.171767
vt -0.183205 1.144763
vt -0.183205 0.399088
vt 0.120055 0.399088
vt 0.120055 -0.100846
vt -0.183205 -0.100846
vt 1.047581 0.399088
vt 1.047581 -0.100846
vt 0.246427 1.012196
vt 0.246427 0.304334
vt 0.399088 1.144763
vt 0.399088 0.171767
vt -0.100846 0.171767
vt -0.100846 1.144763
vt 1.047581 0.171767
vt 1.047581 1.144763
vt 0.120055 1.172052
vt -0.183205 1.172052
vt -0.077905 0.759099
vt -0.077905 0.649098
vt 0.018775 0.649098
vt 0.018775 0.759099
vt -0.076993 0.649098
vt -0.076993 0.759099
vt 0.019689 0.759099
vt 0.019689 0.649098
vt 1.188187 0.759099
vt 1.188187 0.649098
vt 1.254178 0.649098
vt 1.254178 0.759099
vt 1.255861 0.759099
vt 1.255861 0.649098
vt 1.189870 0.649098
vt 1.189870 0.759099
vt 1.172052 0.171767
vt 1.172052 1.144763
vt 0.921209 0.386628
vt 0.246427 0.386628
vt 0.246427 -0.028277
vt 0.856042 0.143627
vt 0.921209 0.304334
vt 0.921209 1.012196
vt 0.856042 0.892247
vt 0.856042 0.424283
vt 0.386628 1.012196
vt 0.386628 0.304334
vt 0.143627 0.424283
vt 0.143627 0.892247
vt -0.028277 1.012196
vt -0.028277 0.304334
vt 0.085590 0.552995
vt 0.926569 0.552921
vt 0.926318 0.442387
vt 0.085337 0.442464
vt 0.469592 0.001391
vt 0.469592 1.001104
vt 0.580109 1.001104
vt 0.580109 0.001391
vt 0.926615 0.799443
vt 0.085637 0.800223
vt 0.085291 0.689692
vt 0.926271 0.688910
vt 0.092622 1.001102
vt 0.092622 0.001391
vt 0.933506 0.001391
vt 0.933506 1.001104
vt 0.935429 1.001104
vt 0.935429 0.001391
vt 0.094547 0.001391
vt 0.094547 1.001102
vn 0.000000 1.000000 0.000000
vn -0.000000 0.000000 1.000000
vn -1.000000 0.000000 -0.000000
vn 0.000000 -0.000000 -1.000000
vn 1.000000 -0.000000 0.000000
vn 0.000000 -0.999800 0.017400
vn 0.000000 0.999800 -0.017400
vn 0.000000 -0.013800 -0.999900
vn 0.000000 0.013800 0.999900
vn 0.000000 -1.000000 0.000000
vn 0.000000 0.995200 -0.098100
vn 0.975000 0.189300 0.116400
vn 0.093600 0.995600 0.000000
vn 0.000000 0.995200 0.098100
vn -0.093600 0.995600 -0.000000
vn -0.000000 0.962500 0.271400
vn -0.975000 0.189300 0.116400
vn -0.000000 0.259000 0.965900
vn -0.000000 -0.001800 -1.000000
vn -0.000000 -1.000000 -0.000300
vn 0.000000 1.000000 0.000300
g Toilet_close_Cube.001_White
s off
f 5/1/1 6/2/1 7/3/1 8/4/1
f 1/5/2 5/6/2 8/7/2 2/8/2
f 2/9/3 8/10/3 7/11/3 3/12/3
f 3/8/4 7/7/4 6/6/4 4/5/4
f 5/10/5 1/9/5 4/12/5 6/11/5
f 9/13/6 10/14/6 11/15/6 12/16/6
f 10/17/3 13/18/3 14/19/3 11/20/3
f 13/21/7 15/22/7 16/23/7 14/24/7
f 15/18/5 9/17/5 12/20/5 16/19/5
f 12/25/8 11/26/8 14/27/8 16/28/8
f 15/29/9 13/30/9 10/31/9 9/32/9
f 19/33/1 20/34/1 18/35/1 17/36/1
f 26/37/3 21/38/3 24/39/3 27/40/3
f 31/41/5 22/38/5 23/39/5 32/42/5
f 28/36/10 27/35/10 24/34/10 23/33/10
f 21/34/11 22/33/11 50/43/11 49/44/11
f 25/45/2 26/46/2 27/47/2 28/48/2
f 21/38/3 29/41/3 30/42/3 24/39/3
f 29/46/4 31/45/4 32/48/4 30/47/4
f 22/38/5 25/37/5 28/40/5 23/39/5
f 23/33/10 24/34/10 30/49/10 32/50/10
f 25/37/5 22/38/5 19/51/5 17/52/5
f 33/53/6 34/54/6 35/55/6 36/56/6
f 34/17/3 37/18/3 38/19/3 35/20/3
f 37/57/7 39/58/7 40/59/7 38/60/7
f 39/18/5 33/17/5 36/20/5 40/19/5
f 36/61/8 35/62/8 38/63/8 40/64/8
f 39/65/9 37/66/9 34/67/9 33/68/9
f 22/45/4 21/46/4 20/69/4 19/70/4
f 21/38/3 26/37/3 18/52/3 20/51/3
f 26/46/2 25/45/2 17/70/2 18/69/2
f 52/71/12 49/72/12 53/73/12 56/74/12
f 29/49/13 21/34/13 49/44/13 52/75/13
f 31/50/14 29/49/14 52/75/14 51/76/14
f 22/33/15 31/50/15 51/76/15 50/43/15
f 55/77/16 56/78/16 53/44/16 54/43/16
f 50/72/17 51/71/17 55/74/17 54/73/17
f 51/79/18 52/80/18 56/81/18 55/82/18
f 49/80/4 50/79/4 54/83/4 53/84/4
g Toilet_close_Cube.001_Brown
f 42/85/3 45/86/3 46/87/3 43/88/3
f 45/89/19 47/90/19 48/91/19 46/92/19
f 47/93/5 41/94/5 44/95/5 48/96/5
f 44/97/20 43/98/20 46/99/20 48/100/20
f 47/101/21 45/102/21 42/103/21 41/104/21

View file

@ -0,0 +1,230 @@
# Blender v2.75 (sub 0) OBJ File: 'toilet.blend'
# www.blender.org
o Toilet_open_Cube.002
v -0.216380 -0.364267 -0.195066
v 0.230162 -0.364267 -0.195066
v 0.230162 -0.364267 0.375364
v -0.216380 -0.364267 0.375364
v -0.216380 -0.503120 -0.195066
v -0.216380 -0.503120 0.375364
v 0.230162 -0.503120 0.375364
v 0.230162 -0.503120 -0.195065
v -0.026301 0.497050 0.418905
v -0.099953 0.497050 0.418905
v -0.099953 0.495923 0.354172
v -0.026301 0.495923 0.354172
v -0.099953 0.541235 0.418294
v -0.099953 0.540108 0.353560
v -0.026301 0.541235 0.418294
v -0.026301 0.540108 0.353560
v 0.332628 0.485120 0.489409
v -0.318846 0.485120 0.489409
v 0.332628 0.485120 0.286360
v -0.318846 0.485120 0.286360
v -0.318846 -0.032421 0.286360
v 0.332628 -0.032421 0.286360
v 0.332628 -0.367155 0.286360
v -0.318846 -0.367155 0.286360
v 0.332628 -0.032421 0.489409
v -0.318846 -0.032421 0.489409
v -0.318846 -0.367155 0.489409
v 0.332628 -0.367155 0.489409
v -0.318846 -0.032421 -0.334670
v -0.318846 -0.367155 -0.334670
v 0.332628 -0.032421 -0.334670
v 0.332628 -0.367155 -0.334670
v 0.074405 0.497050 0.418905
v 0.000753 0.497050 0.418905
v 0.000753 0.495923 0.354172
v 0.074405 0.495923 0.354172
v 0.000753 0.541235 0.418294
v 0.000753 0.540108 0.353560
v 0.074405 0.541235 0.418294
v 0.074405 0.540108 0.353560
v 0.298674 -0.026545 0.261491
v -0.290831 -0.026545 0.261491
v -0.290831 -0.027680 0.196323
v 0.298674 -0.027680 0.196323
v -0.290831 0.469302 0.253946
v -0.290831 0.468168 0.188777
v 0.298674 0.469302 0.253946
v 0.298675 0.468168 0.188777
v -0.230085 -0.040764 0.201747
v 0.243868 -0.040764 0.201747
v 0.243868 -0.040764 -0.250057
v -0.230085 -0.040764 -0.250057
v -0.230085 -0.318566 0.201747
v 0.243867 -0.318566 0.201747
v 0.163555 -0.203467 -0.206424
v -0.149773 -0.203467 -0.206424
vt 0.839078 0.324803
vt -0.012876 0.324803
vt -0.012876 0.991727
vt 0.839077 0.991727
vt -0.096533 0.324803
vt -0.303914 0.324803
vt -0.303914 0.991727
vt -0.096533 0.991727
vt 0.839078 -0.096533
vt 0.839077 -0.303914
vt -0.012876 -0.303914
vt -0.012876 -0.096533
vt -0.077905 0.608692
vt -0.077905 0.498690
vt 0.018775 0.498690
vt 0.018775 0.608692
vt -0.077905 1.189870
vt -0.076993 1.255861
vt 0.019689 1.254178
vt 0.018775 1.188187
vt -0.076993 0.498690
vt -0.076993 0.608692
vt 0.019689 0.608692
vt 0.019689 0.498690
vt 1.188187 0.608692
vt 1.188187 0.498690
vt 1.254178 0.498690
vt 1.254178 0.608692
vt 1.255861 0.608692
vt 1.255861 0.498690
vt 1.189870 0.498690
vt 1.189870 0.608692
vt 0.120055 1.144763
vt 0.120055 0.171767
vt -0.183205 0.171767
vt -0.183205 1.144763
vt -0.183205 0.399088
vt 0.120055 0.399088
vt 0.120055 -0.100846
vt -0.183205 -0.100846
vt 1.047581 0.399088
vt 1.047581 -0.100846
vt 0.246427 1.012196
vt 0.246427 0.304334
vt 0.399088 1.144763
vt 0.399088 0.171767
vt -0.100846 0.171767
vt -0.100846 1.144763
vt 1.047581 0.171767
vt 1.047581 1.144763
vt 0.120055 1.172052
vt -0.183205 1.172052
vt -0.077905 0.759099
vt -0.077905 0.649098
vt 0.018775 0.649098
vt 0.018775 0.759099
vt -0.076993 0.649098
vt -0.076993 0.759099
vt 0.019689 0.759099
vt 0.019689 0.649098
vt 1.188187 0.759099
vt 1.188187 0.649098
vt 1.254178 0.649098
vt 1.254178 0.759099
vt 1.255861 0.759099
vt 1.255861 0.649098
vt 1.189870 0.649098
vt 1.189870 0.759099
vt 1.172052 0.171767
vt 1.172052 1.144763
vt 0.921209 0.386628
vt 0.246427 0.386628
vt 0.246427 -0.028277
vt 0.856042 0.143627
vt 0.921209 0.304334
vt 0.921209 1.012196
vt 0.856042 0.892247
vt 0.856042 0.424283
vt 0.386628 1.012196
vt 0.386628 0.304334
vt 0.143627 0.424283
vt 0.143627 0.892247
vt -0.028277 1.012196
vt -0.028277 0.304334
vt 0.085590 0.552995
vt 0.926569 0.552921
vt 0.926318 0.442387
vt 0.085337 0.442464
vt 0.469592 0.001391
vt 0.469592 1.001104
vt 0.580109 1.001104
vt 0.580109 0.001391
vt 0.926615 0.799443
vt 0.085637 0.800223
vt 0.085291 0.689692
vt 0.926271 0.688910
vt 0.092622 1.001102
vt 0.092622 0.001391
vt 0.933506 0.001391
vt 0.933506 1.001104
vt 0.935429 1.001104
vt 0.935429 0.001391
vt 0.094547 0.001391
vt 0.094547 1.001102
vn 0.000000 1.000000 0.000000
vn -0.000000 0.000000 1.000000
vn -1.000000 0.000000 -0.000000
vn 0.000000 -0.000000 -1.000000
vn 1.000000 -0.000000 0.000000
vn 0.000000 -0.999800 0.017400
vn 0.000000 0.999800 -0.017400
vn 0.000000 -0.013800 -0.999900
vn 0.000000 0.013800 0.999900
vn 0.000000 -1.000000 0.000000
vn 0.000000 0.995200 -0.098100
vn 0.975000 0.189300 0.116400
vn 0.093600 0.995600 0.000000
vn 0.000000 0.995200 0.098100
vn -0.093600 0.995600 -0.000000
vn -0.000000 0.962500 0.271400
vn -0.975000 0.189300 0.116400
vn -0.000000 0.259000 0.965900
vn 0.000000 -0.015200 -0.999900
vn -0.000000 0.015200 0.999900
g Toilet_open_Cube.002_White
s off
f 5/1/1 6/2/1 7/3/1 8/4/1
f 1/5/2 5/6/2 8/7/2 2/8/2
f 2/9/3 8/10/3 7/11/3 3/12/3
f 3/8/4 7/7/4 6/6/4 4/5/4
f 5/10/5 1/9/5 4/12/5 6/11/5
f 9/13/6 10/14/6 11/15/6 12/16/6
f 10/17/3 13/18/3 14/19/3 11/20/3
f 13/21/7 15/22/7 16/23/7 14/24/7
f 15/18/5 9/17/5 12/20/5 16/19/5
f 12/25/8 11/26/8 14/27/8 16/28/8
f 15/29/9 13/30/9 10/31/9 9/32/9
f 19/33/1 20/34/1 18/35/1 17/36/1
f 26/37/3 21/38/3 24/39/3 27/40/3
f 31/41/5 22/38/5 23/39/5 32/42/5
f 28/36/10 27/35/10 24/34/10 23/33/10
f 21/34/11 22/33/11 50/43/11 49/44/11
f 25/45/2 26/46/2 27/47/2 28/48/2
f 21/38/3 29/41/3 30/42/3 24/39/3
f 29/46/4 31/45/4 32/48/4 30/47/4
f 22/38/5 25/37/5 28/40/5 23/39/5
f 23/33/10 24/34/10 30/49/10 32/50/10
f 25/37/5 22/38/5 19/51/5 17/52/5
f 33/53/6 34/54/6 35/55/6 36/56/6
f 34/17/3 37/18/3 38/19/3 35/20/3
f 37/57/7 39/58/7 40/59/7 38/60/7
f 39/18/5 33/17/5 36/20/5 40/19/5
f 36/61/8 35/62/8 38/63/8 40/64/8
f 39/65/9 37/66/9 34/67/9 33/68/9
f 22/45/4 21/46/4 20/69/4 19/70/4
f 21/38/3 26/37/3 18/52/3 20/51/3
f 26/46/2 25/45/2 17/70/2 18/69/2
f 52/71/12 49/72/12 53/73/12 56/74/12
f 29/49/13 21/34/13 49/44/13 52/75/13
f 31/50/14 29/49/14 52/75/14 51/76/14
f 22/33/15 31/50/15 51/76/15 50/43/15
f 55/77/16 56/78/16 53/44/16 54/43/16
f 50/72/17 51/71/17 55/74/17 54/73/17
f 51/79/18 52/80/18 56/81/18 55/82/18
f 49/80/4 50/79/4 54/83/4 53/84/4
g Toilet_open_Cube.002_Brown
f 42/85/3 45/86/3 46/87/3 43/88/3
f 45/89/7 47/90/7 48/91/7 46/92/7
f 47/93/5 41/94/5 44/95/5 48/96/5
f 44/97/19 43/98/19 46/99/19 48/100/19
f 47/101/20 45/102/20 42/103/20 41/104/20

View file

@ -0,0 +1,137 @@
# Blender v2.78 (sub 0) OBJ File: ''
# www.blender.org
mtllib FM_tv.mtl
o Cube_Cube.001_Body_Cube_Cube.001_Body_body
v -0.450000 0.400000 0.200000
v -0.450000 0.400000 -0.500000
v -0.450000 -0.500000 -0.500000
v -0.450000 -0.500000 0.200000
v 0.450000 0.400000 -0.500000
v 0.450000 -0.500000 -0.500000
v 0.360000 -0.410000 -0.500000
v 0.360000 0.310000 -0.500000
v 0.450000 0.400000 0.200000
v 0.450000 -0.500000 0.200000
v -0.300000 0.220000 0.200000
v 0.300000 0.220000 0.200000
v -0.300000 0.220000 0.458106
v 0.300000 0.220000 0.458106
v 0.300000 -0.320000 0.200000
v -0.300000 -0.320000 0.200000
v -0.300000 -0.320000 0.458106
v 0.300000 -0.320000 0.458106
v -0.360000 -0.410000 -0.500000
v -0.360000 0.310000 -0.500000
v -0.360000 0.310000 -0.457433
v -0.360000 -0.410000 -0.457433
v 0.360000 -0.410000 -0.457433
v 0.360000 0.310000 -0.457433
vt 0.9999 0.0001
vt 0.9999 0.7777
vt 0.0001 0.7777
vt 0.0001 0.0001
vt 0.9999 0.0001
vt 0.9999 0.9999
vt 0.8999 0.8999
vt 0.8999 0.1001
vt 0.9999 0.7777
vt 0.0001 0.7777
vt 0.0001 0.0001
vt 0.9999 0.9999
vt 0.0001 0.9999
vt 0.1667 0.7999
vt 0.8333 0.7999
vt 0.0001 0.7777
vt 0.0001 0.0001
vt 0.9999 0.0001
vt 0.9999 0.7777
vt 0.9999 0.0001
vt 0.9999 0.7777
vt 0.0001 0.7777
vt 0.0001 0.0001
vt 0.9999 0.4302
vt 0.0001 0.4302
vt 0.0001 0.0001
vt 0.9999 0.0001
vt 0.9999 0.0001
vt 0.8333 0.2001
vt 0.1667 0.2001
vt 0.9999 0.8999
vt 0.0001 0.8999
vt 0.0001 0.0001
vt 0.9999 0.0001
vt 0.9999 0.4780
vt 0.0001 0.4780
vt 0.9999 0.0001
vt 0.0001 0.0001
vt 0.9999 0.0001
vt 0.9999 0.4302
vt 0.0001 0.4302
vt 0.0001 0.0001
vt 0.9999 0.0001
vt 0.9999 0.4780
vt 0.0001 0.4780
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 0.0591
vt 0.0000 0.0591
vt 0.0001 0.9999
vt 0.1001 0.8999
vt 0.0001 0.0001
vt 0.1001 0.1001
vt 1.0000 0.0591
vt 0.0000 0.0591
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 0.0000 0.0000
vt 1.0000 0.0000
vt 1.0000 0.0591
vt 0.0000 0.0591
vt 1.0000 0.0591
vt 0.0000 0.0591
vt 0.0000 0.0000
vt 1.0000 0.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 -0.0000 1.0000
vn 0.0000 -1.0000 -0.0000
vn 0.0000 1.0000 0.0000
g Cube_Cube.001_Body_Cube_Cube.001_Body_body_Cube_Cube.001_Body_Cube_Cube.001_Body_body_body
usemtl body
s 1
f 1/1/1 2/2/1 3/3/1 4/4/1
f 5/5/2 6/6/2 7/7/2 8/8/2
f 5/5/3 9/9/3 10/10/3 6/11/3
f 9/12/4 1/13/4 11/14/4 12/15/4
f 4/16/5 3/17/5 6/18/5 10/19/5
f 9/20/6 5/21/6 2/22/6 1/23/6
f 12/24/6 11/25/6 13/26/6 14/27/6
f 10/28/4 9/12/4 12/15/4 15/29/4
f 1/13/4 4/4/4 16/30/4 11/14/4
f 4/4/4 10/28/4 15/29/4 16/30/4
f 14/31/4 13/32/4 17/33/4 18/34/4
f 11/35/1 16/36/1 17/33/1 13/37/1
f 16/38/5 15/39/5 18/40/5 17/41/5
f 15/42/3 12/43/3 14/44/3 18/45/3
f 19/46/3 20/47/3 21/48/3 22/49/3
f 6/6/2 3/50/2 19/51/2 7/7/2
f 2/52/2 5/5/2 8/8/2 20/53/2
f 3/50/2 2/52/2 20/53/2 19/51/2
f 7/54/6 19/55/6 22/56/6 23/57/6
f 20/58/5 8/59/5 24/60/5 21/61/5
f 8/62/1 7/63/1 23/64/1 24/65/1
o Cube_Cube.001_Screen_Cube_Cube.001_Screen_screen.001
v -0.360000 0.310000 -0.457433
v 0.360000 0.310000 -0.457433
v 0.360000 -0.410000 -0.457433
v -0.360000 -0.410000 -0.457433
vt 1.0000 1.0000
vt 0.0000 1.0000
vt -0.0000 0.0000
vt 1.0000 -0.0000
vn 0.0000 0.0000 -1.0000
g Cube_Cube.001_Screen_Cube_Cube.001_Screen_screen.001_Cube_Cube.001_Screen_Cube_Cube.001_Screen_screen.001_screen.001
usemtl screen.001
s 1
f 25/66/7 26/67/7 27/68/7 28/69/7

View file

@ -0,0 +1,89 @@
# Blender v2.79 (sub 0) OBJ File: ''
# www.blender.org
mtllib lever1.mtl
o Cube
v -0.171906 -0.523666 0.171906
v -0.171906 -0.523666 -0.171906
v 0.171906 -0.523666 -0.171906
v 0.171906 -0.523666 0.171906
v -0.171906 -0.386141 0.171906
v -0.171906 -0.386141 -0.171906
v 0.171906 -0.386141 -0.171906
v 0.171906 -0.386141 0.171906
v -0.068762 -0.400288 0.079551
v -0.068762 -0.461698 -0.043501
v 0.068762 -0.461698 -0.043501
v 0.068762 -0.400288 0.079551
v -0.068762 0.030396 -0.135383
v -0.068762 -0.031014 -0.258436
v 0.068762 -0.031014 -0.258436
v 0.068762 0.030396 -0.135383
vt 0.999929 0.500000
vt 0.000071 0.500000
vt 0.000071 0.000071
vt 0.999929 0.000071
vt 0.999929 0.500000
vt 0.000071 0.500000
vt 0.000071 0.000071
vt 0.999929 0.000071
vt 0.999929 0.000071
vt 1.000000 0.187500
vt 0.000000 0.187500
vt 0.000071 0.000071
vt 0.999929 0.000071
vt 1.000000 0.187500
vt 0.000000 0.187500
vt 0.000000 0.187500
vt 0.999929 0.000071
vt 1.000000 0.187500
vt 0.999929 0.000071
vt 1.000000 0.187500
vt 0.000000 0.187500
vt 0.000071 0.000071
vt 1.000000 1.000000
vt -0.000000 1.000000
vt 0.000000 0.500000
vt 1.000000 0.500000
vt 1.000000 0.500000
vt 0.000000 1.000000
vt -0.000000 0.500000
vt 1.000000 0.500000
vt 1.000000 1.000000
vt 0.000035 0.999965
vt -0.000000 0.500000
vt 1.000000 0.500000
vt 1.000000 1.000000
vt -0.000000 0.500000
vt 0.000000 1.000000
vt 0.000000 0.500000
vt 1.000000 0.500000
vt 1.000000 1.000000
vt 0.000000 0.000000
vt 0.000000 0.000000
vt 0.000000 0.000000
vt 0.000000 0.000000
vn 0.0000 -1.0000 -0.0000
vn 0.0000 1.0000 -0.0000
vn -1.0000 0.0000 -0.0000
vn 0.0000 -0.0000 -1.0000
vn 1.0000 -0.0000 0.0000
vn -0.0000 0.0000 1.0000
vn 0.0000 0.8948 -0.4465
vn 0.0000 -0.4465 -0.8948
vn -0.0000 0.4465 0.8948
vn 0.0000 -0.8948 0.4465
usemtl Material
s off
f 1/1/1 2/2/1 3/3/1 4/4/1
f 5/5/2 8/6/2 7/7/2 6/8/2
f 1/9/3 5/10/3 6/11/3 2/12/3
f 2/13/4 6/14/4 7/15/4 3/3/4
f 3/16/5 7/7/5 8/17/5 4/18/5
f 5/19/6 1/20/6 4/21/6 8/22/6
f 13/23/7 16/24/7 15/25/7 14/26/7
f 9/27/3 13/23/3 14/28/3 10/29/3
f 10/30/8 14/31/8 15/32/8 11/33/8
f 11/34/5 15/35/5 16/24/5 12/36/5
f 13/37/9 9/38/9 12/39/9 16/40/9
usemtl Material_NONE
f 9/41/10 10/42/10 11/43/10 12/44/10

View file

@ -0,0 +1,89 @@
# Blender v2.79 (sub 0) OBJ File: ''
# www.blender.org
mtllib lever2.mtl
o Cube
v 0.171906 -0.523666 -0.171906
v 0.171906 -0.523666 0.171906
v -0.171906 -0.523666 0.171906
v -0.171906 -0.523666 -0.171906
v 0.171906 -0.386141 -0.171906
v 0.171906 -0.386141 0.171906
v -0.171906 -0.386141 0.171906
v -0.171906 -0.386141 -0.171906
v 0.068762 -0.400288 -0.079551
v 0.068762 -0.461698 0.043501
v -0.068762 -0.461698 0.043501
v -0.068762 -0.400288 -0.079551
v 0.068762 0.030396 0.135383
v 0.068762 -0.031014 0.258436
v -0.068762 -0.031014 0.258436
v -0.068762 0.030396 0.135383
vt 0.999929 0.500000
vt 0.000071 0.500000
vt 0.000071 0.000071
vt 0.999929 0.000071
vt 0.999929 0.500000
vt 0.000071 0.500000
vt 0.000071 0.000071
vt 0.999929 0.000071
vt 0.999929 0.000071
vt 1.000000 0.187500
vt 0.000000 0.187500
vt 0.000071 0.000071
vt 0.999929 0.000071
vt 1.000000 0.187500
vt 0.000000 0.187500
vt 0.000000 0.187500
vt 0.999929 0.000071
vt 1.000000 0.187500
vt 0.999929 0.000071
vt 1.000000 0.187500
vt 0.000000 0.187500
vt 0.000071 0.000071
vt 1.000000 1.000000
vt -0.000000 1.000000
vt 0.000000 0.500000
vt 1.000000 0.500000
vt 1.000000 0.500000
vt 0.000000 1.000000
vt -0.000000 0.500000
vt 1.000000 0.500000
vt 1.000000 1.000000
vt 0.000035 0.999965
vt -0.000000 0.500000
vt 1.000000 0.500000
vt 1.000000 1.000000
vt -0.000000 0.500000
vt 0.000000 1.000000
vt 0.000000 0.500000
vt 1.000000 0.500000
vt 1.000000 1.000000
vt 0.000000 0.000000
vt 0.000000 0.000000
vt 0.000000 0.000000
vt 0.000000 0.000000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
vn 1.0000 0.0000 0.0000
vn -0.0000 -0.0000 1.0000
vn -1.0000 -0.0000 -0.0000
vn 0.0000 0.0000 -1.0000
vn -0.0000 0.8948 0.4465
vn -0.0000 -0.4465 0.8948
vn 0.0000 0.4465 -0.8948
vn 0.0000 -0.8948 -0.4465
usemtl Material
s off
f 1/1/1 2/2/1 3/3/1 4/4/1
f 5/5/2 8/6/2 7/7/2 6/8/2
f 1/9/3 5/10/3 6/11/3 2/12/3
f 2/13/4 6/14/4 7/15/4 3/3/4
f 3/16/5 7/7/5 8/17/5 4/18/5
f 5/19/6 1/20/6 4/21/6 8/22/6
f 13/23/7 16/24/7 15/25/7 14/26/7
f 9/27/3 13/23/3 14/28/3 10/29/3
f 10/30/8 14/31/8 15/32/8 11/33/8
f 11/34/5 15/35/5 16/24/5 12/36/5
f 13/37/9 9/38/9 12/39/9 16/40/9
usemtl Material_NONE
f 9/41/10 10/42/10 11/43/10 12/44/10

Binary file not shown.

View file

@ -0,0 +1,12 @@
# Blender MTL File: 'None'
# Material Count: 1
newmtl Material
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2

View file

@ -0,0 +1,86 @@
# Blender v2.79 (sub 0) OBJ File: ''
# www.blender.org
mtllib stairs.mtl
o Cube.003_Cube.004
v -0.145056 -0.155475 -0.315349
v -0.003360 -0.155475 -0.315288
v -0.003419 -0.155475 -0.180255
v -0.145114 -0.155475 -0.180316
v -0.145056 -0.297056 -0.315349
v -0.003360 -0.297056 -0.315288
v -0.003419 -0.297056 -0.180255
v -0.145114 -0.297056 -0.180316
v -0.144081 -0.482542 -0.560711
v -0.004195 -0.482544 -0.560650
v -0.004623 0.545783 0.468518
v -0.144509 0.545785 0.468457
v -0.144121 -0.572912 -0.470414
v -0.004235 -0.572914 -0.470353
v -0.004664 0.455413 0.558814
v -0.144549 0.455415 0.558754
v -0.152012 0.474149 0.261187
v 0.003098 0.474149 0.261254
v 0.003040 0.474149 0.396288
v -0.152071 0.474149 0.396220
v -0.152012 0.332569 0.261187
v 0.003098 0.332569 0.261254
v 0.003039 0.332569 0.396288
v -0.152071 0.332569 0.396221
v -0.574097 -0.097822 -0.570914
v 0.425903 -0.097822 -0.570481
v 0.425694 -0.097822 -0.087989
v -0.574306 -0.097822 -0.088422
v -0.574097 -0.153023 -0.570914
v 0.425903 -0.153023 -0.570481
v 0.425694 -0.153023 -0.087989
v -0.574306 -0.153023 -0.088422
v -0.574319 0.518663 -0.057371
v 0.425680 0.518663 -0.056939
v 0.425472 0.518663 0.425554
v -0.574528 0.518663 0.425121
v -0.574319 0.463462 -0.057371
v 0.425681 0.463462 -0.056938
v 0.425472 0.463462 0.425554
v -0.574528 0.463462 0.425121
vn 0.0000 1.0000 0.0000
vn 0.0000 -1.0000 0.0000
vn 0.0004 0.0000 -1.0000
vn 1.0000 0.0000 0.0004
vn -0.0004 -0.0000 1.0000
vn -1.0000 -0.0000 -0.0004
vn 0.0003 0.7074 -0.7068
vn -0.0003 -0.7074 0.7068
vn 0.0003 -0.7068 -0.7074
vn -0.0003 0.7068 0.7074
usemtl Material
s off
f 1//1 4//1 3//1 2//1
f 5//2 6//2 7//2 8//2
f 1//3 2//3 6//3 5//3
f 2//4 3//4 7//4 6//4
f 3//5 4//5 8//5 7//5
f 5//6 8//6 4//6 1//6
f 9//7 12//7 11//7 10//7
f 13//8 14//8 15//8 16//8
f 9//9 10//9 14//9 13//9
f 10//4 11//4 15//4 14//4
f 11//10 12//10 16//10 15//10
f 13//6 16//6 12//6 9//6
f 17//1 20//1 19//1 18//1
f 21//2 22//2 23//2 24//2
f 17//3 18//3 22//3 21//3
f 18//4 19//4 23//4 22//4
f 19//5 20//5 24//5 23//5
f 21//6 24//6 20//6 17//6
f 25//1 28//1 27//1 26//1
f 29//2 30//2 31//2 32//2
f 25//3 26//3 30//3 29//3
f 26//4 27//4 31//4 30//4
f 27//5 28//5 32//5 31//5
f 29//6 32//6 28//6 25//6
f 33//1 36//1 35//1 34//1
f 37//2 38//2 39//2 40//2
f 33//3 34//3 38//3 37//3
f 34//4 35//4 39//4 38//4
f 35//5 36//5 40//5 39//5
f 37//6 40//6 36//6 33//6

View file

@ -0,0 +1,339 @@
function ma_pops_furniture.register_hedge(name, def)
-- register nodes
if minetest.get_modpath("default") then
def.sounds = def.sounds or default.node_sound_leaves_defaults()
end
minetest.register_node(name, {
description = def.description or "Hedge",
drawtype = "nodebox",
paramtype = "light",
tiles = {def.texture},
groups = def.groups or
{snappy = 3, flammable = 2, leaves = 1, hedge = 1},
waving = 1,
node_box = {
type = "connected",
fixed = {{-5/16, -0.5, -5/16, 5/16, 5/16, 5/16}},
connect_left = {{-0.5, -0.5, -5/16, -5/16, 5/16, 5/16}},
connect_right = {{5/16, -0.5, -5/16, 0.5, 5/16, 5/16}},
connect_front = {{-5/16, -0.5, -0.5, 5/16, 5/16, -5/16}},
connect_back = {{-5/16, -0.5, 5/16, 5/16, 5/16, 0.5}},
},
connects_to = {"group:fence", "group:wood", "group:tree", "group:hedge"},
light_source = def.light_source or 0,
sounds = def.sounds,
after_place_node = function(pos, placer, itemstack, pointed_thing)
local pos_under = {x = pos.x, y = pos.y - 1, z = pos.z}
local pos_above = {x = pos.x, y = pos.y + 1, z = pos.z}
local node_under = string.gsub(minetest.get_node(pos_under).name, "_full$", "")
local node_above = string.gsub(minetest.get_node(pos_above).name, "_full$", "")
if minetest.get_item_group(node_under, "hedge") == 1 then
minetest.set_node(pos_under, {name = node_under .. "_full"})
end
if minetest.get_item_group(node_above, "hedge") == 1 then
minetest.set_node(pos, {name = name .. "_full"})
end
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
local pos_under = {x = pos.x, y = pos.y - 1, z = pos.z}
local node_under = string.gsub(minetest.get_node(pos_under).name, "_full$", "")
if minetest.get_item_group(node_under, "hedge") == 1 and
digger and digger:is_player() then
minetest.set_node(pos_under, {name = node_under})
end
end,
})
minetest.register_node(name .. "_full", {
description = def.description or "Hedge",
drawtype = "nodebox",
paramtype = "light",
tiles = {def.texture},
groups = def.groups or
{snappy = 3, flammable = 2, leaves = 1, hedge = 1,
not_in_creative_inventory = 1},
waving = 1,
node_box = {
type = "connected",
fixed = {{-5/16, -0.5, -5/16, 5/16, 0.5, 5/16}},
connect_left = {{-0.5, -0.5, -5/16, -5/16, 0.5, 5/16}},
connect_right = {{5/16, -0.5, -5/16, 0.5, 0.5, 5/16}},
connect_front = {{-5/16, -0.5, -0.5, 5/16, 0.5, -5/16}},
connect_back = {{-5/16, -0.5, 5/16, 5/16, 0.5, 0.5}},
},
connects_to = {"group:fence", "group:wood", "group:tree", "group:hedge"},
light_source = def.light_source or 0,
sounds = def.sounds,
drop = name,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
local pos_under = {x = pos.x, y = pos.y - 1, z = pos.z}
local node_under = string.gsub(minetest.get_node(pos_under).name, "_full$", "")
if minetest.get_item_group(node_under, "hedge") == 1 and
digger and digger:is_player() then
minetest.set_node(pos_under, {name = node_under})
end
end,
})
-- register crafting recipe
minetest.register_craft({
output = name .. " 4",
recipe = {
{def.material, def.material, def.material},
{def.material, def.material, def.material},
}
})
end
-- register hedges if default mod found
if minetest.get_modpath("default") then
ma_pops_furniture.register_hedge("ma_pops_furniture:apple_hedge", {
description = "Apple Hedge",
texture = "default_leaves.png",
material = "default:leaves",
})
ma_pops_furniture.register_hedge("ma_pops_furniture:jungle_hedge", {
description = "Jungle Hedge",
texture = "default_jungleleaves.png",
material = "default:jungleleaves",
})
ma_pops_furniture.register_hedge("ma_pops_furniture:pine_hedge", {
description = "Pine Hedge",
texture = "default_pine_needles.png",
material = "default:pine_needles",
})
ma_pops_furniture.register_hedge("ma_pops_furniture:acacia_hedge", {
description = "Acacia Hedge",
texture = "default_acacia_leaves.png",
material = "default:acacia_leaves",
})
ma_pops_furniture.register_hedge("ma_pops_furniture:aspen_hedge", {
description = "Aspen Hedge",
texture = "default_aspen_leaves.png",
material = "default:aspen_leaves",
})
end
-- alternative recipes using bush leaves
minetest.register_craft({
output = "hedges:apple_hedge 4",
recipe = {
{"default:bush_leaves", "default:bush_leaves", "default:bush_leaves"},
{"default:bush_leaves", "default:bush_leaves", "default:bush_leaves"},
}
})
minetest.register_craft({
output = "hedges:acacia_hedge 4",
recipe = {
{"default:acacia_bush_leaves", "default:acacia_bush_leaves", "default:acacia_bush_leaves"},
{"default:acacia_bush_leaves", "default:acacia_bush_leaves", "default:acacia_bush_leaves"},
}
})
minetest.register_node('ma_pops_furniture:birdbath', {
description = 'Birdbath',
drawtype = 'mesh',
mesh = 'FM_birdbath.obj',
tiles = {{name='default_stone.png'},{name='default_water_source_animated.png', animation={type='vertical_frames', aspect_w=16, aspect_h=16, length=2.0}}},
groups = {cracky=2, oddly_breakable_by_hand=5, furniture=1},
paramtype = 'light',
paramtype2 = 'facedir',
sounds = moditems.STONE_SOUNDS,
})
minetest.register_node('ma_pops_furniture:doorbell', {
description = 'Doorbell',
drawtype = 'nodebox',
tiles = {
"mp_db_top.png",
"mp_db_top.png",
"mp_db_right.png",
"mp_db_left.png",
"default_wood.png",
"mp_db_front.png"
},
groups = {cracky=2, oddly_breakable_by_hand=5, furniture=1},
paramtype = 'light',
paramtype2 = 'facedir',
sounds = moditems.STONE_SOUNDS,
on_rightclick = function(pos, node, clicker, itemstack)
node.name = "ma_pops_furniture:doorbell_ring"
minetest.swap_node(pos, node)
-- one second ring.
minetest.get_node_timer(pos):start(1.0)
end,
sounds = moditems.STONE_SOUNDS,
node_box = {
type = "fixed",
fixed = {
{-0.125, -0.375, 0.4375, 0.125, -0.125, 0.5},
{-0.0625, -0.3125, 0.375, 0.0625, -0.1875, 0.4375},
},
}
})
minetest.register_node('ma_pops_furniture:doorbell_ring', {
description = 'Doorbell (ring)',
drawtype = 'nodebox',
tiles = {
"mp_db_top.png",
"mp_db_top.png",
"mp_db_right.png",
"mp_db_left.png",
"default_wood.png",
"mp_db_front.png"
},
groups = {cracky=2, oddly_breakable_by_hand=5, furniture=1, not_in_creative_inventory=1},
drop = 'ma_pops_furniture:doorbell',
on_timer = function(pos,elapsed)
local node = minetest.get_node(pos)
node.name = "ma_pops_furniture:doorbell"
minetest.swap_node(pos, node)
end,
paramtype = 'light',
paramtype2 = 'facedir',
sounds = moditems.STONE_SOUNDS,
node_box = {
type = "fixed",
fixed = {
{-0.125, -0.375, 0.4375, 0.125, -0.125, 0.5},
{-0.0625, -0.3125, 0.375, 0.0625, -0.1875, 0.4375},
},
}
})
minetest.register_node('ma_pops_furniture:stone_path_1', {
description = 'Stone Path',
drawtype = 'mesh',
mesh = 'FM_stone_path_1.obj',
tiles = {'default_stone.png'},
groups = {cracky=2, oddly_breakable_by_hand=5, furniture=1},
paramtype = 'light',
paramtype2 = 'facedir',
sounds = moditems.STONE_SOUNDS,
selection_box = {
type = 'fixed',
fixed = {-.5, -.5, -.5, .5, -.4, .5},
},
collision_box = {
type = 'fixed',
fixed = {-.5, -.5, -.5, .5, -.4, .5},
},
on_place = function(itemstack, placer, pointed_thing)
local stack = ItemStack("ma_pops_furniture:stone_path_" .. math.random(1,4))
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("ma_pops_furniture:stone_path_1 " ..
itemstack:get_count() - (1 - ret:get_count()))
end,
})
for i = 2, 4 do
minetest.register_node('ma_pops_furniture:stone_path_'..i, {
description = 'Stone Path',
drawtype = 'mesh',
mesh = 'FM_stone_path_'..i..'.obj',
tiles = {'default_stone.png'},
groups = {cracky=2, oddly_breakable_by_hand=5, furniture=1, not_in_creative_inventory=1},
paramtype = 'light',
paramtype2 = 'facedir',
sounds = moditems.STONE_SOUNDS,
drop = 'ma_pops_furniture:stone_path_1',
selection_box = {
type = 'fixed',
fixed = {-.5, -.5, -.5, .5, -.4, .5},
},
collision_box = {
type = 'fixed',
fixed = {-.5, -.5, -.5, .5, -.4, .5},
},
})
end
minetest.register_node("ma_pops_furniture:outdoor_lamp", {
description = "Outdoor Lamp",
tiles = {
"default_stone.png",
"default_stone.png^mp_light_off.png",
"default_stone.png",
"default_stone.png",
"default_stone.png",
"default_stone.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
sounds = moditems.STONE_SOUNDS,
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
node.name = "ma_pops_furniture:outdoor_lamp_on"
minetest.set_node(pos, node)
end,
groups = {choppy = 2, oddly_breakable_by_hand = 2},
node_box = {
type = "fixed",
fixed = {
{-0.125, 0.25, -0.125, 0.125, 0.5, 0.125},
},
}
})
minetest.register_node("ma_pops_furniture:outdoor_lamp_on", {
description = "Outdoor Lamp On",
tiles = {
"default_stone.png",
"default_stone.png^mp_light_on.png",
"default_stone.png",
"default_stone.png",
"default_stone.png",
"default_stone.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
light_source = 14,
drop = 'ma_pops_furniture:outdoor_lamp',
sounds = moditems.STONE_SOUNDS,
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
node.name = "ma_pops_furniture:outdoor_lamp"
minetest.set_node(pos, node)
end,
groups = {choppy = 2, oddly_breakable_by_hand = 2, not_in_creative_inventory = 1},
node_box = {
type = "fixed",
fixed = {
{-0.125, 0.25, -0.125, 0.125, 0.5, 0.125},
},
}
})
minetest.register_node("ma_pops_furniture:trampoline", {
description = "Trampoline",
tiles = {"mp_trampoline_top.png", "default_coal_block.png", "mp_trampoline_side.png"},
drawtype="nodebox",
paramtype2="facedir",
paramtype="light",
groups = {cracky=3, oddly_breakable_by_hand=1, fall_damage_add_percent=-80, bouncy=90},
sounds = {wood = {name="xdecor_bouncy", gain=0.8}},
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.3125, -0.5, 0.5, 0, 0.5}, -- NodeBox1
{0.1875, -0.5, 0.1875, 0.5, -0.3125, 0.5}, -- NodeBox2
{-0.5, -0.5, 0.1875, -0.1875, -0.3125, 0.5}, -- NodeBox3
{-0.5, -0.5, -0.5, -0.1875, -0.3125, -0.1875}, -- NodeBox4
{0.1875, -0.5, -0.5, 0.5, -0.3125, -0.1875}, -- NodeBox5
},
}
})

View file

@ -0,0 +1,163 @@
local oven_fs = "size[8,7]"
.."image[3.5,1.5;1,1;default_furnace_fire_bg.png]"
.."list[current_player;main;0,3;8,4;]"
.."list[context;input;2,1.5;1,1;]"
.."list[context;output;5,1.5;1,1;]"
.."label[3,0.5;Oven]"
.."label[1.5,1;Uncooked Food]"
.."label[4.5,1;Cooked Food]"
-- possibly add "fire" image?
local function get_active_oven_fs(item_percent)
return "size[8,7]"
.."image[3.5,1.5;1,1;default_furnace_fire_bg.png^[lowpart:"
..(item_percent)..":default_furnace_fire_fg.png]"
.."list[current_player;main;0,3;8,4;]"
.."list[context;input;2,1.5;1,1;]"
.."list[context;output;5,1.5;1,1;]"
.."label[3,0.5;Oven]"
.."label[1.5,1;Uncooked Food]"
.."label[4.5,1;Cooked Food]"
-- possibly add "fire" image?
end
--x,y;w,h
-- Adding recipe API so we don't end up hardcoding items
ma_pops_furniture.oven = {}
local oven = ma_pops_furniture.oven
oven.recipes = {}
function oven.register_recipe(input, output) oven.recipes[input] = output end
local function update_formspec(progress, goal, meta)
local formspec
if progress > 0 and progress <= goal then
local item_percent = math.floor(progress / goal * 100)
formspec = get_active_oven_fs(item_percent)
else
formspec = oven_fs
end
meta:set_string("formspec", formspec)
end
local function recalculate(pos)
local meta, timer = minetest.get_meta(pos), minetest.get_node_timer(pos)
local inv = meta:get_inventory()
local stack = inv:get_stack("input", 1)
local k = oven.recipes[stack:get_name()]
if not k then return end
timer:stop()
update_formspec(0, 3, meta)
timer:start(1)
end
local function do_cook_single(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local food_uncooked = inv:get_stack("input", 1)
food_uncooked:set_count(1)
--If the uncooked food wasn't removed mid-cooking, then cook it.
if not oven.recipes[food_uncooked:get_name()] then
minetest.chat_send_all("Oven cooked nothing because there was nothing to cook.")
minetest.get_node_timer(pos):stop()
update_formspec(0, 3, meta)
else
inv:remove_item("input", food_uncooked) -- Clear the slot
local food_cooked = oven.recipes[food_uncooked:get_name()] -- Get the cooked food
inv:add_item("output", food_cooked) -- Put the cooked food in the slot
end
end
minetest.register_node("ma_pops_furniture:oven", {
description = "Oven",
tiles = {
"mp_oven_top.png",
"mp_oven_bottom.png",
"mp_oven_right.png",
"mp_oven_left.png",
"mp_oven_back.png",
"mp_oven_front.png"
},
paramtype2 = "facedir",
groups = {cracky = 2, tubedevice = 1, tubedevice_receiver = 1},
legacy_facedir_simple = true,
is_ground_content = false,
sounds = moditems.STONE_SOUNDS,
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-0.5, 0.3125, -0.5, 0.5, 0.5, 0.5},
{-0.5, -0.5, -0.375, 0.5, 0.3125, 0.5},
{-0.4375, -0.4375, -0.4375, 0.4375, 0.25, -0.375},
{-0.375, 0.125, -0.5, 0.375, 0.1875, -0.375},
},
},
can_dig = function(pos, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
return inv:is_empty("input") and inv:is_empty("output")
end,
on_timer = function(pos, elapsed)
local meta = minetest.get_meta(pos)
local stack = meta:get_inventory():get_stack("input", 1)
local cooking_time = meta:get_int("cooking_time") or 0
cooking_time = cooking_time + 1
if cooking_time % 3 == 0 then
do_cook_single(pos)
end
update_formspec(cooking_time % 3, 3, meta)
meta:set_int("cooking_time", cooking_time)
--Keep cooking until there is nothing left to cook.
if not stack:is_empty() then
return true
else
meta:set_int("cooking_time", 0)
update_formspec(0, 3, meta)
return false
end
end,
on_metadata_inventory_put = recalculate,
on_metadata_inventory_take = recalculate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", oven_fs)
local inv = meta:get_inventory()
inv:set_size("input", 1)
inv:set_size("output", 1)
end,
on_blast = function(pos)
local drops = {}
default.get_inventory_drops(pos, "input", drops)
default.get_inventory_drops(pos, "output", drops)
table.insert(drops, "ma_pops_furniture:oven")
minetest.remove_node(pos)
return drops
end,
allow_metadata_inventory_put = function(pos, list, index, stack, player)
return oven.recipes[stack:get_name()] and stack:get_count() or 0
end,
})
-- Recipe Registration
oven.register_recipe("default:ice", "default:water_source")
-- No milk bucket as this doesn't support substitutes for now
oven.register_recipe("mobs_mc:chicken_raw", "test:chicken_cooked")
--[[ We don't need to check mod existance when registering recipe
Recipe won't even be executed if there is no raw chicken in input ]]--
oven.register_recipe("mobs_mc:beef_raw", "test:beef_cooked")
oven.register_recipe("farming:coffee_cup", "farming:coffee_cup_hot") -- What a crutch there was...
-- Add needed recipes as you go, note that other mods can add more recipes too

View file

@ -0,0 +1,242 @@
ma_pops_furniture.default_hues = {
"white",
"grey",
"dark_grey",
"black",
"violet",
"blue",
"cyan",
"dark_green",
"green",
"yellow",
"orange",
"red",
"magenta"
}
local sofa_table = { --name, color, colorize(hex or color name:intensity(1-255))
{'Black', 'black', 'black:225'},
{'Blue', 'blue', 'blue:225'},
{'Brown', 'brown', 'brown:225'},
{'Cyan', 'cyan', 'cyan:200'},
{'Dark Green', 'dark_green', 'green:225'},
{'Dark Grey', 'dark_grey', 'black:200'},
{'Green', 'green', '#32cd32:150'},
{'Grey', 'grey', 'black:100'},
{'Magenta', 'magenta', 'magenta:200'},
{'Orange', 'orange', 'orange:225'},
{'Pink', 'pink', 'pink:225'},
{'Red', 'red', 'red:225'},
{'Violet', 'violet', 'violet:225'},
{'White', 'white', 'white:1'},
{'Yellow', 'yellow', 'yellow:225'},
}
local function sofa_punch(sofa_type, pos, node, clicker)
local item = clicker:get_wielded_item():get_name()
-- Extract mod name and color
split = string.split(item, ":")
mod, color = split[1], split[2]
-- If dye, recolor sofa
if mod == 'dye' then
node.name = sofa_type..color
minetest.set_node(pos, node)
end
ma_pops_furniture.sit(pos, node, clicker)
end
for i in ipairs (sofa_table) do
local name = sofa_table[i][1]
local color = sofa_table[i][2]
local hex = sofa_table[i][3]
minetest.register_node('ma_pops_furniture:sofa_'..color, {
description = name..' Sofa',
drawtype = 'mesh',
mesh = 'FM_sofa.obj',
tiles = {'wool_'..color..'.png'},
groups = {cracky=3, oddly_breakable_by_hand=2, flammable=1, furniture=1, fall_damage_add_percent=-80, bouncy=80},
--inventory_image = 'mp_sofa.png^[colorize:'..hex,
paramtype = "light",
paramtype2 = "facedir",
sounds = {wood = {name="furn_bouncy", gain=0.8}},
can_dig = ma_pops_furniture.sit_dig,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y + 0 -- Sitting position
ma_pops_furniture.sit(pos, node, clicker, pointed_thing)
return itemstack
end,
selection_box = {
type = 'fixed',
fixed = {
{-.5, -.5, -.5, .5, 0, .5}, --Right, Bottom, Back, Left, Top, Front
{-.5, 0, .5, .5, .5, .2},
{-.65, -.15, -.45, -.45, .3, .25}, --left
{.65, -.15, -.45, .45, .3, .25}, --right
},
},
collision_box = {
type = 'fixed',
fixed = {
{-.5, -.5, -.5, .5, 0, .5}, --base
{-.5, 0, .5, .5, .5, .2}, --back
{-.65, -.15, -.45, -.45, .3, .25}, --left
{.65, -.15, -.45, .45, .3, .25}, --right
},
},
on_punch = function(pos, node, clicker)
sofa_punch("ma_pops_furniture:sofa_", pos, node, clicker)
end
})
minetest.register_node('ma_pops_furniture:sofa_l_'..color, {
description = name..' Sofa',
drawtype = 'mesh',
mesh = 'FM_sofa_l.obj',
tiles = {'wool_'..color..'.png'},
groups = {cracky=3, oddly_breakable_by_hand=2, flammable=1, not_in_creative_inventory=1, fall_damage_add_percent=-80, bouncy=80},
drop = 'ma_pops_furniture:sofa_'..color,
paramtype = "light",
paramtype2 = "facedir",
can_dig = ma_pops_furniture.sit_dig,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y + 0 -- Sitting position
ma_pops_furniture.sit(pos, node, clicker, pointed_thing)
return itemstack
end,
sounds = {
wood = {name="furn_bouncy", gain=0.8}
},
selection_box = {
type = 'fixed',
fixed = {
{-.5, -.5, -.5, .5, 0, .5},
{-.5, 0, .5, .5, .5, .2},
{.65, -.15, -.45, .45, .3, .25},
}
},
collision_box = {
type = 'fixed',
fixed = {
{-.5, -.5, -.5, .5, 0, .5},
{-.5, 0, .5, .5, .5, .2},
{.65, -.15, -.45, .45, .3, .25},
}
},
on_punch = function(pos, node, clicker)
sofa_punch("ma_pops_furniture:sofa_l_", pos, node, clicker)
end
})
minetest.register_node('ma_pops_furniture:sofa_m_'..color, {
description = name..' Sofa',
drawtype = 'mesh',
mesh = 'FM_sofa_m.obj',
tiles = {'wool_'..color..'.png'},
groups = {cracky=3, oddly_breakable_by_hand=2, flammable=1, not_in_creative_inventory=1, fall_damage_add_percent=-80, bouncy=80},
drop = 'ma_pops_furniture:sofa_'..color,
paramtype = "light",
paramtype2 = "facedir",
can_dig = ma_pops_furniture.sit_dig,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y + 0 -- Sitting position
ma_pops_furniture.sit(pos, node, clicker, pointed_thing)
return itemstack
end,
sounds = {wood = {name="furn_bouncy", gain=0.8}},
selection_box = {
type = 'fixed',
fixed = {
{-.5, -.5, -.5, .5, 0, .5},
{-.5, 0, .5, .5, .5, .2},
}
},
collision_box = {
type = 'fixed',
fixed = {
{-.5, -.5, -.5, .5, 0, .5},
{-.5, 0, .5, .5, .5, .2},
}
},
on_punch = function(pos, node, clicker)
sofa_punch("ma_pops_furniture:sofa_m_", pos, node, clicker)
end
})
minetest.register_node('ma_pops_furniture:sofa_r_'..color, {
description = name..' Sofa',
drawtype = 'mesh',
mesh = 'FM_sofa_r.obj',
tiles = {'wool_'..color..'.png'},
groups = {cracky=3, oddly_breakable_by_hand=2, flammable=1, not_in_creative_inventory=1, fall_damage_add_percent=-80, bouncy=80},
drop = 'ma_pops_furniture:sofa_'..color,
paramtype = "light",
paramtype2 = "facedir",
sounds = {wood = {name="furn_bouncy", gain=0.8}},
can_dig = ma_pops_furniture.sit_dig,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y + 0 -- Sitting position
ma_pops_furniture.sit(pos, node, clicker, pointed_thing)
return itemstack
end,
selection_box = {
type = 'fixed',
fixed = {
{-.5, -.5, -.5, .5, 0, .5},
{-.5, 0, .5, .5, .5, .2},
{-.65, -.15, -.45, -.45, .3, .25},
}
},
collision_box = {
type = 'fixed',
fixed = {
{-.5, -.5, -.5, .5, 0, .5},
{-.5, 0, .5, .5, .5, .2},
{-.65, -.15, -.45, -.45, .3, .25},
}
},
on_punch = function(pos, node, clicker)
sofa_punch("ma_pops_furniture:sofa_r_", pos, node, clicker)
end
})
minetest.register_node('ma_pops_furniture:sofa_c_'..color, {
description = name..' Sofa',
drawtype = 'mesh',
mesh = 'FM_sofa_c.obj',
tiles = {'wool_'..color..'.png'},
groups = {cracky=3, oddly_breakable_by_hand=2, flammable=1, not_in_creative_inventory=1, furniture=1, fall_damage_add_percent=-80, bouncy=80},
drop = 'ma_pops_furniture:sofa_'..color,
paramtype = "light",
paramtype2 = "facedir",
sounds = {wood = {name="furn_bouncy", gain=0.8}},
can_dig = ma_pops_furniture.sit_dig,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y + 0 -- Sitting position
ma_pops_furniture.sit(pos, node, clicker, pointed_thing)
return itemstack
end,
selection_box = {
type = 'fixed',
fixed = {
{-.5, -.5, -.5, .5, 0, .5}, --bottom
{-.5, 0, .5, .5, .5, .2}, --back
{.2, 0, -.5, .5, .5, .2}, --side
}
},
collision_box = {
type = 'fixed',
fixed = {
{-.5, -.5, -.5, .5, 0, .5},
{-.5, 0, .5, .5, .5, .2},
}
},
on_punch = function(pos, node, clicker)
sofa_punch("ma_pops_furniture:sofa_c_", pos, node, clicker)
end
})
end

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,38 @@
local songs = { "static"
}
minetest.register_node("ma_pops_furniture:stereo", {
description = "Stereo",
tiles = {
"mp_radio_top.png",
"mp_radio_bottom.png",
"mp_radio_right.png",
"mp_radio_left.png",
"mp_radio_back.png",
"mp_radio_front.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, furniture = 1},
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, 0.1875, 0.5, -0.125, 0.5}, -- NodeBox1
{-0.25, -0.5, 0.125, 0.25, -0.0625, 0.5}, -- NodeBox2
}
},
on_rightclick = function(pos, node, clicker, itemstack)
local meta = minetest.env:get_meta(pos)
if string.len(meta:get_string("hwnd")) > 0 then
minetest.sound_stop(meta:get_string("hwnd"))
meta:set_string("hwnd",nil)
else
meta:set_string("hwnd",minetest.sound_play("radio_" .. songs[math.random(1,#songs)], {gain = 0.5, max_hear_distance = 25}))
end
end,
on_destruct = function(pos)
local meta = minetest.env:get_meta(pos)
if string.len(meta:get_string("hwnd")) > 0 then minetest.sound_stop(meta:get_string("hwnd")) end
end,
})

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 541 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 587 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Some files were not shown because too many files have changed in this diff Show more