1
0
mirror of https://github.com/mt-mods/homedecor_modpack.git synced 2025-07-15 04:10:18 +02:00

Compare commits

...

32 Commits

Author SHA1 Message Date
2c5be0735a Russian locale (#386)
* Russian locale

* Russian locale. Plurals fix
2017-08-21 16:57:43 -04:00
36e5e319e3 add description for "Ice Fire" (#385) 2017-08-20 11:52:45 -04:00
57b988c185 clarify desc for "large" shrubbery 2017-08-13 14:33:45 -04:00
d6f660b72a clarify desc for "striped" deck chair 2017-08-13 14:33:45 -04:00
7b4db2fc5a clarify desc for "open" curtains 2017-08-13 14:33:45 -04:00
b45ace825d Update German translation (#378) 2017-08-13 14:27:43 -04:00
9d2704c0c2 rework a bit to work better with minetest_game 0.4.16
eliminates flint and steel (aliased to mt_game fire:flint_and_steel)
eliminates fake_fire:fake_fire (aliased to mt_game fire:permanent_flame)

mt_game already provides a "fake" fire in the form of a "permanent flame", strike a coal block with flint/steel to get it.

modifies default ice block so that it can be "ignited" (ice fire on top) with mt_game flint/steel

Fire mod must be enabled. However, fire damage is NOT required.
2017-08-12 18:21:50 -04:00
d7a4054dda fix take-coin handling for soda machine 2017-08-12 18:00:09 -04:00
f03e71397a get rid of last vestages of "infinite stacks" special handling
just checks for creative mode/priv directly instead, as needed.
2017-08-12 17:52:29 -04:00
6349c53824 update recipes for stained glass 2017-08-12 17:07:51 -04:00
c60607aa0d use a nodebox for building_blocks BWtile 2017-08-12 16:52:31 -04:00
78ec2119f6 give unique (if generic) descriptions to picture frames 2017-08-12 16:43:42 -04:00
c247318dd8 Update french, german, portuguese (and pt_BR) translations (#380)
* add some translatable strings

* updated translations
add option --sort-by-file to updatepo.sh

* Updated de, pt, pt_BR translations
from pull requests #378 (Wuzzy) & #379 (afmachado)

pt.po and pt_BR.po are the same but pt.po is usable by any portuguese speaking people, not only brazilian ones

* improved french translation
2017-08-12 16:30:46 -04:00
9693d9dd46 Disable sleeping in beds (again) 2017-06-25 03:12:23 -04:00
23d1365939 fix wrongly-colored plasma ball base 2017-06-25 03:12:18 -04:00
f391bc59b0 use texture overlays on lava lamps
(water is now blue like it used to be)
2017-06-25 03:12:13 -04:00
790557f6ce Make the white glowlight overlays more subtle
(they're too bright against the darker colors e.g. green)
2017-06-25 03:12:08 -04:00
c9c4214bff use static hardware coloring for books,
use soft overlays for cover trim,
2017-06-25 03:12:03 -04:00
914aee41fe fix book models
(get rid of redundant overlay polys)
2017-06-25 03:11:58 -04:00
ec83040d10 use soft overlays for bathroom tiles instead of the two-layer mesh node 2017-06-25 03:11:52 -04:00
9bb4222aa5 use soft overlays to re-create the subtle white glow that glowlights used to have
before param2 coloring went in.
2017-06-25 03:11:46 -04:00
67ddc87d2c Re-enable sleeping in beds 2017-06-25 03:11:41 -04:00
970636571e missed an alias for open books 2017-06-25 03:11:37 -04:00
4ee5b6b87f revert a599b041d4 (param2 colorization of books)
The intention of this is to fix books in peoples' inventories that are
now inaccessible.  They can be placed, viewed, edited like normal now.

Side effect: all books that were already in-world and that have already
been converted to the param2 colorization before will be grey now, and
most will end up turned some wierd direction, but that can be fixed with
the screwdriver.

If you need to re-color one of the now-grey books, you'll need to craft
one of the desired color, place it, and copy and paste your text from
the grey book.

Newly-placed colored books will behave normally.
2017-06-25 03:11:31 -04:00
1f2676b8f6 use mesh node for cubical plasma lamp 2017-06-25 03:11:25 -04:00
ad4790f74c verify inbox owner when taking items 2017-06-25 03:11:19 -04:00
7925897748 Replace deprecated methods:
- 'setting_get' with 'settings:get'
- 'setting_getbool' with 'settings:get_bool'
2017-06-25 03:11:12 -04:00
459c02548e don't crash if placing bed on top of bed when not in auto-color mode. 2017-06-25 03:11:05 -04:00
1eb1e87f08 use unified dyes auto-colorization feature
also fixed some bugs in bed handling
also got rid of the old, obsolete "placeholder" node, aliased it to air.
2017-06-25 03:10:59 -04:00
27eae09d93 use unified dyes on_construct handler
to set 256-color palette meta key on place
for those nodes that use it
2017-06-25 03:10:53 -04:00
761b18c17e don't reference lrfurn chair colors in homedecor chair LBM
use a local copy instead
2017-06-25 02:29:53 -04:00
763bcb2e95 Make Wrought Iron Fence 2 recipe more generous
And remove double craft definition
2017-03-11 19:39:16 +01:00
54 changed files with 11835 additions and 8141 deletions

View File

@ -234,16 +234,22 @@ minetest.register_node("building_blocks:Tarmac_spread", {
sounds = default.node_sound_dirt_defaults(), sounds = default.node_sound_dirt_defaults(),
}) })
minetest.register_node("building_blocks:BWtile", { minetest.register_node("building_blocks:BWtile", {
drawtype = "raillike", drawtype = "nodebox",
description = S("Chess board tiling"), description = S("Chess board tiling"),
tiles = {"building_blocks_BWtile.png"}, tiles = {
"building_blocks_BWtile.png",
"building_blocks_BWtile.png^[transformR90",
"building_blocks_BWtile.png^[transformR90",
"building_blocks_BWtile.png^[transformR90",
"building_blocks_BWtile.png",
"building_blocks_BWtile.png"
},
inventory_image = "building_blocks_bwtile_inv.png", inventory_image = "building_blocks_bwtile_inv.png",
paramtype = "light", paramtype = "light",
walkable = false, walkable = false,
selection_box = { node_box = {
type = "fixed", type = "fixed",
-- but how to specify the dimensions for curved and sideways rails? fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
}, },
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = true, is_ground_content = true,
@ -302,7 +308,7 @@ if minetest.get_modpath("moreblocks") then
"marble", "marble",
"building_blocks:Marble", "building_blocks:Marble",
{ {
description = "Marble", description = S("Marble"),
tiles = {"building_blocks_marble.png"}, tiles = {"building_blocks_marble.png"},
groups = {cracky=3}, groups = {cracky=3},
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
@ -313,7 +319,7 @@ if minetest.get_modpath("moreblocks") then
"hardwood", "hardwood",
"building_blocks:hardwood", "building_blocks:hardwood",
{ {
description = "Hardwood", description = S("Hardwood"),
tiles = {"building_blocks_hardwood.png"}, tiles = {"building_blocks_hardwood.png"},
groups = {choppy=1,flammable=1}, groups = {choppy=1,flammable=1},
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
@ -324,7 +330,7 @@ if minetest.get_modpath("moreblocks") then
"fakegrass", "fakegrass",
"building_blocks:fakegrass", "building_blocks:fakegrass",
{ {
description = "Grass", description = S("Grass"),
tiles = {"default_grass.png"}, tiles = {"default_grass.png"},
groups = {crumbly=3}, groups = {crumbly=3},
sounds = default.node_sound_dirt_defaults({ sounds = default.node_sound_dirt_defaults({
@ -348,7 +354,7 @@ if minetest.get_modpath("moreblocks") then
"tar", "tar",
"building_blocks:Tar", "building_blocks:Tar",
{ {
description = "Tar", description = S("Tar"),
tiles = {"building_blocks_tar.png"}, tiles = {"building_blocks_tar.png"},
groups = {crumbly=1}, groups = {crumbly=1},
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
@ -360,7 +366,7 @@ if minetest.get_modpath("moreblocks") then
"grate", "grate",
"building_blocks:grate", "building_blocks:grate",
{ {
description = "Grate", description = S("Grate"),
tiles = {"building_blocks_grate.png"}, tiles = {"building_blocks_grate.png"},
groups = {cracky=1}, groups = {cracky=1},
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
@ -371,7 +377,7 @@ if minetest.get_modpath("moreblocks") then
"Adobe", "Adobe",
"building_blocks:Adobe", "building_blocks:Adobe",
{ {
description = "Adobe", description = S("Adobe"),
tiles = {"building_blocks_Adobe.png"}, tiles = {"building_blocks_Adobe.png"},
groups = {crumbly=3}, groups = {crumbly=3},
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
@ -382,7 +388,7 @@ if minetest.get_modpath("moreblocks") then
"Roofing", "Roofing",
"building_blocks:Roofing", "building_blocks:Roofing",
{ {
description = "Roofing", description = S("Roofing"),
tiles = {"building_blocks_Roofing.png"}, tiles = {"building_blocks_Roofing.png"},
groups = {snappy=3}, groups = {snappy=3},
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),

6
computer/locale/ru.txt Normal file
View File

@ -0,0 +1,6 @@
# Language: Russian
# Author: inpos <inpos@yandex.ru>
Plastic sheet = Лист пластика
Unprocessed Plastic base = Необработанная пластиковая основа

View File

@ -33,10 +33,10 @@ local colors = { "computer_cyan.png", "computer_magenta.png", "computer_red.png"
local background = "image[0,0;3.55,6.66;computer_black.png]" local background = "image[0,0;3.55,6.66;computer_black.png]"
local buttons = "button[3,4.5;0.6,0.6;left;<]" local buttons = "button[3,4.5;0.6,0.6;left;<]"
.."button[3.6,4.5;0.6,0.6;rotateleft;L]" .."button[3.6,4.5;0.6,0.6;rotateleft;"..minetest.formspec_escape(S("L")).."]"
.."button[4.2,4.5;0.6,0.6;down;v]" .."button[4.2,4.5;0.6,0.6;down;v]"
.."button[4.2,5.3;0.6,0.6;drop;V]" .."button[4.2,5.3;0.6,0.6;drop;V]"
.."button[4.8,4.5;0.6,0.6;rotateright;R]" .."button[4.8,4.5;0.6,0.6;rotateright;"..minetest.formspec_escape(S("R")).."]"
.."button[5.4,4.5;0.6,0.6;right;>]" .."button[5.4,4.5;0.6,0.6;right;>]"
.."button[3.5,3;2,2;new;"..minetest.formspec_escape(S("New Game")).."]" .."button[3.5,3;2,2;new;"..minetest.formspec_escape(S("New Game")).."]"
@ -231,7 +231,7 @@ local function step(pos, fields)
local scr = { formsize, background, local scr = { formsize, background,
t.boardstring, t.previewstring, t.boardstring, t.previewstring,
draw_shape(t.cur, t.x, t.y, t.rot, boardx, boardy), draw_shape(t.cur, t.x, t.y, t.rot, boardx, boardy),
"label[3.8,0.1;Next...]label[3.8,2.7;Score: ", "label[3.8,0.1;"..S("Next...").."]label[3.8,2.7;"..S("Score: "),
t.score, close, buttons } t.score, close, buttons }

View File

@ -66,43 +66,36 @@ local function stop_smoke(pos)
this_spawner_meta:set_int("sound", nil) this_spawner_meta:set_int("sound", nil)
end end
-- FLAME TYPES minetest.register_node("fake_fire:ice_fire", {
local flame_types = { inventory_image = "ice_fire_inv.png",
{ "fake", S("Fake fire") }, description = S("Ice fire"),
{ "ice", S("Ice fire") }, drawtype = "plantlike",
} paramtype = "light",
paramtype2 = "facedir",
groups = {dig_immediate=3, not_in_creative_inventory=1},
sunlight_propagates = true,
buildable_to = true,
walkable = false,
light_source = 14,
waving = 1,
tiles = {
{name="ice_fire_animated.png", animation={type="vertical_frames",
aspect_w=16, aspect_h=16, length=1.5}},
},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
start_smoke(pos, node, clicker)
return itemstack
end,
on_destruct = function (pos)
stop_smoke(pos)
minetest.sound_play("fire_extinguish", {
pos = pos, max_hear_distance = 5
})
end,
drop = ""
})
for _, f in ipairs(flame_types) do minetest.register_alias("fake_fire:fake_fire", "fire:permanent_flame")
local name, desc = unpack(f)
minetest.register_node("fake_fire:"..name.."_fire", {
inventory_image = name.."_fire_inv.png",
description = desc,
drawtype = "plantlike",
paramtype = "light",
paramtype2 = "facedir",
groups = {dig_immediate=3, not_in_creative_inventory=1},
sunlight_propagates = true,
buildable_to = true,
walkable = false,
light_source = 14,
waving = 1,
tiles = {
{name=name.."_fire_animated.png", animation={type="vertical_frames",
aspect_w=16, aspect_h=16, length=1.5}},
},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
start_smoke(pos, node, clicker)
return itemstack
end,
on_destruct = function (pos)
stop_smoke(pos)
minetest.sound_play("fire_extinguish", {
pos = pos, max_hear_distance = 5
})
end,
drop = ""
})
end
minetest.register_node("fake_fire:fancy_fire", { minetest.register_node("fake_fire:fancy_fire", {
inventory_image = "fancy_fire_inv.png", inventory_image = "fancy_fire_inv.png",
@ -190,43 +183,18 @@ for _, mat in ipairs(materials) do
}) })
end end
-- FLINT and STEEL minetest.register_alias("fake_fire:flint_and_steel", "fire:flint_and_steel")
minetest.register_tool("fake_fire:flint_and_steel", {
description = S("Flint and steel"),
inventory_image = "flint_and_steel.png",
liquids_pointable = false,
stack_max = 1,
tool_capabilities = {
full_punch_interval = 1.0,
max_drop_level=0,
groupcaps={flamable = {uses=65, maxlevel=1}}
},
on_use = function(itemstack, user, pointed_thing)
if pointed_thing.type == "node" and minetest.get_node(pointed_thing.above).name == "air" then
if not minetest.is_protected(pointed_thing.above, user:get_player_name()) then
if string.find(minetest.get_node(pointed_thing.under).name, "ice") then
minetest.set_node(pointed_thing.above, {name="fake_fire:ice_fire"})
else
minetest.set_node(pointed_thing.above, {name="fake_fire:fake_fire"})
end
else
minetest.chat_send_player(user:get_player_name(), S("This area is protected!"))
end
else
return
end
itemstack:add_wear(65535/65) minetest.override_item("default:ice", {
return itemstack on_ignite = function(pos, igniter)
local flame_pos = {x = pos.x, y = pos.y + 1, z = pos.z}
if minetest.get_node(flame_pos).name == "air" then
minetest.set_node(flame_pos, {name = "fake_fire:ice_fire"})
end
end end
}) })
-- CRAFTS -- CRAFTS
minetest.register_craft({
type = "shapeless",
output = 'fake_fire:flint_and_steel',
recipe = {"default:obsidian_shard", "default:steel_ingot"}
})
minetest.register_craft({ minetest.register_craft({
type = "shapeless", type = "shapeless",

View File

@ -4,51 +4,57 @@ local S = homedecor_i18n.gettext
minetest.register_node("homedecor:bathroom_tiles_dark", { minetest.register_node("homedecor:bathroom_tiles_dark", {
description = S("Bathroom/kitchen tiles (dark)"), description = S("Bathroom/kitchen tiles (dark)"),
tiles = { tiles = {
{ name = "homedecor_bathroom_tiles_bg.png", color = 0xff606060 }, "homedecor_bathroom_tiles_bg.png"
"homedecor_bathroom_tiles_fg.png" },
overlay_tiles = {
{ name = "homedecor_bathroom_tiles_fg.png", color = 0xff606060 },
}, },
drawtype = "mesh",
mesh = "homedecor_block_with_overlay.obj",
paramtype = "light", paramtype = "light",
paramtype2 = "color", paramtype2 = "color",
palette = "unifieddyes_palette_extended.png", palette = "unifieddyes_palette_extended.png",
place_param2 = 240, place_param2 = 240,
groups = {cracky=3, ud_param2_colorable = 1}, groups = {cracky=3, ud_param2_colorable = 1},
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
on_construct = unifieddyes.on_construct,
after_place_node = unifieddyes.recolor_on_place,
after_dig_node = unifieddyes.after_dig_node after_dig_node = unifieddyes.after_dig_node
}) })
minetest.register_node("homedecor:bathroom_tiles_medium", { minetest.register_node("homedecor:bathroom_tiles_medium", {
description = S("Bathroom/kitchen tiles (medium)"), description = S("Bathroom/kitchen tiles (medium)"),
tiles = { tiles = {
{ name = "homedecor_bathroom_tiles_bg.png", color = 0xffc0c0c0 }, "homedecor_bathroom_tiles_bg.png"
"homedecor_bathroom_tiles_fg.png" },
overlay_tiles = {
{ name = "homedecor_bathroom_tiles_fg.png", color = 0xffc0c0c0 },
}, },
drawtype = "mesh",
mesh = "homedecor_block_with_overlay.obj",
paramtype = "light", paramtype = "light",
paramtype2 = "color", paramtype2 = "color",
palette = "unifieddyes_palette_extended.png", palette = "unifieddyes_palette_extended.png",
place_param2 = 240, place_param2 = 240,
groups = {cracky=3, ud_param2_colorable = 1}, groups = {cracky=3, ud_param2_colorable = 1},
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
on_construct = unifieddyes.on_construct,
after_place_node = unifieddyes.recolor_on_place,
after_dig_node = unifieddyes.after_dig_node after_dig_node = unifieddyes.after_dig_node
}) })
minetest.register_node("homedecor:bathroom_tiles_light", { minetest.register_node("homedecor:bathroom_tiles_light", {
description = S("Bathroom/kitchen tiles (light)"), description = S("Bathroom/kitchen tiles (light)"),
tiles = { tiles = {
{ name = "homedecor_bathroom_tiles_bg.png", color = 0xffffffff }, "homedecor_bathroom_tiles_bg.png"
"homedecor_bathroom_tiles_fg.png" },
overlay_tiles = {
{ name = "homedecor_bathroom_tiles_fg.png", color = 0xffffffff },
}, },
drawtype = "mesh",
mesh = "homedecor_block_with_overlay.obj",
paramtype = "light", paramtype = "light",
paramtype2 = "color", paramtype2 = "color",
palette = "unifieddyes_palette_extended.png", palette = "unifieddyes_palette_extended.png",
place_param2 = 240, place_param2 = 240,
groups = {cracky=3, ud_param2_colorable = 1}, groups = {cracky=3, ud_param2_colorable = 1},
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
on_construct = unifieddyes.on_construct,
after_place_node = unifieddyes.recolor_on_place,
after_dig_node = unifieddyes.after_dig_node after_dig_node = unifieddyes.after_dig_node
}) })

View File

@ -52,11 +52,13 @@ homedecor.register("bed_regular", {
on_rotate = screwdriver.disallow, on_rotate = screwdriver.disallow,
after_place_node = function(pos, placer, itemstack, pointed_thing) after_place_node = function(pos, placer, itemstack, pointed_thing)
unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
if not placer:get_player_control().sneak then if not placer:get_player_control().sneak then
return homedecor.bed_expansion(pos, placer, itemstack, pointed_thing) return homedecor.bed_expansion(pos, placer, itemstack, pointed_thing)
end end
end, end,
after_dig_node = function(pos) after_dig_node = function(pos, oldnode, oldmetadata, digger)
unifieddyes.after_dig_node(pos, oldnode, oldmetadata, digger)
homedecor.unextend_bed(pos) homedecor.unextend_bed(pos)
end, end,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
@ -91,7 +93,9 @@ homedecor.register("bed_extended", {
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
expand = { forward = "air" }, expand = { forward = "air" },
on_rotate = screwdriver.disallow, on_rotate = screwdriver.disallow,
after_dig_node = function(pos) after_place_node = unifieddyes.recolor_on_place,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
unifieddyes.after_dig_node(pos, oldnode, oldmetadata, digger)
homedecor.unextend_bed(pos) homedecor.unextend_bed(pos)
end, end,
-- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) -- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
@ -123,10 +127,14 @@ homedecor.register("bed_kingsize", {
node_box = kbed_cbox, node_box = kbed_cbox,
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
on_rotate = screwdriver.disallow, on_rotate = screwdriver.disallow,
after_place_node = unifieddyes.fix_rotation_nsew, after_place_node = function(pos, placer, itemstack, pointed_thing)
unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger) after_dig_node = function(pos, oldnode, oldmetadata, digger)
unifieddyes.after_dig_node(pos, oldnode, oldmetadata, digger)
local inv = digger:get_inventory() local inv = digger:get_inventory()
if digger:get_player_control().sneak and inv:room_for_item("main", "bed_regular 1") then if digger:get_player_control().sneak and inv:room_for_item("main", "homedecor:bed_regular 2") then
inv:remove_item("main", "homedecor:bed_kingsize 1") inv:remove_item("main", "homedecor:bed_kingsize 1")
inv:add_item("main", "homedecor:bed_regular 2") inv:add_item("main", "homedecor:bed_regular 2")
end end

View File

@ -1,155 +1,159 @@
local S = homedecor_i18n.gettext local S = homedecor_i18n.gettext
local function N_(x) return x end
local bookcolors = {
{ N_("red"), 0xffd26466 },
{ N_("green"), 0xff62aa66 },
{ N_("blue"), 0xff8686d7 },
{ N_("violet"), 0xff9c65a7 },
{ N_("grey"), 0xff757579 },
{ N_("brown"), 0xff896958 }
}
local BOOK_FORMNAME = "homedecor:book_form" local BOOK_FORMNAME = "homedecor:book_form"
local player_current_book = { } local player_current_book = { }
local function book_dig(pos, node, digger) for _, c in ipairs(bookcolors) do
if minetest.is_protected(pos, digger:get_player_name()) then return end local color, hue = unpack(c)
local meta = minetest.get_meta(pos)
local data = minetest.serialize({
title = meta:get_string("title") or "",
text = meta:get_string("text") or "",
owner = meta:get_string("owner") or "",
_recover = meta:get_string("_recover") or "",
})
local stack = ItemStack({
name = "homedecor:book",
metadata = data,
})
stack = digger:get_inventory():add_item("main", stack)
if not stack:is_empty() then
minetest.item_drop(stack, digger, pos)
end
minetest.remove_node(pos)
end
local inv_img = "homedecor_book_inv.png^homedecor_book_trim_inv.png" local function book_dig(pos, node, digger)
if minetest.is_protected(pos, digger:get_player_name()) then return end
homedecor.register("book", { local meta = minetest.get_meta(pos)
description = S("Writable Book"), local data = minetest.serialize({
mesh = "homedecor_book.obj", title = meta:get_string("title") or "",
tiles = { text = meta:get_string("text") or "",
"homedecor_book_cover.png", owner = meta:get_string("owner") or "",
{ name = "homedecor_book_edges.png", color = 0xffffffff }, _recover = meta:get_string("_recover") or "",
{ name = "homedecor_book_cover_trim.png", color = 0xffffffff }
},
inventory_image = inv_img,
wield_image = inv_img,
groups = { snappy=3, oddly_breakable_by_hand=3, book=1, ud_param2_colorable = 1 },
walkable = false,
paramtype2 = "colorwallmounted",
palette = "unifieddyes_palette_colorwallmounted.png",
after_dig_node = unifieddyes.after_dig_node,
stack_max = 1,
on_punch = function(pos, node, puncher, pointed_thing)
local fdir = node.param2
minetest.swap_node(pos, { name = "homedecor:book_open", param2 = fdir })
end,
on_place = function(itemstack, placer, pointed_thing)
local plname = placer:get_player_name()
local pos = pointed_thing.under
local node = minetest.get_node_or_nil(pos)
local def = node and minetest.registered_nodes[node.name]
if not def or not def.buildable_to then
pos = pointed_thing.above
node = minetest.get_node_or_nil(pos)
def = node and minetest.registered_nodes[node.name]
if not def or not def.buildable_to then return itemstack end
end
if minetest.is_protected(pos, plname) then return itemstack end
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
minetest.set_node(pos, {
name = "homedecor:book",
param2 = fdir,
}) })
local text = itemstack:get_metadata() or "" local stack = ItemStack({
local meta = minetest.get_meta(pos) name = "homedecor:book_"..color,
local data = minetest.deserialize(text) or {} metadata = data,
if type(data) ~= "table" then })
data = {} stack = digger:get_inventory():add_item("main", stack)
-- Store raw metadata in case some data is lost by the if not stack:is_empty() then
-- transition to the new meta format, so it is not lost minetest.item_drop(stack, digger, pos)
-- and can be recovered if needed.
meta:set_string("_recover", text)
end end
meta:set_string("title", data.title or "") minetest.remove_node(pos)
meta:set_string("text", data.text or "") end
meta:set_string("owner", data.owner or "")
if data.title and data.title ~= "" then
meta:set_string("infotext", data.title)
end
if not homedecor.expect_infinite_stacks then
itemstack:take_item()
end
unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
return itemstack
end,
on_rotate = unifieddyes.fix_after_screwdriver_nsew,
on_dig = book_dig,
selection_box = {
type = "fixed",
fixed = {-0.2, -0.5, -0.25, 0.2, -0.35, 0.25}
}
})
homedecor.register("book_open", { homedecor.register("book_"..color, {
mesh = "homedecor_book_open.obj", description = S("Writable Book (@1)", S(color)),
tiles = { mesh = "homedecor_book.obj",
"homedecor_book_cover.png", tiles = {
{ name = "homedecor_book_edges.png", color = 0xffffffff }, { name = "homedecor_book_cover.png", color = hue },
{ name = "homedecor_book_pages.png", color = 0xffffffff } { name = "homedecor_book_edges.png", color = "white" }
}, },
groups = { snappy=3, oddly_breakable_by_hand=3, not_in_creative_inventory=1, ud_param2_colorable = 1 }, overlay_tiles = {
drop = "homedecor:book", { name = "homedecor_book_cover_trim.png", color = "white" },
walkable = false, ""
paramtype2 = "colorwallmounted", },
palette = "unifieddyes_palette_colorwallmounted.png", groups = { snappy=3, oddly_breakable_by_hand=3, book=1 },
after_place_node = unifieddyes.fix_rotation_nsew, walkable = false,
after_dig_node = unifieddyes.after_dig_node, stack_max = 1,
on_rotate = unifieddyes.fix_after_screwdriver_nsew, on_punch = function(pos, node, puncher, pointed_thing)
on_dig = book_dig, local fdir = node.param2
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) minetest.swap_node(pos, { name = "homedecor:book_open_"..color, param2 = fdir })
local meta = minetest.get_meta(pos) end,
local player_name = clicker:get_player_name() on_place = function(itemstack, placer, pointed_thing)
local title = meta:get_string("title") or "" local plname = placer:get_player_name()
local text = meta:get_string("text") or "" local pos = pointed_thing.under
local owner = meta:get_string("owner") or "" local node = minetest.get_node_or_nil(pos)
local formspec local def = node and minetest.registered_nodes[node.name]
if owner == "" or owner == player_name then if not def or not def.buildable_to then
formspec = "size[8,8]"..default.gui_bg..default.gui_bg_img.. pos = pointed_thing.above
"field[0.5,1;7.5,0;title;Book title :;".. node = minetest.get_node_or_nil(pos)
minetest.formspec_escape(title).."]".. def = node and minetest.registered_nodes[node.name]
"textarea[0.5,1.5;7.5,7;text;Book content :;".. if not def or not def.buildable_to then return itemstack end
minetest.formspec_escape(text).."]".. end
"button_exit[2.5,7.5;3,1;save;Save]" if minetest.is_protected(pos, plname) then return itemstack end
else local fdir = minetest.dir_to_facedir(placer:get_look_dir())
formspec = "size[8,8]"..default.gui_bg.. minetest.set_node(pos, {
"button_exit[7,0.25;1,0.5;close;X]".. name = "homedecor:book_"..color,
default.gui_bg_img.. param2 = fdir,
"label[0.5,0.5;by "..owner.."]"..
"label[0.5,0;"..minetest.formspec_escape(title).."]"..
"textarea[0.5,1.5;7.5,7;;"..minetest.formspec_escape(text)..";]"
end
player_current_book[player_name] = pos
minetest.show_formspec(player_name, BOOK_FORMNAME, formspec)
return itemstack
end,
on_punch = function(pos, node, puncher, pointed_thing)
local fdir = node.param2
minetest.swap_node(pos, { name = "homedecor:book", param2 = fdir })
minetest.sound_play("homedecor_book_close", {
pos=pos,
max_hear_distance = 3,
gain = 2,
}) })
end, local text = itemstack:get_metadata() or ""
selection_box = { local meta = minetest.get_meta(pos)
type = "fixed", local data = minetest.deserialize(text) or {}
fixed = {-0.35, -0.5, -0.25, 0.35, -0.4, 0.25} if type(data) ~= "table" then
} data = {}
}) -- Store raw metadata in case some data is lost by the
-- transition to the new meta format, so it is not lost
-- and can be recovered if needed.
meta:set_string("_recover", text)
end
meta:set_string("title", data.title or "")
meta:set_string("text", data.text or "")
meta:set_string("owner", data.owner or "")
if data.title and data.title ~= "" then
meta:set_string("infotext", data.title)
end
if not creative.is_enabled_for(plname) then
itemstack:take_item()
end
return itemstack
end,
on_dig = book_dig,
selection_box = {
type = "fixed",
fixed = {-0.2, -0.5, -0.25, 0.2, -0.35, 0.25}
}
})
homedecor.register("book_open_"..color, {
mesh = "homedecor_book_open.obj",
tiles = {
{ name = "homedecor_book_cover.png", color = hue },
{ name = "homedecor_book_edges.png", color = "white" },
{ name = "homedecor_book_pages.png", color = "white" }
},
groups = { snappy=3, oddly_breakable_by_hand=3, not_in_creative_inventory=1 },
drop = "homedecor:book_"..color,
walkable = false,
on_dig = book_dig,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local meta = minetest.get_meta(pos)
local player_name = clicker:get_player_name()
local title = meta:get_string("title") or ""
local text = meta:get_string("text") or ""
local owner = meta:get_string("owner") or ""
local formspec
if owner == "" or owner == player_name then
formspec = "size[8,8]"..default.gui_bg..default.gui_bg_img..
"field[0.5,1;7.5,0;title;Book title :;"..
minetest.formspec_escape(title).."]"..
"textarea[0.5,1.5;7.5,7;text;Book content :;"..
minetest.formspec_escape(text).."]"..
"button_exit[2.5,7.5;3,1;save;Save]"
else
formspec = "size[8,8]"..default.gui_bg..
"button_exit[7,0.25;1,0.5;close;X]"..
default.gui_bg_img..
"label[0.5,0.5;by "..owner.."]"..
"label[0.5,0;"..minetest.formspec_escape(title).."]"..
"textarea[0.5,1.5;7.5,7;;"..minetest.formspec_escape(text)..";]"
end
player_current_book[player_name] = pos
minetest.show_formspec(player_name, BOOK_FORMNAME, formspec)
return itemstack
end,
on_punch = function(pos, node, puncher, pointed_thing)
local fdir = node.param2
minetest.swap_node(pos, { name = "homedecor:book_"..color, param2 = fdir })
minetest.sound_play("homedecor_book_close", {
pos=pos,
max_hear_distance = 3,
gain = 2,
})
end,
selection_box = {
type = "fixed",
fixed = {-0.35, -0.5, -0.25, 0.35, -0.4, 0.25}
}
})
end
minetest.register_on_player_receive_fields(function(player, form_name, fields) minetest.register_on_player_receive_fields(function(player, form_name, fields)
if form_name ~= BOOK_FORMNAME or not fields.save then if form_name ~= BOOK_FORMNAME or not fields.save then
@ -169,67 +173,5 @@ minetest.register_on_player_receive_fields(function(player, form_name, fields)
player:get_player_name(), fields.title, fields.text, minetest.pos_to_string(player:getpos()))) player:get_player_name(), fields.title, fields.text, minetest.pos_to_string(player:getpos())))
end) end)
-- convert old static nodes to param2 minetest.register_alias("homedecor:book", "homedecor:book_grey")
minetest.register_alias("homedecor:book_open", "homedecor:book_open_grey")
local bookcolors = {
"red",
"green",
"blue",
"violet",
"grey",
"brown"
}
homedecor.old_static_books = {}
for _, color in ipairs(bookcolors) do
table.insert(homedecor.old_static_books, "homedecor:book_"..color)
table.insert(homedecor.old_static_books, "homedecor:book_open_"..color)
end
minetest.register_lbm({
name = "homedecor:convert_books",
label = "Convert homedecor books to use param2 color",
run_at_every_load = false,
nodenames = homedecor.old_static_books,
action = function(pos, node)
local name = node.name
local color = string.sub(name, string.find(name, "_", -7)+1)
local newname = "homedecor:book"
if string.find(name, "open") then
newname = "homedecor:book_open"
end
local old_fdir = math.floor(node.param2 % 32)
local new_fdir = 3
if old_fdir == 0 then
new_fdir = 3
elseif old_fdir == 1 then
new_fdir = 4
elseif old_fdir == 2 then
new_fdir = 2
elseif old_fdir == 3 then
new_fdir = 5
end
if color == "grey" then
color = "dark_grey"
elseif color == "violet" then
color = "dark_magenta"
elseif color == "brown" then
color = "dark_orange"
elseif color == "blue" then
color = "light_blue"
else
color = "medium_"..color
end
local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
local param2 = paletteidx + new_fdir
minetest.swap_node(pos, { name = newname, param2 = param2 })
local meta = minetest.get_meta(pos)
meta:set_string("dye", "unifieddyes:"..color)
end
})

View File

@ -1298,15 +1298,7 @@ minetest.register_craft( {
-- other types of fences -- other types of fences
minetest.register_craft( { minetest.register_craft( {
output = "homedecor:fence_wrought_iron_2 2", output = "homedecor:fence_wrought_iron_2 4",
recipe = {
{ "homedecor:pole_wrought_iron", "default:iron_lump" },
{ "homedecor:pole_wrought_iron", "default:iron_lump" },
},
})
minetest.register_craft( {
output = "homedecor:fence_wrought_iron_2 2",
recipe = { recipe = {
{ "homedecor:pole_wrought_iron", "default:iron_lump" }, { "homedecor:pole_wrought_iron", "default:iron_lump" },
{ "homedecor:pole_wrought_iron", "default:iron_lump" }, { "homedecor:pole_wrought_iron", "default:iron_lump" },
@ -3022,10 +3014,28 @@ minetest.register_craft({
}) })
minetest.register_craft({ minetest.register_craft({
output = "homedecor:stained_glass", output = "homedecor:stained_glass 3",
recipe = { recipe = {
{"", "dye:blue", ""}, {"", "dye:blue", ""},
{"dye:red", "xpanes:pane", "dye:green"}, {"dye:red", "xpanes:pane_flat", "dye:green"},
{"", "dye:yellow", ""},
},
})
minetest.register_craft({
output = "homedecor:stained_glass 2",
recipe = {
{"", "dye:blue", ""},
{"dye:red", "cottages:glass_pane_side", "dye:green"},
{"", "dye:yellow", ""},
},
})
minetest.register_craft({
output = "homedecor:stained_glass 2",
recipe = {
{"", "dye:blue", ""},
{"dye:red", "cottages:glass_pane", "dye:green"},
{"", "dye:yellow", ""}, {"", "dye:yellow", ""},
}, },
}) })

View File

@ -118,7 +118,7 @@ minetest.register_alias("homedecor:deckchair_head", "air")
homedecor.register("deckchair_striped_blue", { homedecor.register("deckchair_striped_blue", {
mesh = "homedecor_deckchair.obj", mesh = "homedecor_deckchair.obj",
tiles = {"homedecor_deckchair_striped_blue.png"}, tiles = {"homedecor_deckchair_striped_blue.png"},
description = S("Deck Chair"), description = S("Deck Chair (blue striped)"),
groups = { snappy = 3 }, groups = { snappy = 3 },
expand = { forward="placeholder" }, expand = { forward="placeholder" },
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
@ -251,6 +251,7 @@ homedecor.register("swing", {
place_on = "bottom" place_on = "bottom"
}, },
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
local placer_name = placer:get_player_name() or ""
local isceiling, pos = homedecor.find_ceiling(itemstack, placer, pointed_thing) local isceiling, pos = homedecor.find_ceiling(itemstack, placer, pointed_thing)
if isceiling then if isceiling then
local height = 0 local height = 0
@ -263,7 +264,7 @@ homedecor.register("swing", {
if not testreg or not testreg.buildable_to then if not testreg or not testreg.buildable_to then
if i < 1 then if i < 1 then
minetest.chat_send_player(placer:get_player_name(), "No room under there to hang a swing.") minetest.chat_send_player(placer_name, "No room under there to hang a swing.")
return itemstack return itemstack
else else
break break
@ -279,11 +280,11 @@ homedecor.register("swing", {
minetest.set_node({ x=pos.x, y=pos.y-height, z=pos.z }, { name = "homedecor:swing", param2 = fdir }) minetest.set_node({ x=pos.x, y=pos.y-height, z=pos.z }, { name = "homedecor:swing", param2 = fdir })
if not homedecor.expect_infinite_stacks then if not creative.is_enabled_for(placer_name) then
itemstack:take_item() itemstack:take_item()
end end
else else
minetest.chat_send_player(placer:get_player_name(), "You have to point at the bottom side of an overhanging object to place a swing.") minetest.chat_send_player(placer_name, "You have to point at the bottom side of an overhanging object to place a swing.")
end end
return itemstack return itemstack
end, end,
@ -367,7 +368,7 @@ local shrub_cbox = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
for _, color in ipairs(homedecor.shrub_colors) do for _, color in ipairs(homedecor.shrub_colors) do
minetest.register_node("homedecor:shrubbery_large_"..color, { minetest.register_node("homedecor:shrubbery_large_"..color, {
description = S("Shrubbery (@1)", S(color)), description = S("Shrubbery (large, @1)", S(color)),
drawtype = "mesh", drawtype = "mesh",
mesh = "homedecor_cube.obj", mesh = "homedecor_cube.obj",
tiles = {"homedecor_shrubbery_"..color..".png"}, tiles = {"homedecor_shrubbery_"..color..".png"},

View File

@ -81,7 +81,10 @@ homedecor.register("kitchen_chair_padded", {
collision_box = kc_cbox, collision_box = kc_cbox,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, ud_param2_colorable = 1}, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, ud_param2_colorable = 1},
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
after_place_node = unifieddyes.fix_rotation_nsew, after_place_node = function(pos, placer, itemstack, pointed_thing)
unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
end,
after_dig_node = unifieddyes.after_dig_node, after_dig_node = unifieddyes.after_dig_node,
on_rotate = unifieddyes.fix_after_screwdriver_nsew, on_rotate = unifieddyes.fix_after_screwdriver_nsew,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
@ -105,7 +108,10 @@ homedecor.register("armchair", {
groups = {snappy=3, ud_param2_colorable = 1}, groups = {snappy=3, ud_param2_colorable = 1},
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
node_box = ac_cbox, node_box = ac_cbox,
after_place_node = unifieddyes.fix_rotation_nsew, after_place_node = function(pos, placer, itemstack, pointed_thing)
unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
end,
after_dig_node = unifieddyes.after_dig_node, after_dig_node = unifieddyes.after_dig_node,
on_rotate = unifieddyes.fix_after_screwdriver_nsew, on_rotate = unifieddyes.fix_after_screwdriver_nsew,
}) })
@ -162,7 +168,25 @@ minetest.register_alias('armchair', 'homedecor:armchair')
homedecor.old_static_chairs = {} homedecor.old_static_chairs = {}
for _, color in ipairs(lrfurn.colors) do local chair_colors = {
"black",
"brown",
"blue",
"cyan",
"dark_grey",
"dark_green",
"green",
"grey",
"magenta",
"orange",
"pink",
"red",
"violet",
"white",
"yellow",
}
for _, color in ipairs(chair_colors) do
table.insert(homedecor.old_static_chairs, "homedecor:chair_"..color) table.insert(homedecor.old_static_chairs, "homedecor:chair_"..color)
table.insert(homedecor.old_static_chairs, "homedecor:armchair_"..color) table.insert(homedecor.old_static_chairs, "homedecor:armchair_"..color)
end end

View File

@ -213,20 +213,24 @@ homedecor.register("soda_machine", {
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
on_rotate = screwdriver.rotate_simple, on_rotate = screwdriver.rotate_simple,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local playername = clicker:get_player_name()
local wielditem = clicker:get_wielded_item() local wielditem = clicker:get_wielded_item()
local wieldname = wielditem:get_name() local wieldname = wielditem:get_name()
local fdir_to_fwd = { {0, -1}, {-1, 0}, {0, 1}, {1, 0} } local fdir_to_fwd = { {0, -1}, {-1, 0}, {0, 1}, {1, 0} }
local fdir = node.param2 local fdir = node.param2
local pos_drop = { x=pos.x+fdir_to_fwd[fdir+1][1], y=pos.y, z=pos.z+fdir_to_fwd[fdir+1][2] } local pos_drop = { x=pos.x+fdir_to_fwd[fdir+1][1], y=pos.y, z=pos.z+fdir_to_fwd[fdir+1][2] }
if wieldname == "homedecor:coin" then if wieldname == "homedecor:coin" then
wielditem:take_item()
clicker:set_wielded_item(wielditem)
minetest.spawn_item(pos_drop, "homedecor:soda_can") minetest.spawn_item(pos_drop, "homedecor:soda_can")
minetest.sound_play("insert_coin", { minetest.sound_play("insert_coin", {
pos=pos, max_hear_distance = 5 pos=pos, max_hear_distance = 5
}) })
if not creative.is_enabled_for(playername) then
wielditem:take_item()
clicker:set_wielded_item(wielditem)
return wielditem
end
else else
minetest.chat_send_player(clicker:get_player_name(), S("Please insert a coin in the machine.")) minetest.chat_send_player(playername, S("Please insert a coin in the machine."))
end end
end end
}) })

View File

@ -53,18 +53,8 @@ homedecor.wall_fdir_to_fwd = {
{ -1, 0 }, { -1, 0 },
} }
local placeholder_node = "homedecor:expansion_placeholder" local placeholder_node = "air"
minetest.register_node(placeholder_node, { minetest.register_alias("homedecor:expansion_placeholder", "air")
description = S("Expansion placeholder (you hacker you!)"),
groups = { not_in_creative_inventory=1 },
drawtype = "airlike",
paramtype = "light",
walkable = false,
selection_box = { type = "fixed", fixed = { 0, 0, 0, 0, 0, 0 } },
is_ground_content = false,
sunlight_propagates = true,
buildable_to = false,
})
--- select which node was pointed at based on it being known, not ignored, buildable_to --- select which node was pointed at based on it being known, not ignored, buildable_to
-- returns nil if no node could be selected -- returns nil if no node could be selected
@ -94,7 +84,7 @@ local function is_buildable_to(placer_name, ...)
end end
-- place one or two nodes if and only if both can be placed -- place one or two nodes if and only if both can be placed
local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2) local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2, pointed_thing)
local placer_name = placer:get_player_name() or "" local placer_name = placer:get_player_name() or ""
if is_buildable_to(placer_name, pos, pos2) then if is_buildable_to(placer_name, pos, pos2) then
local lfdir = fdir or minetest.dir_to_facedir(placer:get_look_dir()) local lfdir = fdir or minetest.dir_to_facedir(placer:get_look_dir())
@ -111,10 +101,10 @@ local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2)
-- call after_place_node of the placed node if available -- call after_place_node of the placed node if available
local ctrl_node_def = minetest.registered_nodes[node1] local ctrl_node_def = minetest.registered_nodes[node1]
if ctrl_node_def and ctrl_node_def.after_place_node then if ctrl_node_def and ctrl_node_def.after_place_node then
ctrl_node_def.after_place_node(pos, placer) ctrl_node_def.after_place_node(pos, placer, itemstack, pointed_thing)
end end
if not homedecor.expect_infinite_stacks then if not creative.is_enabled_for(placer_name) then
itemstack:take_item() itemstack:take_item()
end end
end end
@ -140,7 +130,7 @@ function homedecor.stack_vertically(itemstack, placer, pointed_thing, node1, nod
local top_pos = { x=pos.x, y=pos.y+1, z=pos.z } local top_pos = { x=pos.x, y=pos.y+1, z=pos.z }
return stack(itemstack, placer, nil, pos, def, top_pos, node1, node2) return stack(itemstack, placer, nil, pos, def, top_pos, node1, node2, pointed_thing)
end end
-- Stack one door node above another -- Stack one door node above another
@ -162,7 +152,7 @@ function homedecor.stack_wing(itemstack, placer, pointed_thing, node1, node2, no
end end
local top_pos = { x=pos.x, y=pos.y+1, z=pos.z } local top_pos = { x=pos.x, y=pos.y+1, z=pos.z }
return stack(itemstack, placer, fdir, pos, def, top_pos, node1, node2) return stack(itemstack, placer, fdir, pos, def, top_pos, node1, node2, pointed_thing)
end end
function homedecor.stack_sideways(itemstack, placer, pointed_thing, node1, node2, dir) function homedecor.stack_sideways(itemstack, placer, pointed_thing, node1, node2, dir)
@ -177,13 +167,14 @@ function homedecor.stack_sideways(itemstack, placer, pointed_thing, node1, node2
local pos2 = { x = pos.x + fdir_transform[fdir+1][1], y=pos.y, z = pos.z + fdir_transform[fdir+1][2] } local pos2 = { x = pos.x + fdir_transform[fdir+1][1], y=pos.y, z = pos.z + fdir_transform[fdir+1][2] }
return stack(itemstack, placer, fdir, pos, def, pos2, node1, node2) return stack(itemstack, placer, fdir, pos, def, pos2, node1, node2, pointed_thing)
end end
function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, trybunks) function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, trybunks)
local thisnode = minetest.get_node(pos) local thisnode = minetest.get_node(pos)
local fdir = thisnode.param2 local param2 = thisnode.param2
local fdir = param2 % 8
local fxd = homedecor.wall_fdir_to_fwd[fdir+1][1] local fxd = homedecor.wall_fdir_to_fwd[fdir+1][1]
local fzd = homedecor.wall_fdir_to_fwd[fdir+1][2] local fzd = homedecor.wall_fdir_to_fwd[fdir+1][2]
@ -219,14 +210,23 @@ function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, trybunks
local rightpos = {x=pos.x+rxd, y=pos.y, z=pos.z+rzd} local rightpos = {x=pos.x+rxd, y=pos.y, z=pos.z+rzd}
local rightnode = minetest.get_node(rightpos) local rightnode = minetest.get_node(rightpos)
local inv = placer:get_inventory()
local lastdye = unifieddyes.last_used_dye[placer_name]
if leftnode.name == "homedecor:bed_regular" then if leftnode.name == "homedecor:bed_regular" then
local newname = string.gsub(thisnode.name, "_regular", "_kingsize") local newname = string.gsub(thisnode.name, "_regular", "_kingsize")
local meta = minetest.get_meta(leftpos)
minetest.set_node(pos, {name = "air"}) minetest.set_node(pos, {name = "air"})
minetest.set_node(leftpos, { name = newname, param2 = fdir}) minetest.set_node(leftpos, { name = newname, param2 = param2})
meta:set_string("dye", lastdye)
inv:add_item("main", lastdye)
elseif rightnode.name == "homedecor:bed_regular" then elseif rightnode.name == "homedecor:bed_regular" then
local newname = string.gsub(thisnode.name, "_regular", "_kingsize") local newname = string.gsub(thisnode.name, "_regular", "_kingsize")
local meta = minetest.get_meta(rightpos)
minetest.set_node(rightpos, {name = "air"}) minetest.set_node(rightpos, {name = "air"})
minetest.set_node(pos, { name = newname, param2 = fdir}) minetest.set_node(pos, { name = newname, param2 = param2})
meta:set_string("dye", lastdye)
inv:add_item("main", lastdye)
end end
local toppos = {x=pos.x, y=pos.y+1.0, z=pos.z} local toppos = {x=pos.x, y=pos.y+1.0, z=pos.z}
@ -234,18 +234,26 @@ function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, trybunks
if trybunks and is_buildable_to(placer_name, toppos, topposfwd) then if trybunks and is_buildable_to(placer_name, toppos, topposfwd) then
local newname = string.gsub(thisnode.name, "_regular", "_extended") local newname = string.gsub(thisnode.name, "_regular", "_extended")
minetest.set_node(toppos, { name = thisnode.name, param2 = fdir}) local newparam2 = param2 % 8
minetest.set_node(pos, { name = newname, param2 = fdir}) if inv:contains_item("main", lastdye) then
minetest.set_node(toppos, { name = thisnode.name, param2 = param2})
if lastdye then inv:remove_item("main", lastdye.." 1") end
else
minetest.set_node(toppos, { name = thisnode.name, param2 = newparam2})
minetest.chat_send_player(placer_name, "Ran out of "..lastdye..", using neutral color.")
unifieddyes.last_used_dye[placer_name] = nil
end
minetest.swap_node(pos, { name = newname, param2 = param2})
itemstack:take_item() itemstack:take_item()
end end
end end
function homedecor.unextend_bed(pos) function homedecor.unextend_bed(pos)
local bottomnode = minetest.get_node({x=pos.x, y=pos.y-1.0, z=pos.z}) local bottomnode = minetest.get_node({x=pos.x, y=pos.y-1.0, z=pos.z})
local fdir = bottomnode.param2 local param2 = bottomnode.param2
if bottomnode.name == "homedecor:bed_extended" then if bottomnode.name == "homedecor:bed_extended" then
local newname = string.gsub(bottomnode.name, "_extended", "_regular") local newname = string.gsub(bottomnode.name, "_extended", "_regular")
minetest.set_node({x=pos.x, y=pos.y-1.0, z=pos.z}, { name = newname, param2 = fdir}) minetest.swap_node({x=pos.x, y=pos.y-1.0, z=pos.z}, { name = newname, param2 = param2})
end end
end end

View File

@ -11,12 +11,8 @@ local modpath = minetest.get_modpath("homedecor")
local S = homedecor_i18n.gettext local S = homedecor_i18n.gettext
homedecor = { homedecor = {}
modpath = modpath, homedecor.modpath = modpath
-- infinite stacks
expect_infinite_stacks = minetest.setting_getbool("creative_mode") and not minetest.get_modpath("unified_inventory")
}
-- Determine if the item being pointed at is the underside of a node (e.g a ceiling) -- Determine if the item being pointed at is the underside of a node (e.g a ceiling)
function homedecor.find_ceiling(itemstack, placer, pointed_thing) function homedecor.find_ceiling(itemstack, placer, pointed_thing)

View File

@ -21,6 +21,15 @@ minetest.register_node("homedecor:glowlight_half", {
"homedecor_glowlight_thick_sides.png", "homedecor_glowlight_thick_sides.png",
"homedecor_glowlight_thick_sides.png" "homedecor_glowlight_thick_sides.png"
}, },
overlay_tiles = {
{ name = "homedecor_glowlight_top_overlay.png", color = "white"},
"",
{ name = "homedecor_glowlight_thick_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_thick_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_thick_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_thick_sides_overlay.png", color = "white"},
},
use_texture_alpha = true,
drawtype = "nodebox", drawtype = "nodebox",
paramtype = "light", paramtype = "light",
paramtype2 = "colorwallmounted", paramtype2 = "colorwallmounted",
@ -35,7 +44,10 @@ minetest.register_node("homedecor:glowlight_half", {
groups = { snappy = 3, ud_param2_colorable = 1 }, groups = { snappy = 3, ud_param2_colorable = 1 },
light_source = default.LIGHT_MAX, light_source = default.LIGHT_MAX,
sounds = default.node_sound_glass_defaults(), sounds = default.node_sound_glass_defaults(),
after_place_node = unifieddyes.fix_rotation, after_place_node = function(pos, placer, itemstack, pointed_thing)
unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
end,
after_dig_node = unifieddyes.after_dig_node after_dig_node = unifieddyes.after_dig_node
}) })
@ -49,6 +61,15 @@ minetest.register_node("homedecor:glowlight_quarter", {
"homedecor_glowlight_thin_sides.png", "homedecor_glowlight_thin_sides.png",
"homedecor_glowlight_thin_sides.png" "homedecor_glowlight_thin_sides.png"
}, },
overlay_tiles = {
{ name = "homedecor_glowlight_top_overlay.png", color = "white"},
"",
{ name = "homedecor_glowlight_thin_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_thin_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_thin_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_thin_sides_overlay.png", color = "white"},
},
use_texture_alpha = true,
drawtype = "nodebox", drawtype = "nodebox",
paramtype = "light", paramtype = "light",
paramtype2 = "colorwallmounted", paramtype2 = "colorwallmounted",
@ -63,7 +84,10 @@ minetest.register_node("homedecor:glowlight_quarter", {
groups = { snappy = 3, ud_param2_colorable = 1 }, groups = { snappy = 3, ud_param2_colorable = 1 },
light_source = default.LIGHT_MAX-1, light_source = default.LIGHT_MAX-1,
sounds = default.node_sound_glass_defaults(), sounds = default.node_sound_glass_defaults(),
after_place_node = unifieddyes.fix_rotation, after_place_node = function(pos, placer, itemstack, pointed_thing)
unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
end,
after_dig_node = unifieddyes.after_dig_node after_dig_node = unifieddyes.after_dig_node
}) })
@ -77,6 +101,15 @@ minetest.register_node("homedecor:glowlight_small_cube", {
"homedecor_glowlight_cube_sides.png", "homedecor_glowlight_cube_sides.png",
"homedecor_glowlight_cube_sides.png" "homedecor_glowlight_cube_sides.png"
}, },
overlay_tiles = {
{ name = "homedecor_glowlight_cube_tb_overlay.png", color = "white"},
{ name = "homedecor_glowlight_cube_tb_overlay.png", color = "white"},
{ name = "homedecor_glowlight_cube_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_cube_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_cube_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_cube_sides_overlay.png", color = "white"},
},
use_texture_alpha = true,
paramtype = "light", paramtype = "light",
paramtype2 = "colorwallmounted", paramtype2 = "colorwallmounted",
drawtype = "nodebox", drawtype = "nodebox",
@ -91,15 +124,19 @@ minetest.register_node("homedecor:glowlight_small_cube", {
groups = { snappy = 3, ud_param2_colorable = 1 }, groups = { snappy = 3, ud_param2_colorable = 1 },
light_source = default.LIGHT_MAX-1, light_source = default.LIGHT_MAX-1,
sounds = default.node_sound_glass_defaults(), sounds = default.node_sound_glass_defaults(),
after_place_node = unifieddyes.fix_rotation, after_place_node = function(pos, placer, itemstack, pointed_thing)
unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
end,
after_dig_node = unifieddyes.after_dig_node after_dig_node = unifieddyes.after_dig_node
}) })
homedecor.register("plasma_lamp", { homedecor.register("plasma_lamp", {
description = S("Plasma Lamp"), description = S("Plasma Lamp"),
drawtype = "glasslike_framed", drawtype = "mesh",
tiles = {"default_gold_block.png","homedecor_glass_face_clean.png"}, mesh = "plasma_lamp.obj",
special_tiles = { tiles = {
"default_gold_block.png",
{ {
name="homedecor_plasma_storm.png", name="homedecor_plasma_storm.png",
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0}, animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0},
@ -110,16 +147,13 @@ homedecor.register("plasma_lamp", {
sunlight_propagates = true, sunlight_propagates = true,
groups = {cracky=3,oddly_breakable_by_hand=3}, groups = {cracky=3,oddly_breakable_by_hand=3},
sounds = default.node_sound_glass_defaults(), sounds = default.node_sound_glass_defaults(),
after_place_node = function(pos, placer, itemstack, pointed_thing)
minetest.swap_node(pos, {name = "homedecor:plasma_lamp", param2 = 255})
end
}) })
homedecor.register("plasma_ball", { homedecor.register("plasma_ball", {
description = S("Plasma Ball"), description = S("Plasma Ball"),
mesh = "homedecor_plasma_ball.obj", mesh = "homedecor_plasma_ball.obj",
tiles = { tiles = {
"homedecor_generic_plastic.png", { name = "homedecor_generic_plastic.png", color = homedecor.color_black },
{ {
name = "homedecor_plasma_ball_streamers.png", name = "homedecor_plasma_ball_streamers.png",
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0}, animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0},
@ -428,6 +462,8 @@ local function reg_lamp(suffix, nxt, light, brightness)
node.name = "homedecor:table_lamp_"..repl[suffix] node.name = "homedecor:table_lamp_"..repl[suffix]
minetest.set_node(pos, node) minetest.set_node(pos, node)
end, end,
on_construct = unifieddyes.on_construct,
after_place_node = unifieddyes.recolor_on_place,
after_dig_node = unifieddyes.after_dig_node after_dig_node = unifieddyes.after_dig_node
}) })
@ -457,8 +493,10 @@ local function reg_lamp(suffix, nxt, light, brightness)
node.name = "homedecor:standing_lamp_"..repl[suffix] node.name = "homedecor:standing_lamp_"..repl[suffix]
minetest.set_node(pos, node) minetest.set_node(pos, node)
end, end,
on_construct = unifieddyes.on_construct,
after_place_node = unifieddyes.recolor_on_place,
after_dig_node = unifieddyes.after_dig_node, after_dig_node = unifieddyes.after_dig_node,
expand = { top="placeholder" }, expand = { top="air" },
}) })
-- for old maps that had the original 3dforniture mod -- for old maps that had the original 3dforniture mod
@ -495,7 +533,10 @@ homedecor.register("desk_lamp", {
node_box = dlamp_cbox, node_box = dlamp_cbox,
walkable = false, walkable = false,
groups = {snappy=3, ud_param2_colorable = 1}, groups = {snappy=3, ud_param2_colorable = 1},
after_place_node = unifieddyes.fix_rotation_nsew, after_place_node = function(pos, placer, itemstack, pointed_thing)
unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
end,
after_dig_node = unifieddyes.after_dig_node, after_dig_node = unifieddyes.after_dig_node,
on_rotate = unifieddyes.fix_after_screwdriver_nsew on_rotate = unifieddyes.fix_after_screwdriver_nsew
}) })

View File

@ -396,7 +396,7 @@ local n = { 1, 2 }
for _, i in ipairs(n) do for _, i in ipairs(n) do
homedecor.register("picture_frame"..i, { homedecor.register("picture_frame"..i, {
description = S("Picture Frame"), description = S("Picture Frame "..i),
mesh = "homedecor_picture_frame.obj", mesh = "homedecor_picture_frame.obj",
tiles = { tiles = {
"homedecor_picture_frame_image"..i..".png", "homedecor_picture_frame_image"..i..".png",

View File

@ -1,44 +0,0 @@
# Blender v2.72 (sub 0) OBJ File: 'unifiedbricks_brick_block.blend'
# www.blender.org
o Cube
v 0.496092 0.496092 0.496092
v 0.496092 0.496092 -0.496092
v -0.496092 0.496092 -0.496092
v -0.496092 0.496092 0.496092
v 0.496092 -0.496092 0.496092
v 0.496092 -0.496092 -0.496092
v -0.496092 -0.496092 -0.496092
v -0.496092 -0.496092 0.496092
v 0.499750 0.499750 0.499750
v 0.499750 0.499750 -0.499750
v -0.499750 0.499750 -0.499750
v -0.499750 0.499750 0.499750
v 0.499750 -0.499750 0.499750
v 0.499750 -0.499750 -0.499750
v -0.499750 -0.499750 -0.499750
v -0.499750 -0.499750 0.499750
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn -1.000000 0.000000 0.000000
vn 0.000000 1.000000 0.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 0.000000 1.000000
g Cube_Cube_base
s off
f 8/1/1 7/2/1 6/3/1 5/4/1
f 4/2/2 3/3/2 7/4/2 8/1/2
f 1/3/3 2/4/3 3/1/3 4/2/3
f 2/2/4 1/3/4 5/4/4 6/1/4
f 3/2/5 2/3/5 6/4/5 7/1/5
f 1/2/6 4/3/6 8/4/6 5/1/6
g Cube_Cube_overlay
f 16/1/1 15/2/1 14/3/1 13/4/1
f 12/2/2 11/3/2 15/4/2 16/1/2
f 9/3/3 10/4/3 11/1/3 12/2/3
f 10/2/4 9/3/4 13/4/4 14/1/4
f 11/2/5 10/3/5 14/4/5 15/1/5
f 9/2/6 12/3/6 16/4/6 13/1/6

View File

@ -1,243 +1,206 @@
# Blender v2.72 (sub 0) OBJ File: 'book.blend' # Blender v2.78 (sub 0) OBJ File: 'book.blend'
# www.blender.org # www.blender.org
o Cube.002_Cube.001 o Cube.002_Cube.001
v -0.216625 -0.161995 -0.448008 v 0.161995 -0.448008 0.216625
v -0.216625 -0.149566 -0.485966 v 0.149566 -0.485966 0.216625
v -0.216625 -0.113157 -0.485966 v 0.113157 -0.485966 0.216625
v -0.216625 -0.142021 -0.448008 v 0.142021 -0.448008 0.216625
v -0.208120 -0.115781 -0.485966 v 0.115781 -0.485966 0.208120
v -0.208120 -0.142021 -0.448008 v 0.142021 -0.448008 0.208120
v 0.220555 -0.113157 -0.485966 v 0.113157 -0.485966 -0.220555
v 0.220555 0.159347 -0.485966 v -0.159347 -0.485966 -0.220555
v 0.212050 -0.115781 -0.485966 v 0.115781 -0.485966 -0.212050
v -0.208120 -0.161995 -0.448008 v 0.161995 -0.448008 0.208120
v -0.208120 0.148926 -0.485966 v -0.148926 -0.485966 0.208120
v -0.208120 0.155653 -0.448008 v -0.155653 -0.448008 0.208120
v 0.212051 0.155653 -0.448008 v -0.155653 -0.448008 -0.212051
v 0.212051 0.148926 -0.485966 v -0.148926 -0.485966 -0.212051
v -0.208120 -0.152482 -0.485966 v 0.152482 -0.485966 0.208120
v 0.212050 -0.152482 -0.485966 v 0.152482 -0.485966 -0.212050
v 0.220555 -0.161995 -0.448008 v 0.161995 -0.448008 -0.220555
v 0.212050 -0.161995 -0.448008 v 0.161995 -0.448008 -0.212050
v 0.212050 -0.145193 -0.500002 v 0.145193 -0.500002 -0.212050
v -0.208120 -0.145193 -0.500002 v 0.145193 -0.500002 0.208120
v -0.208120 -0.115781 -0.500002 v 0.115781 -0.500002 0.208120
v 0.212050 -0.115781 -0.500002 v 0.115781 -0.500002 -0.212050
v 0.212050 -0.115781 -0.396013 v 0.115781 -0.396013 -0.212050
v -0.208120 -0.115781 -0.396013 v 0.115781 -0.396013 0.208120
v -0.208120 -0.145193 -0.396013 v 0.145193 -0.396013 0.208120
v 0.212050 -0.145193 -0.396013 v 0.145193 -0.396013 -0.212050
v 0.212050 -0.152482 -0.410049 v 0.152482 -0.410049 -0.212050
v -0.208120 -0.152482 -0.410049 v 0.152482 -0.410049 0.208120
v 0.212051 0.148926 -0.410049 v -0.148926 -0.410049 -0.212051
v -0.208120 0.148926 -0.410049 v -0.148926 -0.410049 0.208120
v 0.212050 -0.115781 -0.410049 v 0.115781 -0.410049 -0.212050
v 0.220555 0.159347 -0.410049 v -0.159347 -0.410049 -0.220555
v 0.220555 -0.113157 -0.410049 v 0.113157 -0.410049 -0.220555
v -0.208120 -0.115781 -0.410049 v 0.115781 -0.410049 0.208120
v -0.216625 -0.113157 -0.410049 v 0.113157 -0.410049 0.216625
v -0.216625 -0.149566 -0.410049 v 0.149566 -0.410049 0.216625
v -0.216625 -0.115781 -0.396013 v 0.115781 -0.396013 0.216625
v -0.216625 -0.141549 -0.396013 v 0.141549 -0.396013 0.216625
v 0.220555 -0.149566 -0.410049 v 0.149566 -0.410049 -0.220555
v 0.220555 -0.141549 -0.396013 v 0.141549 -0.396013 -0.220555
v 0.220555 0.159346 -0.396013 v -0.159346 -0.396013 -0.220555
v -0.216624 0.159347 -0.396013 v -0.159347 -0.396013 0.216624
v 0.220555 -0.115781 -0.396013 v 0.115781 -0.396013 -0.220555
v -0.216624 0.159347 -0.410049 v -0.159347 -0.410049 0.216624
v -0.216625 -0.115781 -0.500002 v 0.115781 -0.500002 0.216625
v -0.216625 -0.141549 -0.500002 v 0.141549 -0.500002 0.216625
v 0.212050 -0.142021 -0.448008 v 0.142021 -0.448008 -0.212050
v 0.220555 -0.149566 -0.485966 v 0.149566 -0.485966 -0.220555
v 0.220555 -0.141549 -0.500002 v 0.141549 -0.500002 -0.220555
v 0.220555 0.159346 -0.500002 v -0.159346 -0.500002 -0.220555
v -0.216624 0.159347 -0.500002 v -0.159347 -0.500002 0.216624
v 0.220555 -0.142021 -0.448008 v 0.142021 -0.448008 -0.220555
v 0.220555 -0.115781 -0.500002 v 0.115781 -0.500002 -0.220555
v -0.216624 0.159347 -0.485966 v -0.159347 -0.485966 0.216624
v -0.216625 -0.162729 -0.448008 vt 0.9220 0.3839
v -0.216625 -0.150269 -0.486432 vt 0.9220 0.3404
v -0.208120 -0.162729 -0.448008 vt 0.9318 0.3404
v -0.208120 -0.153192 -0.486432 vt 0.9318 0.3839
v 0.212050 -0.153192 -0.486432 vt 0.9318 0.4273
v 0.220555 -0.162729 -0.448008 vt 0.9220 0.4273
v 0.212050 -0.162729 -0.448008 vt 0.7681 0.4903
v 0.212050 -0.145885 -0.500640 vt 0.7230 0.4903
v -0.208120 -0.145885 -0.500640 vt 0.7230 0.0097
v -0.208120 -0.116399 -0.500640 vt 0.7681 0.0097
v 0.212050 -0.116399 -0.500640 vt 0.7681 0.5000
v 0.212050 -0.116399 -0.395375 vt 0.7224 0.5000
v -0.208120 -0.116399 -0.395375 vt 0.8096 0.4903
v -0.208120 -0.145885 -0.395375 vt 0.8091 0.5000
v 0.212050 -0.145885 -0.395375 vt 0.3524 0.0000
v 0.212050 -0.153192 -0.409583 vt 0.6708 0.0000
v -0.208120 -0.153192 -0.409583 vt 0.6708 0.0097
v -0.216625 -0.150269 -0.409583 vt 0.6708 0.4903
v -0.216625 -0.116399 -0.395375 vt 0.6708 0.5000
v -0.216625 -0.142232 -0.395375 vt 0.3524 0.5000
v 0.220555 -0.150269 -0.409583 vt 0.8096 0.0097
v 0.220555 -0.142232 -0.395375 vt 0.8091 0.0000
v 0.220555 0.159416 -0.395375 vt 0.8236 0.0000
v -0.216624 0.159417 -0.395375 vt 0.8243 0.0097
v 0.220555 -0.116399 -0.395375 vt 0.0121 0.5097
v -0.216625 -0.116399 -0.500640 vt 0.0000 0.5000
v -0.216625 -0.142232 -0.500640 vt 0.3154 0.5000
v 0.220555 -0.150269 -0.486432 vt 0.3184 0.5097
v 0.220555 -0.142232 -0.500640 vt 0.7006 0.0000
v 0.220555 0.159416 -0.500640 vt 0.7049 0.0097
v -0.216624 0.159417 -0.500640 vt 0.7310 0.8675
v 0.220555 -0.116399 -0.500640 vt 0.7310 0.8447
vt 0.921987 0.383861 vt 0.7749 0.8117
vt 0.921987 0.340448 vt 0.7749 0.8533
vt 0.931829 0.340448 vt 0.6871 0.8533
vt 0.931829 0.383861 vt 0.6871 0.8117
vt 0.931829 0.427274 vt 0.7749 0.5000
vt 0.921987 0.427274 vt 0.7912 0.5000
vt 0.768089 0.490273 vt 0.7912 0.8147
vt 0.722954 0.490273 vt 0.7912 0.8441
vt 0.722954 0.009727 vt 0.8513 0.5228
vt 0.768089 0.009727 vt 0.8513 0.5000
vt 0.768089 0.500000 vt 0.8953 0.5142
vt 0.722404 0.500000 vt 0.8953 0.5559
vt 0.809636 0.490273 vt 0.9220 0.3404
vt 0.809086 0.500000 vt 0.9220 0.3839
vt 0.352434 0.000000 vt 0.9121 0.3839
vt 0.670829 0.000000 vt 0.9121 0.3404
vt 0.670829 0.009727 vt 0.3346 0.5000
vt 0.670829 0.490273 vt 0.3346 1.0000
vt 0.670829 0.500000 vt 0.3184 1.0000
vt 0.352433 0.499999 vt 0.3184 0.5000
vt 0.809636 0.009727 vt 0.8953 0.8675
vt 0.809086 0.000000 vt 0.9115 0.5234
vt 0.823601 0.000000 vt 0.9115 0.5529
vt 0.824288 0.009727 vt 0.9115 0.8675
vt 0.012060 0.509727 vt 0.8243 0.4903
vt 0.000000 0.500001 vt 0.8236 0.5000
vt 0.315359 0.500000 vt 0.8074 0.5559
vt 0.318396 0.509727 vt 0.8074 0.5142
vt 0.700649 0.000000 vt 0.7681 0.0000
vt 0.704866 0.009727 vt 0.7224 0.0000
vt 0.731001 0.867517 vt 0.9220 0.4273
vt 0.731001 0.844673 vt 0.9121 0.4273
vt 0.774928 0.811661 vt 0.3184 0.9903
vt 0.774928 0.853302 vt 0.3154 1.0000
vt 0.687072 0.853302 vt 0.0000 1.0000
vt 0.687072 0.811661 vt 0.0121 0.9903
vt 0.774928 0.500000 vt 0.7049 0.4903
vt 0.791171 0.500000 vt 0.3184 0.4903
vt 0.791171 0.814662 vt 0.3184 0.0097
vt 0.791171 0.844133 vt 0.3524 0.0097
vt 0.851343 0.522844 vt 0.3524 0.4903
vt 0.851343 0.500000 vt 0.7056 0.4903
vt 0.895271 0.514215 vt 0.7056 0.0097
vt 0.895271 0.555856 vt 0.6708 0.5097
vt 0.912144 0.383862 vt 0.3645 0.5097
vt 0.912144 0.340448 vt 0.3524 0.5000
vt 0.334639 0.500000 vt 0.6678 0.5000
vt 0.334639 0.999999 vt 0.3184 0.0000
vt 0.318396 0.999999 vt 0.3482 0.0000
vt 0.318396 0.500000 vt 0.7049 0.5000
vt 0.895271 0.867517 vt 0.8074 0.8675
vt 0.911514 0.523384 vt 0.7912 0.8675
vt 0.911514 0.552855 vt 0.7912 0.5529
vt 0.911514 0.867516 vt 0.7912 0.5234
vt 0.824288 0.490273 vt 0.3362 0.5000
vt 0.823601 0.500000 vt 0.3524 1.0000
vt 0.807415 0.555856 vt 0.3362 1.0000
vt 0.807415 0.514215 vt 0.6708 0.8441
vt 0.768089 0.000000 vt 0.6708 0.8147
vt 0.722404 0.000000 vt 0.6708 0.5000
vt 0.912144 0.427274 vt 0.6871 0.5000
vt 0.318396 0.990273 vt 0.3482 0.5000
vt 0.315359 1.000000 vt 0.3184 0.5000
vt 0.000000 1.000000 vt 0.3645 0.9903
vt 0.012060 0.990274 vt 0.6708 0.9903
vt 0.704866 0.490273 vt 0.6678 1.0000
vt 0.318396 0.490273 vt 0.7049 0.0000
vt 0.318396 0.009727 vt 0.0000 0.5000
vt 0.352433 0.009727 vt 0.0000 0.0000
vt 0.352433 0.490273 vt 0.6685 0.6398
vt 0.705553 0.490273 vt 0.6407 0.6398
vt 0.705553 0.009727 vt 0.6407 0.6306
vt 0.670829 0.509727 vt 0.6725 0.6306
vt 0.364493 0.509726 vt 0.4393 1.0000
vt 0.667792 0.500000 vt 0.4393 0.3191
vt 0.318396 0.000000 vt 0.5272 0.3791
vt 0.348216 0.000000 vt 0.5272 0.9846
vt 0.704866 0.500000 vt 0.0879 1.0000
vt 0.807415 0.867517 vt 0.0879 0.3191
vt 0.791172 0.867516 vt 0.1757 0.3345
vt 0.791171 0.552855 vt 0.1757 0.9400
vt 0.791171 0.523384 vt 0.3514 0.9846
vt 0.336190 0.500000 vt 0.3514 0.3791
vt 0.352433 0.999999 vt 0.0000 0.9400
vt 0.336190 0.999999 vt 0.0000 0.3345
vt 0.670829 0.844133 vt 0.3514 0.0000
vt 0.670829 0.814662 vt 0.3514 0.9611
vt 0.687072 0.500000 vt 0.2636 0.9611
vt 0.348216 0.500000 vt 0.2636 0.0000
vt 0.364493 0.990273 vt 0.1757 0.0000
vt 0.670829 0.990273 vt 0.1757 0.9611
vt 0.667792 1.000000 vn -0.8031 -0.5829 0.1239
vt 0.704866 0.000000 vn -0.8030 0.5829 0.1239
vt 0.000000 0.000001 vn 0.9700 0.2431 -0.0000
vt 0.668539 0.639838 vn 0.9479 0.2740 -0.1625
vt 0.640677 0.639838 vn 0.9479 -0.2740 -0.1625
vt 0.640677 0.630641 vn -0.0000 -1.0000 -0.0000
vt 0.672479 0.630641 vn 0.8316 -0.4534 0.3207
vt 0.439305 1.000000 vn 0.0000 1.0000 -0.0000
vt 0.439305 0.319104 vn 0.0000 0.0000 1.0000
vt 0.527160 0.379125 vn 0.0000 0.0000 -1.0000
vt 0.527160 0.984613 vn -0.8031 -0.5829 -0.1239
vt 0.087857 1.000000 vn -1.0000 -0.0000 -0.0000
vt 0.087857 0.319104 vn 0.8316 -0.4534 -0.3207
vt 0.175712 0.334491 vn 0.9479 -0.2740 0.1625
vt 0.175712 0.939979 vn 0.9700 -0.2431 -0.0000
vt 0.351448 0.984613 vn 0.9479 0.2740 0.1625
vt 0.351448 0.379125 vn -0.8030 0.5829 -0.1239
vt 0.000000 0.939979 vn 0.8875 -0.4609 -0.0000
vt 0.000000 0.334491 vn 0.8875 0.4609 -0.0000
vt 0.351448 0.000000 vn 0.8316 0.4534 -0.3207
vt 0.351448 0.961094 vn 0.8316 0.4534 0.3207
vt 0.263593 0.961094 vn -0.9847 -0.1745 0.0000
vt 0.263593 0.000000 vn -0.9847 0.1745 0.0000
vt 0.175736 0.000000
vt 0.175736 0.961094
vn -0.123900 0.803100 -0.582900
vn -0.123900 0.803000 0.582900
vn 0.000000 -0.970000 0.243100
vn 0.162500 -0.947900 0.274000
vn 0.162500 -0.947900 -0.274000
vn 0.000000 0.000000 -1.000000
vn -0.320700 -0.831600 -0.453400
vn 0.000000 -0.000000 1.000000
vn -1.000000 0.000000 0.000000
vn 1.000000 0.000000 0.000000
vn 0.123900 0.803100 -0.582900
vn 0.000000 1.000000 -0.000000
vn 0.320700 -0.831600 -0.453400
vn -0.162500 -0.947900 -0.274000
vn 0.000000 -0.970000 -0.243100
vn -0.162500 -0.947900 0.274000
vn 0.123900 0.803000 0.582900
vn 0.000000 -0.887500 -0.460900
vn 0.000000 -0.887500 0.460900
vn 0.320700 -0.831600 0.453400
vn -0.320700 -0.831600 0.453400
vn 0.000000 0.984700 -0.174500
vn -0.000000 0.984700 0.174500
vn 0.000000 -0.970600 0.240900
vn 0.163000 -0.948500 0.271500
vn 0.163000 -0.948500 -0.271500
vn -0.322100 -0.833000 -0.449800
vn 0.322100 -0.833000 -0.449800
vn -0.163000 -0.948500 -0.271500
vn 0.000000 -0.970600 -0.240900
vn -0.163000 -0.948500 0.271500
vn 0.000000 -0.889300 -0.457400
vn 0.000000 -0.889300 0.457400
vn 0.322100 -0.833000 0.449800
vn -0.322100 -0.833000 0.449800
g Cube.002_Cube.001_Cube.002_Cube.001_cover g Cube.002_Cube.001_Cube.002_Cube.001_cover
s off s off
f 47/1/1 31/2/1 33/3/1 52/4/1 f 47/1/1 31/2/1 33/3/1 52/4/1
@ -253,58 +216,37 @@ f 1/31/9 4/32/9 3/33/9 2/34/9
f 1/31/9 36/35/9 35/36/9 4/32/9 f 1/31/9 36/35/9 35/36/9 4/32/9
f 2/34/9 3/33/9 54/37/9 51/38/9 45/39/9 46/40/9 f 2/34/9 3/33/9 54/37/9 51/38/9 45/39/9 46/40/9
f 52/41/10 17/42/10 48/43/10 7/44/10 f 52/41/10 17/42/10 48/43/10 7/44/10
f 34/2/11 6/1/11 4/45/11 35/46/11 f 34/45/11 6/46/11 4/47/11 35/48/11
f 50/47/12 51/48/12 54/49/12 8/50/12 f 50/49/12 51/50/12 54/51/12 8/52/12
f 8/51/10 7/44/10 48/43/10 49/52/10 53/53/10 50/54/10 f 8/53/10 7/44/10 48/43/10 49/54/10 53/55/10 50/56/10
f 19/55/13 49/56/13 48/14/13 16/13/13 f 19/57/13 49/58/13 48/14/13 16/13/13
f 52/41/10 33/57/10 39/58/10 17/42/10 f 52/41/10 33/59/10 39/60/10 17/42/10
f 10/10/14 1/59/14 2/22/14 15/21/14 f 10/10/14 1/61/14 2/22/14 15/21/14
f 18/7/15 10/10/15 15/21/15 16/13/15 f 18/7/15 10/10/15 15/21/15 16/13/15
f 10/10/16 28/9/16 36/60/16 1/59/16 f 10/10/16 28/9/16 36/62/16 1/61/16
f 5/6/17 3/61/17 4/45/17 6/1/17 f 5/63/17 3/64/17 4/47/17 6/46/17
f 9/62/8 7/63/8 8/64/8 14/65/8 f 9/65/8 7/66/8 8/67/8 14/68/8
f 16/13/18 15/21/18 20/24/18 19/55/18 f 16/13/18 15/21/18 20/24/18 19/57/18
f 22/17/6 19/30/6 20/66/6 21/18/6 f 22/17/6 19/30/6 20/69/6 21/18/6
f 23/67/8 24/68/8 25/69/8 26/70/8 f 23/70/8 24/71/8 25/72/8 26/73/8
f 27/8/19 26/71/19 25/72/19 28/9/19 f 27/8/19 26/74/19 25/75/19 28/9/19
f 31/73/6 29/74/6 32/20/6 33/75/6 f 31/76/6 29/77/6 32/78/6 33/79/6
f 25/69/8 24/68/8 37/76/8 38/77/8 f 25/72/8 24/71/8 37/80/8 38/81/8
f 26/71/20 27/8/20 39/12/20 40/78/20 f 26/74/20 27/8/20 39/12/20 40/82/20
f 32/79/10 41/80/10 43/81/10 40/82/10 39/58/10 33/57/10 f 32/83/10 41/84/10 43/85/10 40/86/10 39/60/10 33/59/10
f 41/83/12 32/20/12 44/84/12 42/85/12 f 41/87/12 32/78/12 44/88/12 42/89/12
f 36/35/9 38/86/9 37/87/9 42/19/9 44/88/9 35/36/9 f 36/35/9 38/90/9 37/91/9 42/92/9 44/93/9 35/36/9
f 23/67/8 26/70/8 40/89/8 43/50/8 f 23/70/8 26/73/8 40/94/8 43/95/8
f 30/90/6 34/91/6 35/92/6 44/84/6 f 30/96/6 34/97/6 35/98/6 44/88/6
f 28/9/21 25/72/21 38/93/21 36/60/21 f 28/9/21 25/75/21 38/99/21 36/62/21
f 29/74/6 30/90/6 44/84/6 32/20/6 f 29/77/6 30/96/6 44/88/6 32/78/6
f 41/26/8 42/94/8 37/76/8 24/68/8 23/67/8 43/50/8 f 41/100/8 42/101/8 37/80/8 24/71/8 23/70/8 43/95/8
f 54/26/8 11/25/8 14/65/8 8/64/8 f 54/26/8 11/25/8 14/68/8 8/67/8
f 46/95/6 45/96/6 21/97/6 20/98/6 f 46/102/6 45/103/6 21/104/6 20/105/6
g Cube.002_Cube.001_Cube.002_Cube.001_edges g Cube.002_Cube.001_Cube.002_Cube.001_edges
f 13/99/10 47/100/10 9/101/10 14/102/10 f 13/106/10 47/107/10 9/108/10 14/109/10
f 6/103/9 12/104/9 11/105/9 5/106/9 f 6/110/9 12/111/9 11/112/9 5/113/9
f 13/99/10 29/107/10 31/108/10 47/100/10 f 13/106/10 29/114/10 31/115/10 47/107/10
f 6/103/9 34/109/9 30/110/9 12/104/9 f 6/110/9 34/116/9 30/117/9 12/111/9
f 14/111/22 11/112/22 12/113/22 13/114/22 f 14/118/22 11/119/22 12/120/22 13/121/22
f 29/115/23 13/114/23 12/113/23 30/116/23 f 29/122/23 13/121/23 12/120/23 30/123/23
g Cube.002_Cube.001_Cube.002_Cube.001_trim
f 61/7/24 70/8/24 71/9/24 57/10/24
f 70/8/25 61/7/25 60/11/25 75/12/25
f 59/13/26 82/14/26 60/11/26 61/7/26
f 84/15/6 86/16/6 65/17/6 64/18/6 80/19/6 85/20/6
f 58/21/27 56/22/27 81/23/27 63/24/27
f 65/17/6 86/16/6 83/29/6 62/30/6
f 62/55/28 83/56/28 82/14/28 59/13/28
f 57/10/29 55/59/29 56/22/29 58/21/29
f 61/7/30 57/10/30 58/21/30 59/13/30
f 57/10/31 71/9/31 72/60/31 55/59/31
f 59/13/32 58/21/32 63/24/32 62/55/32
f 65/17/6 62/30/6 63/66/6 64/18/6
f 66/67/8 67/68/8 68/69/8 69/70/8
f 70/8/33 69/71/33 68/72/33 71/9/33
f 68/69/8 67/68/8 73/76/8 74/77/8
f 69/71/34 70/8/34 75/12/34 76/78/34
f 66/67/8 69/70/8 76/89/8 79/50/8
f 71/9/35 68/72/35 74/93/35 72/60/35
f 77/26/8 78/94/8 73/76/8 67/68/8 66/67/8 79/50/8
f 81/95/6 80/96/6 64/97/6 63/98/6

View File

@ -1,327 +1,335 @@
# Blender v2.72 (sub 0) OBJ File: 'book-open.blend' # Blender v2.78 (sub 0) OBJ File: 'book-open.blend'
# www.blender.org # www.blender.org
o Cube.002_Cube.001 o Cube.002_Cube.001
v -0.216625 0.012428 -0.485966 v -0.012428 -0.485966 0.216625
v 0.220555 -0.000000 -0.486750 v 0.000000 -0.486750 -0.220555
v 0.220555 0.321341 -0.485966 v -0.321341 -0.485966 -0.220555
v -0.208120 -0.000001 -0.462863 v 0.000001 -0.462863 0.208120
v -0.208120 0.310920 -0.485966 v -0.310920 -0.485966 0.208120
v -0.208120 0.306022 -0.464409 v -0.306022 -0.464409 0.208120
v 0.212051 0.306022 -0.464409 v -0.306022 -0.464409 -0.212051
v 0.212051 0.310921 -0.485966 v -0.310921 -0.485966 -0.212051
v 0.212050 -0.000000 -0.462862 v 0.000000 -0.462862 -0.212050
v 0.212050 0.016802 -0.500002 v -0.016802 -0.500002 -0.212050
v -0.208120 0.016801 -0.500002 v -0.016801 -0.500002 0.208120
v -0.208120 0.046213 -0.500002 v -0.046213 -0.500002 0.208120
v 0.212050 0.046214 -0.500002 v -0.046214 -0.500002 -0.212050
v -0.216625 0.046213 -0.500002 v -0.046213 -0.500002 0.216625
v -0.216625 0.020445 -0.500002 v -0.020445 -0.500002 0.216625
v 0.220555 0.012429 -0.485966 v -0.012429 -0.485966 -0.220555
v 0.220555 0.020446 -0.500002 v -0.020446 -0.500002 -0.220555
v 0.220555 0.321340 -0.500002 v -0.321340 -0.500002 -0.220555
v -0.216624 0.321341 -0.500002 v -0.321341 -0.500002 0.216624
v 0.220555 0.046214 -0.500002 v -0.046214 -0.500002 -0.220555
v -0.216624 0.321341 -0.485966 v -0.321341 -0.485966 0.216624
v -0.208120 0.238235 -0.450057 v -0.238235 -0.450057 0.208120
v -0.216625 -0.000001 -0.486750 v 0.000001 -0.486750 0.216625
v 0.212051 0.238236 -0.450057 v -0.238236 -0.450057 -0.212051
v -0.208120 -0.306023 -0.464409 v 0.306023 -0.464409 0.208120
v 0.212051 -0.306023 -0.464409 v 0.306023 -0.464409 -0.212051
v -0.208120 -0.238237 -0.450057 v 0.238237 -0.450057 0.208120
v 0.212051 -0.238237 -0.450057 v 0.238236 -0.450057 -0.212051
v 0.212050 -0.046214 -0.500003 v 0.046214 -0.500003 -0.212050
v -0.208120 -0.046215 -0.500003 v 0.046215 -0.500003 0.208120
v -0.208120 -0.016803 -0.500003 v 0.016803 -0.500003 0.208120
v 0.212050 -0.016803 -0.500003 v 0.016802 -0.500003 -0.212050
v -0.216625 -0.000001 -0.481442 v 0.000001 -0.481442 0.216625
v 0.220555 -0.000000 -0.481442 v 0.000000 -0.481442 -0.220555
v 0.212051 -0.310922 -0.485967 v 0.310922 -0.485967 -0.212051
v -0.208120 -0.310922 -0.485967 v 0.310922 -0.485967 0.208120
v 0.220555 -0.321342 -0.485967 v 0.321342 -0.485967 -0.220555
v -0.216625 -0.012430 -0.485967 v 0.012430 -0.485967 0.216625
v -0.216625 -0.046215 -0.500003 v 0.046215 -0.500003 0.216625
v -0.216625 -0.020447 -0.500003 v 0.020447 -0.500003 0.216625
v 0.220555 -0.012429 -0.485967 v 0.012429 -0.485967 -0.220555
v 0.220555 -0.020446 -0.500003 v 0.020446 -0.500003 -0.220555
v 0.220555 -0.321341 -0.500003 v 0.321341 -0.500003 -0.220555
v -0.216624 -0.321343 -0.500003 v 0.321343 -0.500003 0.216624
v 0.220555 -0.046214 -0.500003 v 0.046214 -0.500003 -0.220555
v -0.216624 -0.321343 -0.485967 v 0.321343 -0.485967 0.216624
v -0.208120 -0.000001 -0.486750 v 0.000001 -0.486750 0.208120
v 0.212050 -0.000000 -0.486750 v 0.000000 -0.486750 -0.212050
v 0.212051 -0.086920 -0.442244 v 0.086920 -0.442244 -0.212051
v -0.208120 -0.086920 -0.442244 v 0.086920 -0.442244 0.208120
v 0.212051 0.086847 -0.442244 v -0.086847 -0.442244 -0.212050
v -0.208120 0.086847 -0.442244 v -0.086847 -0.442244 0.208120
v 0.212050 0.043405 -0.447755 v -0.043405 -0.447755 -0.212050
v -0.208120 0.043405 -0.447755 v -0.043405 -0.447755 0.208120
v 0.212050 -0.043478 -0.447755 v 0.043478 -0.447755 -0.212050
v -0.208120 -0.043478 -0.447755 v 0.043478 -0.447755 0.208120
v -0.216625 -0.010224 -0.490836 v 0.010224 -0.490836 0.216625
v -0.216625 0.006214 -0.482857 v -0.006214 -0.482857 0.216625
v 0.220555 0.006214 -0.482857 v -0.006214 -0.482857 -0.220555
v -0.208120 0.008400 -0.490836 v -0.008400 -0.490836 0.208120
v 0.212050 0.008401 -0.490836 v -0.008401 -0.490836 -0.212050
v 0.220555 0.010223 -0.490836 v -0.010223 -0.490836 -0.220555
v -0.216625 0.010222 -0.490836 v -0.010222 -0.490836 0.216625
v 0.220555 -0.010223 -0.490836 v 0.010223 -0.490836 -0.220555
v 0.212050 -0.008401 -0.490836 v 0.008401 -0.490836 -0.212050
v -0.208120 -0.008402 -0.490836 v 0.008402 -0.490836 0.208120
v 0.220555 -0.006215 -0.482858 v 0.006215 -0.482858 -0.220555
v -0.216625 -0.006215 -0.482858 v 0.006215 -0.482858 0.216625
v 0.212050 0.012429 -0.485966 v -0.012429 -0.485966 -0.212050
v 0.212050 -0.000000 -0.481442 v 0.000000 -0.481442 -0.212050
v 0.212050 -0.012429 -0.485967 v 0.012429 -0.485967 -0.212050
v 0.212050 0.006214 -0.482857 v -0.006214 -0.482857 -0.212050
v 0.212050 -0.006215 -0.482858 v 0.006215 -0.482858 -0.212050
v -0.208120 0.012428 -0.485966 v -0.012428 -0.485966 0.208120
v -0.208120 -0.000001 -0.481442 v 0.000001 -0.481442 0.208120
v -0.208120 -0.012430 -0.485967 v 0.012430 -0.485967 0.208120
v -0.208120 0.006214 -0.482857 v -0.006214 -0.482857 0.208120
v -0.208120 -0.006215 -0.482858 v 0.006215 -0.482858 0.208120
vt 0.965735 0.839196 vt 0.9657 0.8392
vt 0.711783 0.839196 vt 0.7118 0.8392
vt 0.711783 0.832541 vt 0.7118 0.8325
vt 0.711783 0.503765 vt 0.7118 0.5038
vt 0.711783 0.497110 vt 0.7118 0.4971
vt 0.965736 0.497110 vt 0.9657 0.4971
vt 0.395683 0.494736 vt 0.3957 0.4947
vt 0.395683 0.261171 vt 0.3957 0.2612
vt 0.403533 0.261171 vt 0.4035 0.2612
vt 0.403532 0.502890 vt 0.4035 0.5029
vt 0.687998 0.839196 vt 0.6880 0.8392
vt 0.684635 0.832541 vt 0.6846 0.8325
vt 0.987044 0.738829 vt 0.9870 0.7388
vt 0.987044 0.497110 vt 0.9870 0.4971
vt 1.000000 0.497110 vt 1.0000 0.4971
vt 0.999999 0.712393 vt 1.0000 0.7124
vt 0.999999 0.732556 vt 1.0000 0.7326
vt 0.992051 0.000000 vt 0.9921 0.0000
vt 0.992051 0.342086 vt 0.9921 0.3421
vt 0.979145 0.342086 vt 0.9791 0.3421
vt 0.979145 0.000000 vt 0.9791 0.0000
vt 0.969912 1.000000 vt 0.9699 1.0000
vt 0.969911 0.758280 vt 0.9699 0.7583
vt 0.982867 0.764553 vt 0.9829 0.7646
vt 0.982867 0.784716 vt 0.9829 0.7847
vt 0.982868 0.999999 vt 0.9829 1.0000
vt 0.403533 0.241720 vt 0.4035 0.2417
vt 0.395683 0.241720 vt 0.3957 0.2417
vt 0.395683 0.008154 vt 0.3957 0.0082
vt 0.403532 0.000000 vt 0.4035 0.0000
vt 0.684634 0.503765 vt 0.6846 0.5038
vt 0.007850 0.008154 vt 0.0078 0.0082
vt 0.000000 0.000000 vt 0.0000 0.0000
vt 0.657486 0.832541 vt 0.6575 0.8325
vt 0.657486 0.503765 vt 0.6575 0.5038
vt 0.657486 0.497110 vt 0.6846 0.5038
vt 0.681271 0.497110 vt 0.6846 0.8325
vt 0.969911 0.497110 vt 0.6575 0.4971
vt 0.982867 0.497110 vt 0.6813 0.4971
vt 0.982868 0.712393 vt 0.9699 0.4971
vt 0.982868 0.732556 vt 0.9829 0.4971
vt 0.969912 0.738829 vt 0.9829 0.7124
vt 0.966239 0.000000 vt 0.9829 0.7326
vt 0.966239 0.342086 vt 0.9699 0.7388
vt 0.987044 0.758280 vt 0.9662 0.0000
vt 1.000000 0.764553 vt 0.9791 0.0000
vt 1.000000 0.784716 vt 0.9791 0.3421
vt 0.999999 1.000000 vt 0.9662 0.3421
vt 0.987043 1.000000 vt 0.9870 0.7583
vt 0.681271 0.839196 vt 1.0000 0.7646
vt 0.657486 0.839196 vt 1.0000 0.7847
vt 0.000000 0.261171 vt 1.0000 1.0000
vt 0.007850 0.261171 vt 0.9870 1.0000
vt 0.007850 0.494736 vt 0.6813 0.8392
vt 0.000000 0.502891 vt 0.6575 0.8392
vt 0.403534 0.839196 vt 0.0000 0.2612
vt 0.403533 0.497110 vt 0.0079 0.2612
vt 0.687998 0.497110 vt 0.0078 0.4947
vt 0.974407 0.740555 vt 0.0000 0.5029
vt 0.970635 0.748555 vt 0.4035 0.8392
vt 0.967042 0.743692 vt 0.4035 0.4971
vt 0.965736 0.748555 vt 0.6880 0.4971
vt 0.967042 0.753417 vt 0.9744 0.7406
vt 0.974406 0.756554 vt 0.9706 0.7486
vt 0.991539 0.740555 vt 0.9670 0.7437
vt 0.987768 0.748555 vt 0.9657 0.7486
vt 0.984174 0.743692 vt 0.9670 0.7534
vt 0.982868 0.748555 vt 0.9744 0.7566
vt 0.984174 0.753417 vt 0.9915 0.7406
vt 0.991539 0.756554 vt 0.9878 0.7486
vt 0.044849 0.844977 vt 0.9842 0.7437
vt 0.035593 0.844977 vt 0.9829 0.7486
vt 0.035446 0.838322 vt 0.9842 0.7534
vt 0.044554 0.838322 vt 0.9915 0.7566
vt 0.956803 0.342087 vt 0.0448 0.8450
vt 0.956803 0.335432 vt 0.0356 0.8450
vt 0.964557 0.335432 vt 0.0354 0.8383
vt 0.947366 0.342087 vt 0.0446 0.8383
vt 0.949048 0.335432 vt 0.9662 0.3421
vt 0.045143 0.838322 vt 0.9568 0.3421
vt 0.054251 0.838322 vt 0.9568 0.3354
vt 0.054104 0.844977 vt 0.9646 0.3354
vt 0.044554 0.509546 vt 0.9474 0.3421
vt 0.035446 0.509546 vt 0.9490 0.3354
vt 0.035593 0.502890 vt 0.0448 0.8450
vt 0.044849 0.502891 vt 0.0451 0.8383
vt 0.964557 0.006655 vt 0.0543 0.8383
vt 0.956803 0.006655 vt 0.0541 0.8450
vt 0.956803 0.000000 vt 0.0446 0.5095
vt 0.949048 0.006655 vt 0.0354 0.5095
vt 0.947366 0.000000 vt 0.0356 0.5029
vt 0.054104 0.502891 vt 0.0448 0.5029
vt 0.054251 0.509546 vt 0.9662 0.0000
vt 0.045143 0.509546 vt 0.9646 0.0067
vt 0.000000 0.256308 vt 0.9568 0.0067
vt 0.000000 0.251445 vt 0.9568 0.0000
vt 0.007850 0.251445 vt 0.9490 0.0067
vt 0.007850 0.256308 vt 0.9474 0.0000
vt 0.000000 0.246582 vt 0.0448 0.5029
vt 0.000000 0.241720 vt 0.0541 0.5029
vt 0.007850 0.241720 vt 0.0543 0.5095
vt 0.007850 0.246582 vt 0.0451 0.5095
vt 0.403533 0.251445 vt 0.0000 0.2563
vt 0.403533 0.256308 vt 0.0000 0.2514
vt 0.395683 0.256308 vt 0.0079 0.2514
vt 0.395683 0.251445 vt 0.0079 0.2563
vt 0.403533 0.246582 vt 0.0000 0.2466
vt 0.395683 0.246582 vt 0.0000 0.2417
vt 0.779948 0.000000 vt 0.0079 0.2417
vt 0.779948 1.000000 vt 0.0079 0.2466
vt 0.724984 1.000000 vt 0.4035 0.2514
vt 0.724983 0.000000 vt 0.4035 0.2563
vt 0.717416 1.000000 vt 0.3957 0.2563
vt 0.662450 1.000000 vt 0.3957 0.2514
vt 0.662449 0.000000 vt 0.4035 0.2466
vt 0.717416 0.000000 vt 0.3957 0.2466
vt 0.184400 1.000000 vt 0.7799 0.0000
vt 0.126957 0.970419 vt 0.7799 1.0000
vt 0.221962 0.896695 vt 0.7250 1.0000
vt 0.485666 0.793134 vt 0.7250 0.0000
vt 0.471964 0.896524 vt 0.7174 1.0000
vt 0.376957 0.970419 vt 0.6624 1.0000
vt 0.216239 0.433002 vt 0.6624 0.0000
vt 0.126957 0.260013 vt 0.7174 0.0000
vt 0.059402 0.000000 vt 0.1844 1.0000
vt 0.001957 0.029581 vt 0.1270 0.9704
vt 0.009688 0.014790 vt 0.2220 0.8967
vt 0.235664 0.793305 vt 0.4857 0.7931
vt 0.013207 0.000000 vt 0.4720 0.8965
vt 0.091241 0.566998 vt 0.3770 0.9704
vt 0.055557 0.728328 vt 0.2162 0.4330
vt 0.001957 0.739987 vt 0.1270 0.2600
vt 0.110666 0.206866 vt 0.0594 0.0000
vt 0.134686 0.985210 vt 0.0020 0.0296
vt 0.096964 0.103476 vt 0.0097 0.0148
vt 0.180555 0.271672 vt 0.2357 0.7933
vt 0.138205 1.000000 vt 0.0132 0.0000
vt 0.341239 0.566998 vt 0.0912 0.5670
vt 0.305555 0.728328 vt 0.0556 0.7283
vt 0.251957 0.739987 vt 0.0020 0.7400
vt 0.251957 0.029581 vt 0.1107 0.2069
vt 0.360664 0.206695 vt 0.1347 0.9852
vt 0.388207 1.000000 vt 0.0970 0.1035
vt 0.384688 0.985210 vt 0.1806 0.2717
vt 0.434402 1.000000 vt 0.1382 1.0000
vt 0.346962 0.103305 vt 0.3412 0.5670
vt 0.466241 0.433002 vt 0.3056 0.7283
vt 0.376957 0.260013 vt 0.2520 0.7400
vt 0.309400 0.000000 vt 0.2520 0.0296
vt 0.259687 0.014790 vt 0.3607 0.2067
vt 0.263205 0.000000 vt 0.3882 1.0000
vt 0.430558 0.271672 vt 0.3847 0.9852
vt 0.636817 0.156314 vt 0.4344 1.0000
vt 0.875000 0.156314 vt 0.3470 0.1033
vt 0.875000 0.984312 vt 0.4662 0.4330
vt 0.636817 0.984312 vt 0.3770 0.2600
vt 0.000000 0.156314 vt 0.3094 0.0000
vt 0.125000 0.156314 vt 0.2597 0.0148
vt 0.125000 0.984312 vt 0.2632 0.0000
vt 0.000000 0.984313 vt 0.4306 0.2717
vt 1.000000 0.156314 vt 0.6368 0.1563
vt 1.000000 0.984313 vt 0.8750 0.1563
vt 0.363296 0.156314 vt 0.8750 0.9843
vt 0.431676 0.156314 vt 0.6368 0.9843
vt 0.431676 0.984311 vt 0.0000 0.1563
vt 0.363296 0.984312 vt 0.1250 0.1563
vt 0.500000 0.156314 vt 0.1250 0.9843
vt 0.568437 0.156314 vt 0.0000 0.9843
vt 0.568437 0.984311 vt 1.0000 0.1563
vt 0.500000 0.984311 vt 1.0000 0.9843
vn 0.577300 0.577300 -0.577300 vt 0.3633 0.1563
vn 0.707100 0.000000 -0.707100 vt 0.4317 0.1563
vn 0.000000 0.000000 -1.000000 vt 0.4317 0.9843
vn -0.707100 0.000000 -0.707100 vt 0.3633 0.9843
vn -0.577300 0.577300 -0.577300 vt 0.5000 0.1563
vn -0.246900 -0.280700 0.927500 vt 0.5684 0.1563
vn -0.658800 -0.172900 0.732100 vt 0.5684 0.9843
vn -0.762700 -0.148700 0.629400 vt 0.5000 0.9843
vn -0.577300 -0.577300 0.577300 vn -0.5773 -0.5773 -0.5773
vn 0.668800 -0.216600 -0.711100 vn 0.0000 -0.7071 -0.7071
vn 0.071700 -0.428700 -0.900500 vn 0.0000 -1.0000 0.0000
vn -0.762700 0.148700 0.629400 vn 0.0000 -0.7071 0.7071
vn -0.577300 0.577300 0.577300 vn -0.5773 -0.5773 0.5773
vn -0.668800 -0.216600 -0.711100 vn 0.2807 0.9275 0.2469
vn 0.577300 0.577300 0.577300 vn 0.1729 0.7321 0.6588
vn 0.762700 0.148700 0.629400 vn 0.1487 0.6294 0.7627
vn -0.658800 0.172900 0.732100 vn 0.5773 0.5773 0.5773
vn -0.246900 0.280700 0.927500 vn 0.2166 -0.7111 -0.6688
vn -0.071700 -0.428700 -0.900500 vn 0.4287 -0.9005 -0.0717
vn 0.246900 0.280700 0.927500 vn -0.1487 0.6294 0.7627
vn -0.071700 0.428800 -0.900500 vn -0.5773 0.5773 0.5773
vn 0.071700 0.428800 -0.900500 vn 0.2166 -0.7111 0.6688
vn -0.668800 0.216600 -0.711100 vn -0.5773 0.5773 -0.5773
vn 0.577300 -0.577300 0.577300 vn -0.1487 0.6294 -0.7627
vn 0.577300 -0.577300 -0.577300 vn -0.1729 0.7321 0.6588
vn 0.668800 0.216600 -0.711100 vn -0.2807 0.9275 0.2469
vn 0.762700 -0.148700 0.629400 vn 0.4287 -0.9005 0.0717
vn -0.577300 -0.577300 -0.577300 vn -0.2807 0.9275 -0.2469
vn 0.658800 -0.172900 0.732100 vn -0.4288 -0.9005 0.0717
vn 0.246900 -0.280700 0.927500 vn -0.4288 -0.9005 -0.0717
vn 0.794100 0.350300 -0.496700 vn -0.2166 -0.7111 0.6688
vn 0.814600 0.000000 -0.580000 vn 0.5773 0.5773 -0.5773
vn 0.681100 -0.246900 0.689300 vn 0.5773 -0.5773 -0.5773
vn 0.660400 0.000000 0.750900 vn -0.2166 -0.7111 -0.6688
vn 0.681100 0.246800 0.689300 vn 0.1487 0.6294 -0.7627
vn 0.794100 -0.350300 -0.496700 vn 0.5773 -0.5773 0.5773
vn -0.794100 -0.350300 -0.496700 vn 0.1729 0.7321 -0.6588
vn -0.814600 0.000000 -0.580000 vn 0.2807 0.9275 -0.2469
vn -0.681100 0.246800 0.689300 vn -0.3503 -0.4967 -0.7941
vn -0.660400 0.000000 0.750900 vn 0.0000 -0.5800 -0.8146
vn -0.681100 -0.246900 0.689300 vn 0.2469 0.6893 -0.6811
vn -0.794100 0.350300 -0.496700 vn 0.0000 0.7509 -0.6604
vn -0.062900 0.569600 -0.819500 vn -0.2468 0.6893 -0.6811
vn -0.023700 0.000000 -0.999700 vn 0.3503 -0.4967 -0.7941
vn -0.062900 -0.569600 -0.819500 vn 0.3503 -0.4967 0.7941
vn 0.062900 0.569600 -0.819500 vn 0.0000 -0.5800 0.8146
vn 0.023700 0.000000 -0.999700 vn -0.2468 0.6893 0.6811
vn 0.062900 -0.569600 -0.819500 vn 0.0000 0.7509 0.6604
vn 0.760600 0.000000 0.649100 vn 0.2469 0.6893 0.6811
vn 0.735000 -0.228600 0.638300 vn -0.3503 -0.4967 0.7941
vn 0.658800 0.172900 0.732100 vn -0.5696 -0.8195 0.0629
vn 0.735000 0.228600 0.638300 vn 0.0000 -0.9997 0.0237
vn -0.735000 -0.228600 0.638300 vn 0.5696 -0.8195 0.0629
vn -0.760600 0.000000 0.649100 vn -0.5696 -0.8195 -0.0629
vn -0.735000 0.228600 0.638300 vn 0.0000 -0.9997 -0.0237
vn -0.603500 0.559600 0.567900 vn 0.5696 -0.8195 -0.0629
vn 0.603500 0.559600 0.567900 vn 0.0000 0.6491 -0.7606
vn 0.603500 -0.559600 0.567900 vn 0.2286 0.6383 -0.7350
vn -0.603500 -0.559600 0.567900 vn -0.1729 0.7321 -0.6588
vn 0.789000 -0.000200 0.614300 vn -0.2286 0.6383 -0.7350
vn 0.684400 -0.166600 0.709800 vn 0.2286 0.6383 0.7350
vn -0.687600 0.027100 0.725500 vn 0.0000 0.6491 0.7606
vn -0.684400 0.166400 0.709800 vn -0.2286 0.6383 0.7350
vn 0.689800 0.093900 0.717800 vn -0.5596 0.5679 0.6035
vn 0.687600 -0.027100 0.725500 vn -0.5596 0.5679 -0.6035
vn 0.689800 -0.093900 0.717800 vn 0.5596 0.5679 -0.6035
vn 0.687600 0.027100 0.725500 vn 0.5596 0.5679 0.6035
vn 0.684400 0.166400 0.709800 vn 0.0002 0.6143 -0.7890
vn -0.689800 0.093900 0.717800 vn 0.1666 0.7098 -0.6844
vn -0.687600 -0.027100 0.725500 vn -0.0271 0.7255 0.6876
vn -0.789000 -0.000200 0.614300 vn -0.1664 0.7098 0.6844
vn -0.684400 -0.166600 0.709800 vn -0.0939 0.7178 -0.6898
vn -0.689800 -0.093900 0.717800 vn 0.0271 0.7255 -0.6876
vn 0.0939 0.7178 -0.6898
vn -0.0271 0.7255 -0.6876
vn -0.1664 0.7098 -0.6844
vn -0.0939 0.7178 0.6898
vn 0.0271 0.7255 0.6876
vn 0.0002 0.6143 0.7890
vn 0.1666 0.7098 0.6844
vn 0.0939 0.7178 0.6898
g Cube.002_Cube.001_Cube.002_Cube.001_cover g Cube.002_Cube.001_Cube.002_Cube.001_cover
s 1 s 1
f 18/1/1 20/2/2 13/3/3 12/4/3 14/5/4 19/6/5 f 18/1/1 20/2/2 13/3/3 12/4/3 14/5/4 19/6/5
@ -333,86 +341,86 @@ f 3/22/15 16/23/16 17/24/10 20/25/2 18/26/1
f 1/27/12 74/28/17 5/29/18 21/30/13 f 1/27/12 74/28/17 5/29/18 21/30/13
f 13/3/3 10/12/11 11/31/19 12/4/3 f 13/3/3 10/12/11 11/31/19 12/4/3
f 21/30/13 5/29/18 8/32/20 3/33/15 f 21/30/13 5/29/18 8/32/20 3/33/15
f 29/34/3 30/35/3 31/31/21 32/12/22 f 29/34/3 30/35/3 31/36/21 32/37/22
f 31/31/21 30/35/3 39/36/4 40/37/23 f 31/36/21 30/35/3 39/38/4 40/39/23
f 37/38/24 43/39/25 45/40/2 42/41/26 41/42/27 f 37/40/24 43/41/25 45/42/2 42/43/26 41/44/27
f 43/43/25 37/21/24 46/20/9 44/44/28 f 43/45/25 37/46/24 46/47/9 44/48/28
f 38/45/8 40/46/23 39/47/4 44/48/28 46/49/9 f 38/49/8 40/50/23 39/51/4 44/52/28 46/53/9
f 29/34/3 32/12/22 42/50/26 45/51/2 f 29/34/3 32/37/22 42/54/26 45/55/2
f 41/52/27 71/53/29 35/54/30 37/55/24 f 41/56/27 71/57/29 35/58/30 37/59/24
f 35/54/30 36/7/6 46/10/9 37/55/24 f 35/58/30 36/7/6 46/10/9 37/59/24
f 43/56/25 44/57/28 39/36/4 30/35/3 29/34/3 45/51/2 f 43/60/25 44/61/28 39/38/4 30/35/3 29/34/3 45/55/2
f 15/58/14 14/5/4 12/4/3 11/31/19 f 15/62/14 14/5/4 12/4/3 11/31/19
f 42/41/26 64/59/31 41/42/27 f 42/43/26 64/63/31 41/44/27
f 41/42/27 64/59/31 2/60/32 67/61/33 f 41/44/27 64/63/31 2/64/32 67/65/33
f 67/61/33 2/60/32 34/62/34 f 67/65/33 2/64/32 34/66/34
f 34/62/34 2/60/32 59/63/35 f 34/66/34 2/64/32 59/67/35
f 2/60/32 62/64/36 16/23/16 59/63/35 f 2/64/32 62/68/36 16/23/16 59/67/35
f 16/23/16 62/64/36 17/24/10 f 16/23/16 62/68/36 17/24/10
f 15/17/14 63/65/37 1/13/12 f 15/17/14 63/69/37 1/13/12
f 23/66/38 58/67/39 1/13/12 63/65/37 f 23/70/38 58/71/39 1/13/12 63/69/37
f 58/67/39 23/66/38 33/68/40 f 58/71/39 23/70/38 33/72/40
f 68/69/41 33/68/40 23/66/38 f 68/73/41 33/72/40 23/70/38
f 38/45/8 68/69/41 23/66/38 57/70/42 f 38/49/8 68/73/41 23/70/38 57/74/42
f 57/70/42 40/46/23 38/45/8 f 57/74/42 40/50/23 38/49/8
f 40/71/23 57/72/42 66/73/43 31/74/21 f 40/75/23 57/76/42 66/77/43 31/78/21
f 57/44/42 23/75/38 47/76/44 66/77/43 f 57/79/42 23/80/38 47/81/44 66/82/43
f 47/76/44 23/75/38 63/78/37 60/79/45 f 47/81/44 23/80/38 63/83/37 60/84/45
f 15/71/14 11/80/19 60/81/45 63/82/37 f 15/85/14 11/86/19 60/87/45 63/88/37
f 32/83/22 65/84/46 64/85/31 42/86/26 f 32/89/22 65/90/46 64/91/31 42/92/26
f 64/43/31 65/87/46 48/88/47 2/89/32 f 64/93/31 65/94/46 48/95/47 2/96/32
f 48/88/47 61/90/48 62/91/36 2/89/32 f 48/95/47 61/97/48 62/98/36 2/96/32
f 17/86/10 62/92/36 61/93/48 10/94/11 f 17/99/10 62/100/36 61/101/48 10/102/11
f 67/95/33 34/96/34 70/97/49 73/98/50 f 67/103/33 34/104/34 70/105/49 73/106/50
f 59/99/35 16/100/16 69/101/51 72/102/52 f 59/107/35 16/108/16 69/109/51 72/110/52
f 41/52/27 67/95/33 73/98/50 71/53/29 f 41/56/27 67/103/33 73/106/50 71/57/29
f 34/96/34 59/99/35 72/102/52 70/97/49 f 34/104/34 59/107/35 72/110/52 70/105/49
f 33/103/40 68/104/41 78/105/53 75/106/54 f 33/111/40 68/112/41 78/113/53 75/114/54
f 1/27/12 58/107/39 77/108/55 74/28/17 f 1/27/12 58/115/39 77/116/55 74/28/17
f 68/104/41 38/9/8 76/8/7 78/105/53 f 68/112/41 38/9/8 76/8/7 78/113/53
f 58/107/39 33/103/40 75/106/54 77/108/55 f 58/115/39 33/111/40 75/114/54 77/116/55
f 8/32/20 69/101/51 16/100/16 3/33/15 f 8/32/20 69/109/51 16/108/16 3/33/15
f 10/94/11 61/93/48 60/81/45 11/80/19 f 10/102/11 61/101/48 60/87/45 11/86/19
f 47/76/44 60/79/45 61/90/48 48/88/47 f 47/81/44 60/84/45 61/97/48 48/95/47
f 65/87/46 66/77/43 47/76/44 48/88/47 f 65/94/46 66/82/43 47/81/44 48/95/47
f 31/74/21 66/73/43 65/84/46 32/83/22 f 31/78/21 66/77/43 65/90/46 32/89/22
g Cube.002_Cube.001_Cube.002_Cube.001_edges g Cube.002_Cube.001_Cube.002_Cube.001_edges
f 8/109/20 5/110/18 6/111/56 7/112/57 f 8/117/20 5/118/18 6/119/56 7/120/57
f 35/113/30 26/114/58 25/115/59 36/116/6 f 35/121/30 26/122/58 25/123/59 36/124/6
f 9/117/60 69/118/51 53/119/61 f 9/125/60 69/126/51 53/127/61
f 50/120/62 56/121/63 76/122/7 f 50/128/62 56/129/63 76/130/7
f 24/123/64 69/118/51 8/124/20 f 24/131/64 69/126/51 8/132/20
f 9/125/60 71/126/29 73/127/50 f 9/133/60 71/134/29 73/135/50
f 51/128/65 53/119/61 69/118/51 f 51/136/65 53/127/61 69/126/51
f 9/125/60 73/127/50 70/129/49 f 9/133/60 73/135/50 70/137/49
f 28/130/66 26/131/58 35/132/30 f 28/138/66 26/139/58 35/140/30
f 71/126/29 49/133/67 28/130/66 f 71/134/29 49/141/67 28/138/66
f 72/134/52 69/118/51 9/117/60 f 72/142/52 69/126/51 9/125/60
f 71/126/29 55/135/68 49/133/67 f 71/134/29 55/143/68 49/141/67
f 28/130/66 35/132/30 71/126/29 f 28/138/66 35/140/30 71/134/29
f 24/123/64 8/124/20 7/136/57 f 24/131/64 8/132/20 7/144/57
f 69/118/51 24/123/64 51/128/65 f 69/126/51 24/131/64 51/136/65
f 9/125/60 55/135/68 71/126/29 f 9/133/60 55/143/68 71/134/29
f 70/137/49 72/134/52 9/117/60 f 70/145/49 72/142/52 9/125/60
f 22/138/69 6/139/56 5/140/18 f 22/146/69 6/147/56 5/148/18
f 74/141/17 52/142/70 22/138/69 f 74/149/17 52/150/70 22/146/69
f 75/143/54 78/144/53 4/145/71 f 75/151/54 78/152/53 4/153/71
f 74/141/17 54/146/72 52/142/70 f 74/149/17 54/154/72 52/150/70
f 22/138/69 5/140/18 74/141/17 f 22/146/69 5/148/18 74/149/17
f 27/147/73 76/122/7 36/148/6 f 27/155/73 76/130/7 36/156/6
f 4/149/71 74/141/17 77/150/55 f 4/157/71 74/149/17 77/158/55
f 27/147/73 50/120/62 76/122/7 f 27/155/73 50/128/62 76/130/7
f 4/149/71 77/150/55 75/151/54 f 4/157/71 77/158/55 75/159/54
f 4/145/71 78/144/53 76/122/7 f 4/153/71 78/152/53 76/130/7
f 4/149/71 54/146/72 74/141/17 f 4/157/71 54/154/72 74/149/17
f 27/147/73 36/148/6 25/152/59 f 27/155/73 36/156/6 25/160/59
f 56/121/63 4/145/71 76/122/7 f 56/129/63 4/153/71 76/130/7
g Cube.002_Cube.001_Cube.002_Cube.001_pages g Cube.002_Cube.001_Cube.002_Cube.001_pages
f 50/153/62 27/154/73 28/155/66 49/156/67 f 50/161/62 27/162/73 28/163/66 49/164/67
f 6/157/56 22/158/69 24/159/64 7/160/57 f 6/165/56 22/166/69 24/167/64 7/168/57
f 27/154/73 25/161/59 26/162/58 28/155/66 f 27/162/73 25/169/59 26/170/58 28/163/66
f 52/163/70 54/164/72 53/165/61 51/166/65 f 52/171/70 54/172/72 53/173/61 51/174/65
f 22/158/69 52/163/70 51/166/65 24/159/64 f 22/166/69 52/171/70 51/174/65 24/167/64
f 4/167/71 56/168/63 55/169/68 9/170/60 f 4/175/71 56/176/63 55/177/68 9/178/60
f 54/164/72 4/167/71 9/170/60 53/165/61 f 54/172/72 4/175/71 9/178/60 53/173/61
f 56/168/63 50/153/62 49/156/67 55/169/68 f 56/176/63 50/161/62 49/164/67 55/177/68

View File

@ -0,0 +1,202 @@
# Blender v2.78 (sub 0) OBJ File: ''
# www.blender.org
o Cube_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.500000
v -0.500000 0.500000 0.500000
v 0.437500 -0.437500 -0.437500
v 0.437500 0.437500 -0.437500
v 0.437500 -0.437500 0.437500
v 0.437500 0.437500 0.437500
v -0.437500 -0.437500 -0.437500
v -0.437500 0.437500 -0.437500
v -0.437500 -0.437500 0.437500
v -0.437500 0.437500 0.437500
v -0.500000 -0.437500 -0.437500
v -0.500000 0.437500 -0.437500
v -0.500000 -0.437500 0.437500
v -0.500000 0.437500 0.437500
v 0.500000 -0.437500 -0.437500
v 0.500000 0.437500 -0.437500
v 0.500000 -0.437500 0.437500
v 0.500000 0.437500 0.437500
v 0.437500 -0.437500 -0.500000
v 0.437500 0.437500 -0.500000
v -0.437500 -0.437500 -0.500000
v -0.437500 0.437500 -0.500000
v 0.437500 -0.437500 0.500000
v 0.437500 0.437500 0.500000
v -0.437500 -0.437500 0.500000
v -0.437500 0.437500 0.500000
v 0.437500 0.500000 -0.437500
v 0.437500 0.500000 0.437500
v -0.437500 0.500000 -0.437500
v -0.437500 0.500000 0.437500
v 0.437500 -0.500000 -0.437500
v 0.437500 -0.500000 0.437500
v -0.437500 -0.500000 -0.437500
v -0.437500 -0.500000 0.437500
vt 0.0625 0.0000
vt 0.9375 0.0000
vt 0.9375 0.0625
vt 0.0625 0.0625
vt -0.0000 0.9375
vt -0.0000 0.0625
vt 0.0625 0.9375
vt -0.0000 0.0625
vt -0.0000 0.9375
vt -0.0000 0.9375
vt -0.0000 0.0625
vt 0.0625 0.0625
vt 0.0625 0.9375
vt -0.0000 0.9375
vt 0.0625 0.9375
vt 0.0625 0.0625
vt -0.0000 0.0625
vt 0.9375 0.0000
vt 0.0625 0.0000
vt 0.9375 0.0625
vt 0.0625 0.9375
vt 0.0625 0.0625
vt -0.0000 0.0625
vt -0.0000 0.9375
vt 1.0000 0.9375
vt 1.0000 0.0625
vt 0.9375 0.9375
vt 1.0000 0.9375
vt 0.9375 0.9375
vt 1.0000 0.9375
vt 0.9375 0.9375
vt 0.9375 0.0625
vt 1.0000 0.0625
vt 1.0000 0.0625
vt 1.0000 0.9375
vt 1.0000 0.0625
vt 0.9375 1.0000
vt 0.0625 1.0000
vt 0.9375 0.9375
vt 0.9375 0.0625
vt 1.0000 0.0625
vt 1.0000 0.9375
vt 0.0625 1.0000
vt 0.9375 1.0000
vt 0.0625 0.0000
vt 0.9375 0.0000
vt 0.0625 0.0000
vt 0.9375 0.0000
vt 0.0625 0.0000
vt 0.9375 0.0000
vt 0.0625 1.0000
vt 0.9375 1.0000
vt 0.0625 1.0000
vt 0.9375 1.0000
vt 0.0625 1.0000
vt 0.9375 1.0000
vt -0.0000 0.0000
vt 1.0000 0.0000
vt 0.9375 0.0625
vt 0.0625 0.0625
vt -0.0000 1.0000
vt 0.0625 0.9375
vt 1.0000 1.0000
vt 0.9375 0.9375
vt -0.0000 1.0000
vt 0.0625 0.9375
vt 0.9375 0.9375
vt 1.0000 0.0000
vt 0.9375 0.0625
vt 0.0625 0.0625
vt -0.0000 0.0000
vt 1.0000 1.0000
vt 1.0000 0.0000
vt 0.9375 0.0625
vt 0.9375 0.9375
vt -0.0000 0.0000
vt 0.0625 0.0625
vt -0.0000 1.0000
vt 0.0625 0.9375
vt -0.0000 0.0000
vt 0.0625 0.9375
vt 0.0625 0.0625
vt 0.9375 0.9375
vt 0.9375 0.0625
vt 1.0000 0.0000
vt 0.9375 0.0625
vt 0.9375 0.9375
vt 1.0000 1.0000
vt 0.0625 0.9375
vt -0.0000 1.0000
vt 0.0625 0.0625
vt 0.0625 0.0625
vt 0.0625 0.9375
vt 0.9375 0.9375
vt 1.0000 1.0000
vt 0.9375 0.0625
vn 0.0000 1.0000 0.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 -1.0000 0.0000
vn 1.0000 0.0000 0.0000
g Cube_Cube.001_frame
s off
f 25/1/1 27/2/1 13/3/1 9/4/1
f 26/5/2 25/6/2 9/4/2 10/7/2
f 21/8/3 22/9/3 10/7/3 9/4/3
f 24/10/4 23/11/4 11/12/4 12/13/4
f 23/14/1 21/8/1 9/4/1 11/15/1
f 12/13/5 10/16/5 22/17/5 24/10/5
f 28/18/5 26/19/5 10/16/5 14/20/5
f 14/21/6 13/22/6 27/23/6 28/24/6
f 18/25/3 17/26/3 13/3/3 14/27/3
f 17/26/1 19/28/1 15/29/1 13/3/1
f 20/30/4 16/31/4 15/32/4 19/33/4
f 20/30/5 18/34/5 14/20/5 16/31/5
f 16/31/6 32/35/6 31/36/6 15/32/6
f 31/37/1 29/38/1 11/15/1 15/29/1
f 12/39/2 11/40/2 29/41/2 30/42/2
f 30/43/5 32/44/5 16/31/5 12/13/5
f 15/32/4 11/12/4 38/45/4 40/46/4
f 13/22/6 15/32/6 40/46/6 39/47/6
f 9/4/3 13/3/3 39/48/3 37/49/3
f 11/40/2 9/4/2 37/49/2 38/50/2
f 16/31/6 14/21/6 35/51/6 36/52/6
f 12/13/4 16/31/4 36/52/4 34/53/4
f 10/7/2 12/39/2 34/54/2 33/55/2
f 14/27/3 10/7/3 33/55/3 35/56/3
f 2/57/1 6/58/1 35/59/1 33/60/1
f 4/61/1 2/57/1 33/60/1 34/62/1
f 8/63/1 4/61/1 34/62/1 36/64/1
f 6/58/1 8/63/1 36/64/1 35/59/1
f 6/65/2 18/66/2 20/67/2 8/63/2
f 7/68/2 8/63/2 20/67/2 19/69/2
f 7/68/2 19/69/2 17/70/2 5/71/2
f 5/71/2 17/70/2 18/66/2 6/65/2
f 7/72/5 5/73/5 39/74/5 40/75/5
f 5/73/5 1/76/5 37/77/5 39/74/5
f 1/76/5 3/78/5 38/79/5 37/77/5
f 3/78/5 7/72/5 40/75/5 38/79/5
f 3/80/3 4/61/3 30/81/3 29/82/3
f 8/63/3 32/83/3 30/81/3 4/61/3
f 7/68/3 31/84/3 32/83/3 8/63/3
f 3/80/3 29/82/3 31/84/3 7/68/3
f 3/85/6 23/86/6 24/87/6 4/88/6
f 4/88/6 24/87/6 22/89/6 2/90/6
f 2/90/6 22/89/6 21/91/6 1/76/6
f 1/76/6 21/91/6 23/86/6 3/85/6
f 2/90/4 1/76/4 25/92/4 26/93/4
f 2/90/4 26/93/4 28/94/4 6/95/4
f 5/73/4 6/95/4 28/94/4 27/96/4
f 5/73/4 27/96/4 25/92/4 1/76/4
g Cube_Cube.001_glass
f 9/4/6 10/7/6 12/39/6 11/40/6
f 11/12/3 12/13/3 16/31/3 15/32/3
f 15/32/2 16/31/2 14/21/2 13/22/2
f 13/3/4 14/27/4 10/7/4 9/4/4
f 11/15/5 15/29/5 13/3/5 9/4/5
f 16/31/1 12/13/1 10/16/1 14/20/1

View File

@ -32,13 +32,17 @@ homedecor.register("shutter", {
description = S("Wooden Shutter"), description = S("Wooden Shutter"),
inventory_image = inv, inventory_image = inv,
wield_image = inv, wield_image = inv,
paramtype2 = "wallmounted", paramtype2 = "colorwallmounted",
palette = "unifieddyes_palette_colorwallmounted.png",
ud_replacement_node = "homedecor:shutter_colored", ud_replacement_node = "homedecor:shutter_colored",
groups = { snappy = 3, ud_param2_colorable = 1 }, groups = { snappy = 3, ud_param2_colorable = 1 },
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
selection_box = shutter_cbox, selection_box = shutter_cbox,
node_box = shutter_cbox, node_box = shutter_cbox,
after_place_node = unifieddyes.fix_rotation, after_place_node = function(pos, placer, itemstack, pointed_thing)
unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
end,
after_dig_node = unifieddyes.after_dig_node after_dig_node = unifieddyes.after_dig_node
}) })
@ -54,7 +58,10 @@ homedecor.register("shutter_colored", {
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
selection_box = shutter_cbox, selection_box = shutter_cbox,
node_box = shutter_cbox, node_box = shutter_cbox,
after_place_node = unifieddyes.fix_rotation, after_place_node = function(pos, placer, itemstack, pointed_thing)
unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
end,
after_dig_node = unifieddyes.after_dig_node, after_dig_node = unifieddyes.after_dig_node,
drop = "homedecor:shutter" drop = "homedecor:shutter"
}) })

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 B

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 259 B

After

Width:  |  Height:  |  Size: 248 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 B

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 B

After

Width:  |  Height:  |  Size: 94 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 B

After

Width:  |  Height:  |  Size: 95 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 B

After

Width:  |  Height:  |  Size: 96 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 B

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 B

View File

@ -113,7 +113,10 @@ minetest.register_node("homedecor:curtain_closed", {
palette = "unifieddyes_palette_colorwallmounted.png", palette = "unifieddyes_palette_colorwallmounted.png",
selection_box = { type = "wallmounted" }, selection_box = { type = "wallmounted" },
after_dig_node = unifieddyes.after_dig_node, after_dig_node = unifieddyes.after_dig_node,
after_place_node = unifieddyes.fix_rotation, after_place_node = function(pos, placer, itemstack, pointed_thing)
unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
end,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local topnode = minetest.get_node({x=pos.x, y=pos.y+1.0, z=pos.z}) local topnode = minetest.get_node({x=pos.x, y=pos.y+1.0, z=pos.z})
if string.find(topnode.name, "homedecor:curtainrod") then if string.find(topnode.name, "homedecor:curtainrod") then
@ -126,7 +129,7 @@ minetest.register_node("homedecor:curtain_closed", {
}) })
minetest.register_node("homedecor:curtain_open", { minetest.register_node("homedecor:curtain_open", {
description = S("Curtains"), description = S("Curtains (open)"),
tiles = { "homedecor_curtain_open.png" }, tiles = { "homedecor_curtain_open.png" },
inventory_image = "homedecor_curtain_open.png", inventory_image = "homedecor_curtain_open.png",
drawtype = 'signlike', drawtype = 'signlike',
@ -139,7 +142,10 @@ minetest.register_node("homedecor:curtain_open", {
palette = "unifieddyes_palette_colorwallmounted.png", palette = "unifieddyes_palette_colorwallmounted.png",
selection_box = { type = "wallmounted" }, selection_box = { type = "wallmounted" },
after_dig_node = unifieddyes.after_dig_node, after_dig_node = unifieddyes.after_dig_node,
after_place_node = unifieddyes.fix_rotation, after_place_node = function(pos, placer, itemstack, pointed_thing)
unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
end,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local topnode = minetest.get_node({x=pos.x, y=pos.y+1.0, z=pos.z}) local topnode = minetest.get_node({x=pos.x, y=pos.y+1.0, z=pos.z})
if string.find(topnode.name, "homedecor:curtainrod") then if string.find(topnode.name, "homedecor:curtainrod") then

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1576
homedecor_i18n/locale/ru.po Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -7,6 +7,8 @@ cd "$(dirname "${BASH_SOURCE[0]}")/..";
# Extract translatable strings. # Extract translatable strings.
xgettext --from-code=UTF-8 \ xgettext --from-code=UTF-8 \
--language=Lua \
--sort-by-file \
--keyword=S \ --keyword=S \
--keyword=NS:1,2 \ --keyword=NS:1,2 \
--keyword=N_ \ --keyword=N_ \

View File

@ -92,6 +92,19 @@ minetest.register_node("inbox:empty", {
end end
end end
end, end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
local owner = meta:get_string("owner")
if player:get_player_name() == owner or
minetest.check_player_privs(player, "protection_bypass") and
clicker:get_player_control().aux1 then
return stack:get_count()
end
return 0
end,
allow_metadata_inventory_move = function(pos)
return 0
end,
}) })
function inbox.get_inbox_formspec(pos) function inbox.get_inbox_formspec(pos)

View File

@ -8,7 +8,11 @@ minetest.register_node("lavalamp:lavalamp", {
drawtype = "mesh", drawtype = "mesh",
mesh = "lavalamp.obj", mesh = "lavalamp.obj",
tiles = { tiles = {
{ name = "lavalamp_metal.png", color = 0xffffffff}, { name = "lavalamp_metal.png", color = "white" },
{ name = "lavalamp_lamp_liquid.png", color = "white" },
},
overlay_tiles = {
"",
{ {
name="lavalamp_lamp_anim.png", name="lavalamp_lamp_anim.png",
animation={ animation={
@ -19,6 +23,7 @@ minetest.register_node("lavalamp:lavalamp", {
}, },
}, },
}, },
use_texture_alpha = true,
inventory_image = "lavalamp_lamp_inv.png", inventory_image = "lavalamp_lamp_inv.png",
paramtype = "light", paramtype = "light",
paramtype2 = "color", paramtype2 = "color",
@ -33,6 +38,8 @@ minetest.register_node("lavalamp:lavalamp", {
}, },
groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, ud_param2_colorable = 1}, groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, ud_param2_colorable = 1},
sounds = default.node_sound_glass_defaults(), sounds = default.node_sound_glass_defaults(),
on_construct = unifieddyes.on_construct,
after_place_node = unifieddyes.recolor_on_place,
after_dig_node = unifieddyes.after_dig_node, after_dig_node = unifieddyes.after_dig_node,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
node.name = "lavalamp:lavalamp_off" node.name = "lavalamp:lavalamp_off"
@ -62,6 +69,8 @@ minetest.register_node("lavalamp:lavalamp_off", {
groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, not_in_creative_inventory=1}, groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, not_in_creative_inventory=1},
sounds = default.node_sound_glass_defaults(), sounds = default.node_sound_glass_defaults(),
drop = "lavalamp:lavalamp", drop = "lavalamp:lavalamp",
on_construct = unifieddyes.on_construct,
after_place_node = unifieddyes.recolor_on_place,
after_dig_node = unifieddyes.after_dig_node, after_dig_node = unifieddyes.after_dig_node,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
node.name = "lavalamp:lavalamp" node.name = "lavalamp:lavalamp"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 B

View File

@ -23,7 +23,10 @@ minetest.register_node("lrfurn:armchair", {
groups = {snappy=3, ud_param2_colorable = 1}, groups = {snappy=3, ud_param2_colorable = 1},
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
node_box = armchair_cbox, node_box = armchair_cbox,
after_place_node = unifieddyes.fix_rotation_nsew, after_place_node = function(pos, placer, itemstack, pointed_thing)
unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
end,
after_dig_node = unifieddyes.after_dig_node, after_dig_node = unifieddyes.after_dig_node,
on_rotate = unifieddyes.fix_after_screwdriver_nsew, on_rotate = unifieddyes.fix_after_screwdriver_nsew,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
@ -105,6 +108,6 @@ minetest.register_lbm({
end end
}) })
if minetest.setting_get("log_mods") then if minetest.settings:get("log_mods") then
minetest.log("action", "[lrfurn/armchairs] "..S("Loaded!")) minetest.log("action", "[lrfurn/armchairs] "..S("Loaded!"))
end end

View File

@ -65,6 +65,6 @@ minetest.register_craft({
} }
}) })
if minetest.setting_get("log_mods") then if minetest.settings:get("log_mods") then
minetest.log("action", "[lrfurn/coffeetable] "..S("Loaded!")) minetest.log("action", "[lrfurn/coffeetable] "..S("Loaded!"))
end end

View File

@ -48,6 +48,6 @@ minetest.register_craft({
} }
}) })
if minetest.setting_get("log_mods") then if minetest.settings:get("log_mods") then
minetest.log("action", "[lrfurn/endtable] "..S("Loaded!")) minetest.log("action", "[lrfurn/endtable] "..S("Loaded!"))
end end

View File

@ -38,9 +38,9 @@ function lrfurn.check_right(pos, fdir, long, placer)
return false return false
elseif minetest.is_protected(pos2, placer:get_player_name()) then elseif minetest.is_protected(pos2, placer:get_player_name()) then
if not long then if not long then
minetest.chat_send_player(placer:get_player_name(), "Someone else owns the spot where other end goes!") minetest.chat_send_player(placer:get_player_name(), S("Someone else owns the spot where other end goes!"))
else else
minetest.chat_send_player(placer:get_player_name(), "Someone else owns the spot where the middle or far end goes!") minetest.chat_send_player(placer:get_player_name(), S("Someone else owns the spot where the middle or far end goes!"))
end end
return false return false
end end
@ -50,7 +50,7 @@ function lrfurn.check_right(pos, fdir, long, placer)
if node3 and node3.name ~= "air" then if node3 and node3.name ~= "air" then
return false return false
elseif minetest.is_protected(pos3, placer:get_player_name()) then elseif minetest.is_protected(pos3, placer:get_player_name()) then
minetest.chat_send_player(placer:get_player_name(), "Someone else owns the spot where the other end goes!") minetest.chat_send_player(placer:get_player_name(), S("Someone else owns the spot where the other end goes!"))
return false return false
end end
end end

View File

@ -26,6 +26,7 @@ minetest.register_node("lrfurn:longsofa", {
on_rotate = screwdriver.disallow, on_rotate = screwdriver.disallow,
after_place_node = function(pos, placer, itemstack, pointed_thing) after_place_node = function(pos, placer, itemstack, pointed_thing)
lrfurn.fix_sofa_rotation_nsew(pos, placer, itemstack, pointed_thing) lrfurn.fix_sofa_rotation_nsew(pos, placer, itemstack, pointed_thing)
unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
local playername = placer:get_player_name() local playername = placer:get_player_name()
if minetest.is_protected(pos, placer:get_player_name()) then return true end if minetest.is_protected(pos, placer:get_player_name()) then return true end
@ -121,6 +122,6 @@ minetest.register_lbm({
end end
}) })
if minetest.setting_get("log_mods") then if minetest.settings:get("log_mods") then
minetest.log("action", "[lrfurn/longsofas] "..S("Loaded!")) minetest.log("action", "[lrfurn/longsofas] "..S("Loaded!"))
end end

View File

@ -26,6 +26,7 @@ minetest.register_node("lrfurn:sofa", {
on_rotate = screwdriver.disallow, on_rotate = screwdriver.disallow,
after_place_node = function(pos, placer, itemstack, pointed_thing) after_place_node = function(pos, placer, itemstack, pointed_thing)
lrfurn.fix_sofa_rotation_nsew(pos, placer, itemstack, pointed_thing) lrfurn.fix_sofa_rotation_nsew(pos, placer, itemstack, pointed_thing)
unifieddyes.recolor_on_place(pos, placer, itemstack, pointed_thing)
local playername = placer:get_player_name() local playername = placer:get_player_name()
if minetest.is_protected(pos, placer:get_player_name()) then return true end if minetest.is_protected(pos, placer:get_player_name()) then return true end
@ -121,6 +122,6 @@ minetest.register_lbm({
end end
}) })
if minetest.setting_get("log_mods") then if minetest.settings:get("log_mods") then
minetest.log("action", "[lrfurn/sofas] "..S("Loaded!")) minetest.log("action", "[lrfurn/sofas] "..S("Loaded!"))
end end