summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>2017-01-31 19:39:31 -0500
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>2017-01-31 19:39:31 -0500
commit39f5cba27eef35877c91291f518974f34130fcb6 (patch)
tree117a9d1b7d4ee5f78f73e1216e982c366ed9ecc6
parent2922421f4a88e56a0a1c819f62bf2bc287835388 (diff)
downloaddreambuilder_modpack-39f5cba27eef35877c91291f518974f34130fcb6.tar
dreambuilder_modpack-39f5cba27eef35877c91291f518974f34130fcb6.tar.gz
dreambuilder_modpack-39f5cba27eef35877c91291f518974f34130fcb6.tar.bz2
dreambuilder_modpack-39f5cba27eef35877c91291f518974f34130fcb6.tar.xz
dreambuilder_modpack-39f5cba27eef35877c91291f518974f34130fcb6.zip
Huge update - lots of mods:
areas, biome_lib, blox, bobblocks, boost_cart, homedecor, mobs, coloredwood, ilights, inbox, item_tweaks, moreblocks, moreores, pipeworks, plasticbox, signs_lib, stainedglass, roads, unifieddyes, vines, worldedit, xban2, maybe some others I didn't think about ;-)
-rw-r--r--areas/api.lua16
-rw-r--r--areas/api.md45
-rw-r--r--areas/hud.lua10
-rw-r--r--areas/mod.conf1
-rw-r--r--biome_lib/init.lua24
-rw-r--r--blox/depends.txt1
-rw-r--r--blox/init.lua666
-rw-r--r--blox/models/blox_block_with_overlay.obj44
-rw-r--r--blox/textures/blox_cobble_checker.pngbin0 -> 384 bytes
-rw-r--r--blox/textures/blox_cobble_corner.pngbin0 -> 351 bytes
-rw-r--r--blox/textures/blox_cobble_cross.pngbin0 -> 345 bytes
-rw-r--r--blox/textures/blox_cobble_diamond.pngbin0 -> 380 bytes
-rw-r--r--blox/textures/blox_cobble_loop.pngbin0 -> 354 bytes
-rw-r--r--blox/textures/blox_cobble_quarter.pngbin0 -> 342 bytes
-rw-r--r--blox/textures/blox_cobble_tinted.pngbin0 -> 289 bytes
-rw-r--r--blox/textures/blox_stone_checker.pngbin0 -> 361 bytes
-rw-r--r--blox/textures/blox_stone_corner.pngbin0 -> 310 bytes
-rw-r--r--blox/textures/blox_stone_cross.pngbin0 -> 311 bytes
-rw-r--r--blox/textures/blox_stone_diamond.pngbin0 -> 328 bytes
-rw-r--r--blox/textures/blox_stone_loop.pngbin0 -> 324 bytes
-rw-r--r--blox/textures/blox_stone_quarter.pngbin0 -> 304 bytes
-rw-r--r--blox/textures/blox_stone_square.pngbin0 -> 241 bytes
-rw-r--r--blox/textures/blox_stone_tinted.pngbin0 -> 223 bytes
-rw-r--r--blox/textures/blox_wood_checker.pngbin0 -> 369 bytes
-rw-r--r--blox/textures/blox_wood_corner.pngbin0 -> 317 bytes
-rw-r--r--blox/textures/blox_wood_cross.pngbin0 -> 305 bytes
-rw-r--r--blox/textures/blox_wood_diamond.pngbin0 -> 326 bytes
-rw-r--r--blox/textures/blox_wood_loop.pngbin0 -> 330 bytes
-rw-r--r--blox/textures/blox_wood_quarter.pngbin0 -> 295 bytes
-rw-r--r--blox/textures/blox_wood_tinted.pngbin0 -> 218 bytes
-rw-r--r--bobblocks/blocks.lua999
-rw-r--r--bobblocks/depends.txt1
-rw-r--r--bobblocks/textures/bobblocks_block.pngbin0 -> 652 bytes
-rw-r--r--bobblocks/textures/bobblocks_block_off.pngbin0 -> 604 bytes
-rw-r--r--bobblocks/textures/bobblocks_pole_inv.pngbin0 -> 452 bytes
-rw-r--r--bobblocks/textures/bobblocks_wavyblock.pngbin0 -> 1868 bytes
-rw-r--r--bobblocks/textures/bobblocks_wavypole_inv.pngbin0 -> 747 bytes
-rw-r--r--boost_cart/cart_entity.lua75
-rw-r--r--building_blocks/depends.txt3
-rw-r--r--building_blocks/init.lua77
-rw-r--r--carbone_mobs/README.txt19
-rw-r--r--carbone_mobs/api.lua66
-rw-r--r--carbone_mobs/init.lua3
-rw-r--r--chains/depends.txt3
-rw-r--r--chains/init.lua15
-rw-r--r--coloredwood/init.lua303
-rw-r--r--coloredwood/textures/coloredwood_base.pngbin0 -> 214 bytes
-rw-r--r--coloredwood/textures/coloredwood_fence_base.pngbin0 -> 224 bytes
-rw-r--r--computer/computers.lua18
-rw-r--r--computer/depends.txt3
-rw-r--r--computer/init.lua37
-rw-r--r--computer/miscitems.lua3
-rw-r--r--computer/tetris.lua36
-rw-r--r--currency/income.lua4
-rw-r--r--currency/init.lua16
-rw-r--r--fake_fire/depends.txt1
-rw-r--r--fake_fire/init.lua52
-rw-r--r--framedglass/init.lua159
-rw-r--r--homedecor/bathroom_furniture.lua34
-rw-r--r--homedecor/bathroom_sanitation.lua38
-rw-r--r--homedecor/bedroom.lua332
-rw-r--r--homedecor/books.lua29
-rw-r--r--homedecor/climate-control.lua78
-rw-r--r--homedecor/clocks.lua4
-rw-r--r--homedecor/crafts.lua458
-rw-r--r--homedecor/depends.txt3
-rw-r--r--homedecor/doors_and_gates.lua92
-rw-r--r--homedecor/electronics.lua14
-rw-r--r--homedecor/exterior.lua64
-rw-r--r--homedecor/fences.lua41
-rw-r--r--homedecor/foyer.lua1
-rw-r--r--homedecor/furniture.lua221
-rw-r--r--homedecor/furniture_medieval.lua20
-rw-r--r--homedecor/furniture_recipes.lua156
-rw-r--r--homedecor/gastronomy.lua3
-rw-r--r--homedecor/handlers/expansion.lua120
-rw-r--r--homedecor/handlers/furnaces.lua44
-rw-r--r--homedecor/handlers/inventory.lua61
-rw-r--r--homedecor/handlers/nodeboxes.lua3
-rw-r--r--homedecor/handlers/registration.lua2
-rw-r--r--homedecor/handlers/sit.lua4
-rw-r--r--homedecor/handlers/water_particles.lua9
-rw-r--r--homedecor/init.lua55
-rw-r--r--homedecor/intllib.lua45
-rw-r--r--homedecor/kitchen_appliances.lua14
-rw-r--r--homedecor/kitchen_furniture.lua14
-rw-r--r--homedecor/laundry.lua2
-rw-r--r--homedecor/lighting.lua511
-rw-r--r--homedecor/locale/de.po1490
-rw-r--r--homedecor/locale/es.po1152
-rw-r--r--homedecor/locale/fr.po1438
-rw-r--r--homedecor/locale/it.po1512
-rw-r--r--homedecor/locale/ms.po1512
-rw-r--r--homedecor/locale/ms.txt233
-rw-r--r--homedecor/locale/pt.po1343
-rw-r--r--homedecor/locale/template.pot1152
-rw-r--r--homedecor/misc-nodes.lua114
-rw-r--r--homedecor/models/forniture_armchair.obj358
-rw-r--r--homedecor/models/homedecor_bed_extended.obj314
-rw-r--r--homedecor/models/homedecor_bed_kingsize.obj510
-rw-r--r--homedecor/models/homedecor_bed_regular.obj302
-rw-r--r--homedecor/models/homedecor_desk_lamp.obj3372
-rw-r--r--homedecor/models/homedecor_kitchen_chair.obj166
-rw-r--r--homedecor/models/homedecor_toilet_open.obj1252
-rw-r--r--homedecor/models/homedecor_window_shutter.obj154
-rw-r--r--homedecor/office.lua11
-rw-r--r--homedecor/roofing.lua31
-rw-r--r--homedecor/shutters.lua126
-rw-r--r--homedecor/tables.lua47
-rw-r--r--homedecor/textures/homedecor_armchair_inv.pngbin0 -> 6376 bytes
-rw-r--r--homedecor/textures/homedecor_bed_inv.pngbin5875 -> 6269 bytes
-rw-r--r--homedecor/textures/homedecor_bed_kingsize_inv.pngbin5752 -> 6178 bytes
-rw-r--r--homedecor/textures/homedecor_chair_padded_inv.pngbin0 -> 4554 bytes
-rw-r--r--homedecor/textures/homedecor_chair_wood_inv.pngbin0 -> 4411 bytes
-rw-r--r--homedecor/textures/homedecor_curtain.pngbin465 -> 295 bytes
-rw-r--r--homedecor/textures/homedecor_curtain_open.pngbin425 -> 276 bytes
-rw-r--r--homedecor/textures/homedecor_desk_lamp_inv.pngbin0 -> 1370 bytes
-rw-r--r--homedecor/textures/homedecor_generic_metal.pngbin0 -> 218 bytes
-rw-r--r--homedecor/textures/homedecor_generic_plastic.pngbin0 -> 226 bytes
-rw-r--r--homedecor/textures/homedecor_generic_wood_luxury.pngbin1314 -> 590 bytes
-rw-r--r--homedecor/textures/homedecor_generic_wood_plain.pngbin605 -> 293 bytes
-rw-r--r--homedecor/textures/homedecor_glowlight_bottom.pngbin0 -> 95 bytes
-rw-r--r--homedecor/textures/homedecor_glowlight_cube_sides.pngbin0 -> 137 bytes
-rw-r--r--homedecor/textures/homedecor_glowlight_cube_sides_ceiling.pngbin0 -> 139 bytes
-rw-r--r--homedecor/textures/homedecor_glowlight_cube_tb.pngbin0 -> 142 bytes
-rw-r--r--homedecor/textures/homedecor_glowlight_thick_sides.pngbin0 -> 173 bytes
-rw-r--r--homedecor/textures/homedecor_glowlight_thin_sides.pngbin0 -> 137 bytes
-rw-r--r--homedecor/textures/homedecor_glowlight_top.pngbin0 -> 165 bytes
-rw-r--r--homedecor/textures/homedecor_marble.pngbin818 -> 233 bytes
-rw-r--r--homedecor/textures/homedecor_table_standing_lamp_lightbulb.pngbin581 -> 594 bytes
-rw-r--r--homedecor/textures/homedecor_window_shutter.pngbin278 -> 278 bytes
-rw-r--r--homedecor/textures/homedecor_window_shutter_inv.pngbin4871 -> 4879 bytes
-rwxr-xr-xhomedecor/tools/updatepo.sh20
-rw-r--r--homedecor/trash_cans.lua3
-rw-r--r--homedecor/wardrobe.lua2
-rw-r--r--homedecor/window_treatments.lua181
-rw-r--r--homedecor_3d_extras/init.lua3
-rw-r--r--homedecor_i18n/depends.txt1
-rw-r--r--homedecor_i18n/init.lua7
-rw-r--r--homedecor_i18n/intllib.lua45
-rw-r--r--homedecor_i18n/locale/de.po1773
-rw-r--r--homedecor_i18n/locale/es.po1420
-rw-r--r--homedecor_i18n/locale/fr.po1719
-rw-r--r--homedecor_i18n/locale/it.po1795
-rw-r--r--homedecor_i18n/locale/ms.po1795
-rw-r--r--homedecor_i18n/locale/pt.po1644
-rw-r--r--homedecor_i18n/locale/template.pot1420
-rwxr-xr-xhomedecor_i18n/tools/updatepo.sh22
-rw-r--r--ilights/depends.txt3
-rw-r--r--ilights/init.lua173
-rw-r--r--ilights/textures/ilights_lamp_bulb.pngbin668 -> 492 bytes
-rw-r--r--inbox/depends.txt1
-rw-r--r--inbox/init.lua12
-rw-r--r--item_tweaks/item_drop.lua6
-rw-r--r--itemframes/depends.txt1
-rw-r--r--itemframes/init.lua29
-rw-r--r--lavalamp/depends.txt4
-rw-r--r--lavalamp/init.lua206
-rw-r--r--lavalamp/textures/lavalamp_lamp_anim.pngbin0 -> 4804 bytes
-rw-r--r--lavalamp/textures/lavalamp_lamp_inv.pngbin0 -> 2884 bytes
-rw-r--r--lavalamp/textures/lavalamp_lamp_off.pngbin82 -> 86 bytes
-rw-r--r--lrfurn/armchairs.lua133
-rw-r--r--lrfurn/coffeetable.lua12
-rw-r--r--lrfurn/depends.txt2
-rw-r--r--lrfurn/endtable.lua7
-rw-r--r--lrfurn/init.lua44
-rw-r--r--lrfurn/longsofas.lua179
-rw-r--r--lrfurn/models/lrfurn_armchair.obj478
-rw-r--r--lrfurn/models/lrfurn_sofa_long.obj544
-rw-r--r--lrfurn/models/lrfurn_sofa_short.obj440
-rw-r--r--lrfurn/sofas.lua178
-rw-r--r--lrfurn/textures/lrfurn_armchair_inv.pngbin0 -> 6841 bytes
-rw-r--r--lrfurn/textures/lrfurn_longsofa_inv.pngbin0 -> 4423 bytes
-rw-r--r--lrfurn/textures/lrfurn_sofa_inv.pngbin0 -> 5297 bytes
-rw-r--r--lrfurn/textures/lrfurn_upholstery.pngbin0 -> 2309 bytes
-rw-r--r--moreblocks/.luacheckrc14
-rw-r--r--moreblocks/aliases.lua1
-rw-r--r--moreblocks/circular_saw.lua16
-rw-r--r--moreblocks/crafting.lua4
-rw-r--r--moreblocks/models/moreblocks_slope.obj68
-rw-r--r--moreblocks/models/moreblocks_slope_cut.obj87
-rw-r--r--moreblocks/models/moreblocks_slope_half.obj70
-rw-r--r--moreblocks/models/moreblocks_slope_half_raised.obj86
-rw-r--r--moreblocks/models/moreblocks_slope_inner.obj100
-rw-r--r--moreblocks/models/moreblocks_slope_inner_cut.obj90
-rw-r--r--moreblocks/models/moreblocks_slope_inner_cut_half.obj92
-rw-r--r--moreblocks/models/moreblocks_slope_inner_cut_half_raised.obj95
-rw-r--r--moreblocks/models/moreblocks_slope_inner_half.obj100
-rw-r--r--moreblocks/models/moreblocks_slope_inner_half_raised.obj102
-rw-r--r--moreblocks/models/moreblocks_slope_outer.obj61
-rw-r--r--moreblocks/models/moreblocks_slope_outer_cut.obj53
-rw-r--r--moreblocks/models/moreblocks_slope_outer_cut_half.obj54
-rw-r--r--moreblocks/models/moreblocks_slope_outer_cut_half_raised.obj70
-rw-r--r--moreblocks/models/moreblocks_slope_outer_half.obj63
-rw-r--r--moreblocks/models/moreblocks_slope_outer_half_raised.obj90
-rw-r--r--moreblocks/nodes.lua22
-rw-r--r--moreblocks/ownership.lua4
-rw-r--r--moreblocks/stairsplus/conversion.lua6
-rw-r--r--moreblocks/stairsplus/microblocks.lua20
-rw-r--r--moreblocks/stairsplus/panels.lua10
-rw-r--r--moreblocks/stairsplus/slabs.lua54
-rw-r--r--moreblocks/stairsplus/slopes.lua34
-rw-r--r--moreblocks/stairsplus/stairs.lua2
-rw-r--r--moreores/_config.txt24
-rw-r--r--moreores/init.lua40
-rw-r--r--moreores/textures/moreores_copper_rail_t_junction.pngbin260 -> 337 bytes
-rw-r--r--pipeworks/routing_tubes.lua9
-rw-r--r--plasmascreen/depends.txt3
-rw-r--r--plasmascreen/init.lua11
-rw-r--r--plasticbox/depends.txt5
-rw-r--r--plasticbox/init.lua390
-rw-r--r--plasticbox/textures/plasticbox_ud_palette.pngbin0 -> 443 bytes
-rw-r--r--plasticbox/ud_palette.txt9
-rw-r--r--signs_lib/init.lua4
-rw-r--r--stained_glass/geany_run_script.sh16
-rw-r--r--stained_glass/init.lua332
-rw-r--r--stained_glass/textures/stained_glass.pngbin0 -> 291 bytes
-rw-r--r--stained_glass/textures/stained_glass_faint_palette.pngbin0 -> 305 bytes
-rw-r--r--stained_glass/textures/stained_glass_pastels_palette.pngbin0 -> 334 bytes
-rw-r--r--teleport_request/init.lua16
-rw-r--r--trafficlight/init.lua375
-rw-r--r--trafficlight/textures/streets_b_red.pngbin0 -> 847 bytes
-rw-r--r--trafficlight/textures/streets_pl_number_0l.pngbin0 -> 572 bytes
-rw-r--r--trafficlight/textures/streets_pl_number_0r.pngbin0 -> 615 bytes
-rw-r--r--trafficlight/textures/streets_pl_number_1l.pngbin0 -> 601 bytes
-rw-r--r--trafficlight/textures/streets_pl_number_1r.pngbin0 -> 602 bytes
-rw-r--r--trafficlight/textures/streets_pl_number_2l.pngbin0 -> 610 bytes
-rw-r--r--trafficlight/textures/streets_pl_number_2r.pngbin0 -> 610 bytes
-rw-r--r--trafficlight/textures/streets_pl_number_3l.pngbin0 -> 606 bytes
-rw-r--r--trafficlight/textures/streets_pl_number_3r.pngbin0 -> 610 bytes
-rw-r--r--trafficlight/textures/streets_pl_number_4l.pngbin0 -> 614 bytes
-rw-r--r--trafficlight/textures/streets_pl_number_4r.pngbin0 -> 620 bytes
-rw-r--r--trafficlight/textures/streets_pl_number_5l.pngbin0 -> 603 bytes
-rw-r--r--trafficlight/textures/streets_pl_number_5r.pngbin0 -> 621 bytes
-rw-r--r--trafficlight/textures/streets_pl_number_6l.pngbin0 -> 608 bytes
-rw-r--r--trafficlight/textures/streets_pl_number_6r.pngbin0 -> 618 bytes
-rw-r--r--trafficlight/textures/streets_pl_number_7l.pngbin0 -> 607 bytes
-rw-r--r--trafficlight/textures/streets_pl_number_7r.pngbin0 -> 620 bytes
-rw-r--r--trafficlight/textures/streets_pl_number_8l.pngbin0 -> 608 bytes
-rw-r--r--trafficlight/textures/streets_pl_number_8r.pngbin0 -> 611 bytes
-rw-r--r--trafficlight/textures/streets_pl_number_9l.pngbin0 -> 605 bytes
-rw-r--r--trafficlight/textures/streets_pl_number_9r.pngbin0 -> 613 bytes
-rw-r--r--trafficlight/textures/streets_pl_number_template.pngbin0 -> 669 bytes
-rw-r--r--trafficlight/textures/streets_pl_walk.pngbin628 -> 630 bytes
-rw-r--r--trafficlight/textures/streets_rrfb_inv.pngbin0 -> 3066 bytes
-rw-r--r--trafficlight/textures/streets_rrfb_off.pngbin0 -> 627 bytes
-rw-r--r--trafficlight/textures/streets_rrfb_on.pngbin0 -> 762 bytes
-rw-r--r--trafficlight/textures/streets_tl_straight_green.pngbin0 -> 938 bytes
-rw-r--r--trafficlight/textures/streets_trafficlight_inv_greenarrow.pngbin0 -> 2753 bytes
-rw-r--r--unifiedbricks/init.lua973
-rw-r--r--unifiedbricks/models/unifiedbricks_brick_block.obj44
-rw-r--r--unifiedbricks/textures/unifiedbricks_brickblock.pngbin0 -> 118 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_clayblock.pngbin0 -> 389 bytes
-rw-r--r--unifiedbricks/textures/unifiedbricks_mortar.pngbin0 -> 247 bytes
-rw-r--r--unifieddyes/init.lua391
-rw-r--r--unifieddyes/textures/unifieddyes_palette.pngbin0 -> 443 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_palette_aquas.pngbin0 -> 99 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_palette_blues.pngbin0 -> 101 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_palette_colorwallmounted.pngbin0 -> 158 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_palette_cyans.pngbin0 -> 101 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_palette_greens.pngbin0 -> 101 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_palette_greys.pngbin0 -> 98 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_palette_limes.pngbin0 -> 99 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_palette_magentas.pngbin0 -> 101 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_palette_oranges.pngbin0 -> 99 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_palette_reds.pngbin0 -> 101 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_palette_redviolets.pngbin0 -> 99 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_palette_skyblues.pngbin0 -> 99 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_palette_violets.pngbin0 -> 99 bytes
-rw-r--r--unifieddyes/textures/unifieddyes_palette_yellows.pngbin0 -> 101 bytes
-rw-r--r--vines/functions.lua10
-rw-r--r--worldedit/init.lua1
-rw-r--r--worldedit/manipulations.lua11
-rw-r--r--worldedit_commands/init.lua61
-rw-r--r--worldedit_commands/mark.lua41
-rw-r--r--worldedit_commands/wand.lua34
-rw-r--r--xban2/init.lua4
277 files changed, 31702 insertions, 8633 deletions
diff --git a/areas/api.lua b/areas/api.lua
index e8b9c7a..730e96d 100644
--- a/areas/api.lua
+++ b/areas/api.lua
@@ -1,7 +1,23 @@
+local hudHandlers = {}
+
+--- Adds a function as a HUD handler, it will be able to add items to the Areas HUD element.
+function areas:registerHudHandler(handler)
+ table.insert(hudHandlers, handler)
+end
+
+
+function areas:getExternalHudEntries(pos)
+ local areas = {}
+ for _, func in pairs(hudHandlers) do
+ func(pos, areas)
+ end
+ return areas
+end
--- Returns a list of areas that include the provided position.
function areas:getAreasAtPos(pos)
local res = {}
+
if self.store then
local a = self.store:get_areas_for_pos(pos, false, true)
for store_id, store_area in pairs(a) do
diff --git a/areas/api.md b/areas/api.md
new file mode 100644
index 0000000..c74b4c7
--- /dev/null
+++ b/areas/api.md
@@ -0,0 +1,45 @@
+Areas mod API
+===
+
+API list
+---
+
+ * `areas.registerHudHandler(handler)` - Registers a handler to add items to the Areas HUD. See [HUD](#hud).
+
+
+HUD
+---
+
+If you are making a protection mod or a similar mod that adds invisible regions
+to the world, and you would like then to show up in the areas HUD element, you
+can register a callback to show your areas.
+
+HUD handler specification:
+
+ * `handler(pos, list)`
+ * `pos` - The position to check.
+ * `list` - The list of area HUD elements, this should be modified in-place.
+
+The area list item is a table containing a list of tables with the following fields:
+
+ * `id` - An identifier for the area. This should be a unique string in the format `mod:id`.
+ * `name` - The name of the area.
+ * `owner` - The player name of the region owner, if any.
+
+All of the fields are optional but at least one of them must be set.
+
+### Example
+
+ local function areas_hud_handler(pos, areas)
+ local val = find_my_protection(pos)
+
+ if val then
+ table.insert(areas, {
+ id = "mod:"..val.id,
+ name = val.name,
+ owner = val.owner,
+ })
+ end
+ end
+
+ areas:registerHudHandler(areas_hud_handler)
diff --git a/areas/hud.lua b/areas/hud.lua
index 4908b92..0b7931f 100644
--- a/areas/hud.lua
+++ b/areas/hud.lua
@@ -7,11 +7,21 @@ minetest.register_globalstep(function(dtime)
local name = player:get_player_name()
local pos = vector.round(player:getpos())
local areaStrings = {}
+
for id, area in pairs(areas:getAreasAtPos(pos)) do
table.insert(areaStrings, ("%s [%u] (%s%s)")
:format(area.name, id, area.owner,
area.open and ":open" or ""))
end
+
+ for i, area in pairs(areas:getExternalHudEntries(pos)) do
+ local str = ""
+ if area.name then str = area.name .. " " end
+ if area.id then str = str.."["..area.id.."] " end
+ if area.owner then str = str.."("..area.owner..")" end
+ table.insert(areaStrings, str)
+ end
+
local areaString = "Areas:"
if #areaStrings > 0 then
areaString = areaString.."\n"..
diff --git a/areas/mod.conf b/areas/mod.conf
new file mode 100644
index 0000000..0ca8ec1
--- /dev/null
+++ b/areas/mod.conf
@@ -0,0 +1 @@
+name = areas
diff --git a/biome_lib/init.lua b/biome_lib/init.lua
index 349b2f2..5cb6202 100644
--- a/biome_lib/init.lua
+++ b/biome_lib/init.lua
@@ -448,20 +448,24 @@ end)
-- to prevent unpopulated map areas
minetest.register_on_shutdown(function()
- print("[biome_lib] Stand by, playing out the rest of the aircheck mapblock log")
- print("(there are "..#biome_lib.blocklist_aircheck.." entries)...")
- while true do
- biome_lib:generate_block_with_air_checking(0.1)
- if #biome_lib.blocklist_aircheck == 0 then return end
+ if #biome_lib.blocklist_aircheck > 0 then
+ print("[biome_lib] Stand by, playing out the rest of the aircheck mapblock log")
+ print("(there are "..#biome_lib.blocklist_aircheck.." entries)...")
+ while true do
+ biome_lib:generate_block_with_air_checking(0.1)
+ if #biome_lib.blocklist_aircheck == 0 then return end
+ end
end
end)
minetest.register_on_shutdown(function()
- print("[biome_lib] Stand by, playing out the rest of the no-aircheck mapblock log")
- print("(there are "..#biome_lib.blocklist_no_aircheck.." entries)...")
- while true do
- biome_lib:generate_block_no_aircheck(0.1)
- if #biome_lib.blocklist_no_aircheck == 0 then return end
+ if #biome_lib.blocklist_no_aircheck > 0 then
+ print("[biome_lib] Stand by, playing out the rest of the no-aircheck mapblock log")
+ print("(there are "..#biome_lib.blocklist_no_aircheck.." entries)...")
+ while true do
+ biome_lib:generate_block_no_aircheck(0.1)
+ if #biome_lib.blocklist_no_aircheck == 0 then return end
+ end
end
end)
diff --git a/blox/depends.txt b/blox/depends.txt
index 562cf63..784823a 100644
--- a/blox/depends.txt
+++ b/blox/depends.txt
@@ -1 +1,2 @@
default
+unifieddyes
diff --git a/blox/init.lua b/blox/init.lua
index 16af8e4..6faabd9 100644
--- a/blox/init.lua
+++ b/blox/init.lua
@@ -10,6 +10,8 @@ by blert2112
-- Remove Blox from creative inventory if colormachine mod is installed
+blox = {}
+
local creative = 0
if (minetest.get_modpath("colormachine")) then
@@ -22,11 +24,7 @@ end
-- Uncomment the line above and change value to 0 to keep nodes in creative inventory when colormachine is installed.
-local version = "0.7.2112"
-
-local DyeSub = ""
-
-local Material = ""
+local version = "0.8"
local BloxColours = {
"pink",
@@ -41,42 +39,6 @@ local BloxColours = {
"black",
}
-local UNIFIED = {
- "magenta",
- "yellow",
- "white",
- "orange",
- "violet",
- "blue",
- "cyan",
- "red",
- "green",
- "black",
-}
-
-local BuiltInDyes = {
- "pink",
- "yellow",
- "white",
- "orange",
- "violet",
- "blue",
- "cyan",
- "red",
- "green",
- "black",
-}
-
-local FuelBlox = {
- "wood",
- "diamond_wood",
- "corner_wood",
- "checker_wood",
- "cross_wood",
- "quarter_wood",
- "loop_wood",
-}
-
local NodeClass = {
"diamond",
"quarter",
@@ -87,9 +49,9 @@ local NodeClass = {
}
local NodeMaterial = {
- "",
- "_wood",
- "_cobble",
+ "stone",
+ "wood",
+ "cobble",
}
-- Nodes
@@ -145,393 +107,274 @@ minetest.register_node("blox:glowdust", {
groups = {cracky=3, snappy=3},
})
-
-for _, NClass in ipairs(NodeClass) do
-
- for _, colour in ipairs(BloxColours) do
- local cname = colour .. NClass
-
- minetest.register_node('blox:' .. cname, {
- description = colour .. " " .. NClass .. " stone block",
- tiles = { 'blox_' .. cname .. '.png' },
- --inventory_image = 'blox_' .. cname .. '.png',
+-- param2-colored nodes: standard patterns
+
+for _, nodeclass in ipairs(NodeClass) do
+
+ minetest.register_node("blox:stone_"..nodeclass, {
+ description = "Blox stone "..nodeclass,
+ drawtype = "mesh",
+ tiles = {
+ { name = "default_stone.png", color = 0xffffffff },
+ "blox_stone_"..nodeclass..".png"
+ },
+ mesh = "blox_block_with_overlay.obj",
+ palette = "unifieddyes_palette.png",
+ paramtype = "light",
+ paramtype2 = "color",
is_ground_content = true,
groups = {cracky=3, not_in_creative_inventory=creative},
sounds = default.node_sound_stone_defaults(),
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "blox:stone_"..nodeclass)
+ end,
})
- local sname = colour .. NClass .. '_cobble'
-
- minetest.register_node('blox:' .. sname, {
- description = colour .. " " .. NClass .. " cobble block",
- tiles = { 'blox_' .. sname .. '.png' },
- --inventory_image = 'blox_' .. sname .. '.png',
+ minetest.register_node("blox:cobble_"..nodeclass, {
+ description = "Blox cobble "..nodeclass,
+ drawtype = "mesh",
+ tiles = {
+ { name = "default_cobble.png", color = 0xffffffff },
+ "blox_cobble_"..nodeclass..".png"
+ },
+ mesh = "blox_block_with_overlay.obj",
+ palette = "unifieddyes_palette.png",
+ paramtype = "light",
+ paramtype2 = "color",
is_ground_content = true,
groups = {cracky=3, not_in_creative_inventory=creative},
sounds = default.node_sound_stone_defaults(),
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "blox:cobble_"..nodeclass)
+ end,
})
- local sname = colour .. NClass .. '_wood'
-
- minetest.register_node('blox:' .. sname, {
- description = colour .. " " .. NClass .. " wooden block",
- tiles = { 'blox_' .. sname .. '.png' },
- --inventory_image = 'blox_' .. sname .. '.png',
+ minetest.register_node("blox:wood_"..nodeclass, {
+ description = "Blox wood "..nodeclass,
+ drawtype = "mesh",
+ tiles = {
+ { name = "default_wood.png", color = 0xffffffff },
+ "blox_wood_"..nodeclass..".png"
+ },
+ mesh = "blox_block_with_overlay.obj",
+ palette = "unifieddyes_palette.png",
+ paramtype = "light",
+ paramtype2 = "color",
is_ground_content = true,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3, not_in_creative_inventory=creative},
sounds = default.node_sound_wood_defaults(),
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "blox:wood_"..nodeclass)
+ end,
})
-
- end
end
- for _, colour in ipairs(BloxColours) do
- local sname = colour .. 'square'
+-- param2-colored nodes: tinted wood, cobble, stone, stone square
- minetest.register_node('blox:' .. sname, {
- description = colour .. " stone square",
- tiles = { 'blox_' .. sname .. '.png' },
- --inventory_image = 'blox_' .. sname .. '.png',
- is_ground_content = true,
- groups = {cracky=3, not_in_creative_inventory=creative},
- sounds = default.node_sound_stone_defaults(),
- })
-
- local sname = colour .. 'stone'
-
- minetest.register_node('blox:' .. sname, {
- description = colour .. " stone",
- tiles = { 'blox_' .. sname .. '.png' },
- --inventory_image = 'blox_' .. sname .. '.png',
- is_ground_content = true,
- groups = {cracky=3, not_in_creative_inventory=creative},
- sounds = default.node_sound_stone_defaults(),
- })
-
- local sname = colour .. 'wood'
-
- minetest.register_node('blox:' .. sname, {
- description = colour .. " wood",
- tiles = { 'blox_' .. sname .. '.png' },
- --inventory_image = 'blox_' .. sname .. '.png',
- is_ground_content = true,
- groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3, not_in_creative_inventory=creative},
- sounds = default.node_sound_wood_defaults(),
- })
-
- local sname = colour .. 'cobble'
-
- minetest.register_node('blox:' .. sname, {
- description = colour .. " cobble",
- tiles = { 'blox_' .. sname .. '.png' },
- --inventory_image = 'blox_' .. sname .. '.png',
- is_ground_content = true,
- groups = {cracky=3, not_in_creative_inventory=creative},
- sounds = default.node_sound_stone_defaults(),
- })
+minetest.register_node("blox:wood_tinted", {
+ description = "Blox tinted wood",
+ tiles = { "blox_wood_tinted.png" },
+ palette = "unifieddyes_palette.png",
+ paramtype = "light",
+ paramtype2 = "color",
+ is_ground_content = true,
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3, not_in_creative_inventory=creative},
+ sounds = default.node_sound_wood_defaults(),
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "blox:wood_tinted")
+ end,
+})
-end
+minetest.register_node("blox:cobble_tinted", {
+ description = "Blox tinted cobble",
+ tiles = { "blox_cobble_tinted.png" },
+ palette = "unifieddyes_palette.png",
+ paramtype = "light",
+ paramtype2 = "color",
+ is_ground_content = true,
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3, not_in_creative_inventory=creative},
+ sounds = default.node_sound_wood_defaults(),
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "blox:cobble_tinted")
+ end,
+})
+
+minetest.register_node("blox:stone_tinted", {
+ description = "Blox tinted stone",
+ tiles = { "blox_stone_tinted.png" },
+ palette = "unifieddyes_palette.png",
+ paramtype = "light",
+ paramtype2 = "color",
+ is_ground_content = true,
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3, not_in_creative_inventory=creative},
+ sounds = default.node_sound_wood_defaults(),
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "blox:stone_tinted")
+ end,
+})
+
+minetest.register_node("blox:stone_square", {
+ description = "Blox stone square",
+ tiles = { "blox_stone_square.png" },
+ palette = "unifieddyes_palette.png",
+ paramtype = "light",
+ paramtype2 = "color",
+ is_ground_content = true,
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3, not_in_creative_inventory=creative},
+ sounds = default.node_sound_wood_defaults(),
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "blox:stone_square")
+ end,
+})
-- Crafting
minetest.register_craft({
output = 'blox:glowstone 2',
recipe = {
- {'', 'blox:glowdust', ''},
+ {"", 'blox:glowdust', ""},
{'blox:glowdust', 'default:stone', 'blox:glowdust'},
- {'', 'blox:glowdust', ''},
- }
-})
-
-
-for _, colour in ipairs(UNIFIED) do
-
-if colour == "magenta" then
-DyeSub = "pink" else if colour == "violet" then
-DyeSub = "purple" else
-DyeSub = colour
-end
-end
-
-for _, NMaterial in ipairs(NodeMaterial) do
-
-if NMaterial == "_cobble" then
-Material = "default:cobble" else if NMaterial == "_wood" then
-Material = "default:wood" else
-Material = "default:stone"
-end
-end
---print(Material, 'unifieddyes:' .. colour)
---print('unifieddyes:' .. colour, Material)
-minetest.register_craft({
- output = 'blox:' .. DyeSub ..'quarter' .. NMaterial .. ' 4',
- recipe = {
- {Material, 'unifieddyes:' .. colour},
- {'unifieddyes:' .. colour, Material},
- }
-})
-
-minetest.register_craft({
- output = 'blox:' .. DyeSub ..'quarter' .. NMaterial .. ' 4',
- recipe = {
- {'unifieddyes:' .. colour, Material},
- {Material, 'unifieddyes:' .. colour},
- }
-})
-
-minetest.register_craft({
- output = 'blox:' .. DyeSub ..'cross' .. NMaterial .. ' 4',
- recipe = {
- {Material, '', Material},
- {'', 'unifieddyes:' .. colour, ''},
- {Material, '', Material},
- }
-})
-
-minetest.register_craft({
- output = 'blox:' .. DyeSub ..'checker' .. NMaterial .. ' 6',
- recipe = {
- {Material, 'unifieddyes:' .. colour,Material},
- {'unifieddyes:' .. colour, Material, 'unifieddyes:' .. colour},
- {Material, 'unifieddyes:' .. colour,Material},
- }
-})
-
-minetest.register_craft({
- output = 'blox:' .. DyeSub ..'checker' .. NMaterial .. ' 8',
- recipe = {
- {'unifieddyes:' .. colour, Material, 'unifieddyes:' .. colour},
- {Material, 'unifieddyes:' .. colour,Material},
- {'unifieddyes:' .. colour, Material, 'unifieddyes:' .. colour},
- }
-})
-
-minetest.register_craft({
- output = 'blox:' .. DyeSub ..'loop' .. NMaterial .. ' 6',
- recipe = {
- {Material, Material, Material},
- {Material, 'unifieddyes:' .. colour, Material},
- {Material, Material, Material},
- }
-})
-
-minetest.register_craft({
- output = 'blox:' .. DyeSub ..'corner' .. NMaterial .. ' 4',
- recipe = {
- {'unifieddyes:' .. colour, '', 'unifieddyes:' .. colour},
- {'', Material, ''},
- {'unifieddyes:' .. colour, '', 'unifieddyes:' .. colour},
- }
-})
-
-minetest.register_craft({
- output = 'blox:' .. DyeSub ..'diamond' .. NMaterial .. ' 6',
- recipe = {
- {Material, 'unifieddyes:' .. colour, Material},
- {'unifieddyes:' .. colour, '', 'unifieddyes:' .. colour},
- {Material, 'unifieddyes:' .. colour, Material},
- }
-})
-
-end
-end
-
-for _, colour in ipairs(UNIFIED) do
-
-if colour == "magenta" then
-DyeSub = "pink" else if colour == "violet" then
-DyeSub = "purple" else
-DyeSub = colour
-end
-end
-
-minetest.register_craft({
- output = 'blox:' .. DyeSub ..'square 6',
- recipe = {
- {'unifieddyes:' .. colour, 'default:stone', 'default:stone'},
- {'default:stone', 'unifieddyes:' .. colour, 'default:stone'},
- {'default:stone', 'default:stone', 'unifieddyes:' .. colour},
+ {"", 'blox:glowdust', ""},
}
})
-minetest.register_craft({
- output = 'blox:' .. DyeSub ..'stone 4',
- recipe = {
- {'', 'default:stone', ''},
- {'default:stone', 'unifieddyes:' .. colour, 'default:stone'},
- {'', 'default:stone', ''},
- }
-})
+local dye_color = "unifieddyes:white"
-minetest.register_craft({
- output = 'blox:' .. DyeSub ..'wood 4',
- recipe = {
- {'', 'default:wood', ''},
- {'default:wood', 'unifieddyes:' .. colour, 'default:wood'},
- {'', 'default:wood', ''},
- }
-})
+for _, material in ipairs(NodeMaterial) do
-minetest.register_craft({
- output = 'blox:' .. DyeSub ..'cobble 4',
- recipe = {
- {'', 'default:cobble', ''},
- {'default:cobble', 'unifieddyes:' .. colour, 'default:cobble'},
- {'', 'default:cobble', ''},
- }
-})
-end
-
-
-for _, colour in ipairs(BuiltInDyes) do
-
-if colour == "violet" then
-DyeSub = "purple" else
-DyeSub = colour
-end
-
-for _, NMaterial in ipairs(NodeMaterial) do
-
-if NMaterial == "_cobble" then
-Material = "default:cobble" else if NMaterial == "_wood" then
-Material = "default:wood" else
-Material = "default:stone"
-end
-end
-
-minetest.register_craft({
- output = 'blox:' .. DyeSub ..'quarter' .. NMaterial .. ' 4',
- recipe = {
- {Material, 'dye:' .. colour},
- {'dye:' .. colour, Material},
- }
-})
-
-minetest.register_craft({
- output = 'blox:' .. DyeSub ..'quarter' .. NMaterial .. ' 4',
- recipe = {
- {'dye:' .. colour, Material},
- {Material, 'dye:' .. colour},
- }
-})
-
-minetest.register_craft({
- output = 'blox:' .. DyeSub ..'cross' .. NMaterial .. ' 4',
- recipe = {
- {Material, '', Material},
- {'', 'dye:' .. colour, ''},
- {Material, '', Material},
- }
-})
+ local def_mat = "default:"..material
-minetest.register_craft({
- output = 'blox:' .. DyeSub ..'checker' .. NMaterial .. ' 6',
- recipe = {
- {Material, 'dye:' .. colour,Material},
- {'dye:' .. colour, Material, 'dye:' .. colour},
- {Material, 'dye:' .. colour,Material},
- }
-})
-
-minetest.register_craft({
- output = 'blox:' .. DyeSub ..'checker' .. NMaterial .. ' 8',
- recipe = {
- {'dye:' .. colour, Material, 'dye:' .. colour},
- {Material, 'dye:' .. colour,Material},
- {'dye:' .. colour, Material, 'dye:' .. colour},
- }
-})
+ minetest.register_craft({
+ output = "blox:"..material.."_diamond 4",
+ recipe = {
+ { def_mat, dye_color, def_mat },
+ { dye_color, "", dye_color },
+ { def_mat, dye_color, def_mat },
+ }
+ })
-minetest.register_craft({
- output = 'blox:' .. DyeSub ..'loop' .. NMaterial .. ' 6',
- recipe = {
- {Material, Material, Material},
- {Material, 'dye:' .. colour, Material},
- {Material, Material, Material},
- }
-})
+ minetest.register_craft({
+ output = "blox:"..material.."_quarter 4",
+ recipe = {
+ { dye_color, def_mat },
+ { def_mat, dye_color },
+ }
+ })
-minetest.register_craft({
- output = 'blox:' .. DyeSub ..'corner' .. NMaterial .. ' 4',
- recipe = {
- {'dye:' .. colour, '', 'dye:' .. colour},
- {'', Material, ''},
- {'dye:' .. colour, '', 'dye:' .. colour},
- }
-})
+ minetest.register_craft({
+ output = "blox:"..material.."_cross 4",
+ recipe = {
+ { def_mat, "", def_mat },
+ { "", dye_color, "" },
+ { def_mat, "", def_mat },
+ }
+ })
-minetest.register_craft({
- output = 'blox:' .. DyeSub ..'diamond' .. NMaterial .. ' 6',
- recipe = {
- {Material, 'dye:' .. colour, Material},
- {'dye:' .. colour, '', 'dye:' .. colour},
- {Material, 'dye:' .. colour, Material},
- }
-})
+ minetest.register_craft({
+ output = "blox:"..material.."_checker 6",
+ recipe = {
+ { def_mat, dye_color, def_mat },
+ { dye_color, def_mat, dye_color },
+ { def_mat, dye_color, def_mat },
+ }
+ })
-end
-end
+ minetest.register_craft({
+ output = "blox:"..material.."_checker 8",
+ recipe = {
+ { dye_color, def_mat, dye_color },
+ { def_mat, dye_color, def_mat },
+ { dye_color, def_mat, dye_color },
+ }
+ })
-for _, colour in ipairs(UNIFIED) do
+ minetest.register_craft({
+ output = "blox:"..material.."_corner 4",
+ recipe = {
+ { dye_color, "", dye_color },
+ { "", def_mat, "" },
+ { dye_color, "", dye_color },
+ }
+ })
-if colour == "magenta" then
-DyeSub = "pink" else if colour == "violet" then
-DyeSub = "purple" else
-DyeSub = colour
-end
+ minetest.register_craft({
+ output = "blox:"..material.."_loop 6",
+ recipe = {
+ { def_mat, def_mat, def_mat },
+ { def_mat, dye_color, def_mat },
+ { def_mat, def_mat, def_mat },
+ }
+ })
end
minetest.register_craft({
- output = 'blox:' .. DyeSub ..'square 6',
+ output = "blox:stone_square 6",
recipe = {
- {'dye:' .. colour, 'default:stone', 'default:stone'},
- {'default:stone', 'dye:' .. colour, 'default:stone'},
- {'default:stone', 'default:stone', 'dye:' .. colour},
+ { dye_color, "default:stone", "default:stone" },
+ { "default:stone", dye_color, "default:stone" },
+ { "default:stone", "default:stone", dye_color },
}
})
minetest.register_craft({
- output = 'blox:' .. DyeSub ..'stone 4',
+ output = "blox:stone_tinted 6",
recipe = {
- {'', 'default:stone', ''},
- {'default:stone', 'dye:' .. colour, 'default:stone'},
- {'', 'default:stone', ''},
+ { "", "default:stone", "" },
+ { "default:stone", dye_color, "default:stone" },
+ { "", "default:stone", "" },
}
})
minetest.register_craft({
- output = 'blox:' .. DyeSub ..'wood 4',
+ output = "blox:wood_tinted 6",
recipe = {
- {'', 'default:wood', ''},
- {'default:wood', 'dye:' .. colour, 'default:wood'},
- {'', 'default:wood', ''},
+ { "", "default:wood", "" },
+ { "default:wood", dye_color, "default:wood" },
+ { "", "default:wood", "" },
}
})
minetest.register_craft({
- output = 'blox:' .. DyeSub ..'cobble 4',
+ output = "blox:cobble_tinted 6",
recipe = {
- {'', 'default:cobble', ''},
- {'default:cobble', 'dye:' .. colour, 'default:cobble'},
- {'', 'default:cobble', ''},
+ { "", "default:cobble", "" },
+ { "default:cobble", dye_color, "default:cobble" },
+ { "", "default:cobble", "" },
}
})
-end
--Fuel
- for _, colour in ipairs(BloxColours) do
- for _, blox in ipairs(FuelBlox) do
+for _, nodeclass in ipairs(NodeClass) do
+ minetest.register_craft({
+ type = "fuel",
+ recipe = "blox:wood_"..nodeclass,
+ burntime = 7,
+ })
+end
minetest.register_craft({
type = "fuel",
- recipe = "blox:" .. colour .. blox,
+ recipe = "blox:wood_tinted",
burntime = 7,
})
-end
-end
+-- Tools
minetest.register_tool("blox:bloodbane", {
description = "Blood Bane",
@@ -550,6 +393,8 @@ minetest.register_tool("blox:bloodbane", {
}
})
+-- Ores
+
local sea_level = 1
minetest.register_on_mapgen_init(function(mapgen_params)
@@ -589,4 +434,99 @@ minetest.register_ore({
y_max = sea_level - 1,
})
+-- Convert old static nodes to param2 color
+
+blox.old_static_list = {}
+
+for _, nodeclass in ipairs(NodeClass) do
+ if nodeclass ~= "colored" then
+ for _, color in ipairs(BloxColours) do
+ table.insert(blox.old_static_list, "blox:"..color..nodeclass)
+ table.insert(blox.old_static_list, "blox:"..color..nodeclass.."_cobble")
+ table.insert(blox.old_static_list, "blox:"..color..nodeclass.."_wood")
+ end
+ end
+end
+
+for _, color in ipairs(BloxColours) do
+ table.insert(blox.old_static_list, "blox:"..color.."square")
+ table.insert(blox.old_static_list, "blox:"..color.."stone")
+ table.insert(blox.old_static_list, "blox:"..color.."wood")
+ table.insert(blox.old_static_list, "blox:"..color.."cobble")
+end
+
+minetest.register_lbm({
+ name = "blox:convert",
+ label = "Convert blox blocks to use param2 color",
+ run_at_every_load = true,
+ nodenames = blox.old_static_list,
+ action = function(pos, node)
+ local basename = string.sub(node.name, 6)
+ local color = basename
+ local material = "stone"
+ local pattern = "tinted"
+
+ if string.find(basename, "_cobble") then
+ basename = string.sub(basename, 1, -8)
+ material = "cobble"
+ elseif string.find(basename, "cobble") then
+ basename = string.sub(basename, 1, -7)
+ material = "cobble"
+ elseif string.find(basename, "_wood") then
+ basename = string.sub(basename, 1, -6)
+ material = "wood"
+ elseif string.find(basename, "wood") then
+ basename = string.sub(basename, 1, -5)
+ material = "wood"
+ elseif string.find(basename, "square") then
+ basename = string.sub(basename, 1, -7)
+ pattern = "square"
+ elseif string.find(basename, "stone") then
+ basename = string.sub(basename, 1, -6)
+ end
+
+ -- at this point, the material type has been deleted from `basename`.
+
+ if string.find(basename, "quarter") then
+ basename = string.sub(basename, 1, -8)
+ pattern = "quarter"
+ elseif string.find(basename, "cross") then
+ basename = string.sub(basename, 1, -6)
+ pattern = "cross"
+ elseif string.find(basename, "corner") then
+ basename = string.sub(basename, 1, -7)
+ pattern = "corner"
+ elseif string.find(basename, "diamond") then
+ basename = string.sub(basename, 1, -8)
+ pattern = "diamond"
+ elseif string.find(basename, "loop") then
+ basename = string.sub(basename, 1, -5)
+ pattern = "loop"
+ elseif string.find(basename, "checker") then
+ basename = string.sub(basename, 1, -8)
+ pattern = "checker"
+ end
+
+ -- all that's left in `basename` now is the color.
+
+ color = basename
+ if color == "purple" then
+ color = "violet"
+ elseif color == "blue" then
+ color = "skyblue"
+ elseif color == "pink" then
+ color = "magenta"
+ elseif color == "black" and
+ ( pattern == "square" or
+ pattern == "tinted" ) then
+ color = "dark_grey"
+ end
+
+ local paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..color)
+ minetest.set_node(pos, { name = "blox:"..material.."_"..pattern, param2 = paletteidx })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..color)
+ end
+})
+
print("Blox Mod [" ..version.. "] Loaded!")
diff --git a/blox/models/blox_block_with_overlay.obj b/blox/models/blox_block_with_overlay.obj
new file mode 100644
index 0000000..9c70760
--- /dev/null
+++ b/blox/models/blox_block_with_overlay.obj
@@ -0,0 +1,44 @@
+# 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
diff --git a/blox/textures/blox_cobble_checker.png b/blox/textures/blox_cobble_checker.png
new file mode 100644
index 0000000..1bcd4a1
--- /dev/null
+++ b/blox/textures/blox_cobble_checker.png
Binary files differ
diff --git a/blox/textures/blox_cobble_corner.png b/blox/textures/blox_cobble_corner.png
new file mode 100644
index 0000000..e9cde51
--- /dev/null
+++ b/blox/textures/blox_cobble_corner.png
Binary files differ
diff --git a/blox/textures/blox_cobble_cross.png b/blox/textures/blox_cobble_cross.png
new file mode 100644
index 0000000..1c65b59
--- /dev/null
+++ b/blox/textures/blox_cobble_cross.png
Binary files differ
diff --git a/blox/textures/blox_cobble_diamond.png b/blox/textures/blox_cobble_diamond.png
new file mode 100644
index 0000000..76aff7b
--- /dev/null
+++ b/blox/textures/blox_cobble_diamond.png
Binary files differ
diff --git a/blox/textures/blox_cobble_loop.png b/blox/textures/blox_cobble_loop.png
new file mode 100644
index 0000000..6db2105
--- /dev/null
+++ b/blox/textures/blox_cobble_loop.png
Binary files differ
diff --git a/blox/textures/blox_cobble_quarter.png b/blox/textures/blox_cobble_quarter.png
new file mode 100644
index 0000000..fe2e9cd
--- /dev/null
+++ b/blox/textures/blox_cobble_quarter.png
Binary files differ
diff --git a/blox/textures/blox_cobble_tinted.png b/blox/textures/blox_cobble_tinted.png
new file mode 100644
index 0000000..aae5a0a
--- /dev/null
+++ b/blox/textures/blox_cobble_tinted.png
Binary files differ
diff --git a/blox/textures/blox_stone_checker.png b/blox/textures/blox_stone_checker.png
new file mode 100644
index 0000000..400e699
--- /dev/null
+++ b/blox/textures/blox_stone_checker.png
Binary files differ
diff --git a/blox/textures/blox_stone_corner.png b/blox/textures/blox_stone_corner.png
new file mode 100644
index 0000000..7194904
--- /dev/null
+++ b/blox/textures/blox_stone_corner.png
Binary files differ
diff --git a/blox/textures/blox_stone_cross.png b/blox/textures/blox_stone_cross.png
new file mode 100644
index 0000000..11fa7cf
--- /dev/null
+++ b/blox/textures/blox_stone_cross.png
Binary files differ
diff --git a/blox/textures/blox_stone_diamond.png b/blox/textures/blox_stone_diamond.png
new file mode 100644
index 0000000..4da02b9
--- /dev/null
+++ b/blox/textures/blox_stone_diamond.png
Binary files differ
diff --git a/blox/textures/blox_stone_loop.png b/blox/textures/blox_stone_loop.png
new file mode 100644
index 0000000..99893c7
--- /dev/null
+++ b/blox/textures/blox_stone_loop.png
Binary files differ
diff --git a/blox/textures/blox_stone_quarter.png b/blox/textures/blox_stone_quarter.png
new file mode 100644
index 0000000..c68acd8
--- /dev/null
+++ b/blox/textures/blox_stone_quarter.png
Binary files differ
diff --git a/blox/textures/blox_stone_square.png b/blox/textures/blox_stone_square.png
new file mode 100644
index 0000000..ccf6180
--- /dev/null
+++ b/blox/textures/blox_stone_square.png
Binary files differ
diff --git a/blox/textures/blox_stone_tinted.png b/blox/textures/blox_stone_tinted.png
new file mode 100644
index 0000000..86e1268
--- /dev/null
+++ b/blox/textures/blox_stone_tinted.png
Binary files differ
diff --git a/blox/textures/blox_wood_checker.png b/blox/textures/blox_wood_checker.png
new file mode 100644
index 0000000..8ae69cd
--- /dev/null
+++ b/blox/textures/blox_wood_checker.png
Binary files differ
diff --git a/blox/textures/blox_wood_corner.png b/blox/textures/blox_wood_corner.png
new file mode 100644
index 0000000..9125036
--- /dev/null
+++ b/blox/textures/blox_wood_corner.png
Binary files differ
diff --git a/blox/textures/blox_wood_cross.png b/blox/textures/blox_wood_cross.png
new file mode 100644
index 0000000..49e6b65
--- /dev/null
+++ b/blox/textures/blox_wood_cross.png
Binary files differ
diff --git a/blox/textures/blox_wood_diamond.png b/blox/textures/blox_wood_diamond.png
new file mode 100644
index 0000000..4fb6c1f
--- /dev/null
+++ b/blox/textures/blox_wood_diamond.png
Binary files differ
diff --git a/blox/textures/blox_wood_loop.png b/blox/textures/blox_wood_loop.png
new file mode 100644
index 0000000..f52f883
--- /dev/null
+++ b/blox/textures/blox_wood_loop.png
Binary files differ
diff --git a/blox/textures/blox_wood_quarter.png b/blox/textures/blox_wood_quarter.png
new file mode 100644
index 0000000..487c049
--- /dev/null
+++ b/blox/textures/blox_wood_quarter.png
Binary files differ
diff --git a/blox/textures/blox_wood_tinted.png b/blox/textures/blox_wood_tinted.png
new file mode 100644
index 0000000..d20cffe
--- /dev/null
+++ b/blox/textures/blox_wood_tinted.png
Binary files differ
diff --git a/bobblocks/blocks.lua b/bobblocks/blocks.lua
index 652bc07..84fdc37 100644
--- a/bobblocks/blocks.lua
+++ b/bobblocks/blocks.lua
@@ -1,844 +1,321 @@
-- BobBlocks mod by RabbiBob
-- State Changes
-local update_bobblock = function (pos, node)
- local nodename=""
- local param2=""
- --Switch Block State
- if
- -- Start Blocks
- node.name == 'bobblocks:redblock_off' then nodename = 'bobblocks:redblock'
- elseif node.name == 'bobblocks:redblock' then nodename = 'bobblocks:redblock_off'
- elseif node.name == 'bobblocks:orangeblock_off' then nodename = 'bobblocks:orangeblock'
- elseif node.name == 'bobblocks:orangeblock' then nodename = 'bobblocks:orangeblock_off'
- elseif node.name == 'bobblocks:yellowblock_off' then nodename = 'bobblocks:yellowblock'
- elseif node.name == 'bobblocks:yellowblock' then nodename = 'bobblocks:yellowblock_off'
- elseif node.name == 'bobblocks:greenblock_off' then nodename = 'bobblocks:greenblock'
- elseif node.name == 'bobblocks:greenblock' then nodename = 'bobblocks:greenblock_off'
- elseif node.name == 'bobblocks:blueblock_off' then nodename = 'bobblocks:blueblock'
- elseif node.name == 'bobblocks:blueblock' then nodename = 'bobblocks:blueblock_off'
- elseif node.name == 'bobblocks:indigoblock_off' then nodename = 'bobblocks:indigoblock'
- elseif node.name == 'bobblocks:indigoblock' then nodename = 'bobblocks:indigoblock_off'
- elseif node.name == 'bobblocks:violetblock_off' then nodename = 'bobblocks:violetblock'
- elseif node.name == 'bobblocks:violetblock' then nodename = 'bobblocks:violetblock_off'
- elseif node.name == 'bobblocks:whiteblock_off' then nodename = 'bobblocks:whiteblock'
- elseif node.name == 'bobblocks:whiteblock' then nodename = 'bobblocks:whiteblock_off'
- -- Start Poles
- elseif node.name == 'bobblocks:redpole_off' then nodename = 'bobblocks:redpole'
- elseif node.name == 'bobblocks:redpole' then nodename = 'bobblocks:redpole_off'
- elseif node.name == 'bobblocks:orangepole_off' then nodename = 'bobblocks:orangepole'
- elseif node.name == 'bobblocks:orangepole' then nodename = 'bobblocks:orangepole_off'
- elseif node.name == 'bobblocks:yellowpole_off' then nodename = 'bobblocks:yellowpole'
- elseif node.name == 'bobblocks:yellowpole' then nodename = 'bobblocks:yellowpole_off'
- elseif node.name == 'bobblocks:greenpole_off' then nodename = 'bobblocks:greenpole'
- elseif node.name == 'bobblocks:greenpole' then nodename = 'bobblocks:greenpole_off'
- elseif node.name == 'bobblocks:bluepole_off' then nodename = 'bobblocks:bluepole'
- elseif node.name == 'bobblocks:bluepole' then nodename = 'bobblocks:bluepole_off'
- elseif node.name == 'bobblocks:indigopole_off' then nodename = 'bobblocks:indigopole'
- elseif node.name == 'bobblocks:indigopole' then nodename = 'bobblocks:indigopole_off'
- elseif node.name == 'bobblocks:violetpole_off' then nodename = 'bobblocks:violetpole'
- elseif node.name == 'bobblocks:violetpole' then nodename = 'bobblocks:violetpole_off'
- elseif node.name == 'bobblocks:whitepole_off' then nodename = 'bobblocks:whitepole'
- elseif node.name == 'bobblocks:whitepole' then nodename = 'bobblocks:whitepole_off'
- end
- minetest.add_node(pos, {name = nodename})
+bobblocks = {}
+bobblocks.old_static_nodes = {}
+
+bobblocks.colorlist = {
+ "red",
+ "orange",
+ "yellow",
+ "green",
+ "blue",
+ "indigo",
+ "violet",
+ "white",
+ "grey"
+}
+
+bobblocks.update_bobblock = function (pos, node)
+ local newnode = node
+ if string.find(newnode.name, "_off") then
+ newnode.name = string.sub(newnode.name, 1, -5)
+ else
+ newnode.name = newnode.name.."_off"
+ end
+
+ minetest.swap_node(pos, newnode)
minetest.sound_play("bobblocks_glassblock",
{pos = pos, gain = 1.0, max_hear_distance = 32,})
end
-
--- Punch Blocks
-local on_bobblock_punched = function (pos, node, puncher)
- if
- -- Start Blocks
- node.name == 'bobblocks:redblock_off' or node.name == 'bobblocks:redblock' or
- node.name == 'bobblocks:orangeblock_off' or node.name == 'bobblocks:orangeblock' or
- node.name == 'bobblocks:yellowblock_off' or node.name == 'bobblocks:yellowblock' or
- node.name == 'bobblocks:greenblock_off' or node.name == 'bobblocks:greenblock' or
- node.name == 'bobblocks:blueblock_off' or node.name == 'bobblocks:blueblock' or
- node.name == 'bobblocks:indigoblock_off' or node.name == 'bobblocks:indigoblock' or
- node.name == 'bobblocks:violetblock_off' or node.name == 'bobblocks:violetblock' or
- node.name == 'bobblocks:whiteblock_off' or node.name == 'bobblocks:whiteblock' or
- --Start Poles
- node.name == 'bobblocks:redpole_off' or node.name == 'bobblocks:redpole' or
- node.name == 'bobblocks:orangepole_off' or node.name == 'bobblocks:orangepole' or
- node.name == 'bobblocks:yellowpole_off' or node.name == 'bobblocks:yellowpole' or
- node.name == 'bobblocks:greenpole_off' or node.name == 'bobblocks:greenpole' or
- node.name == 'bobblocks:bluepole_off' or node.name == 'bobblocks:bluepole' or
- node.name == 'bobblocks:indigopole_off' or node.name == 'bobblocks:indigopole' or
- node.name == 'bobblocks:violetpole_off' or node.name == 'bobblocks:violetpole' or
- node.name == 'bobblocks:whitepole_off' or node.name == 'bobblocks:whitepole'
- then
- update_bobblock(pos, node)
- end
-end
-
-minetest.register_on_punchnode(on_bobblock_punched)
-
-- Nodes
--- Misc Node
-
-minetest.register_node("bobblocks:btm", {
- description = "Bobs TransMorgifier v5",
- tiles = {"bobblocks_btm_sides.png", "bobblocks_btm_sides.png", "bobblocks_btm_sides.png",
- "bobblocks_btm_sides.png", "bobblocks_btm_sides.png", "bobblocks_btm.png"},
- inventory_image = "bobblocks_btm.png",
- paramtype2 = "facedir",
- material = minetest.digprop_dirtlike(1.0),
- legacy_facedir_simple = true,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
-
-})
-
-
--- Start Block Nodes
-minetest.register_node("bobblocks:redblock", {
- description = "Red Block",
- drawtype = "glasslike",
- tiles = {"bobblocks_redblock.png"},
- inventory_image = minetest.inventorycube("bobblocks_redblock.png"),
- paramtype = "light",
- sunlight_propagates = true,
- is_ground_content = true,
- sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-0,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
- foo = {conductor={
- state = mesecon.state.on,
- offstate = "bobblocks:redblock_off"
- }}
-})
-
-minetest.register_node("bobblocks:redblock_off", {
- description = "Red Block",
- tiles = {"bobblocks_redblock.png"},
- is_ground_content = true,
- alpha = WATER_ALPHA,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
- drop = 'bobblocks:redblock',
- foo = {conductor={
- state = mesecon.state.off,
- onstate = "bobblocks:redblock"
- }}
-
-})
-
-minetest.register_node("bobblocks:orangeblock", {
- description = "Orange Block",
- drawtype = "glasslike",
- tiles = {"bobblocks_orangeblock.png"},
- inventory_image = minetest.inventorycube("bobblocks_orangeblock.png"),
- paramtype = "light",
- sunlight_propagates = true,
- is_ground_content = true,
- sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-0,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
- foo = {conductor={
- state = mesecon.state.on,
- offstate = "bobblocks:orangeblock_off"
- }}
-})
-
-minetest.register_node("bobblocks:orangeblock_off", {
- description = "Orange Block",
- tiles = {"bobblocks_orangeblock.png"},
- is_ground_content = true,
- alpha = WATER_ALPHA,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
- drop = 'bobblocks:orangeblock',
- foo = {conductor={
- state = mesecon.state.off,
- onstate = "bobblocks:orangeblock"
- }}
-
-})
-
-minetest.register_node("bobblocks:yellowblock", {
- description = "Yellow Block",
- drawtype = "glasslike",
- tiles = {"bobblocks_yellowblock.png"},
- inventory_image = minetest.inventorycube("bobblocks_yellowblock.png"),
- paramtype = "light",
- sunlight_propagates = true,
- is_ground_content = true,
- sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-0,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
- foo = {conductor={
- state = mesecon.state.on,
- offstate = "bobblocks:yellowblock_off"
- }}
-})
-
-minetest.register_node("bobblocks:yellowblock_off", {
- description = "Yellow Block",
- tiles = {"bobblocks_yellowblock.png"},
- is_ground_content = true,
- alpha = WATER_ALPHA,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
- drop = 'bobblocks:yellowblock',
- foo = {conductor={
- state = mesecon.state.off,
- onstate = "bobblocks:yellowblock"
- }}
-
-})
-
-minetest.register_node("bobblocks:greenblock", {
- description = "Green Block",
- drawtype = "glasslike",
- tiles = {"bobblocks_greenblock.png"},
- inventory_image = minetest.inventorycube("bobblocks_greenblock.png"),
- paramtype = "light",
- sunlight_propagates = true,
- is_ground_content = true,
- sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-0,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
- foo = {conductor={
- state = mesecon.state.on,
- offstate = "bobblocks:greenblock_off"
- }}
-})
-
-minetest.register_node("bobblocks:greenblock_off", {
- description = "Green Block",
- tiles = {"bobblocks_greenblock.png"},
- is_ground_content = true,
- alpha = WATER_ALPHA,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
- drop = 'bobblocks:greenblock',
- foo = {conductor={
- state = mesecon.state.off,
- onstate = "bobblocks:greenblock"
- }}
-
-})
-
-
-minetest.register_node("bobblocks:blueblock", {
- description = "Blue Block",
- drawtype = "glasslike",
- tiles = {"bobblocks_blueblock.png"},
- inventory_image = minetest.inventorycube("bobblocks_blueblock.png"),
- paramtype = "light",
- sunlight_propagates = true,
- is_ground_content = true,
- sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-0,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
- foo = {conductor={
- state = mesecon.state.on,
- offstate = "bobblocks:blueblock_off"
- }}
-})
-
-minetest.register_node("bobblocks:blueblock_off", {
- description = "Blue Block",
- tiles = {"bobblocks_blueblock.png"},
- is_ground_content = true,
- alpha = WATER_ALPHA,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
- drop = 'bobblocks:blueblock',
- foo = {conductor={
- state = mesecon.state.off,
- onstate = "bobblocks:blueblock"
- }}
-
-})
-
-minetest.register_node("bobblocks:indigoblock", {
- description = "Indigo Block",
- drawtype = "glasslike",
- tiles = {"bobblocks_indigoblock.png"},
- inventory_image = minetest.inventorycube("bobblocks_indigoblock.png"),
- paramtype = "light",
- sunlight_propagates = true,
- is_ground_content = true,
- sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-0,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
- foo = {conductor={
- state = mesecon.state.on,
- offstate = "bobblocks:indigoblock_off"
- }}
-})
-
-minetest.register_node("bobblocks:indigoblock_off", {
- description = "Indigo Block",
- tiles = {"bobblocks_indigoblock.png"},
- is_ground_content = true,
- alpha = WATER_ALPHA,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
- drop = 'bobblocks:indigoblock',
- foo = {conductor={
- state = mesecon.state.off,
- onstate = "bobblocks:indigoblock"
- }}
-
-})
-
-
-minetest.register_node("bobblocks:violetblock", {
- description = "Violet Block",
- drawtype = "glasslike",
- tiles = {"bobblocks_violetblock.png"},
- inventory_image = minetest.inventorycube("bobblocks_violetblock.png"),
- paramtype = "light",
- sunlight_propagates = true,
- is_ground_content = true,
- sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-0,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
- foo = {conductor={
- state = mesecon.state.on,
- offstate = "bobblocks:violetblock_off"
- }}
-})
-minetest.register_node("bobblocks:violetblock_off", {
- description = "Violet Block",
- tiles = {"bobblocks_violetblock.png"},
- is_ground_content = true,
- alpha = WATER_ALPHA,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
- drop = 'bobblocks:violetblock',
- foo = {conductor={
- state = mesecon.state.off,
- onstate = "bobblocks:violetblock"
- }}
-
-})
-
-minetest.register_node("bobblocks:whiteblock", {
- description = "White Block",
+minetest.register_node("bobblocks:block", {
+ description = "Bobblocks Plain Block",
drawtype = "glasslike",
- tiles = {"bobblocks_whiteblock.png"},
- inventory_image = minetest.inventorycube("bobblocks_whiteblock.png"),
+ tiles = {"bobblocks_block.png"},
paramtype = "light",
+ paramtype2 = "color",
+ palette = "unifieddyes_palette.png",
sunlight_propagates = true,
is_ground_content = true,
sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-0,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
- foo = {conductor={
+ light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ foo = {conductor={
state = mesecon.state.on,
- offstate = "bobblocks:whiteblock_off"
- }}
-})
-
-minetest.register_node("bobblocks:whiteblock_off", {
- description = "White Block",
- tiles = {"bobblocks_whiteblock.png"},
- is_ground_content = true,
- alpha = WATER_ALPHA,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
- drop = 'bobblocks:whiteblock',
- foo = {conductor={
- state = mesecon.state.off,
- onstate = "bobblocks:whiteblock"
- }}
-
-})
-
-
-minetest.register_node("bobblocks:greyblock", {
- description = "Grey Block",
- drawtype = "glasslike",
- tiles = {"bobblocks_greyblock.png"},
- inventory_image = minetest.inventorycube("bobblocks_greyblock.png"),
- paramtype = "light",
- sunlight_propagates = true,
+ offstate = "bobblocks:block_off"
+ }
+ },
+ on_punch = bobblocks.update_bobblock,
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "bobblocks:block", false)
+ end
+})
+
+minetest.register_node("bobblocks:block_off", {
+ description = "Bobblocks Plain Block (off)",
+ tiles = {"bobblocks_block.png"},
+ paramtype2 = "color",
+ palette = "unifieddyes_palette.png",
is_ground_content = true,
- sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-0,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
- foo = {conductor={
- state = mesecon.state.on,
- offstate = "bobblocks:greyblock_off"
- }}
-})
-
-minetest.register_node("bobblocks:greyblock_off", {
- description = "Grey Block",
- tiles = {"bobblocks_greyblock.png"},
- is_ground_content = true,
- alpha = WATER_ALPHA,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
- drop = 'bobblocks:greyblock',
- foo = {conductor={
+ alpha = WATER_ALPHA,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ drop = 'bobblocks:redblock',
+ foo = {conductor={
state = mesecon.state.off,
- onstate = "bobblocks:greyblock"
- }}
-
+ onstate = "bobblocks:block"
+ }
+ },
+ on_punch = bobblocks.update_bobblock,
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "bobblocks:block_off", false)
+ end
})
-
-- Block Poles
-minetest.register_node("bobblocks:redpole", {
- description = "Red Pole",
- drawtype = "fencelike",
- tiles = {"bobblocks_redblock.png"},
- inventory_image = ("bobblocks_invredpole.png"),
- paramtype = "light",
- sunlight_propagates = true,
- is_ground_content = true,
- sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-0,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
- foo = {conductor={
- state = mesecon.state.on,
- offstate = "bobblocks:redpole_off"
- }}
-})
-
-minetest.register_node("bobblocks:redpole_off", {
- description = "Red Pole",
- drawtype = "fencelike",
- tiles = {"bobblocks_redblock.png"},
- inventory_image = ("bobblocks_invredpole.png"),
- paramtype = "light",
- sunlight_propagates = true,
- is_ground_content = true,
- sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-10,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
- drop = 'bobblocks:redpole',
- foo = {conductor={
- state = mesecon.state.off,
- onstate = "bobblocks:redpole"
- }}
-
-})
-
-minetest.register_node("bobblocks:orangepole", {
- description = "Orange Pole",
- drawtype = "fencelike",
- tiles = {"bobblocks_orangeblock.png"},
- inventory_image = ("bobblocks_invorangepole.png"),
- paramtype = "light",
- sunlight_propagates = true,
- is_ground_content = true,
- sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-0,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
- foo = {conductor={
- state = mesecon.state.on,
- offstate = "bobblocks:orangepole_off"
- }}
-})
-
-minetest.register_node("bobblocks:orangepole_off", {
- description = "Orange Pole",
- drawtype = "fencelike",
- tiles = {"bobblocks_orangeblock.png"},
- inventory_image = ("bobblocks_invorangepole.png"),
- paramtype = "light",
- sunlight_propagates = true,
- is_ground_content = true,
- sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-10,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
- drop = 'bobblocks:orangepole',
- foo = {conductor={
- state = mesecon.state.off,
- onstate = "bobblocks:orangepole"
- }}
-
-})
-
-minetest.register_node("bobblocks:yellowpole", {
- description = "Yellow Pole",
- drawtype = "fencelike",
- tiles = {"bobblocks_yellowblock.png"},
- inventory_image = ("bobblocks_invyellowpole.png"),
- paramtype = "light",
- sunlight_propagates = true,
- is_ground_content = true,
- sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-0,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
- foo = {conductor={
- state = mesecon.state.on,
- offstate = "bobblocks:yellowpole_off"
- }}
-})
-
-minetest.register_node("bobblocks:yellowpole_off", {
- description = "Yellow Pole",
- drawtype = "fencelike",
- tiles = {"bobblocks_yellowblock.png"},
- inventory_image = ("bobblocks_invyellowpole.png"),
- paramtype = "light",
- sunlight_propagates = true,
- is_ground_content = true,
- sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-10,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
- drop = 'bobblocks:yellowpole',
- foo = {conductor={
- state = mesecon.state.off,
- onstate = "bobblocks:yellowpole"
- }}
-
-})
-
-minetest.register_node("bobblocks:greenpole", {
- description = "Green Pole",
- drawtype = "fencelike",
- tiles = {"bobblocks_greenblock.png"},
- inventory_image = ("bobblocks_invgreenpole.png"),
- paramtype = "light",
- sunlight_propagates = true,
- is_ground_content = true,
- sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-0,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
- foo = {conductor={
- state = mesecon.state.on,
- offstate = "bobblocks:greenpole_off"
- }}
-})
-
-minetest.register_node("bobblocks:greenpole_off", {
- description = "Green Pole",
- drawtype = "fencelike",
- tiles = {"bobblocks_greenblock.png"},
- inventory_image = ("bobblocks_invgreenpole.png"),
- paramtype = "light",
- sunlight_propagates = true,
- is_ground_content = true,
- sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-10,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
- drop = 'bobblocks:greenpole',
- foo = {conductor={
- state = mesecon.state.off,
- onstate = "bobblocks:greenpole"
- }}
-
-})
-
-minetest.register_node("bobblocks:bluepole", {
- description = "Blue Pole",
+minetest.register_node("bobblocks:pole", {
+ description = "Bobblocks Pole",
drawtype = "fencelike",
- tiles = {"bobblocks_blueblock.png"},
- inventory_image = ("bobblocks_invbluepole.png"),
+ tiles = {"bobblocks_block.png"},
+ inventory_image = ("bobblocks_pole_inv.png"),
paramtype = "light",
+ paramtype2 = "color",
+ palette = "unifieddyes_palette.png",
sunlight_propagates = true,
is_ground_content = true,
sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-0,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
- foo = {conductor={
+ light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ foo = {conductor={
state = mesecon.state.on,
- offstate = "bobblocks:bluepole_off"
- }}
+ offstate = "bobblocks:pole_off"
+ }
+ },
+ on_punch = bobblocks.update_bobblock,
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "bobblocks:pole", false)
+ end
})
-minetest.register_node("bobblocks:bluepole_off", {
- description = "Blue Pole",
+minetest.register_node("bobblocks:pole_off", {
+ description = "Bobblocks Pole (off)",
drawtype = "fencelike",
- tiles = {"bobblocks_blueblock.png"},
- inventory_image = ("bobblocks_invbluepole.png"),
+ tiles = {"bobblocks_block.png"},
paramtype = "light",
+ paramtype2 = "color",
+ palette = "unifieddyes_palette.png",
sunlight_propagates = true,
is_ground_content = true,
sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-10,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
- drop = 'bobblocks:bluepole',
- foo = {conductor={
+ light_source = LIGHT_MAX-10,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ drop = 'bobblocks:redpole',
+ foo = {conductor={
state = mesecon.state.off,
- onstate = "bobblocks:bluepole"
- }}
-
-})
-
-minetest.register_node("bobblocks:indigopole", {
- description = "Indigo Pole",
- drawtype = "fencelike",
- tiles = {"bobblocks_indigoblock.png"},
- inventory_image = ("bobblocks_invindigopole.png"),
- paramtype = "light",
- sunlight_propagates = true,
- is_ground_content = true,
- sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-0,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
- foo = {conductor={
- state = mesecon.state.on,
- offstate = "bobblocks:indigopole_off"
- }}
+ onstate = "bobblocks:pole"
+ }
+ },
+ on_punch = bobblocks.update_bobblock,
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "bobblocks:pole_off", false)
+ end
})
-minetest.register_node("bobblocks:indigopole_off", {
- description = "Indigo Pole",
- drawtype = "fencelike",
- tiles = {"bobblocks_indigoblock.png"},
- inventory_image = ("bobblocks_invindigopole.png"),
- paramtype = "light",
- sunlight_propagates = true,
- is_ground_content = true,
- sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-10,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
- drop = 'bobblocks:indigopole',
- foo = {conductor={
- state = mesecon.state.off,
- onstate = "bobblocks:indigopole"
- }}
-
-})
+-- old static nodes grandfathered-in because they have a different texture or usage than the colored ones.
-minetest.register_node("bobblocks:violetpole", {
- description = "Violet Pole",
- drawtype = "fencelike",
- tiles = {"bobblocks_violetblock.png"},
- inventory_image = ("bobblocks_invvioletpole.png"),
- paramtype = "light",
- sunlight_propagates = true,
- is_ground_content = true,
- sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-0,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
- foo = {conductor={
- state = mesecon.state.on,
- offstate = "bobblocks:violetpole_off"
- }}
-})
-
-minetest.register_node("bobblocks:violetpole_off", {
- description = "Violet Pole",
- drawtype = "fencelike",
- tiles = {"bobblocks_violetblock.png"},
- inventory_image = ("bobblocks_invvioletpole.png"),
- paramtype = "light",
- sunlight_propagates = true,
- is_ground_content = true,
- sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-10,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
- drop = 'bobblocks:violetpole',
- foo = {conductor={
- state = mesecon.state.off,
- onstate = "bobblocks:violetpole"
- }}
-
+minetest.register_node("bobblocks:btm", {
+ description = "Bobs TransMorgifier v5",
+ tiles = {"bobblocks_btm_sides.png", "bobblocks_btm_sides.png", "bobblocks_btm_sides.png",
+ "bobblocks_btm_sides.png", "bobblocks_btm_sides.png", "bobblocks_btm.png"},
+ inventory_image = "bobblocks_btm.png",
+ paramtype2 = "facedir",
+ material = minetest.digprop_dirtlike(1.0),
+ legacy_facedir_simple = true,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
})
-minetest.register_node("bobblocks:whitepole", {
- description = "White Pole",
- drawtype = "fencelike",
- tiles = {"bobblocks_whiteblock.png"},
- inventory_image = ("bobblocks_invwhitepole.png"),
+minetest.register_node("bobblocks:wavyblock", {
+ description = "Bobblocks Wavy-textured Block",
+ drawtype = "glasslike",
+ tiles = {"bobblocks_wavyblock.png"},
paramtype = "light",
+ paramtype2 = "color",
+ palette = "unifieddyes_palette.png",
sunlight_propagates = true,
is_ground_content = true,
sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-0,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
- foo = {conductor={
+ light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ foo = {conductor=
+ {
state = mesecon.state.on,
- offstate = "bobblocks:whitepole_off"
- }}
-})
-
-minetest.register_node("bobblocks:whitepole_off", {
- description = "White Pole",
- drawtype = "fencelike",
- tiles = {"bobblocks_whiteblock.png"},
- inventory_image = ("bobblocks_invwhitepole.png"),
- paramtype = "light",
- sunlight_propagates = true,
+ offstate = "bobblocks:wavyblock_off"
+ }
+ },
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "bobblocks:wavyblock", false)
+ end
+})
+
+minetest.register_node("bobblocks:wavyblock_off", {
+ description = "Bobblocks Wavy-textured Block (off)",
+ tiles = {"bobblocks_wavyblock.png"},
+ paramtype2 = "color",
+ palette = "unifieddyes_palette.png",
is_ground_content = true,
- sounds = default.node_sound_glass_defaults(),
- light_source = LIGHT_MAX-10,
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
- drop = 'bobblocks:whitepole',
- foo = {conductor={
+ alpha = WATER_ALPHA,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1},
+ drop = 'bobblocks:wavyblock',
+ foo = {conductor=
+ {
state = mesecon.state.off,
- onstate = "bobblocks:whitepole"
- }}
-
+ onstate = "bobblocks:wavyblock"
+ }
+ },
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "bobblocks:wavyblock_off", false)
+ end
})
-minetest.register_node("bobblocks:greypole", {
- description = "Grey Pole",
+minetest.register_node("bobblocks:wavypole", {
+ description = "Wavy-textured Pole",
drawtype = "fencelike",
- tiles = {"bobblocks_greyblock.png"},
- inventory_image = ("bobblocks_invgreypole.png"),
+ tiles = {"bobblocks_wavyblock.png"},
+ inventory_image = ("bobblocks_wavypole_inv.png"),
paramtype = "light",
+ paramtype2 = "color",
+ palette = "unifieddyes_palette.png",
sunlight_propagates = true,
is_ground_content = true,
sounds = default.node_sound_glass_defaults(),
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
- --light_source = LIGHT_MAX-0,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "bobblocks:wavypole", false)
+ end
+ --light_source = LIGHT_MAX-0,
})
-
-
-- Crafts
--- BTM
-minetest.register_craft({
- output = 'NodeItem "bobblocks:btm" 1',
- recipe = {
- {'node "default:glass" 1', 'node "default:torch" 1', 'node "default:leaves" 1',
- 'node "default:mese" 1','node "default:rat" 1'},
-
- },
-})
-
-minetest.register_craft({
- output = 'NodeItem "bobblocks:greyblock" 2',
- recipe = {
- {'node "default:glass" 1', 'node "default:torch" 1', 'node "default:cobble" 1'},
- },
-})
-
--- Red / Yellow / Blue / White
--- Red / Yellow -> Orange
--- Red / Blue -> Violet
--- Blue / Yellow -> Green
--- Red / Yellow / White -> Indigo
minetest.register_craft({
- output = 'NodeItem "bobblocks:redblock" 2',
+ output = "bobblocks:btm",
+ type = "shapeless",
recipe = {
- {'node "default:glass" 1', 'node "default:torch" 1', 'node "default:brick" 1'},
- },
-})
-minetest.register_craft({
- output = 'NodeItem "bobblocks:yellowblock" 2',
- recipe = {
- {'node "default:glass" 1', 'node "default:torch" 1', 'node "default:sand" 1'},
- },
-})
-minetest.register_craft({
- output = 'NodeItem "bobblocks:blueblock" 2',
- recipe = {
- {'node "default:glass" 1', 'node "default:torch" 1', 'node "default:gravel" 1'},
+ "default:glass",
+ "default:torch",
+ "group:leaves",
+ "default:mese_crystal",
+ "default:diamond"
},
})
minetest.register_craft({
- output = 'NodeItem "bobblocks:whiteblock" 2',
+ output = "bobblocks:block 2",
recipe = {
- {'node "default:glass" 1', 'node "default:torch" 1', 'node "default:dirt" 1'},
+ { "default:glass", "default:torch", "default:cobble" },
},
})
-
minetest.register_craft({
- output = 'NodeItem "bobblocks:orangeblock" 2',
+ output = "bobblocks:pole",
recipe = {
- {'node "bobblocks:redblock" 1', 'node "bobblocks:yellowblock" 1'},
-
- },
+ { "bobblocks:block", "group:stick" },
+ }
})
-
minetest.register_craft({
- output = 'NodeItem "bobblocks:violetblock" 2',
+ output = "bobblocks:wavyblock 2",
+ type = "shapeless",
recipe = {
- {'node "bobblocks:redblock" 1', 'node "bobblocks:blueblock" 1'},
-
+ "bobblocks:block",
+ "bobblocks:block"
},
})
minetest.register_craft({
- output = 'NodeItem "bobblocks:greenblock" 2',
+ output = "bobblocks:wavypole",
recipe = {
- {'node "bobblocks:blueblock" 1', 'node "bobblocks:yellowblock" 1'},
-
- },
+ { "bobblocks:wavyblock", "group:stick" },
+ }
})
+-- Convert old static nodes to the param2 scheme
-minetest.register_craft({
- output = 'NodeItem "bobblocks:indigoblock" 3',
- recipe = {
- {'node "bobblocks:redblock" 1', 'node "bobblocks:blueblock" 1', 'node "bobblocks:whiteblock" 1'},
-
- },
-})
-
--- Poles
-
-minetest.register_craft({
- output = 'NodeItem "bobblocks:redpole" 1',
- recipe = {
- {'node "bobblocks:redblock" 1', 'node "default:stick" 1'},
-
- },
-})
-
-minetest.register_craft({
- output = 'NodeItem "bobblocks:yellowpole" 1',
- recipe = {
- {'node "bobblocks:yellowblock" 1', 'node "default:stick" 1'},
-
- },
-})
-
-minetest.register_craft({
- output = 'NodeItem "bobblocks:bluepole" 1',
- recipe = {
- {'node "bobblocks:blueblock" 1', 'node "default:stick" 1'},
-
- },
-})
-
-minetest.register_craft({
- output = 'NodeItem "bobblocks:whitepole" 1',
- recipe = {
- {'node "bobblocks:whiteblock" 1', 'node "default:stick" 1'},
-
- },
-})
-
-minetest.register_craft({
- output = 'NodeItem "bobblocks:orangepole" 1',
- recipe = {
- {'node "bobblocks:orangeblock" 1', 'node "default:stick" 1'},
-
- },
-})
-
-minetest.register_craft({
- output = 'NodeItem "bobblocks:violetpole" 1',
- recipe = {
- {'node "bobblocks:violetblock" 1', 'node "default:stick" 1'},
-
- },
-})
-
-minetest.register_craft({
- output = 'NodeItem "bobblocks:greenpole" 1',
- recipe = {
- {'node "bobblocks:greenblock" 1', 'node "default:stick" 1'},
-
- },
-})
-
-minetest.register_craft({
- output = 'NodeItem "bobblocks:indigopole" 1',
- recipe = {
- {'node "bobblocks:indigoblock" 1', 'node "default:stick" 1'},
-
- },
-})
-
-minetest.register_craft({
- output = 'NodeItem "bobblocks:greypole" 1',
- recipe = {
- {'node "bobblocks:greyblock" 1', 'node "default:stick" 1'},
+for _, i in ipairs(bobblocks.colorlist) do
+ table.insert(bobblocks.old_static_nodes, "bobblocks:"..i.."block")
+ table.insert(bobblocks.old_static_nodes, "bobblocks:"..i.."block_off")
+ table.insert(bobblocks.old_static_nodes, "bobblocks:"..i.."pole")
+ table.insert(bobblocks.old_static_nodes, "bobblocks:"..i.."pole_off")
+end
- },
+minetest.register_lbm({
+ name = "bobblocks:convert",
+ label = "Convert bobblocks nodes to use param2 color",
+ run_at_every_load = true,
+ nodenames = bobblocks.old_static_nodes,
+ action = function(pos, node)
+ local basename = node.name
+ local color = string.sub(node.name, 11) -- delete the mod name
+
+ if string.find(color, "_off") then -- delete "_off" if it exists
+ color = string.sub(color, 1, -5)
+ end
+ if string.find(color, "pole") then
+ color = string.sub(color, 1, -5) -- delete "pole"...
+ else
+ color = string.sub(color, 1, -6) -- or delete "block"
+ end
+
+ local newcolor = "medium_"..color -- the result of the above should be just the hue
+
+ -- custom re-mappings to use unified dyes' colors that are most similar to the originals
+ if color == "blue" then
+ newcolor = "medium_skyblue"
+ end
+ if color == "indigo" then
+ newcolor = "light_violet"
+ end
+ if color == "violet" then
+ newcolor = "violet_s50"
+ end
+ if color == "white" then
+ newcolor = "light_grey"
+ end
+
+ local paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..newcolor, false)
+ local newnode = "bobblocks:block"
+
+ if string.find(basename, "grey") then
+ paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:grey", false)
+ if string.find(basename, "pole") then
+ newnode = "bobblocks:wavypole"
+ else
+ newnode = "bobblocks:wavyblock"
+ end
+ else
+ if string.find(basename, "pole") then
+ newnode = "bobblocks:pole"
+ end
+ end
+
+ local meta = minetest.get_meta(pos)
+ minetest.set_node(pos, { name = newnode, param2 = paletteidx })
+ meta:set_string("dye", "unifieddyes:"..newcolor)
+ end
})
-
-
--- MESECON
--- Add jeija to bobblocks\default.txt and paste the below in at the bottom of bobblocks\blocks.lua
-
diff --git a/bobblocks/depends.txt b/bobblocks/depends.txt
index aca967d..ada7093 100644
--- a/bobblocks/depends.txt
+++ b/bobblocks/depends.txt
@@ -1,2 +1,3 @@
default
mesecons
+unifieddyes
diff --git a/bobblocks/textures/bobblocks_block.png b/bobblocks/textures/bobblocks_block.png
new file mode 100644
index 0000000..60d2374
--- /dev/null
+++ b/bobblocks/textures/bobblocks_block.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_block_off.png b/bobblocks/textures/bobblocks_block_off.png
new file mode 100644
index 0000000..a2dd491
--- /dev/null
+++ b/bobblocks/textures/bobblocks_block_off.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_pole_inv.png b/bobblocks/textures/bobblocks_pole_inv.png
new file mode 100644
index 0000000..0005e51
--- /dev/null
+++ b/bobblocks/textures/bobblocks_pole_inv.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_wavyblock.png b/bobblocks/textures/bobblocks_wavyblock.png
new file mode 100644
index 0000000..49979bb
--- /dev/null
+++ b/bobblocks/textures/bobblocks_wavyblock.png
Binary files differ
diff --git a/bobblocks/textures/bobblocks_wavypole_inv.png b/bobblocks/textures/bobblocks_wavypole_inv.png
new file mode 100644
index 0000000..e32920c
--- /dev/null
+++ b/bobblocks/textures/bobblocks_wavypole_inv.png
Binary files differ
diff --git a/boost_cart/cart_entity.lua b/boost_cart/cart_entity.lua
index ba23713..32ebe5f 100644
--- a/boost_cart/cart_entity.lua
+++ b/boost_cart/cart_entity.lua
@@ -37,6 +37,12 @@ local cart_entity = {
attached_items = {}
}
+-- Model and textures
+if boost_cart.mtg_compat then
+ cart_entity.mesh = "carts_cart.b3d"
+ cart_entity.textures = {"carts_cart.png"}
+end
+
function cart_entity:on_rightclick(clicker)
if not clicker or not clicker:is_player() then
return
@@ -109,8 +115,9 @@ function cart_entity:on_punch(puncher, time_from_last_punch, tool_capabilities,
local leftover = puncher:get_inventory():add_item("main", "carts:cart")
if not leftover:is_empty() then
- minetest.add_item(self.object:getpos(), leftover)
+ minetest.add_item(pos, leftover)
end
+
self.object:remove()
return
end
@@ -346,33 +353,41 @@ function cart_entity:on_step(dtime)
end
minetest.register_entity(":carts:cart", cart_entity)
-minetest.register_craftitem(":carts:cart", {
- description = "Cart (Sneak+Click to pick up)",
- inventory_image = minetest.inventorycube("cart_top.png", "cart_side.png", "cart_side.png"),
- wield_image = "cart_side.png",
- on_place = function(itemstack, placer, pointed_thing)
- if not pointed_thing.type == "node" then
- return
- end
- if boost_cart:is_rail(pointed_thing.under) then
- minetest.add_entity(pointed_thing.under, "carts:cart")
- elseif boost_cart:is_rail(pointed_thing.above) then
- minetest.add_entity(pointed_thing.above, "carts:cart")
- else
- return
- end
- if not minetest.setting_getbool("creative_mode") then
- itemstack:take_item()
- end
- return itemstack
- end,
-})
-
-minetest.register_craft({
- output = "carts:cart",
- recipe = {
- {"default:steel_ingot", "", "default:steel_ingot"},
- {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},
- },
-})
+-- Register item to place the entity
+if not boost_cart.mtg_compat then
+ minetest.register_craftitem(":carts:cart", {
+ description = "Cart (Sneak+Click to pick up)",
+ inventory_image = minetest.inventorycube(
+ "cart_top.png",
+ "cart_side.png",
+ "cart_side.png"
+ ),
+ wield_image = "cart_side.png",
+ on_place = function(itemstack, placer, pointed_thing)
+ if not pointed_thing.type == "node" then
+ return
+ end
+ if boost_cart:is_rail(pointed_thing.under) then
+ minetest.add_entity(pointed_thing.under, "carts:cart")
+ elseif boost_cart:is_rail(pointed_thing.above) then
+ minetest.add_entity(pointed_thing.above, "carts:cart")
+ else
+ return
+ end
+
+ if not minetest.setting_getbool("creative_mode") then
+ itemstack:take_item()
+ end
+ return itemstack
+ end,
+ })
+
+ minetest.register_craft({
+ output = "carts:cart",
+ recipe = {
+ {"default:steel_ingot", "", "default:steel_ingot"},
+ {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},
+ },
+ })
+end
diff --git a/building_blocks/depends.txt b/building_blocks/depends.txt
index 9771003..792f5cd 100644
--- a/building_blocks/depends.txt
+++ b/building_blocks/depends.txt
@@ -1,2 +1,3 @@
default
-moreblocks? \ No newline at end of file
+homedecor_i18n
+moreblocks?
diff --git a/building_blocks/init.lua b/building_blocks/init.lua
index 1df41e2..5120be4 100644
--- a/building_blocks/init.lua
+++ b/building_blocks/init.lua
@@ -1,6 +1,9 @@
+
+local S = homedecor_i18n.gettext
+
minetest.register_node("building_blocks:Adobe", {
tiles = {"building_blocks_Adobe.png"},
- description = "Adobe",
+ description = S("Adobe"),
is_ground_content = true,
groups = {crumbly=3},
sounds = default.node_sound_stone_defaults(),
@@ -8,7 +11,7 @@ minetest.register_node("building_blocks:Adobe", {
minetest.register_node("building_blocks:Roofing", {
tiles = {"building_blocks_Roofing.png"},
is_ground_content = true,
- description = "Roof block",
+ description = S("Roof block"),
groups = {snappy=3},
})
minetest.register_craft({
@@ -150,7 +153,7 @@ minetest.register_craft({
})
minetest.register_node("building_blocks:smoothglass", {
drawtype = "glasslike",
- description = "Streak Free Glass",
+ description = S("Streak Free Glass"),
tiles = {"building_blocks_sglass.png"},
inventory_image = minetest.inventorycube("building_blocks_sglass.png"),
paramtype = "light",
@@ -161,7 +164,7 @@ minetest.register_node("building_blocks:smoothglass", {
})
minetest.register_node("building_blocks:grate", {
drawtype = "glasslike",
- description = "Grate",
+ description = S("Grate"),
tiles = {"building_blocks_grate.png"},
inventory_image = minetest.inventorycube("building_blocks_grate.png"),
paramtype = "light",
@@ -171,7 +174,7 @@ minetest.register_node("building_blocks:grate", {
})
minetest.register_node("building_blocks:Fireplace", {
- description = "Fireplace",
+ description = S("Fireplace"),
tiles = {
"building_blocks_cast_iron.png",
"building_blocks_cast_iron.png",
@@ -188,7 +191,7 @@ minetest.register_node("building_blocks:Fireplace", {
minetest.register_node("building_blocks:woodglass", {
drawtype = "glasslike",
- description = "Wood Framed Glass",
+ description = S("Wood Framed Glass"),
tiles = {"building_blocks_wglass.png"},
inventory_image = minetest.inventorycube("building_blocks_wglass.png"),
paramtype = "light",
@@ -199,7 +202,7 @@ minetest.register_node("building_blocks:woodglass", {
})
minetest.register_node("building_blocks:terrycloth_towel", {
drawtype = "raillike",
- description = "Terrycloth towel",
+ description = S("Terrycloth towel"),
tiles = {"building_blocks_towel.png"},
inventory_image = "building_blocks_towel_inv.png",
paramtype = "light",
@@ -215,7 +218,7 @@ minetest.register_node("building_blocks:terrycloth_towel", {
})
minetest.register_node("building_blocks:Tarmac_spread", {
drawtype = "raillike",
- description = "Tarmac Spread",
+ description = S("Tarmac Spread"),
tiles = {"building_blocks_tar.png"},
inventory_image = "building_blocks_tar_spread_inv.png",
paramtype = "light",
@@ -232,7 +235,7 @@ minetest.register_node("building_blocks:Tarmac_spread", {
})
minetest.register_node("building_blocks:BWtile", {
drawtype = "raillike",
- description = "Chess board tiling",
+ description = S("Chess board tiling"),
tiles = {"building_blocks_BWtile.png"},
inventory_image = "building_blocks_bwtile_inv.png",
paramtype = "light",
@@ -248,7 +251,9 @@ minetest.register_node("building_blocks:BWtile", {
})
minetest.register_node("building_blocks:brobble_spread", {
drawtype = "raillike",
- description = "Brobble Spread",
+ -- Translators: "Brobble" is a portmanteau of "Brick" and "Cobble".
+ -- Translate however you see fit.
+ description = S("Brobble Spread"),
tiles = {"building_blocks_brobble.png"},
inventory_image = "building_blocks_brobble_spread_inv.png",
paramtype = "light",
@@ -264,7 +269,7 @@ minetest.register_node("building_blocks:brobble_spread", {
})
minetest.register_node("building_blocks:gravel_spread", {
drawtype = "raillike",
- description = "Gravel Spread",
+ description = S("Gravel Spread"),
tiles = {"default_gravel.png"},
inventory_image = "building_blocks_gravel_spread_inv.png",
paramtype = "light",
@@ -285,7 +290,7 @@ minetest.register_node("building_blocks:gravel_spread", {
minetest.register_node("building_blocks:hardwood", {
tiles = {"building_blocks_hardwood.png"},
is_ground_content = true,
- description = "Hardwood",
+ description = S("Hardwood"),
groups = {choppy=1,flammable=1},
sounds = default.node_sound_wood_defaults(),
})
@@ -448,44 +453,44 @@ else
bb_stairs.register_stair_and_slab("marble","building_blocks:Marble",
{cracky=3},
{"building_blocks_marble.png"},
- "Marble stair",
- "Marble slab"
+ S("Marble stair"),
+ S("Marble slab")
)
bb_stairs.register_stair_and_slab("hardwood","building_blocks:hardwood",
{choppy=1,flammable=1},
{"building_blocks_hardwood.png"},
- "Hardwood stair",
- "Hardwood slab"
+ S("Hardwood stair"),
+ S("Hardwood slab")
)
bb_stairs.register_stair_and_slab("fakegrass","building_blocks:fakegrass",
{crumbly=3},
{"default_grass.png"},
- "Grass stair",
- "Grass slab"
+ S("Grass stair"),
+ S("Grass slab")
)
bb_stairs.register_stair_and_slab("tar","building_blocks:Tar",
{crumbly=1},
{"building_blocks_tar.png"},
- "Tar stair",
- "Tar slab"
+ S("Tar stair"),
+ S("Tar slab")
)
bb_stairs.register_stair_and_slab("grate","building_blocks:grate",
{cracky=1},
{"building_blocks_grate.png"},
- "Grate Stair",
- "Grate Slab"
+ S("Grate Stair"),
+ S("Grate Slab")
)
bb_stairs.register_stair_and_slab("Adobe", "building_blocks:Adobe",
{crumbly=3},
{"building_blocks_Adobe.png"},
- "Adobe stair",
- "Adobe slab"
+ S("Adobe stair"),
+ S("Adobe slab")
)
bb_stairs.register_stair_and_slab("Roofing", "building_blocks:Roofing",
{snappy=3},
{"building_blocks_Roofing.png"},
- "Roofing stair",
- "Roofing slab"
+ S("Roofing stair"),
+ S("Roofing slab")
)
end
@@ -498,7 +503,7 @@ minetest.register_craft({
minetest.register_node("building_blocks:fakegrass", {
tiles = {"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"},
- description = "Fake Grass",
+ description = S("Fake Grass"),
is_ground_content = true,
groups = {crumbly=3},
sounds = default.node_sound_dirt_defaults({
@@ -507,13 +512,13 @@ minetest.register_node("building_blocks:fakegrass", {
})
minetest.register_craftitem("building_blocks:sticks", {
- description = "Small bundle of sticks",
+ description = S("Small bundle of sticks"),
image = "building_blocks_sticks.png",
on_place_on_ground = minetest.craftitem_place_item,
})
minetest.register_craftitem("building_blocks:tar_base", {
- description = "Tar base",
+ description = S("Tar base"),
image = "building_blocks_tar_base.png",
})
@@ -537,14 +542,14 @@ minetest.register_alias("building_blocks:faggot", "building_blocks:sticks")
minetest.register_alias("marble", "building_blocks:Marble")
minetest.register_node("building_blocks:Tar", {
- description = "Tar",
+ description = S("Tar"),
tiles = {"building_blocks_tar.png"},
is_ground_content = true,
groups = {crumbly=1, tar_block = 1},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("building_blocks:Marble", {
- description = "Marble",
+ description = S("Marble"),
tiles = {"building_blocks_marble.png"},
is_ground_content = true,
groups = {cracky=3, marble = 1},
@@ -568,7 +573,7 @@ minetest.register_craft({
})
minetest.register_tool("building_blocks:knife", {
- description = "Tar Knife",
+ description = S("Tar Knife"),
inventory_image = "building_blocks_knife.png",
tool_capabilities = {
max_drop_level=0,
@@ -588,14 +593,14 @@ minetest.register_craft({
}
})
-if not minetest.get_modpath("technic") then
+if not minetest.get_modpath("technic") then
minetest.register_node( ":technic:granite", {
- description = "Granite",
+ description = S("Granite"),
tiles = { "technic_granite.png" },
is_ground_content = true,
groups = {cracky=1},
sounds = default.node_sound_stone_defaults(),
- })
+ })
minetest.register_craft({
output = "technic:granite 9",
@@ -608,7 +613,7 @@ if not minetest.get_modpath("technic") then
if minetest.get_modpath("moreblocks") then
stairsplus:register_all("technic", "granite", "technic:granite", {
- description="Granite",
+ description=S("Granite"),
groups={cracky=1, not_in_creative_inventory=1},
tiles={"technic_granite.png"},
})
diff --git a/carbone_mobs/README.txt b/carbone_mobs/README.txt
index a74e6ff..b7bdc0d 100644
--- a/carbone_mobs/README.txt
+++ b/carbone_mobs/README.txt
@@ -16,9 +16,28 @@ http://wiki.minetest.com/wiki/Installing_Mods
How to use the mod:
See https://github.com/PilzAdam/mobs/wiki
+This mod can be configured via following minetest.conf variables:
+( reminder: minetest.conf lines starting with "#" are comments )
+
+* display_mob_spawn = true -> show you a message in the chat when a mob spawns. see https://github.com/PilzAdam/mobs/wiki
+* only_peaceful_mobs = true -> "When you add only_peaceful_mobs = true to minetest.conf then all hostile mobs will despawn."
+ "They do spawn, but they immediately despawn." (see https://forum.minetest.net/viewtopic.php?id=551)
+
+So instead you can directly use this to avoid false-alarming spawn messages...
+* spawn_friendly_mobs = true -> spawn friendly mobs (sheep, rat)
+* spawn_hostile_mobs = true -> spawn hostile mobs
+
+
For developers:
The API documentation is moved to https://github.com/PilzAdam/mobs/wiki/API
+Some internal details:
+
+* armor: lower values means better armor, means you need a better weapon to hurt it.
+ see e.g. https://github.com/PilzAdam/mobs/wiki/Dungeon-Master:
+ stone sword is OK to attack against armor value of 60.
+
+
License:
Sourcecode: WTFPL (see below)
Grahpics: WTFPL (see below)
diff --git a/carbone_mobs/api.lua b/carbone_mobs/api.lua
index 227b0c0..675adc8 100644
--- a/carbone_mobs/api.lua
+++ b/carbone_mobs/api.lua
@@ -3,6 +3,12 @@ local monster_damage = minetest.setting_get("monster_damage_factor") or 1.0
carbone_mobs = {}
function carbone_mobs:register_mob(name, def)
+
+ -- jump = true as default
+ local is_jumping = true
+ if def.jump ~= nil then is_jumping = def.jump end
+
+ -- see http://dev.minetest.net/register_entity
minetest.register_entity(name, {
hp_max = def.hp_max,
physical = true,
@@ -32,7 +38,7 @@ function carbone_mobs:register_mob(name, def)
sounds = def.sounds,
animation = def.animation,
follow = def.follow,
- jump = def.jump or true,
+ jump = is_jumping,
timer = 0,
env_damage_timer = 0, -- only if state = "attack"
@@ -115,10 +121,10 @@ function carbone_mobs:register_mob(name, def)
end
end
end,
-
- on_step = function(self, dtime)
-
+ -- see http://dev.minetest.net/LuaEntitySAO
+ -- Callback method called every server tick.
+ on_step = function(self, dtime)
self.lifetimer = self.lifetimer - dtime
if self.lifetimer <= 0 and not self.tamed then
local player_count = 0
@@ -436,7 +442,7 @@ function carbone_mobs:register_mob(name, def)
obj:setvelocity(vec)
end
end
- end,
+ end, -- on_step
on_activate = function(self, staticdata, dtime_s)
self.object:set_armor_groups({fleshy = self.armor})
@@ -460,7 +466,7 @@ function carbone_mobs:register_mob(name, def)
minetest.log("action", "A mob with " .. tostring(hp) .. " HP despawned at " .. minetest.pos_to_string(pos) .. " on activation.")
self.object:remove()
end
- end,
+ end, -- on_activate
get_staticdata = function(self)
local tmp = {
@@ -468,34 +474,34 @@ function carbone_mobs:register_mob(name, def)
tamed = self.tamed,
}
return minetest.serialize(tmp)
- end,
+ end, -- get_staticdata
on_punch = function(self, hitter)
- local hp = self.object:get_hp()
- if hp >= 1 then
- minetest.sound_play("player_damage", {object = self.object, gain = 0.25})
- minetest.sound_play("hit", {pos = hitter:getpos(), gain = 0.4})
- end
- local y = self.object:getvelocity().y
- if y <= 0 then
- self.object:setvelocity({x = 0, y = y + 4.5, z = 0})
- end
- if hp <= 0 then
- if hitter and hitter:is_player() and hitter:get_inventory() then
- local pos = self.object:getpos()
- minetest.sound_play("player_death", {object = self.object, gain = 0.4})
- minetest.sound_play("hit_death", {pos = hitter:getpos(), gain = 0.4})
- for _,drop in ipairs(self.drops) do
- if math.random(1, drop.chance) == 1 then
- hitter:get_inventory():add_item("main", ItemStack(drop.name .. " " .. math.random(drop.min, drop.max)))
- end
- end
- end
- end
- end,
+ local hp = self.object:get_hp()
+ if hp >= 1 then
+ minetest.sound_play("player_damage", {object = self.object, gain = 0.25})
+ minetest.sound_play("hit", {pos = hitter:getpos(), gain = 0.4})
+ end
+ local y = self.object:getvelocity().y
+ if y <= 0 then
+ self.object:setvelocity({x = 0, y = y + 4.5, z = 0})
+ end
+ if hp <= 0 then
+ if hitter and hitter:is_player() and hitter:get_inventory() then
+ local pos = self.object:getpos()
+ minetest.sound_play("player_death", {object = self.object, gain = 0.4})
+ minetest.sound_play("hit_death", {pos = hitter:getpos(), gain = 0.4})
+ for _,drop in ipairs(self.drops) do
+ if math.random(1, drop.chance) == 1 then
+ hitter:get_inventory():add_item("main", ItemStack(drop.name .. " " .. math.random(drop.min, drop.max)))
+ end
+ end
+ end
+ end -- if hp <= 0
+ end, -- on_punch
})
-end
+end --function carbone_mobs:register_mob(name, def)
carbone_mobs.spawning_mobs = {}
function carbone_mobs:register_spawn(name, description, nodes, max_light, min_light, chance, active_object_count, max_height, spawn_func)
diff --git a/carbone_mobs/init.lua b/carbone_mobs/init.lua
index a57fb4b..f12f105 100644
--- a/carbone_mobs/init.lua
+++ b/carbone_mobs/init.lua
@@ -1,6 +1,9 @@
dofile(minetest.get_modpath("carbone_mobs").."/api.lua")
+-- Minetest states since 2013 to use lua 5.1 (see http://dev.minetest.net/Lua , https://www.lua.org/manual/5.1/ )
+
-- Ensure the correct active_block_range value is used (for performance and spawning):
+-- see http://dev.minetest.net/minetest.register_abm
minetest.setting_set("active_block_range", 1)
carbone_mobs:register_mob("carbone_mobs:dirt_monster", {
diff --git a/chains/depends.txt b/chains/depends.txt
index 331d858..7b3e79f 100644
--- a/chains/depends.txt
+++ b/chains/depends.txt
@@ -1 +1,2 @@
-default \ No newline at end of file
+default
+homedecor
diff --git a/chains/init.lua b/chains/init.lua
index becbb35..4a0f500 100644
--- a/chains/init.lua
+++ b/chains/init.lua
@@ -1,3 +1,6 @@
+
+local S = homedecor_i18n.gettext
+
local chains_sbox = {
type = "fixed",
fixed = { -0.1, -0.625, -0.1, 0.1, 0.5, 0.1 }
@@ -12,7 +15,7 @@ local topchains_sbox = {
}
minetest.register_node("chains:chain", {
- description = "Hanging chain (wrought iron)",
+ description = S("Hanging chain (wrought iron)"),
drawtype = "mesh",
mesh = "chains.obj",
tiles = {"chains_wrought_iron.png"},
@@ -26,7 +29,7 @@ minetest.register_node("chains:chain", {
})
minetest.register_node("chains:chain_brass", {
- description = "Hanging chain (brass)",
+ description = S("Hanging chain (brass)"),
drawtype = "mesh",
mesh = "chains.obj",
tiles = {"chains_brass.png"},
@@ -40,7 +43,7 @@ minetest.register_node("chains:chain_brass", {
})
minetest.register_node("chains:chain_top", {
- description = "Hanging chain (ceiling mount, wrought iron)",
+ description = S("Hanging chain (ceiling mount, wrought iron)"),
drawtype = "mesh",
mesh = "top_chains.obj",
tiles = {"chains_wrought_iron.png"},
@@ -54,7 +57,7 @@ minetest.register_node("chains:chain_top", {
})
minetest.register_node("chains:chain_top_brass", {
- description = "Hanging chain (ceiling mount, brass)",
+ description = S("Hanging chain (ceiling mount, brass)"),
drawtype = "mesh",
mesh = "top_chains.obj",
tiles = {"chains_brass.png"},
@@ -68,7 +71,7 @@ minetest.register_node("chains:chain_top_brass", {
})
minetest.register_node("chains:chandelier", {
- description = "Chandelier (wrought iron)",
+ description = S("Chandelier (wrought iron)"),
paramtype = "light",
light_source = default.LIGHT_MAX-2,
walkable = false,
@@ -95,7 +98,7 @@ minetest.register_node("chains:chandelier", {
})
minetest.register_node("chains:chandelier_brass", {
- description = "Chandelier (brass)",
+ description = S("Chandelier (brass)"),
paramtype = "light",
light_source = default.LIGHT_MAX-2,
walkable = false,
diff --git a/coloredwood/init.lua b/coloredwood/init.lua
index 23dfa15..c83f236 100644
--- a/coloredwood/init.lua
+++ b/coloredwood/init.lua
@@ -6,38 +6,10 @@
-- This mod provides 89 colors of wood, fences, and sticks, and enough
-- cross-compatible recipes to make everything fit together naturally.
--
--- Colored wood is crafted by putting two regular wood blocks into the
--- grid along with one dye color, in any order and position. The result
--- is two colored wood blocks.
---
--- Colored sticks are crafted from colored wood blocks only - one colored
--- wood block in any position yields 4 colored sticks as usual.
---
--- Uncolored sticks cannot be dyed separately, but they can still be used
--- to build colored wooden fences. These are crafted either by placing six
--- plain, uncolored sticks into the crafting grid in the usual manner, plus
--- one portion of dye in the upper-left corner of the grid
--- (D = dye, S = uncolored stick):
---
--- D - -
--- S S S
--- S S S
---
--- You can also craft a colored fence by using colored sticks derived from
--- colored wood. Just place six of them in the same manner as with plain
--- fences (CS = colored stick):
---
--- -- -- --
--- CS CS CS
--- CS CS CS
---
--- If you find yourself with too many colors of sticks and not enough,
--- ladders, you can use any color (as long as they"re all the same) to
--- create a ladder, but it"ll always result in a plain, uncolored ladder.
--- This practice isn"t recommended of course, since it wastes dye.
---
+-- Colored wood is created by placing a regular wood block on the ground
+-- and then right-clicking on it with some dye.
-- All materials are flammable and can be used as fuel.
-
+--
-- Hues are on a 30 degree spacing starting at red = 0 degrees.
-- "s50" in a file/item name means "saturation: 50%".
-- Texture brightness levels for the colors are 100%, 66% ("medium"),
@@ -45,6 +17,11 @@
coloredwood = {}
+coloredwood.enable_stairsplus = true
+if minetest.setting_getbool("coloredwood_enable_stairsplus") == false or not minetest.get_modpath("moreblocks") then
+ coloredwood.enable_stairsplus = false
+end
+
coloredwood.shades = {
"dark_",
"medium_",
@@ -127,11 +104,265 @@ coloredwood.greys3 = {
"dye:white"
}
--- All of the actual code is contained in separate lua files:
+coloredwood.hues_plus_greys = {}
-dofile(minetest.get_modpath("coloredwood").."/wood.lua")
-dofile(minetest.get_modpath("coloredwood").."/fence.lua")
-dofile(minetest.get_modpath("coloredwood").."/stick.lua")
+for _, hue in ipairs(coloredwood.hues) do
+ table.insert(coloredwood.hues_plus_greys, hue)
+end
-print("[Colored Wood] Loaded!")
+table.insert(coloredwood.hues_plus_greys, "grey")
+
+-- helper functions
+
+local function is_stairsplus(name)
+ local s1, s2
+
+ local a,b = string.find(name, ":stair")
+ if a then s1 = string.sub(name, a+1, b) end
+
+ a,b = string.find(name, ":slab")
+ if a then s1 = string.sub(name, a+1, b) end
+
+ a,b = string.find(name, ":panel")
+ if a then s1 = string.sub(name, a+1, b) end
+
+ a,b = string.find(name, ":micro")
+ if a then s1 = string.sub(name, a+1, b) end
+
+ a,b = string.find(name, ":slope")
+ if a then s1 = string.sub(name, a+1, b) end
+
+ local h, s, v = unifieddyes.get_hsv(name)
+
+ a,b = string.find(name, "_"..h..s)
+ if a then s2 = string.sub(name, b+1)
+ if string.find(s2, "wood") then s2 = string.sub(s2, 5) end
+ end
+ return s1, s2
+end
+
+-- the actual nodes!
+
+for _, color in ipairs(coloredwood.hues_plus_greys) do
+ minetest.register_node("coloredwood:wood_"..color, {
+ description = "Colored wooden planks",
+ tiles = { "coloredwood_base.png" },
+ paramtype = "light",
+ paramtype2 = "colorfacedir",
+ palette = "unifieddyes_palette_"..color.."s.png",
+ walkable = true,
+ sunlight_propagates = false,
+ groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2, not_in_creative_inventory=1},
+ sounds = default.node_sound_wood_defaults(),
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "coloredwood:wood_"..color, true)
+ end,
+ drop = "default:wood"
+ })
+
+ -- moreblocks/stairsplus support
+
+ if coloredwood.enable_stairsplus then
+
+ -- stairsplus:register_all(modname, subname, recipeitem, {fields})
+
+ stairsplus:register_all(
+ "coloredwood",
+ "wood_"..color,
+ "coloredwood:wood_"..color,
+ {
+ description = "Colored wood",
+ tiles = { "coloredwood_base.png" },
+ paramtype = "light",
+ paramtype2 = "colorfacedir",
+ palette = "unifieddyes_palette_"..color.."s.png",
+ groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2, not_in_creative_inventory=1},
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, nil, true)
+ end
+ }
+ )
+ end
+end
+
+-- force on_rightclick for stairsplus default wood stair/slab/etc nodes
+ if coloredwood.enable_stairsplus then
+
+ for _, i in pairs(minetest.registered_nodes) do
+ if string.find(i.name, "moreblocks:stair_wood")
+ or string.find(i.name, "moreblocks:slab_wood")
+ or string.find(i.name, "moreblocks:panel_wood")
+ or string.find(i.name, "moreblocks:micro_wood")
+ or string.find(i.name, "moreblocks:slope_wood")
+ then
+
+ minetest.override_item(i.name, {
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local wield = itemstack:get_name()
+ local newnode = nil
+ if string.find(wield, "dye:") or string.find(wield, "unifieddyes:") then
+ local s1, s2 = is_stairsplus(i.name)
+ local paletteidx, hue = unifieddyes.getpaletteidx(wield, true)
+ if hue ~= 0 then
+ newnode = "coloredwood:"..s1.."_wood_"..coloredwood.hues[hue]..s2
+ else
+ newnode = "coloredwood:"..s1.."_wood_grey"..s2
+ end
+ end
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, newnode, true)
+ end,
+ })
+ end
+ end
+
+ -- fix drops for colored versions of stairsplus nodes
+
+ for _, i in pairs(minetest.registered_nodes) do
+ if string.find(i.name, "coloredwood:stair_")
+ or string.find(i.name, "coloredwood:slab_")
+ or string.find(i.name, "coloredwood:panel_")
+ or string.find(i.name, "coloredwood:micro_")
+ or string.find(i.name, "coloredwood:slope_")
+ then
+
+ mname = string.gsub(i.name, "coloredwood:", "moreblocks:")
+ local s1, s2 = is_stairsplus(mname)
+
+ minetest.override_item(i.name, {
+ drop = "moreblocks:"..s1.."_wood"..s2
+ })
+ end
+ end
+end
+
+minetest.override_item("default:wood", {
+ paramtype2 = "colorfacedir",
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "coloredwood:wood_grey", true)
+ end
+})
+
+minetest.register_node("coloredwood:fence", {
+ drawtype = "fencelike",
+ description = "Colored wooden fence",
+ tiles = { "coloredwood_fence_base.png" },
+ paramtype = "light",
+ paramtype2 = "color",
+ palette = "unifieddyes_palette.png",
+ walkable = true,
+ groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = {
+ type = "fixed",
+ fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
+ },
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "coloredwood:fence")
+ end,
+ drop = "default:fence_wood"
+})
+
+minetest.override_item("default:fence_wood", {
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "coloredwood:fence")
+ end
+})
+
+-- ============================
+-- convert the old static nodes
+
+coloredwood.old_static_nodes = {}
+
+for _, hue in ipairs(coloredwood.hues) do
+ for _, sat in ipairs({"", "_s50"}) do
+ for _, val in ipairs ({"dark_", "medium_", "light_", ""}) do
+ table.insert(coloredwood.old_static_nodes, "coloredwood:wood_"..val..hue..sat)
+ table.insert(coloredwood.old_static_nodes, "coloredwood:fence_"..val..hue..sat)
+ end
+ end
+end
+
+for _, shade in ipairs(coloredwood.greys) do
+ table.insert(coloredwood.old_static_nodes, "coloredwood:wood_"..shade)
+ table.insert(coloredwood.old_static_nodes, "coloredwood:fence_"..shade)
+end
+
+-- add all of the stairsplus nodes
+
+for _, shape in ipairs(circular_saw.names) do
+ local a = shape[1]
+ local b = shape[2]
+ for _, hue in ipairs(coloredwood.hues) do
+ for _, shade in ipairs(coloredwood.shades) do
+ table.insert(coloredwood.old_static_nodes, "coloredwood:"..a.."_wood_"..shade..hue..b)
+ table.insert(coloredwood.old_static_nodes, "coloredwood:"..a.."_wood_"..shade..hue.."_s50"..b)
+ end
+ table.insert(coloredwood.old_static_nodes, "coloredwood:"..a.."_wood_light_"..hue..b) -- light doesn't have extra shades or s50
+ end
+end
+
+for _, shape in ipairs(circular_saw.names) do
+ local a = shape[1]
+ local b = shape[2]
+ for _, hue in ipairs(coloredwood.greys) do
+ for _, shade in ipairs(coloredwood.shades) do
+ table.insert(coloredwood.old_static_nodes, "coloredwood:"..a.."_wood_"..hue..b)
+ end
+ end
+end
+
+minetest.register_lbm({
+ name = "coloredwood:convert",
+ label = "Convert wood blocks, fences, stairsplus stuff, etc to use param2 color",
+ run_at_every_load = true,
+ nodenames = coloredwood.old_static_nodes,
+ action = function(pos, node)
+ local meta = minetest.get_meta(pos)
+
+ if meta and (meta:get_string("dye") ~= "") then return end -- node has already been converted before.
+
+ local name = node.name
+ local hue, sat, val = unifieddyes.get_hsv(name)
+
+ local color = val..hue..sat
+
+ local s1, s2 = is_stairsplus(name)
+
+ if s1 then
+
+ local paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..color, true)
+ local cfdir = paletteidx + (node.param2 % 32)
+ local newname = "coloredwood:"..s1.."_wood_"..hue..s2
+
+ minetest.set_node(pos, { name = newname, param2 = cfdir })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..color)
+
+ elseif string.find(name, ":fence") then
+ local paletteidx, hue = unifieddyes.getpaletteidx("unifieddyes:"..color, false)
+ minetest.set_node(pos, { name = "coloredwood:fence", param2 = paletteidx })
+ meta:set_string("dye", "unifieddyes:"..color)
+ else
+ local paletteidx, hue = unifieddyes.getpaletteidx("unifieddyes:"..color, true)
+ if hue ~= 0 and hue ~= nil then
+ minetest.set_node(pos, { name = "coloredwood:wood_"..coloredwood.hues[hue], param2 = paletteidx })
+ meta:set_string("dye", "unifieddyes:"..color)
+ else
+ minetest.set_node(pos, { name = "coloredwood:wood_grey", param2 = paletteidx })
+ meta:set_string("dye", "unifieddyes:"..color)
+ end
+ end
+ end
+})
+
+print("[Colored Wood] Loaded!")
diff --git a/coloredwood/textures/coloredwood_base.png b/coloredwood/textures/coloredwood_base.png
new file mode 100644
index 0000000..18d186e
--- /dev/null
+++ b/coloredwood/textures/coloredwood_base.png
Binary files differ
diff --git a/coloredwood/textures/coloredwood_fence_base.png b/coloredwood/textures/coloredwood_fence_base.png
new file mode 100644
index 0000000..d5946e5
--- /dev/null
+++ b/coloredwood/textures/coloredwood_fence_base.png
Binary files differ
diff --git a/computer/computers.lua b/computer/computers.lua
index 877ccbd..5a7fed4 100644
--- a/computer/computers.lua
+++ b/computer/computers.lua
@@ -1,3 +1,6 @@
+
+local S = homedecor_i18n.gettext
+
-- Amiga 500 lookalike
computer.register("computer:shefriendSOO", {
description = "SheFriendSOO",
@@ -157,7 +160,7 @@ local mo_sbox = {
}
minetest.register_node("computer:monitor", {
- description = "Monitor and keyboard",
+ description = S("Monitor and keyboard"),
inventory_image = "computer_monitor_inv.png",
drawtype = "mesh",
mesh = "computer_monitor.obj",
@@ -175,7 +178,6 @@ minetest.register_node("computer:monitor", {
})
minetest.register_node("computer:monitor_on", {
- description = "Monitor and keyboard",
drawtype = "mesh",
mesh = "computer_monitor.obj",
tiles = {"monitor_display.png^[transformFX", "monitor_plastic.png", "computer_black.png", "monitor_plastic.png"},
@@ -200,7 +202,7 @@ minetest.register_alias("computer:monitor_desktop", "computer:monitor")
--WIFI Router (linksys look-a-like)
minetest.register_node("computer:router", {
- description = "WIFI Router",
+ description = S("WIFI Router"),
inventory_image = "computer_router_inv.png",
tiles = {"computer_router_t.png","computer_router_bt.png","computer_router_l.png","computer_router_r.png","computer_router_b.png",
{name="computer_router_f_animated.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=1.0}},}, --"computer_router_f.png"},
@@ -228,7 +230,7 @@ local pct_cbox = {
--Modern PC Tower
minetest.register_node("computer:tower", {
- description = "Computer Tower",
+ description = S("Computer Tower"),
inventory_image = "computer_tower_inv.png",
drawtype = "mesh",
mesh = "computer_tower.obj",
@@ -245,7 +247,7 @@ minetest.register_alias("computer:tower_on", "computer:tower")
-- Printer/scaner combo
minetest.register_node("computer:printer", {
- description = "Printer Scaner Combo",
+ description = S("Printer-Scanner Combo"),
inventory_image = "computer_printer_inv.png",
tiles = {"computer_printer_t.png","computer_printer_bt.png","computer_printer_l.png",
"computer_printer_r.png","computer_printer_b.png","computer_printer_f.png"},
@@ -273,7 +275,7 @@ minetest.register_node("computer:printer", {
--Rack Server
minetest.register_node("computer:server", {
drawtype = "nodebox",
- description = "Rack Server",
+ description = S("Rack Server"),
tiles = {
'computer_server_t.png',
'computer_server_bt.png',
@@ -303,7 +305,8 @@ minetest.register_node("computer:server", {
on_place = function(itemstack, placer, pointed_thing)
local pos = pointed_thing.above
if minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name ~= "air" then
- minetest.chat_send_player( placer:get_player_name(), "Not enough vertical space to place a server!" )
+ minetest.chat_send_player( placer:get_player_name(),
+ S("Not enough vertical space to place a server!" ))
return itemstack
end
return minetest.item_place(itemstack, placer, pointed_thing)
@@ -312,7 +315,6 @@ minetest.register_node("computer:server", {
minetest.register_node("computer:server_on", {
drawtype = "nodebox",
- description = "Rack Server",
tiles = {
'computer_server_t.png',
'computer_server_bt.png',
diff --git a/computer/depends.txt b/computer/depends.txt
index c48fe0d..947d2a7 100644
--- a/computer/depends.txt
+++ b/computer/depends.txt
@@ -1,3 +1,2 @@
default
-intllib?
-
+homedecor_i18n
diff --git a/computer/init.lua b/computer/init.lua
index bb690ed..534878d 100644
--- a/computer/init.lua
+++ b/computer/init.lua
@@ -2,19 +2,18 @@ computer = {}
screwdriver = screwdriver or {}
computer.register = function (name, def)
- local nodename = name
if (name:sub(1, 1) == ":") then name = name:sub(2) end
local modname, basename = name:match("^([^:]+):(.*)")
local TEXPFX = modname.."_"..basename.."_"
local ONSTATE = modname..":"..basename
local OFFSTATE = modname..":"..basename.."_off"
- local def = def
+ local cdef = table.copy(def)
minetest.register_node(ONSTATE, {
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
- description = def.description,
- inventory_image = def.inventory_image,
+ description = cdef.description,
+ inventory_image = cdef.inventory_image,
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2},
tiles = {
TEXPFX.."tp.png",
@@ -24,10 +23,10 @@ computer.register = function (name, def)
TEXPFX.."bk.png",
TEXPFX.."ft.png"
},
- node_box = def.node_box,
- selection_box = def.node_box,
+ node_box = cdef.node_box,
+ selection_box = cdef.node_box,
on_rightclick = function (pos, node, clicker, itemstack)
- if def.on_turn_off and def.on_turn_off(pos, node, clicker, itemstack) then
+ if cdef.on_turn_off and cdef.on_turn_off(pos, node, clicker, itemstack) then
return itemstack
end
node.name = OFFSTATE
@@ -41,17 +40,17 @@ computer.register = function (name, def)
paramtype2 = "facedir",
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, not_in_creative_inventory=1},
tiles = {
- (TEXPFX.."tp"..(def.tiles_off.top and "_off" or "")..".png"),
- (TEXPFX.."bt"..(def.tiles_off.bottom and "_off" or "")..".png"),
- (TEXPFX.."rt"..(def.tiles_off.right and "_off" or "")..".png"),
- (TEXPFX.."lt"..(def.tiles_off.left and "_off" or "")..".png"),
- (TEXPFX.."bk"..(def.tiles_off.back and "_off" or "")..".png"),
- (TEXPFX.."ft"..(def.tiles_off.front and "_off" or "")..".png")
+ (TEXPFX.."tp"..(cdef.tiles_off.top and "_off" or "")..".png"),
+ (TEXPFX.."bt"..(cdef.tiles_off.bottom and "_off" or "")..".png"),
+ (TEXPFX.."rt"..(cdef.tiles_off.right and "_off" or "")..".png"),
+ (TEXPFX.."lt"..(cdef.tiles_off.left and "_off" or "")..".png"),
+ (TEXPFX.."bk"..(cdef.tiles_off.back and "_off" or "")..".png"),
+ (TEXPFX.."ft"..(cdef.tiles_off.front and "_off" or "")..".png")
},
- node_box = def.node_box_off or def.node_box,
- selection_box = def.node_box_off or def.node_box,
+ node_box = cdef.node_box_off or cdef.node_box,
+ selection_box = cdef.node_box_off or cdef.node_box,
on_rightclick = function (pos, node, clicker, itemstack)
- if def.on_turn_on and def.on_turn_on(pos, node, clicker, itemstack) then
+ if cdef.on_turn_on and cdef.on_turn_on(pos, node, clicker, itemstack) then
return itemstack
end
node.name = ONSTATE
@@ -63,13 +62,10 @@ computer.register = function (name, def)
end
computer.register_handheld = function (name, def)
- local nodename = name
if (name:sub(1, 1) == ":") then name = name:sub(2) end
local modname, basename = name:match("^([^:]+):(.*)")
local TEXPFX = modname.."_"..basename.."_inv"
local ONSTATE = modname..":"..basename
- local OFFSTATE = modname..":"..basename.."_off"
- local on_use = def.on_use
minetest.register_craftitem(ONSTATE, {
description = def.description,
inventory_image = TEXPFX..".png",
@@ -79,8 +75,7 @@ end
computer.pixelnodebox = function (size, boxes)
local fixed = { }
- local i, box
- for i, box in ipairs(boxes) do
+ for _, box in ipairs(boxes) do
local x, y, z, w, h, l = unpack(box)
fixed[#fixed + 1] = {
(x / size) - 0.5,
diff --git a/computer/miscitems.lua b/computer/miscitems.lua
index c5017a7..5f63c7d 100644
--- a/computer/miscitems.lua
+++ b/computer/miscitems.lua
@@ -4,8 +4,7 @@
-- This file defines some items in order to not have to depend on other mods.
--- Boilerplate to support localized strings if intllib mod is installed.
-local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end
+local S = homedecor_i18n.gettext
if (not minetest.get_modpath("homedecor")) then
diff --git a/computer/tetris.lua b/computer/tetris.lua
index 5f0b71c..1683dcc 100644
--- a/computer/tetris.lua
+++ b/computer/tetris.lua
@@ -1,6 +1,9 @@
+
+local S = homedecor_i18n.gettext
+
local shapes = {
{ { x = {0, 1, 0, 1}, y = {0, 0, 1, 1} } },
-
+
{ { x = {1, 1, 1, 1}, y = {0, 1, 2, 3} },
{ x = {0, 1, 2, 3}, y = {1, 1, 1, 1} } },
@@ -35,7 +38,7 @@ local buttons = "button[3,4.5;0.6,0.6;left;<]"
.."button[4.2,5.3;0.6,0.6;drop;V]"
.."button[4.8,4.5;0.6,0.6;rotateright;R]"
.."button[5.4,4.5;0.6,0.6;right;>]"
- .."button[3.5,3;2,2;new;New Game]"
+ .."button[3.5,3;2,2;new;"..minetest.formspec_escape(S("New Game")).."]"
local formsize = "size[5.9,5.7]"
local boardx, boardy = 0, 0
@@ -70,8 +73,8 @@ end
local function step(pos, fields)
local meta = minetest.get_meta(pos)
local t = minetest.deserialize(meta:get_string("tetris"))
-
- local function new_game(pos)
+
+ local function new_game(p)
local nex = math.random(7)
t = {
@@ -81,10 +84,10 @@ local function step(pos, fields)
score = 0,
cur = math.random(7),
nex = nex,
- x=4, y=0, rot=1
+ x=4, y=0, rot=1
}
- local timer = minetest.get_node_timer(pos)
+ local timer = minetest.get_node_timer(p)
timer:set(0.3, 0)
end
@@ -99,7 +102,7 @@ local function step(pos, fields)
i*sizey+boardy, semi,
size, comma, size, semi,
colors[tile[2]], close }
-
+
ins = ins + 1
scr[ins] = concat(tmp)
end
@@ -138,9 +141,9 @@ local function step(pos, fields)
for i=1,4 do
local cx, cy = d.x[i]+x, d.y[i]+y
-
+
if cx < 0 or cx > 9 or cy < 0 or cy > 19 then
- return false
+ return false
end
for _, tile in pairs(t.board[ cy ] or {}) do
@@ -157,7 +160,7 @@ local function step(pos, fields)
end
local function tick()
- if stuck() then
+ if stuck() then
if t.y <= 0 then
return false end
add()
@@ -170,7 +173,7 @@ local function step(pos, fields)
t.y = t.y + 1
end
return true
- end
+ end
local function move(dx, dy)
local newx, newy = t.x+dx, t.y+dy
@@ -225,10 +228,10 @@ local function step(pos, fields)
end
if t then
- local scr = { formsize, background,
+ local scr = { formsize, background,
t.boardstring, t.previewstring,
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;Next...]label[3.8,2.7;Score: ",
t.score, close, buttons }
@@ -241,7 +244,7 @@ local function step(pos, fields)
end
minetest.register_node("computer:tetris_arcade", {
- description="Tetris Arcade",
+ description=S("Tetris Arcade"),
drawtype = "mesh",
mesh = "tetris_arcade.obj",
tiles = {"tetris_arcade.png"},
@@ -259,7 +262,8 @@ minetest.register_node("computer:tetris_arcade", {
},
on_construct = function(pos)
local meta = minetest.get_meta(pos)
- meta:set_string("formspec", formsize.."button[2,2.5;2,2;new;New Game]"
+ meta:set_string("formspec", formsize
+ .."button[2,2.5;2,2;new;"..minetest.formspec_escape(S("New Game")).."]"
..default.gui_bg..default.gui_bg_img..default.gui_slots)
end,
on_timer = function(pos)
@@ -275,7 +279,7 @@ minetest.register_node("computer:tetris_arcade", {
return itemstack
end
if minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name ~= "air" then
- minetest.chat_send_player(placer:get_player_name(), "No room for place the Arcade!")
+ minetest.chat_send_player(placer:get_player_name(), S("No room for place the Arcade!"))
return itemstack
end
local dir = placer:get_look_dir()
diff --git a/currency/income.lua b/currency/income.lua
index 5aa6fbc..2bb42bc 100644
--- a/currency/income.lua
+++ b/currency/income.lua
@@ -11,7 +11,7 @@ minetest.register_globalstep(function(dtime)
players_income[name] = 0
end
players_income[name] = 1
- print("[Currency] basic income for "..name.."")
+ minetest.log("info", "[Currency] basic income for "..name.."")
end
end
end)
@@ -27,7 +27,7 @@ earn_income = function(player)
local inv = player:get_inventory()
inv:add_item("main", {name="currency:minegeld_5", count=count})
players_income[name] = 0
- print("[Currency] added basic income for "..name.." to inventory")
+ minetest.log("info", "[Currency] added basic income for "..name.." to inventory")
end
end
diff --git a/currency/init.lua b/currency/init.lua
index 0c94994..744fcad 100644
--- a/currency/init.lua
+++ b/currency/init.lua
@@ -1,20 +1,20 @@
-print(" Currency mod loading... ")
+minetest.log("info", " Currency mod loading... ")
local modpath = minetest.get_modpath("currency")
dofile(modpath.."/craftitems.lua")
-print("[Currency] Craft_items Loaded!")
+minetest.log("info", "[Currency] Craft_items Loaded!")
dofile(modpath.."/shop.lua")
-print("[Currency] Shop Loaded!")
+minetest.log("info", "[Currency] Shop Loaded!")
dofile(modpath.."/barter.lua")
-print("[Currency] Barter Loaded!")
+minetest.log("info", "[Currency] Barter Loaded!")
dofile(modpath.."/safe.lua")
-print("[Currency] Safe Loaded!")
+minetest.log("info", "[Currency] Safe Loaded!")
dofile(modpath.."/crafting.lua")
-print("[Currency] Crafting Loaded!")
+minetest.log("info", "[Currency] Crafting Loaded!")
if minetest.setting_getbool("creative_mode") then
- print("[Currency] Creative mode in use, skipping basic income.")
+ minetest.log("info", "[Currency] Creative mode in use, skipping basic income.")
else
dofile(modpath.."/income.lua")
- print("[Currency] Income Loaded!")
+ minetest.log("info", "[Currency] Income Loaded!")
end
diff --git a/fake_fire/depends.txt b/fake_fire/depends.txt
index 562cf63..f91fb9f 100644
--- a/fake_fire/depends.txt
+++ b/fake_fire/depends.txt
@@ -1 +1,2 @@
default
+homedecor
diff --git a/fake_fire/init.lua b/fake_fire/init.lua
index 92d04f9..ffedce7 100644
--- a/fake_fire/init.lua
+++ b/fake_fire/init.lua
@@ -1,3 +1,6 @@
+
+local S = homedecor_i18n.gettext
+
screwdriver = screwdriver or {}
local function start_smoke(pos, node, clicker, chimney)
@@ -8,8 +11,8 @@ local function start_smoke(pos, node, clicker, chimney)
if id ~= 0 then
if s_handle then
- minetest.after(0, function(s_handle)
- minetest.sound_stop(s_handle)
+ minetest.after(0, function(handle)
+ minetest.sound_stop(handle)
end, s_handle)
end
minetest.delete_particlespawner(id)
@@ -30,19 +33,18 @@ local function start_smoke(pos, node, clicker, chimney)
texture = "smoke_particle.png",
})
if chimney == 1 then
- s_handle = nil
this_spawner_meta:set_int("smoky", id)
this_spawner_meta:set_int("sound", nil)
else
- s_handle = minetest.sound_play("fire_small", {
- pos = pos,
- max_hear_distance = 5,
- loop = true
- })
- this_spawner_meta:set_int("smoky", id)
- this_spawner_meta:set_int("sound", s_handle)
+ s_handle = minetest.sound_play("fire_small", {
+ pos = pos,
+ max_hear_distance = 5,
+ loop = true
+ })
+ this_spawner_meta:set_int("smoky", id)
+ this_spawner_meta:set_int("sound", s_handle)
end
- return end
+ end
end
local function stop_smoke(pos)
@@ -55,8 +57,8 @@ local function stop_smoke(pos)
end
if s_handle then
- minetest.after(0, function(s_handle)
- minetest.sound_stop(s_handle)
+ minetest.after(0, function(handle)
+ minetest.sound_stop(handle)
end, s_handle)
end
@@ -65,12 +67,16 @@ local function stop_smoke(pos)
end
-- FLAME TYPES
-local flame_types = {"fake", "ice"}
+local flame_types = {
+ { "fake", S("Fake fire") },
+ { "ice", S("Ice fire") },
+}
for _, f in ipairs(flame_types) do
- minetest.register_node("fake_fire:"..f.."_fire", {
- inventory_image = f.."_fire_inv.png",
- description = f.." fire",
+ 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",
@@ -81,7 +87,7 @@ for _, f in ipairs(flame_types) do
light_source = 14,
waving = 1,
tiles = {
- {name=f.."_fire_animated.png", animation={type="vertical_frames",
+ {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)
@@ -100,7 +106,7 @@ end
minetest.register_node("fake_fire:fancy_fire", {
inventory_image = "fancy_fire_inv.png",
- description = "Fancy Fire",
+ description = S("Fancy Fire"),
drawtype = "mesh",
mesh = "fancy_fire.obj",
paramtype = "light",
@@ -112,7 +118,7 @@ minetest.register_node("fake_fire:fancy_fire", {
damage_per_second = 4,
on_rotate = screwdriver.rotate_simple,
tiles = {
- {name="fake_fire_animated.png",
+ {name="fake_fire_animated.png",
animation={type='vertical_frames', aspect_w=16, aspect_h=16, length=1}}, {name='fake_fire_logs.png'}},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
start_smoke(pos, node, clicker)
@@ -137,7 +143,7 @@ minetest.register_node("fake_fire:fancy_fire", {
-- EMBERS
minetest.register_node("fake_fire:embers", {
- description = "Glowing Embers",
+ description = S("Glowing Embers"),
tiles = {
{name="embers_animated.png", animation={type="vertical_frames",
aspect_w=16, aspect_h=16, length=2}},
@@ -172,7 +178,7 @@ for _, m in ipairs(materials) do
stop_smoke(pos)
end
})
-
+
minetest.register_craft({
type = "shapeless",
output = 'fake_fire:chimney_top_'..m,
@@ -182,7 +188,7 @@ end
-- FLINT and STEEL
minetest.register_tool("fake_fire:flint_and_steel", {
- description = "Flint and steel",
+ description = S("Flint and steel"),
inventory_image = "flint_and_steel.png",
liquids_pointable = false,
stack_max = 1,
diff --git a/framedglass/init.lua b/framedglass/init.lua
index bf50495..07f60d1 100644
--- a/framedglass/init.lua
+++ b/framedglass/init.lua
@@ -66,6 +66,110 @@ minetest.register_node("framedglass:wooden_framed_obsidian_glass", {
sounds = default.node_sound_glass_defaults(),
})
+-- helper functions copied partly from Unified Dyes
+
+local creative_mode = minetest.setting_getbool("creative_mode")
+
+local function select_node(pointed_thing)
+ 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]
+ end
+ return def and pos, def
+end
+
+local function is_buildable_to(placer_name, ...)
+ for _, pos in ipairs({...}) do
+ local node = minetest.get_node_or_nil(pos)
+ local def = node and minetest.registered_nodes[node.name]
+ if not (def and def.buildable_to) or minetest.is_protected(pos, placer_name) then
+ return false
+ end
+ end
+ return true
+end
+
+local color_on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local itemname = itemstack:get_name()
+
+ if not string.find(itemname, "dye:") then
+ if minetest.registered_nodes[node.name] then
+ local pos2 = select_node(pointed_thing)
+ if pos2 and is_buildable_to(clicker, pos2) then
+ minetest.set_node(pos2, { name = itemname })
+ if not creative_mode then
+ itemstack:take_item()
+ end
+ end
+ end
+ return itemstack
+ end
+
+ local a,b = string.find(node.name, "_glass")
+ local oldcolor = string.sub(node.name, b + 1)
+ local newcolor = string.sub(itemname, string.find(itemname, ":") + 1)
+
+ local oldcolor2 = string.gsub(oldcolor, "darkgreen", "dark_green")
+ local oldcolor2 = string.gsub(oldcolor2, "darkgrey", "dark_grey")
+
+ local newcolor2 = string.gsub(newcolor, "dark_green", "darkgreen")
+ local newcolor2 = string.gsub(newcolor2, "dark_grey", "darkgrey")
+
+ if oldcolor == newcolor2 then
+ minetest.chat_send_player(clicker:get_player_name(), "That node is already "..newcolor.."." )
+ return itemstack
+ end
+
+ if not (newcolor == "dark_grey"
+ or newcolor == "dark_green"
+ or minetest.registered_nodes["framedglass:steel_framed_obsidian_glass"..newcolor]) then
+ minetest.chat_send_player(clicker:get_player_name(), "Framed glass doesn't support "..newcolor.."." )
+ return itemstack
+ end
+
+ local inv = clicker:get_inventory()
+ local prevdye = "dye:"..oldcolor2
+
+ print(oldcolor, oldcolor2, newcolor, newcolor2, prevdye)
+
+ if not (inv:contains_item("main", prevdye) and creative_mode) and minetest.registered_items[prevdye] then
+ if inv:room_for_item("main", prevdye) then
+ inv:add_item("main", prevdye)
+ else
+ minetest.add_item(pos, prevdye)
+ end
+ end
+
+ minetest.set_node(pos, { name = "framedglass:steel_framed_obsidian_glass"..newcolor2 })
+ itemstack:take_item()
+ return itemstack
+end
+
+local return_dye_after_dig = function(pos, oldnode, oldmetadata, digger)
+
+ local a,b = string.find(oldnode.name, "_glass")
+ local oldcolor = string.sub(oldnode.name, b + 1)
+ local oldcolor2 = string.gsub(oldcolor, "darkgreen", "dark_green")
+ local oldcolor2 = string.gsub(oldcolor2, "darkgrey", "dark_grey")
+
+ local prevdye = "dye:"..oldcolor2
+
+ local inv = digger:get_inventory()
+
+ if prevdye and not (inv:contains_item("main", prevdye) and creative_mode) and minetest.registered_items[prevdye] then
+ if inv:room_for_item("main", prevdye) then
+ inv:add_item("main", prevdye)
+ else
+ minetest.add_item(pos, prevdye)
+ end
+ end
+end
+
minetest.register_node("framedglass:steel_framed_obsidian_glass", {
description = "Steel-framed Obsidian Glass",
drawtype = "glasslike_framed",
@@ -74,45 +178,44 @@ minetest.register_node("framedglass:steel_framed_obsidian_glass", {
sunlight_propagates = true,
groups = {cracky=3,oddly_breakable_by_hand=3},
sounds = default.node_sound_glass_defaults(),
+ on_rightclick = color_on_rightclick,
+ after_dig_node = return_dye_after_dig
})
-function add_coloured_framedglass(name, desc, dye, texture)
+function add_coloured_framedglass(name, desc, color)
minetest.register_node( "framedglass:steel_framed_obsidian_glass"..name, {
description = "Steel-framed "..desc.." Obsidian Glass",
- tiles = {"framedglass_steel_frame.png",texture},
+ tiles = {
+ "framedglass_steel_frame.png",
+ { name = "framedglass_whiteglass.png", color = color }
+ },
drawtype = "glasslike_framed",
paramtype = "light",
sunlight_propagates = true,
is_ground_content = true,
use_texture_alpha = true,
- groups = {cracky=3},
+ groups = {cracky=3, not_in_creative_inventory=1},
sounds = default.node_sound_glass_defaults(),
+ on_rightclick = color_on_rightclick,
+ after_dig_node = return_dye_after_dig,
+ drop = "framedglass:steel_framed_obsidian_glass"
})
-
- minetest.register_craft({
- type = "shapeless",
- output = "framedglass:steel_framed_obsidian_glass"..name,
- recipe = {
- "framedglass:steel_framed_glass",
- "group:basecolor_white",
- dye
- }
- })
-
end
-add_coloured_framedglass ("red","Red","group:basecolor_red","framedglass_redglass.png")
-add_coloured_framedglass ("green","Green","group:basecolor_green","framedglass_greenglass.png")
-add_coloured_framedglass ("blue","Blue","group:basecolor_blue","framedglass_blueglass.png")
-add_coloured_framedglass ("cyan","Cyan","group:basecolor_cyan","framedglass_cyanglass.png")
-add_coloured_framedglass ("darkgreen","Dark Green","group:unicolor_dark_green","framedglass_darkgreenglass.png")
-add_coloured_framedglass ("violet","Violet","group:excolor_violet","framedglass_violetglass.png")
-add_coloured_framedglass ("pink","Pink","group:unicolor_light_red","framedglass_pinkglass.png")
-add_coloured_framedglass ("yellow","Yellow","group:basecolor_yellow","framedglass_yellowglass.png")
-add_coloured_framedglass ("orange","Orange","group:basecolor_orange","framedglass_orangeglass.png")
-add_coloured_framedglass ("brown","Brown","group:unicolor_dark_orange","framedglass_brownglass.png")
-add_coloured_framedglass ("white","White","group:basecolor_white","framedglass_whiteglass.png")
-add_coloured_framedglass ("grey","Grey","group:basecolor_grey","framedglass_greyglass.png")
-add_coloured_framedglass ("darkgrey","Dark Grey","group:excolor_darkgrey","framedglass_darkgreyglass.png")
-add_coloured_framedglass ("black","Black","group:basecolor_black","framedglass_blackglass.png")
+add_coloured_framedglass ("red", "Red", 0xffff0000)
+add_coloured_framedglass ("orange", "Orange", 0xfffe7f00)
+add_coloured_framedglass ("yellow", "Yellow", 0xffffff01)
+add_coloured_framedglass ("green", "Green", 0xff0cff00)
+add_coloured_framedglass ("cyan", "Cyan", 0xff7affff)
+add_coloured_framedglass ("blue", "Blue", 0xff1600ff)
+add_coloured_framedglass ("violet", "Violet", 0xff7d00ff)
+add_coloured_framedglass ("magenta", "Magenta", 0xfffd05ff)
+
+add_coloured_framedglass ("darkgreen", "Dark Green", 0xff144f00)
+add_coloured_framedglass ("pink", "Pink", 0xffffa4a4)
+add_coloured_framedglass ("brown", "Brown", 0xff542a00)
+add_coloured_framedglass ("white", "White", 0xffffffff)
+add_coloured_framedglass ("grey", "Grey", 0xff7f817e)
+add_coloured_framedglass ("darkgrey", "Dark Grey", 0xff3f403e)
+add_coloured_framedglass ("black", "Black", 0xff000000)
diff --git a/homedecor/bathroom_furniture.lua b/homedecor/bathroom_furniture.lua
index 09ebee9..99dc699 100644
--- a/homedecor/bathroom_furniture.lua
+++ b/homedecor/bathroom_furniture.lua
@@ -1,21 +1,20 @@
-local S = homedecor.gettext
+
+local S = homedecor_i18n.gettext
local bathroom_tile_colors = {
- { "1", "white/grey", "#c0c0c0:200" },
- { "2", "white/dark grey", "#404040:150" },
- { "3", "white/black", "#000000:200" },
- { "4", "black/dark grey", "" },
- { "red", "white/red", "#d00000:150" },
- { "green", "white/green", "#00d000:150" },
- { "blue", "white/blue", "#0000d0:150" },
- { "yellow", "white/yellow", "#ffff00:150" },
- { "tan", "white/tan", "#ceaf42:150" }
+ { "1", S("white/grey"), "#c0c0c0:200" },
+ { "2", S("white/dark grey"), "#404040:150" },
+ { "3", S("white/black"), "#000000:200" },
+ { "4", S("black/dark grey"), "" },
+ { "red", S("white/red"), "#d00000:150" },
+ { "green", S("white/green"), "#00d000:150" },
+ { "blue", S("white/blue"), "#0000d0:150" },
+ { "yellow", S("white/yellow"), "#ffff00:150" },
+ { "tan", S("white/tan"), "#ceaf42:150" }
}
-for i in ipairs(bathroom_tile_colors) do
- local color = bathroom_tile_colors[i][1]
- local shade = bathroom_tile_colors[i][2]
- local hue = bathroom_tile_colors[i][3]
+for _, c in ipairs(bathroom_tile_colors) do
+ local color, shade, hue = unpack(c)
local coloredtile = "homedecor_bathroom_tiles_bg.png^(homedecor_bathroom_tiles_fg.png^[colorize:"..hue..")"
@@ -25,7 +24,7 @@ for i in ipairs(bathroom_tile_colors) do
end
minetest.register_node("homedecor:tiles_"..color, {
- description = "Bathroom/kitchen tiles ("..shade..")",
+ description = S("Bathroom/kitchen tiles (@1)", shade),
tiles = {
coloredtile,
coloredtile,
@@ -46,7 +45,7 @@ local tr_cbox = {
}
homedecor.register("towel_rod", {
- description = "Towel rod with towel",
+ description = S("Towel rod with towel"),
mesh = "homedecor_towel_rod.obj",
tiles = {
"homedecor_generic_terrycloth.png",
@@ -60,7 +59,7 @@ homedecor.register("towel_rod", {
})
homedecor.register("medicine_cabinet", {
- description = S("Medicine Cabinet"),
+ description = S("Medicine cabinet"),
mesh = "homedecor_medicine_cabinet.obj",
tiles = {
'default_wood.png',
@@ -103,4 +102,3 @@ homedecor.register("medicine_cabinet_open", {
minetest.swap_node(pos, node)
end,
})
-
diff --git a/homedecor/bathroom_sanitation.lua b/homedecor/bathroom_sanitation.lua
index d5d396a..c586801 100644
--- a/homedecor/bathroom_sanitation.lua
+++ b/homedecor/bathroom_sanitation.lua
@@ -1,4 +1,5 @@
-local S = homedecor.gettext
+
+local S = homedecor_i18n.gettext
local toilet_sbox = {
type = "fixed",
@@ -7,7 +8,7 @@ local toilet_sbox = {
local toilet_cbox = {
type = "fixed",
- fixed = {
+ fixed = {
{-6/16, -8/16, -8/16, 6/16, 1/16, 8/16 },
{-6/16, -8/16, 4/16, 6/16, 9/16, 8/16 }
}
@@ -17,10 +18,10 @@ homedecor.register("toilet", {
description = S("Toilet"),
mesh = "homedecor_toilet_closed.obj",
tiles = {
- "homedecor_marble.png^[colorize:#ffffff:175",
- "homedecor_marble.png^[colorize:#ffffff:175",
- "homedecor_marble.png^[colorize:#ffffff:175",
- "homedecor_generic_metal_black.png^[brighten"
+ "homedecor_marble.png",
+ "homedecor_marble.png",
+ "homedecor_marble.png",
+ { name = "homedecor_generic_metal.png", color = homedecor.color_med_grey }
},
selection_box = toilet_sbox,
node_box = toilet_cbox,
@@ -35,11 +36,11 @@ homedecor.register("toilet", {
homedecor.register("toilet_open", {
mesh = "homedecor_toilet_open.obj",
tiles = {
- "homedecor_marble.png^[colorize:#ffffff:175",
- "homedecor_marble.png^[colorize:#ffffff:175",
- "homedecor_marble.png^[colorize:#ffffff:175",
+ "homedecor_marble.png",
+ "homedecor_marble.png",
+ "homedecor_marble.png",
"default_water.png",
- "homedecor_generic_metal_black.png^[brighten"
+ { name = "homedecor_generic_metal.png", color = homedecor.color_med_grey }
},
selection_box = toilet_sbox,
collision_box = toilet_cbox,
@@ -89,7 +90,7 @@ homedecor.register("sink", {
description = S("Bathroom Sink"),
mesh = "homedecor_bathroom_sink.obj",
tiles = {
- "homedecor_marble.png^[colorize:#ffffff:175",
+ "homedecor_marble.png",
"homedecor_marble.png",
"default_water.png"
},
@@ -119,7 +120,8 @@ local function taps_on_rightclick(pos, node, clicker, itemstack, pointed_thing)
if below and
below.name == "homedecor:shower_tray" or
below.name == "homedecor:sink" or
- below.name == "homedecor:kitchen_cabinet_with_sink" then
+ below.name == "homedecor:kitchen_cabinet_with_sink" or
+ below.name == "homedecor:kitchen_cabinet_with_sink_locked" then
local particledef = {
outlet = { x = 0, y = -0.44, z = 0.28 },
velocity_x = { min = -0.1, max = 0.1 },
@@ -136,9 +138,9 @@ homedecor.register("taps", {
description = S("Bathroom taps/faucet"),
mesh = "homedecor_bathroom_faucet.obj",
tiles = {
- "homedecor_generic_metal_black.png^[brighten",
+ { name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
"homedecor_generic_metal_bright.png",
- "homedecor_generic_metal_black.png^[colorize:#ffffff:200",
+ "homedecor_generic_metal.png",
"homedecor_generic_metal_bright.png"
},
inventory_image = "3dforniture_taps_inv.png",
@@ -161,7 +163,7 @@ homedecor.register("taps_brass", {
tiles = {
"homedecor_generic_metal_brass.png",
"homedecor_generic_metal_brass.png",
- "homedecor_generic_metal_black.png^[colorize:#ffffff:200",
+ "homedecor_generic_metal.png",
"homedecor_generic_metal_brass.png"
},
inventory_image = "3dforniture_taps_brass_inv.png",
@@ -217,11 +219,11 @@ homedecor.register("shower_head", {
drawtype = "mesh",
mesh = "homedecor_shower_head.obj",
tiles = {
- "homedecor_generic_metal_black.png^[brighten",
+ "homedecor_generic_metal.png",
"homedecor_shower_head.png"
},
inventory_image = "homedecor_shower_head_inv.png",
- description = "Shower Head",
+ description = S("Shower Head"),
groups = {snappy=3},
selection_box = sh_cbox,
walkable = false,
@@ -261,7 +263,7 @@ homedecor.register("bathroom_set", {
"homedecor_bathroom_set_toothpaste.png",
},
inventory_image = "homedecor_bathroom_set_inv.png",
- description = "Bathroom sundries set",
+ description = S("Bathroom sundries set"),
groups = {snappy=3},
selection_box = bs_cbox,
walkable = false,
diff --git a/homedecor/bedroom.lua b/homedecor/bedroom.lua
index 51c4dd5..92e0bc5 100644
--- a/homedecor/bedroom.lua
+++ b/homedecor/bedroom.lua
@@ -1,31 +1,16 @@
-local S = homedecor.gettext
-local bedcolors = {
- { "black", "#000000:200" }, --new cg72
- { "brown", "#603010:175" },
- { "blue", "#0000d0:150" },
- { "cyan", "#009fa7:150" }, --new cg72
- { "darkgrey", "#101010:175" },
- { "dark_green", "#007000:150" },
- { "green", "#00d000:150" }, --new cg72
- { "grey", "#101010:100" }, --new cg72
- { "magenta", "#e0048b:150" }, --new cg72
- { "orange", "#ff3000:150" },
- { "pink", "#ff80b0:150" },
- { "red", "#d00000:150" },
- { "violet", "#7000e0:150" },
- { "white", "#000000:000" }, --new cg72
- { "yellow", "#ffe000:150" }
-}
+local S = homedecor_i18n.gettext
+
+local function N_(x) return x end
local bed_sbox = {
- type = "fixed",
- fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 1.5 }
+ type = "wallmounted",
+ wall_side = { -0.5, -0.5, -0.5, 0.5, 0.5, 1.5 }
}
local bed_cbox = {
- type = "fixed",
- fixed = {
+ type = "wallmounted",
+ wall_side = {
{ -0.5, -0.5, -0.5, 0.5, -0.05, 1.5 },
{ -0.5, -0.5, 1.44, 0.5, 0.5, 1.5 },
{ -0.5, -0.5, -0.5, 0.5, 0.18, -0.44 },
@@ -33,130 +18,145 @@ local bed_cbox = {
}
local kbed_sbox = {
- type = "fixed",
- fixed = { -0.5, -0.5, -0.5, 1.5, 0.5, 1.5 }
+ type = "wallmounted",
+ wall_side = { -0.5, -0.5, -0.5, 1.5, 0.5, 1.5 }
}
local kbed_cbox = {
- type = "fixed",
- fixed = {
+ type = "wallmounted",
+ wall_side = {
{ -0.5, -0.5, -0.5, 1.5, -0.05, 1.5 },
{ -0.5, -0.5, 1.44, 1.5, 0.5, 1.5 },
{ -0.5, -0.5, -0.5, 1.5, 0.18, -0.44 },
}
}
-for i in ipairs(bedcolors) do
- local color = bedcolors[i][1]
- local color2=color
- local hue = bedcolors[i][2]
-
- if color == "darkgrey" then
- color2 = "dark_grey"
- end
- homedecor.register("bed_"..color.."_regular", {
- mesh = "homedecor_bed_regular.obj",
- tiles = {
- "homedecor_bed_frame.png",
- "default_wood.png",
- "wool_white.png",
- "wool_"..color2..".png",
- "homedecor_bed_bottom.png",
- "wool_"..color2..".png^[brighten", -- pillow
- },
- inventory_image = "homedecor_bed_inv.png^(homedecor_bed_overlay_inv.png^[colorize:"..hue..")",
- description = S("Bed (%s)"):format(color),
- groups = {snappy=3},
- selection_box = bed_sbox,
- collision_box = bed_cbox,
- sounds = default.node_sound_wood_defaults(),
- on_rotate = screwdriver.disallow,
- after_place_node = function(pos, placer, itemstack, pointed_thing)
- if not placer:get_player_control().sneak then
- return homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, color)
- end
- end,
- after_dig_node = function(pos)
- homedecor.unextend_bed(pos, color)
- end,
- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
- if minetest.get_modpath("beds") then
- beds.on_rightclick(pos, clicker)
- end
+homedecor.register("bed_regular", {
+ mesh = "homedecor_bed_regular.obj",
+ tiles = {
+ { name = "homedecor_bed_frame.png", color = 0xffffffff },
+ { name = "default_wood.png", color = 0xffffffff },
+ { name = "wool_white.png", color = 0xffffffff },
+ "wool_white.png",
+ { name = "homedecor_bed_bottom.png", color = 0xffffffff },
+ "wool_white.png^[brighten", -- pillow
+ },
+ inventory_image = "homedecor_bed_inv.png",
+ paramtype2 = "colorwallmounted",
+ palette = "unifieddyes_palette_colorwallmounted.png",
+ description = S("Bed"),
+ groups = {snappy=3},
+ selection_box = bed_sbox,
+ node_box = bed_cbox,
+ sounds = default.node_sound_wood_defaults(),
+ on_rotate = screwdriver.disallow,
+ after_place_node = function(pos, placer, itemstack, pointed_thing)
+ homedecor.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
+ if not placer:get_player_control().sneak then
+ return homedecor.bed_expansion(pos, placer, itemstack, pointed_thing)
+ end
+ end,
+ after_dig_node = function(pos)
+ homedecor.unextend_bed(pos)
+ end,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local itemname = itemstack:get_name()
+ if string.find(itemname, "dye:") or string.find(itemname, "unifieddyes:") then
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "homedecor:bed_regular", "wallmounted")
+ elseif itemname == "homedecor:bed_regular" then
+ homedecor.bed_expansion(pos, clicker, itemstack, pointed_thing, true)
+ return itemstack
+ else
+-- if minetest.get_modpath("beds") then
+-- beds.on_rightclick(pos, clicker)
+-- end
return itemstack
end
- })
+ end
+})
- homedecor.register("bed_"..color.."_extended", {
- mesh = "homedecor_bed_extended.obj",
- tiles = {
- "homedecor_bed_frame.png",
- "default_wood.png",
- "wool_white.png",
- "wool_"..color2..".png",
- "homedecor_bed_bottom.png",
- "wool_"..color2..".png^[brighten",
- },
- selection_box = bed_sbox,
- collision_box = bed_cbox,
- sounds = default.node_sound_wood_defaults(),
- expand = { forward = "air" },
- on_rotate = screwdriver.disallow,
- after_dig_node = function(pos)
- homedecor.unextend_bed(pos, color)
- end,
- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
- if minetest.get_modpath("beds") then
- beds.on_rightclick(pos, clicker)
- end
+homedecor.register("bed_extended", {
+ mesh = "homedecor_bed_extended.obj",
+ tiles = {
+ { name = "homedecor_bed_frame.png", color = 0xffffffff },
+ { name = "default_wood.png", color = 0xffffffff },
+ { name = "wool_white.png", color = 0xffffffff },
+ "wool_white.png",
+ { name = "homedecor_bed_bottom.png", color = 0xffffffff },
+ "wool_white.png^[brighten",
+ },
+ paramtype2 = "colorwallmounted",
+ palette = "unifieddyes_palette_colorwallmounted.png",
+ selection_box = bed_sbox,
+ node_box = bed_cbox,
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ expand = { forward = "air" },
+ on_rotate = screwdriver.disallow,
+ after_dig_node = function(pos)
+ homedecor.unextend_bed(pos)
+ end,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local itemname = itemstack:get_name()
+ if string.find(itemname, "dye:") or string.find(itemname, "unifieddyes:") then
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "homedecor:bed_extended", "wallmounted")
+ else
+-- if minetest.get_modpath("beds") then
+-- beds.on_rightclick(pos, clicker)
+-- end
return itemstack
- end,
- drop = "homedecor:bed_"..color.."_regular"
- })
+ end
+ end,
+ drop = "homedecor:bed_regular"
+})
- homedecor.register("bed_"..color.."_kingsize", {
- mesh = "homedecor_bed_kingsize.obj",
- tiles = {
- "homedecor_bed_frame.png",
- "default_wood.png",
- "wool_white.png",
- "wool_"..color2..".png",
- "homedecor_bed_bottom.png",
- "wool_"..color2..".png^[brighten",
- },
- inventory_image = "homedecor_bed_kingsize_inv.png^(homedecor_bed_kingsize_overlay_inv.png^[colorize:"..hue..")",
- groups = {snappy=3, not_in_creative_inventory=1},
- description = S("Bed (%s, king sized)"):format(color),
- groups = {snappy=3, not_in_creative_inventory=1},
- selection_box = kbed_sbox,
- collision_box = kbed_cbox,
- sounds = default.node_sound_wood_defaults(),
- on_rotate = screwdriver.disallow,
- after_dig_node = function(pos, oldnode, oldmetadata, digger)
- local inv = digger:get_inventory()
- if digger:get_player_control().sneak and inv:room_for_item("main", "bed_"..color.."_regular 1") then
- inv:remove_item("main", "homedecor:bed_"..color.."_kingsize 1")
- inv:add_item("main", "homedecor:bed_"..color.."_regular 2")
- end
- end,
- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
- if minetest.get_modpath("beds") then
- beds.on_rightclick(pos, clicker)
- end
+homedecor.register("bed_kingsize", {
+ mesh = "homedecor_bed_kingsize.obj",
+ tiles = {
+ { name = "homedecor_bed_frame.png", color = 0xffffffff },
+ { name = "default_wood.png", color = 0xffffffff },
+ { name = "wool_white.png", color = 0xffffffff },
+ "wool_white.png",
+ { name = "homedecor_bed_bottom.png", color = 0xffffffff },
+ "wool_white.png^[brighten",
+ },
+ paramtype2 = "colorwallmounted",
+ palette = "unifieddyes_palette_colorwallmounted.png",
+ inventory_image = "homedecor_bed_kingsize_inv.png",
+ groups = {snappy=3, not_in_creative_inventory=1},
+ description = S("Bed (king sized)"),
+ groups = {snappy=3, not_in_creative_inventory=1},
+ selection_box = kbed_sbox,
+ node_box = kbed_cbox,
+ sounds = default.node_sound_wood_defaults(),
+ on_rotate = screwdriver.disallow,
+ after_place_node = homedecor.fix_rotation_nsew,
+ after_dig_node = function(pos, oldnode, oldmetadata, digger)
+ local inv = digger:get_inventory()
+ if digger:get_player_control().sneak and inv:room_for_item("main", "bed_regular 1") then
+ inv:remove_item("main", "homedecor:bed_kingsize 1")
+ inv:add_item("main", "homedecor:bed_regular 2")
+ end
+ end,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local itemname = itemstack:get_name()
+ if string.find(itemname, "dye:") or string.find(itemname, "unifieddyes:") then
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "homedecor:bed_kingsize", "wallmounted")
+ else
+-- if minetest.get_modpath("beds") then
+-- beds.on_rightclick(pos, clicker)
+-- end
return itemstack
end
- })
-
- minetest.register_alias("homedecor:bed_"..color.."_foot", "homedecor:bed_"..color.."_regular")
- minetest.register_alias("homedecor:bed_"..color.."_footext", "homedecor:bed_"..color.."_extended")
- minetest.register_alias("homedecor:bed_"..color.."_head", "air")
-
-end
-
+ end
+})
-for _, w in pairs({"mahogany", "oak"}) do
+for _, w in pairs({ N_("mahogany"), N_("oak") }) do
homedecor.register("nightstand_"..w.."_one_drawer", {
- description = S("Nightstand with One Drawer ("..w..")"),
+ description = S("Nightstand with One Drawer (@1)", S(w)),
tiles = { 'homedecor_nightstand_'..w..'_tb.png',
'homedecor_nightstand_'..w..'_tb.png^[transformFY',
'homedecor_nightstand_'..w..'_lr.png^[transformFX',
@@ -167,7 +167,7 @@ for _, w in pairs({"mahogany", "oak"}) do
type = "fixed",
fixed = {
{ -8/16, 0, -30/64, 8/16, 8/16, 8/16 }, -- top half
- { -7/16, 1/16, -32/64, 7/16, 7/16, -29/64}, -- drawer face
+ { -7/16, 1/16, -32/64, 7/16, 7/16, -29/64}, -- drawer face
{ -8/16, -8/16, -30/64, -7/16, 0, 8/16 }, -- left
{ 7/16, -8/16, -30/64, 8/16, 0, 8/16 }, -- right
{ -8/16, -8/16, 7/16, 8/16, 0, 8/16 }, -- back
@@ -185,7 +185,7 @@ for _, w in pairs({"mahogany", "oak"}) do
})
homedecor.register("nightstand_"..w.."_two_drawers", {
- description = S("Nightstand with Two Drawers ("..w..")"),
+ description = S("Nightstand with Two Drawers (@1)", S(w)),
tiles = { 'homedecor_nightstand_'..w..'_tb.png',
'homedecor_nightstand_'..w..'_tb.png^[transformFY',
'homedecor_nightstand_'..w..'_lr.png^[transformFX',
@@ -210,3 +210,75 @@ for _, w in pairs({"mahogany", "oak"}) do
},
})
end
+
+-- convert to param2 colorization
+
+local bedcolors = {
+ "black",
+ "brown",
+ "blue",
+ "cyan",
+ "darkgrey",
+ "dark_green",
+ "green",
+ "grey",
+ "magenta",
+ "orange",
+ "pink",
+ "red",
+ "violet",
+ "white",
+ "yellow"
+}
+
+homedecor.old_bed_nodes = {}
+
+for _, color in ipairs(bedcolors) do
+ table.insert(homedecor.old_bed_nodes, "homedecor:bed_"..color.."_regular")
+ table.insert(homedecor.old_bed_nodes, "homedecor:bed_"..color.."_extended")
+ table.insert(homedecor.old_bed_nodes, "homedecor:bed_"..color.."_kingsize")
+end
+
+minetest.register_lbm({
+ name = "homedecor:convert_beds",
+ label = "Convert homedecor static bed nodes to use param2 color",
+ run_at_every_load = true,
+ nodenames = homedecor.old_bed_nodes,
+ action = function(pos, node)
+ local name = node.name
+ local color = string.sub(name, string.find(name, "_") + 1)
+ local color = string.sub(color, 1, string.find(color, "_", -10) - 1) -- -10 puts us near the end of the color field
+
+ if color == "darkgrey" then
+ color = "dark_grey"
+ end
+
+ local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
+ 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
+
+ local param2 = paletteidx + new_fdir
+
+ if string.find(name, "regular") then
+ new_name = "homedecor:bed_regular"
+ elseif string.find(name, "extended") then
+ new_name = "homedecor:bed_extended"
+ else
+ new_name = "homedecor:bed_kingsize"
+ end
+
+ minetest.set_node(pos, { name = new_name, param2 = param2 })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..color)
+ end
+})
diff --git a/homedecor/books.lua b/homedecor/books.lua
index 67da99e..fecbcec 100644
--- a/homedecor/books.lua
+++ b/homedecor/books.lua
@@ -1,22 +1,23 @@
-local S = homedecor.gettext
+
+local S = homedecor_i18n.gettext
+
+local function N_(x) return x end
local bookcolors = {
- { "red", "#c00000:150" },
- { "green", "#008000:150" },
- { "blue", "#4040c0:150" },
- { "violet", "#600070:150" },
- { "grey", "#202020:150" },
- { "brown", "#603010:175" }
+ { N_("red"), "#c00000:150" },
+ { N_("green"), "#008000:150" },
+ { N_("blue"), "#4040c0:150" },
+ { N_("violet"), "#600070:150" },
+ { N_("grey"), "#202020:150" },
+ { N_("brown"), "#603010:175" }
}
local BOOK_FORMNAME = "homedecor:book_form"
local player_current_book = { }
-for c in ipairs(bookcolors) do
- local color = bookcolors[c][1]
- local color_d = S(bookcolors[c][1])
- local hue = bookcolors[c][2]
+for _, c in ipairs(bookcolors) do
+ local color, hue = unpack(c)
local function book_dig(pos, node, digger)
if minetest.is_protected(pos, digger:get_player_name()) then return end
@@ -41,7 +42,7 @@ for c in ipairs(bookcolors) do
local inv_img = "homedecor_book_inv.png^[colorize:"..hue.."^homedecor_book_trim_inv.png"
homedecor.register("book_"..color, {
- description = S("Writable Book (%s)"):format(color_d),
+ description = S("Writable Book (@1)", S(color)),
mesh = "homedecor_book.obj",
tiles = {
"(homedecor_book_cover.png^[colorize:"..hue..")^homedecor_book_cover_trim.png",
@@ -169,6 +170,6 @@ minetest.register_on_player_receive_fields(function(player, form_name, fields)
if (fields.title or "") ~= "" then
meta:set_string("infotext", fields.title)
end
- minetest.log("action", player:get_player_name().." has written in a book (title: \""..fields.title.."\"): \""..fields.text..
- "\" at location: "..minetest.pos_to_string(player:getpos()))
+ minetest.log("action", S("@1 has written in a book (title: \"@2\"): \"@3\" at location @4",
+ player:get_player_name(), fields.title, fields.text, minetest.pos_to_string(player:getpos())))
end)
diff --git a/homedecor/climate-control.lua b/homedecor/climate-control.lua
index 462f450..bb68583 100644
--- a/homedecor/climate-control.lua
+++ b/homedecor/climate-control.lua
@@ -1,6 +1,6 @@
-- Nodes that would affect the local temperature e.g. fans, heater, A/C
-local S = homedecor.gettext
+local S = homedecor_i18n.gettext
homedecor.register("air_conditioner", {
description = S("Air Conditioner"),
@@ -24,8 +24,24 @@ minetest.register_entity("homedecor:mesh_desk_fan", {
visual_size = {x=10, y=10},
})
+local add_mesh_desk_fan_entity = function(pos)
+ print("in add_mesh_desk_fan_entity()")
+ local param2 = minetest.get_node(pos).param2
+ local entity = minetest.add_entity(pos, "homedecor:mesh_desk_fan")
+ if param2 == 0 then
+ entity:setyaw(3.142) -- 180 degrees
+ elseif minetest.get_node(pos).param2 == 1 then
+ entity:setyaw(3.142/2) -- 90 degrees
+ elseif minetest.get_node(pos).param2 == 3 then
+ entity:setyaw((-3.142/2)) -- 270 degrees
+ else
+ entity:setyaw(0)
+ end
+ return entity
+end
+
homedecor.register("desk_fan", {
- description = "Desk Fan",
+ description = S("Desk Fan"),
groups = {oddly_breakable_by_hand=2},
node_box = {
type = "fixed",
@@ -39,55 +55,25 @@ homedecor.register("desk_fan", {
selection_box = { type = "regular" },
on_rotate = screwdriver.disallow,
on_construct = function(pos)
- local entity_remove = minetest.get_objects_inside_radius(pos, 0.1)
local meta = minetest.get_meta(pos)
meta:set_string("active", "no")
- if entity_remove[1] == nil then
- minetest.add_entity({x=pos.x, y=pos.y, z=pos.z}, "homedecor:mesh_desk_fan") --+(0.0625*10)
- entity_remove = minetest.get_objects_inside_radius(pos, 0.1)
- if minetest.get_node(pos).param2 == 0 then --list of rad to 90 degree: 3.142/2 = 90; 3.142 = 180; 3*3.142 = 270
- entity_remove[1]:setyaw(3.142)
- elseif minetest.get_node(pos).param2 == 1 then
- entity_remove[1]:setyaw(3.142/2)
- elseif minetest.get_node(pos).param2 == 3 then
- entity_remove[1]:setyaw((-3.142/2))
- else
- entity_remove[1]:setyaw(0)
- end
- end
+ add_mesh_desk_fan_entity(pos)
end,
on_punch = function(pos)
- local entity_anim = minetest.get_objects_inside_radius(pos, 0.1)
- local speedy_meta = minetest.get_meta(pos)
- if speedy_meta:get_string("active") == "no" then
- speedy_meta:set_string("active", "yes")
- elseif speedy_meta:get_string("active") == "yes" then
- speedy_meta:set_string("active", "no")
- end
-
- if entity_anim[1] == nil then
- minetest.add_entity({x=pos.x, y=pos.y, z=pos.z}, "homedecor:mesh_desk_fan") --+(0.0625*10)
- local entity_remove = minetest.get_objects_inside_radius(pos, 0.1)
- if minetest.get_node(pos).param2 == 0 then --list of rad to 90 degree: 3.142/2 = 90; 3.142 = 180; 3*3.142 = 270
- entity_remove[1]:setyaw(3.142)
- elseif minetest.get_node(pos).param2 == 1 then
- entity_remove[1]:setyaw(3.142/2)
- elseif minetest.get_node(pos).param2 == 3 then
- entity_remove[1]:setyaw((-3.142/2))
- else
- entity_remove[1]:setyaw(0)
- end
- end
- local entity_anim = minetest.get_objects_inside_radius(pos, 0.1)
- if minetest.get_meta(pos):get_string("active") == "no" then
- entity_anim[1]:set_animation({x=0,y=0}, 1, 0)
- elseif minetest.get_meta(pos):get_string("active") == "yes" then
- entity_anim[1]:set_animation({x=0,y=96}, 24, 0)
+ local meta = minetest.get_meta(pos)
+ local entities = minetest.get_objects_inside_radius(pos, 0.1)
+ local entity = entities[1] or add_mesh_desk_fan_entity(pos)
+ if meta:get_string("active") == "no" then
+ meta:set_string("active", "yes")
+ entity:set_animation({x=0,y=96}, 24, 0)
+ else
+ meta:set_string("active", "no")
+ entity:set_animation({x=0,y=0}, 1, 0)
end
end,
after_dig_node = function(pos)
- local entity_remove = minetest.get_objects_inside_radius(pos, 0.1)
- entity_remove[1]:remove()
+ local entities = minetest.get_objects_inside_radius(pos, 0.1)
+ if entities[1] then entities[1]:remove() end
end,
})
@@ -146,11 +132,11 @@ local r_cbox = homedecor.nodebox.slab_z(-0.25)
homedecor.register("radiator", {
mesh = "homedecor_radiator.obj",
tiles = {
- "homedecor_generic_metal_black.png^[colorize:#ffffff:200",
+ "homedecor_generic_metal.png",
"homedecor_radiator_controls.png"
},
inventory_image = "homedecor_radiator_inv.png",
- description = "Radiator heater",
+ description = S("Radiator heater"),
groups = {snappy=3},
selection_box = r_cbox,
collision_box = r_cbox,
diff --git a/homedecor/clocks.lua b/homedecor/clocks.lua
index 0a00934..b2a594a 100644
--- a/homedecor/clocks.lua
+++ b/homedecor/clocks.lua
@@ -4,7 +4,7 @@ local clock_sbox = {
}
local clock_materials = {
- { "plastic", "homedecor_generic_plastic_black.png^[colorize:#ffffff:220" },
+ { "plastic", "homedecor_generic_plastic.png" },
{ "wood", "default_wood.png" }
}
@@ -82,7 +82,7 @@ homedecor.register("grandfather_clock", {
tiles = {
"default_glass.png",
"homedecor_grandfather_clock_face.png",
- "homedecor_generic_wood_luxury.png",
+ homedecor.lux_wood,
"homedecor_grandfather_clock_face_edge.png",
"homedecor_generic_metal_brass.png"
},
diff --git a/homedecor/crafts.lua b/homedecor/crafts.lua
index 80ba5e7..b887c2d 100644
--- a/homedecor/crafts.lua
+++ b/homedecor/crafts.lua
@@ -2,7 +2,7 @@
--
-- Mostly my own code; overall template borrowed from game default
-local S = homedecor.gettext
+local S = homedecor_i18n.gettext
-- misc craftitems
@@ -109,23 +109,23 @@ minetest.register_craftitem("homedecor:steel_strip", {
})
minetest.register_craftitem(":glooptest:chainlink", {
- description = "Steel chainlink",
+ description = S("Steel chainlink"),
inventory_image = "homedecor_chainlink_steel.png"
})
minetest.register_craftitem("homedecor:chainlink_brass", {
- description = "Brass chainlink",
+ description = S("Brass chainlink"),
inventory_image = "homedecor_chainlink_brass.png"
})
minetest.register_craftitem("homedecor:soda_can", {
- description = "Soda Can",
+ description = S("Soda Can"),
inventory_image = "homedecor_soda_can.png",
on_use = minetest.item_eat(2),
})
minetest.register_craftitem("homedecor:coin", {
- description = "Gold Coin (for soda vending machine)",
+ description = S("Gold Coin (for soda vending machine)"),
inventory_image = "homedecor_coin.png",
})
@@ -537,218 +537,21 @@ minetest.register_craft({
recipe = "homedecor:skylight_frosted",
})
--- Various colors of shutters
-
minetest.register_craft( {
- output = "homedecor:shutter_oak 2",
- recipe = {
+ output = "homedecor:shutter 2",
+ recipe = {
{ "group:stick", "group:stick" },
{ "group:stick", "group:stick" },
{ "group:stick", "group:stick" },
- },
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "homedecor:shutter_oak",
- burntime = 30,
-})
-
---
-
-minetest.register_craft( {
- type = "shapeless",
- output = "homedecor:shutter_black 4",
- recipe = {
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "dye:black"
- },
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "homedecor:shutter_black",
- burntime = 30,
-})
-
---
-
-minetest.register_craft( {
- type = "shapeless",
- output = "homedecor:shutter_dark_grey 4",
- recipe = {
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "dye:dark_grey"
- },
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "homedecor:shutter_dark_grey",
- burntime = 30,
-})
-
---
-
-minetest.register_craft( {
- type = "shapeless",
- output = "homedecor:shutter_grey 4",
- recipe = {
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "dye:grey"
- },
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "homedecor:shutter_grey",
- burntime = 30,
-})
-
---
-
-minetest.register_craft( {
- type = "shapeless",
- output = "homedecor:shutter_white 4",
- recipe = {
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "dye:white"
- },
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "homedecor:shutter_white",
- burntime = 30,
-})
-
---
-
-minetest.register_craft( {
- type = "shapeless",
- output = "homedecor:shutter_mahogany 4",
- recipe = {
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "dye:brown"
},
})
minetest.register_craft({
- type = "fuel",
- recipe = "homedecor:shutter_mahogany",
- burntime = 30,
-})
-minetest.register_craft( {
- type = "shapeless",
- output = "homedecor:shutter_red 4",
- recipe = {
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "dye:red"
- },
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "homedecor:shutter_red",
- burntime = 30,
-})
-
-minetest.register_craft( {
- type = "shapeless",
- output = "homedecor:shutter_yellow 4",
- recipe = {
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "dye:yellow"
- },
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "homedecor:shutter_yellow",
- burntime = 30,
-})
-
---
-
-minetest.register_craft( {
- type = "shapeless",
- output = "homedecor:shutter_forest_green 4",
- recipe = {
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "dye:dark_green"
- },
-})
-
-minetest.register_craft({
type = "fuel",
- recipe = "homedecor:shutter_forest_green",
+ recipe = "homedecor:shutter_oak",
burntime = 30,
})
---
-
-minetest.register_craft( {
- type = "shapeless",
- output = "homedecor:shutter_light_blue 4",
- recipe = {
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "unifieddyes:light_blue"
- },
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "homedecor:shutter_light_blue",
- burntime = 30,
-})
-
-minetest.register_craft( {
- type = "shapeless",
- output = "homedecor:shutter_violet 4",
- recipe = {
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "homedecor:shutter_oak",
- "dye:violet"
- },
-})
-
-minetest.register_craft({
- type = "fuel",
- recipe = "homedecor:shutter_violet",
- burntime = 30,
-})
-
---
-
minetest.register_craft( {
output = "homedecor:drawer_small",
recipe = {
@@ -931,7 +734,7 @@ minetest.register_craft( {
minetest.register_craft( {
type = "shapeless",
output = "homedecor:rug_small 8",
- recipe = {
+ recipe = {
"wool:red",
"wool:yellow",
"wool:blue",
@@ -953,7 +756,7 @@ minetest.register_craft( {
minetest.register_craft( {
type = "shapeless",
output = "homedecor:rug_small 8",
- recipe = {
+ recipe = {
"cotton:red",
"cotton:yellow",
"cotton:blue",
@@ -973,37 +776,37 @@ minetest.register_craft( {
-- fuel recipes for same
minetest.register_craft({
- type = "fuel",
- recipe = "homedecor:rug_small",
- burntime = 30,
+ type = "fuel",
+ recipe = "homedecor:rug_small",
+ burntime = 30,
})
minetest.register_craft( {
type = "shapeless",
output = "homedecor:rug_large 2",
- recipe = {
+ recipe = {
"homedecor:rug_small",
"homedecor:rug_small",
},
})
minetest.register_craft({
- type = "fuel",
- recipe = "homedecor:rug_large",
- burntime = 30,
+ type = "fuel",
+ recipe = "homedecor:rug_large",
+ burntime = 30,
})
minetest.register_craft({
- type = "fuel",
- recipe = "homedecor:rug_persian",
- burntime = 30,
+ type = "fuel",
+ recipe = "homedecor:rug_persian",
+ burntime = 30,
})
-- Speakers
minetest.register_craft( {
output = "homedecor:speaker_driver 2",
- recipe = {
+ recipe = {
{ "", "default:steel_ingot", "" },
{ "default:paper", "homedecor:copper_wire", "default:iron_lump" },
{ "", "default:steel_ingot", "" },
@@ -1012,14 +815,14 @@ minetest.register_craft( {
minetest.register_craft( {
output = "homedecor:speaker_small",
- recipe = {
+ recipe = {
{ "wool:black", "homedecor:speaker_driver", "group:wood" },
},
})
minetest.register_craft( {
output = "homedecor:speaker",
- recipe = {
+ recipe = {
{ "wool:black", "homedecor:speaker_driver", "group:wood" },
{ "wool:black", "homedecor:speaker_driver", "group:wood" },
{ "wool:black", "group:wood", "group:wood" },
@@ -1030,14 +833,14 @@ minetest.register_craft( {
minetest.register_craft( {
output = "homedecor:speaker_small",
- recipe = {
+ recipe = {
{ "cotton:black", "homedecor:speaker_driver", "group:wood" },
},
})
minetest.register_craft( {
output = "homedecor:speaker",
- recipe = {
+ recipe = {
{ "cotton:black", "homedecor:speaker_driver", "group:wood" },
{ "cotton:black", "homedecor:speaker_driver", "group:wood" },
{ "cotton:black", "group:wood", "group:wood" },
@@ -1046,26 +849,23 @@ minetest.register_craft( {
-- Curtains
-local curtaincolors = {
- "red",
- "green",
- "blue",
- "white",
- "pink",
- "violet"
-}
+minetest.register_craft( {
+ output = "homedecor:curtain_closed 4",
+ recipe = {
+ { "wool:white", "", ""},
+ { "wool:white", "", ""},
+ { "wool:white", "", ""},
+ },
+})
-for c in ipairs(curtaincolors) do
- local color = curtaincolors[c]
- minetest.register_craft( {
- output = "homedecor:curtain_"..color.." 3",
- recipe = {
- { "wool:"..color, "", ""},
- { "wool:"..color, "", ""},
- { "wool:"..color, "", ""},
- },
- })
-end
+minetest.register_craft( {
+ output = "homedecor:curtain_closed 4",
+ recipe = {
+ { "cottages:wool", "", ""},
+ { "cottages:wool", "", ""},
+ { "cottages:wool", "", ""},
+ },
+})
local mats = {
{ "brass", "homedecor:pole_brass" },
@@ -1214,7 +1014,7 @@ minetest.register_craft({
minetest.register_craft({
output = "homedecor:refrigerator_steel",
recipe = {
- {"default:steel_ingot", "homedecor:glowlight_small_cube_white", "default:steel_ingot", },
+ {"default:steel_ingot", "homedecor:glowlight_small_cube", "default:steel_ingot", },
{"default:steel_ingot", "default:copperblock", "default:steel_ingot", },
{"default:steel_ingot", "default:clay", "default:steel_ingot", },
}
@@ -1390,73 +1190,10 @@ minetest.register_craft( {
},
})
--- yellow glowlights
-
-minetest.register_craft({
- output = "homedecor:glowlight_half_yellow 6",
- recipe = {
- {"default:glass", "homedecor:power_crystal", "default:glass", },
- }
-})
-
-minetest.register_craft({
- output = "homedecor:glowlight_half_yellow 6",
- recipe = {
- {"moreblocks:super_glow_glass", "moreblocks:glow_glass", "moreblocks:super_glow_glass", },
- }
-})
-
-minetest.register_craft({
- output = "homedecor:glowlight_quarter_yellow 6",
- recipe = {
- {"homedecor:glowlight_half_yellow", "homedecor:glowlight_half_yellow", "homedecor:glowlight_half_yellow", },
- }
-})
+-- glowlights
minetest.register_craft({
- output = "homedecor:glowlight_small_cube_yellow 16",
- recipe = {
- {"default:glass" },
- {"homedecor:power_crystal" },
- }
-})
-
-minetest.register_craft({
- output = "homedecor:glowlight_small_cube_yellow 16",
- recipe = {
- {"moreblocks:glow_glass" },
- {"moreblocks:super_glow_glass" },
- }
-})
-
-minetest.register_craft({
- output = "homedecor:glowlight_small_cube_yellow 4",
- recipe = {
- {"homedecor:glowlight_half_yellow" },
- }
-})
-
-minetest.register_craft({
- output = "homedecor:glowlight_half_yellow",
- recipe = {
- {"homedecor:glowlight_small_cube_yellow","homedecor:glowlight_small_cube_yellow"},
- {"homedecor:glowlight_small_cube_yellow","homedecor:glowlight_small_cube_yellow"}
- }
-})
-
-minetest.register_craft({
- output = "homedecor:glowlight_half_yellow",
- type = "shapeless",
- recipe = {
- "homedecor:glowlight_quarter_yellow",
- "homedecor:glowlight_quarter_yellow"
- }
-})
-
--- white
-
-minetest.register_craft({
- output = "homedecor:glowlight_half_white 6",
+ output = "homedecor:glowlight_half 6",
recipe = {
{ "dye:white", "dye:white", "dye:white" },
{ "default:glass", "homedecor:power_crystal", "default:glass", },
@@ -1464,7 +1201,7 @@ minetest.register_craft({
})
minetest.register_craft({
- output = "homedecor:glowlight_half_white 6",
+ output = "homedecor:glowlight_half 6",
recipe = {
{ "dye:white", "dye:white", "dye:white" },
{"moreblocks:super_glow_glass", "moreblocks:glow_glass", "moreblocks:super_glow_glass", },
@@ -1472,24 +1209,14 @@ minetest.register_craft({
})
minetest.register_craft({
- type = "shapeless",
- output = "homedecor:glowlight_half_white 2",
+ output = "homedecor:glowlight_quarter 6",
recipe = {
- "dye:white",
- "homedecor:glowlight_half_yellow",
- "homedecor:glowlight_half_yellow",
+ {"homedecor:glowlight_half", "homedecor:glowlight_half", "homedecor:glowlight_half", },
}
})
minetest.register_craft({
- output = "homedecor:glowlight_quarter_white 6",
- recipe = {
- {"homedecor:glowlight_half_white", "homedecor:glowlight_half_white", "homedecor:glowlight_half_white", },
- }
-})
-
-minetest.register_craft({
- output = "homedecor:glowlight_small_cube_white 8",
+ output = "homedecor:glowlight_small_cube 8",
recipe = {
{ "dye:white" },
{ "default:glass" },
@@ -1498,7 +1225,7 @@ minetest.register_craft({
})
minetest.register_craft({
- output = "homedecor:glowlight_small_cube_white 8",
+ output = "homedecor:glowlight_small_cube 8",
recipe = {
{"dye:white" },
{"moreblocks:super_glow_glass" },
@@ -1506,26 +1233,26 @@ minetest.register_craft({
})
minetest.register_craft({
- output = "homedecor:glowlight_small_cube_white 4",
+ output = "homedecor:glowlight_small_cube 4",
recipe = {
- {"homedecor:glowlight_half_white" },
+ {"homedecor:glowlight_half" },
}
})
minetest.register_craft({
- output = "homedecor:glowlight_half_white",
+ output = "homedecor:glowlight_half",
recipe = {
- {"homedecor:glowlight_small_cube_white","homedecor:glowlight_small_cube_white"},
- {"homedecor:glowlight_small_cube_white","homedecor:glowlight_small_cube_white"}
+ {"homedecor:glowlight_small_cube","homedecor:glowlight_small_cube"},
+ {"homedecor:glowlight_small_cube","homedecor:glowlight_small_cube"}
}
})
minetest.register_craft({
- output = "homedecor:glowlight_half_white",
+ output = "homedecor:glowlight_half",
type = "shapeless",
recipe = {
- "homedecor:glowlight_quarter_white",
- "homedecor:glowlight_quarter_white"
+ "homedecor:glowlight_quarter",
+ "homedecor:glowlight_quarter"
}
})
@@ -2120,64 +1847,64 @@ minetest.register_craft({
local painting_patterns = {
[1] = { { "brown", "red", "brown" },
- { "dark_green", "red", "green" } },
+ { "dark_green", "red", "green" } },
[2] = { { "green", "yellow", "green" },
- { "green", "yellow", "green" } },
+ { "green", "yellow", "green" } },
[3] = { { "green", "pink", "green" },
- { "brown", "pink", "brown" } },
+ { "brown", "pink", "brown" } },
[4] = { { "black", "orange", "grey" },
- { "dark_green", "orange", "orange" } },
+ { "dark_green", "orange", "orange" } },
[5] = { { "blue", "orange", "yellow" },
- { "green", "red", "brown" } },
+ { "green", "red", "brown" } },
[6] = { { "green", "red", "orange" },
- { "orange", "yellow", "green" } },
+ { "orange", "yellow", "green" } },
[7] = { { "blue", "dark_green", "dark_green" },
- { "green", "grey", "green" } },
+ { "green", "grey", "green" } },
[8] = { { "blue", "blue", "blue" },
- { "green", "green", "green" } },
+ { "green", "green", "green" } },
[9] = { { "blue", "blue", "dark_green" },
- { "green", "grey", "dark_green" } },
+ { "green", "grey", "dark_green" } },
[10] = { { "green", "white", "green" },
- { "dark_green", "white", "dark_green" } },
+ { "dark_green", "white", "dark_green" } },
[11] = { { "blue", "white", "blue" },
- { "blue", "grey", "dark_green" } },
+ { "blue", "grey", "dark_green" } },
[12] = { { "green", "green", "green" },
- { "grey", "grey", "green" } },
+ { "grey", "grey", "green" } },
[13] = { { "blue", "blue", "grey" },
- { "dark_green", "white", "white" } },
+ { "dark_green", "white", "white" } },
[14] = { { "red", "yellow", "blue" },
- { "blue", "green", "violet" } },
+ { "blue", "green", "violet" } },
[15] = { { "blue", "yellow", "blue" },
- { "black", "black", "black" } },
+ { "black", "black", "black" } },
[16] = { { "red", "orange", "blue" },
- { "black", "dark_grey", "grey" } },
+ { "black", "dark_grey", "grey" } },
[17] = { { "orange", "yellow", "orange" },
- { "black", "black", "black" } },
+ { "black", "black", "black" } },
[18] = { { "grey", "dark_green", "grey" },
- { "white", "white", "white" } },
+ { "white", "white", "white" } },
[19] = { { "white", "brown", "green" },
- { "green", "brown", "brown" } },
+ { "green", "brown", "brown" } },
[20] = { { "blue", "blue", "blue" },
- { "red", "brown", "grey" } }
+ { "red", "brown", "grey" } }
}
for i,recipe in pairs(painting_patterns) do
@@ -2213,7 +1940,7 @@ minetest.register_craft({
minetest.register_craft({
output = "homedecor:fishtank",
recipe = {
- { "homedecor:plastic_sheeting", "homedecor:glowlight_small_cube_white", "homedecor:plastic_sheeting" },
+ { "homedecor:plastic_sheeting", "homedecor:glowlight_small_cube", "homedecor:plastic_sheeting" },
{ "default:glass", "bucket:bucket_water", "default:glass" },
{ "default:glass", "building_blocks:gravel_spread", "default:glass" },
},
@@ -2349,7 +2076,7 @@ minetest.register_craft({
recipe = {
{ "homedecor:motor" },
{ "homedecor:fan_blades" },
- { "homedecor:glowlight_small_cube_white" }
+ { "homedecor:glowlight_small_cube" }
}
})
@@ -2358,7 +2085,7 @@ minetest.register_craft({
recipe = {
{ "technic:motor" },
{ "homedecor:fan_blades" },
- { "homedecor:glowlight_small_cube_white" }
+ { "homedecor:glowlight_small_cube" }
}
})
@@ -3134,18 +2861,14 @@ for i in ipairs(picture_dyes) do
})
end
-local dlamp_colors = { "red","blue","green","violet" }
-
-for _, color in ipairs(dlamp_colors) do
- minetest.register_craft({
- output = "homedecor:desk_lamp_"..color,
- recipe = {
- { "", "homedecor:steel_strip", "homedecor:glowlight_small_cube_white" },
- { "", "homedecor:copper_wire", "" },
- { "homedecor:plastic_sheeting", "dye:"..color, "homedecor:plastic_sheeting" },
- },
- })
-end
+minetest.register_craft({
+ output = "homedecor:desk_lamp 2",
+ recipe = {
+ { "", "default:steel_ingot", "homedecor:glowlight_small_cube" },
+ { "", "homedecor:steel_strip", "" },
+ { "homedecor:plastic_sheeting", "homedecor:copper_wire", "homedecor:plastic_sheeting" },
+ },
+})
minetest.register_craft({
output = "homedecor:hanging_lantern 2",
@@ -3224,7 +2947,7 @@ minetest.register_craft({
recipe = {
{ "", "technic:brass_ingot", ""},
{ "", "homedecor:chainlink_brass", ""},
- { "default:glass", "homedecor:glowlight_small_cube_white", "default:glass"}
+ { "default:glass", "homedecor:glowlight_small", "default:glass"}
},
})
@@ -3232,7 +2955,7 @@ minetest.register_craft({
output = "homedecor:ceiling_lamp",
recipe = {
{ "", "chains:chain_top_brass", ""},
- { "default:glass", "homedecor:glowlight_small_cube_white", "default:glass"}
+ { "default:glass", "homedecor:glowlight_small", "default:glass"}
},
})
@@ -3414,4 +3137,3 @@ end
if (minetest.get_modpath("technic") and minetest.get_modpath("dye") and minetest.get_modpath("bees")) then
technic.register_separating_recipe({ input = {"bees:wax 1"}, output = {"homedecor:oil_extract 2","dye:yellow 1"} })
end
-
diff --git a/homedecor/depends.txt b/homedecor/depends.txt
index ea261e9..ef16206 100644
--- a/homedecor/depends.txt
+++ b/homedecor/depends.txt
@@ -1,11 +1,12 @@
default
+unifieddyes
+homedecor_i18n
building_blocks?
signs_lib?
moreblocks?
technic?
dye?
bees?
-intllib?
bucket?
beds?
flowers?
diff --git a/homedecor/doors_and_gates.lua b/homedecor/doors_and_gates.lua
index 1e6ae0a..81d8583 100644
--- a/homedecor/doors_and_gates.lua
+++ b/homedecor/doors_and_gates.lua
@@ -1,11 +1,13 @@
-- Node definitions for Homedecor doors
-local S = homedecor.gettext
+local S = homedecor_i18n.gettext
+
+local function N_(x) return x end
-- doors
-local function isSolid(pos,adj)
- local adj = {x=adj[1],y=adj[2],z=adj[3]}
+local function isSolid(pos, adjust)
+ local adj = {x = adjust[1], y = adjust[2], z = adjust[3]}
local node = minetest.get_node(vector.add(pos,adj))
if node then
local idef = minetest.registered_nodes[minetest.get_node(vector.add(pos,adj)).name]
@@ -42,14 +44,12 @@ local function calculateClosed(pos)
local node = minetest.get_node(pos)
-- the door is considered closed if it is closing off something.
- local solids = 0
local direction = node.param2 % 6
local isTrap = direction == 0 or direction == 5
if isTrap then
-- the trap door is considered closed when all nodes on its sides are solid
-- or all nodes in the 3x3 above/below it are solid except the center
for level = 0, 1 do
- local fail = false
local solids = countSolids(pos,node,level)
if solids == 8 then
return true
@@ -99,7 +99,6 @@ local function calculateClosed(pos)
end
return false
end
- error("What direction is this???",direction)
end
end
@@ -122,32 +121,32 @@ end
local door_model_list = {
{ name = "closet_mahogany",
- description = S("Mahogany Closet Door"),
+ description = N_("Mahogany Closet Door (@1 opening)"),
mesh = "homedecor_door_closet.obj"
},
{ name = "closet_oak",
- description = S("Oak Closet Door"),
+ description = N_("Oak Closet Door (@1 opening)"),
mesh = "homedecor_door_closet.obj"
},
{ name = "exterior_fancy",
- description = S("Fancy Wood/Glass Door"),
+ description = N_("Fancy Wood/Glass Door (@1 opening)"),
mesh = "homedecor_door_fancy.obj",
tiles = {
"homedecor_door_exterior_fancy.png",
"homedecor_door_exterior_fancy_insert.png"
- },
+ },
usealpha = true
},
{ name = "glass",
- description = S("Glass Office Door"),
+ description = N_("Glass Office Door (@1 opening)"),
mesh = "homedecor_door_plain.obj"
},
{ name = "wood_glass_oak",
- description = S("Glass and Wood, Oak-colored"),
+ description = N_("Glass and Wood, Oak-colored (@1 opening)"),
mesh = "homedecor_door_wood_glass.obj",
tiles = {
"homedecor_door_wood_glass_oak.png",
@@ -156,7 +155,7 @@ local door_model_list = {
},
{ name = "wood_glass_mahogany",
- description = S("Glass and Wood, Mahogany-colored"),
+ description = N_("Glass and Wood, Mahogany-colored (@1 opening)"),
mesh = "homedecor_door_wood_glass.obj",
tiles = {
"homedecor_door_wood_glass_mahogany.png",
@@ -165,7 +164,7 @@ local door_model_list = {
},
{ name = "wood_glass_white",
- description = S("Glass and Wood, White"),
+ description = N_("Glass and Wood, White (@1 opening)"),
mesh = "homedecor_door_wood_glass.obj",
tiles = {
"homedecor_door_wood_glass_white.png",
@@ -174,22 +173,22 @@ local door_model_list = {
},
{ name = "wood_plain",
- description = S("Plain Wooden Door"),
+ description = N_("Plain Wooden Door (@1 opening)"),
mesh = "homedecor_door_plain.obj"
},
{ name = "bedroom",
- description = S("White Bedroom Door"),
+ description = N_("White Bedroom Door (@1 opening)"),
mesh = "homedecor_door_plain.obj"
},
{ name = "wrought_iron",
- description = S("Wrought Iron Gate/Door"),
+ description = N_("Wrought Iron Gate/Door (@1 opening)"),
mesh = "homedecor_door_wrought_iron.obj"
},
{ name = "woodglass",
- description = S("Wooden door with glass insert"),
+ description = N_("Wooden door with glass insert (@1 opening)"),
mesh = "homedecor_door_woodglass_typea.obj",
tiles = {
"homedecor_door_woodglass_typea.png",
@@ -199,7 +198,7 @@ local door_model_list = {
},
{ name = "woodglass2",
- description = S("Wooden door with glass insert, type 2"),
+ description = N_("Wooden door with glass insert, type 2 (@1 opening)"),
mesh = "homedecor_door_plain.obj",
usealpha = true
},
@@ -210,10 +209,9 @@ local def_selbox = {
fixed = { -0.5, -0.5, 0.375, 0.5, 1.5, 0.5 }
}
-local sides = {"left", "right"}
+local sides = { N_("left"), N_("right") }
-for i in ipairs(sides) do
- local side = sides[i]
+for i, side in ipairs(sides) do
for _, door_model in ipairs(door_model_list) do
@@ -230,7 +228,7 @@ for i in ipairs(sides) do
end
minetest.register_node("homedecor:door_"..doorname.."_"..side, {
- description = door_model.description.." "..S("(%s-opening)"):format(side),
+ description = S(door_model.description, S(side)),
drawtype = "mesh",
mesh = mesh,
tiles = door_model.tiles or { "homedecor_door_"..doorname..".png" },
@@ -294,8 +292,12 @@ end
-- Gates
-local gates_list = { "picket", "picket_white", "barbed_wire", "chainlink" }
-local gate_names = { "Unpainted Picket", "White Picket", "Barbed Wire", "Chainlink" }
+local gate_list = {
+ { "picket", S("Unpainted Picket Fence Gate") },
+ { "picket_white", S("White Picket Fence Gate") },
+ { "barbed_wire", S("Barbed Wire Fence Gate") },
+ { "chainlink", S("Chainlink Fence Gate") },
+}
local gate_models_closed = {
{{ -0.5, -0.5, 0.498, 0.5, 0.5, 0.498 }},
@@ -303,13 +305,13 @@ local gate_models_closed = {
{{ -0.5, -0.5, 0.498, 0.5, 0.5, 0.498 }},
{{ -8/16, -8/16, 6/16, -6/16, 8/16, 8/16 }, -- left post
- { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post
+ { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post
{ -8/16, 7/16, 13/32, 8/16, 8/16, 15/32 }, -- top piece
{ -8/16, -8/16, 13/32, 8/16, -7/16, 15/32 }, -- bottom piece
{ -6/16, -8/16, 7/16, 6/16, 8/16, 7/16 }}, -- the wire
{{ -8/16, -8/16, 6/16, -7/16, 8/16, 8/16 }, -- left post
- { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post
+ { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post
{ -8/16, 7/16, 13/32, 8/16, 8/16, 15/32 }, -- top piece
{ -8/16, -8/16, 13/32, 8/16, -7/16, 15/32 }, -- bottom piece
{ -8/16, -8/16, 7/16, 8/16, 8/16, 7/16 }, -- the chainlink itself
@@ -322,22 +324,22 @@ local gate_models_open = {
{{ 0.498, -0.5, -0.5, 0.498, 0.5, 0.5 }},
{{ 6/16, -8/16, -8/16, 8/16, 8/16, -6/16 }, -- left post
- { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post
+ { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post
{ 13/32, 7/16, -8/16, 15/32, 8/16, 8/16 }, -- top piece
{ 13/32, -8/16, -8/16, 15/32, -7/16, 8/16 }, -- bottom piece
{ 7/16, -8/16, -6/16, 7/16, 8/16, 6/16 }}, -- the wire
{{ 6/16, -8/16, -8/16, 8/16, 8/16, -7/16 }, -- left post
- { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post
+ { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post
{ 13/32, 7/16, -8/16, 15/32, 8/16, 8/16 }, -- top piece
{ 13/32, -8/16, -8/16, 15/32, -7/16, 8/16 }, -- bottom piece
{ 7/16, -8/16, -8/16, 7/16, 8/16, 8/16 }, -- the chainlink itself
{ 6/16, -3/16, -8/16, 8/16, 3/16, -6/16 }} -- the lump representing the lock
}
-for i in ipairs(gates_list) do
+for i, g in ipairs(gate_list) do
- local gate=gates_list[i]
+ local gate, gatedesc = unpack(g)
local tiles = {
"homedecor_gate_"..gate.."_tb.png",
@@ -372,7 +374,7 @@ for i in ipairs(gates_list) do
local def = {
drawtype = "nodebox",
- description = S(gate_names[i].." Fence Gate"),
+ description = gatedesc,
tiles = tiles,
paramtype = "light",
groups = {snappy=3},
@@ -448,8 +450,8 @@ function homedecor.flip_door(pos, node, player, name, side, isClosed)
-- and if not isClosed, a closed door
isClosed = not isClosed
- local rside = nil
- local nfdir = nil
+ local rside
+ local nfdir
local ofdir = node.param2 or 0
if side == "left" then
rside = "right"
@@ -485,7 +487,7 @@ function homedecor.flip_gate(pos, node, player, gate, oc)
-- since right facing gates use "open" nodes for closed, we need an
-- isClosed flag to tell if it's "really" closed.
- local gateresult = nil
+ local gateresult
if oc == "closed" then
gateresult = "homedecor:gate_"..gate.."_open"
else
@@ -521,11 +523,11 @@ local jp_cbox = {
}
minetest.register_node("homedecor:japanese_wall_top", {
- description = "Japanese wall (top)",
+ description = S("Japanese wall (top)"),
drawtype = "mesh",
mesh = "homedecor_wall_japanese_top.obj",
tiles = {
- "homedecor_generic_wood_luxury.png",
+ homedecor.lux_wood,
"homedecor_japanese_paper.png"
},
paramtype = "light",
@@ -537,11 +539,11 @@ minetest.register_node("homedecor:japanese_wall_top", {
})
minetest.register_node("homedecor:japanese_wall_middle", {
- description = "Japanese wall",
+ description = S("Japanese wall"),
drawtype = "mesh",
mesh = "homedecor_wall_japanese_middle.obj",
tiles = {
- "homedecor_generic_wood_luxury.png",
+ homedecor.lux_wood,
"homedecor_japanese_paper.png"
},
paramtype = "light",
@@ -553,11 +555,11 @@ minetest.register_node("homedecor:japanese_wall_middle", {
})
minetest.register_node("homedecor:japanese_wall_bottom", {
- description = "Japanese wall (bottom)",
+ description = S("Japanese wall (bottom)"),
drawtype = "mesh",
mesh = "homedecor_wall_japanese_bottom.obj",
tiles = {
- "homedecor_generic_wood_luxury.png",
+ homedecor.lux_wood,
"homedecor_japanese_paper.png"
},
paramtype = "light",
@@ -577,7 +579,7 @@ minetest.register_node("homedecor:tatami_mat", {
"homedecor_tatami.png",
"homedecor_tatami.png"
},
- description = "Japanese tatami",
+ description = S("Japanese tatami"),
drawtype = "nodebox",
paramtype = "light",
groups = {snappy=3},
@@ -590,10 +592,10 @@ minetest.register_node("homedecor:tatami_mat", {
})
homedecor.register("door_japanese_closed", {
- description = "Japanese-style door",
+ description = S("Japanese-style door"),
inventory_image = "homedecor_door_japanese_inv.png",
tiles = {
- "homedecor_generic_wood_luxury.png",
+ homedecor.lux_wood,
"homedecor_japanese_paper.png"
},
mesh = "homedecor_door_japanese_closed.obj",
@@ -616,7 +618,7 @@ homedecor.register("door_japanese_closed", {
homedecor.register("door_japanese_open", {
tiles = {
- "homedecor_generic_wood_luxury.png",
+ homedecor.lux_wood,
"homedecor_japanese_paper.png"
},
mesh = "homedecor_door_japanese_open.obj",
diff --git a/homedecor/electronics.lua b/homedecor/electronics.lua
index 9a59a96..420da6d 100644
--- a/homedecor/electronics.lua
+++ b/homedecor/electronics.lua
@@ -1,6 +1,6 @@
-- Various home electronics
-local S = homedecor.gettext
+local S = homedecor_i18n.gettext
homedecor.register("speaker", {
description = S("Large Stereo Speaker"),
@@ -23,7 +23,7 @@ homedecor.register("speaker_open", {
"homedecor_speaker_sides.png",
"homedecor_speaker_driver.png",
"homedecor_speaker_open_front.png",
- "homedecor_generic_metal_black.png"
+ { name = "homedecor_generic_metal.png", color = homedecor.color_black }
},
groups = { snappy = 3, not_in_creative_inventory=1 },
sounds = default.node_sound_wood_defaults(),
@@ -135,7 +135,7 @@ homedecor.register("telephone", {
"homedecor_telephone_cord.png",
},
inventory_image = "homedecor_telephone_inv.png",
- description = "Telephone",
+ description = S("Telephone"),
groups = {snappy=3},
selection_box = tel_cbox,
walkable = false,
@@ -149,9 +149,9 @@ minetest.register_abm({
chance = 15,
action = function(pos, node)
minetest.sound_play("homedecor_telephone_ringing", {
- pos = pos,
- gain = 1.0,
- max_hear_distance = 5
- })
+ pos = pos,
+ gain = 1.0,
+ max_hear_distance = 5
+ })
end
})
diff --git a/homedecor/exterior.lua b/homedecor/exterior.lua
index c9434b2..074fa95 100644
--- a/homedecor/exterior.lua
+++ b/homedecor/exterior.lua
@@ -1,4 +1,7 @@
-local S = homedecor.gettext
+
+local S = homedecor_i18n.gettext
+
+local function N_(x) return x end
local bbq_cbox = {
type = "fixed",
@@ -6,11 +9,11 @@ local bbq_cbox = {
}
homedecor.register("barbecue", {
- description = "Barbecue",
+ description = S("Barbecue"),
mesh = "homedecor_barbecue.obj",
tiles = {
- "homedecor_generic_metal_black.png",
- { name="homedecor_embers.png",
+ { name = "homedecor_generic_metal.png" , color = homedecor.color_black },
+ { name = "homedecor_embers.png",
animation={
type="vertical_frames",
aspect_w=16,
@@ -50,7 +53,7 @@ homedecor.register("bench_large_1", {
"homedecor_generic_wood_old.png",
"homedecor_generic_metal_wrought_iron.png"
},
- description = "Garden Bench (style 1)",
+ description = S("Garden Bench (style 1)"),
inventory_image = "homedecor_bench_large_1_inv.png",
groups = { snappy = 3 },
expand = { right="placeholder" },
@@ -77,7 +80,7 @@ local bl2_cbox = {
}
homedecor.register("bench_large_2", {
- description = "Garden Bench (style 2)",
+ description = S("Garden Bench (style 2)"),
mesh = "homedecor_bench_large_2.obj",
tiles = { "homedecor_generic_wood_old.png" },
inventory_image = "homedecor_bench_large_2_inv.png",
@@ -100,7 +103,7 @@ local dc_cbox = {
homedecor.register("deckchair", {
mesh = "homedecor_deckchair.obj",
tiles = {"homedecor_deckchair.png"},
- description = "Deck Chair",
+ description = S("Deck Chair"),
groups = { snappy = 3 },
expand = { forward="placeholder" },
sounds = default.node_sound_wood_defaults(),
@@ -115,7 +118,7 @@ minetest.register_alias("homedecor:deckchair_head", "air")
homedecor.register("deckchair_striped_blue", {
mesh = "homedecor_deckchair.obj",
tiles = {"homedecor_deckchair_striped_blue.png"},
- description = "Deck Chair",
+ description = S("Deck Chair"),
groups = { snappy = 3 },
expand = { forward="placeholder" },
sounds = default.node_sound_wood_defaults(),
@@ -131,7 +134,7 @@ homedecor.register("doghouse", {
"default_wood.png",
"building_blocks_towel.png"
},
- description = "Doghouse",
+ description = S("Doghouse"),
inventory_image = "homedecor_doghouse_inv.png",
selection_box = homedecor.nodebox.slab_y(1.5),
collision_box = homedecor.nodebox.slab_y(1.5),
@@ -146,7 +149,7 @@ minetest.register_alias("homedecor:doghouse_base", "homedecor:doghouse")
homedecor.register("simple_bench", {
tiles = { "homedecor_generic_wood_old.png" },
- description = "Simple Bench",
+ description = S("Simple Bench"),
groups = {snappy=3},
node_box = {
type = "fixed",
@@ -160,7 +163,7 @@ homedecor.register("simple_bench", {
})
homedecor.register("stonepath", {
- description = "Garden stone path",
+ description = S("Garden stone path"),
tiles = {
"default_stone.png"
},
@@ -187,17 +190,20 @@ homedecor.register("stonepath", {
})
local lattice_colors = {
- {"wood", ".png^[colorize:#704214:180"},
- {"white_wood", ".png"},
- {"wood_vegetal", ".png^[colorize:#704214:180^homedecor_lattice_vegetal.png"},
- {"white_wood_vegetal", ".png^homedecor_lattice_vegetal.png"},
+ { "wood", S("wood"), ".png^[colorize:#704214:180" },
+ { "white_wood", S("white wood"), ".png" },
+ { "wood_vegetal", S("wood, with vegetation"),
+ ".png^[colorize:#704214:180^homedecor_lattice_vegetal.png" },
+ { "white_wood_vegetal", S("white wood, with vegetation"),
+ ".png^homedecor_lattice_vegetal.png" },
}
-for _, m in ipairs(lattice_colors) do
-homedecor.register("lattice_"..m[1], {
- description = "Garden Lattice ("..m[1]..")",
- tiles = {"homedecor_lattice"..m[2]},
- inventory_image = "homedecor_lattice"..m[2],
+for _, c in ipairs(lattice_colors) do
+local name, desc, texture = unpack(c)
+homedecor.register("lattice_"..name, {
+ description = S("Garden Lattice (@1)", desc),
+ tiles = {"homedecor_lattice"..texture},
+ inventory_image = "homedecor_lattice"..texture,
groups = { snappy=3 },
node_box = {
type = "fixed",
@@ -218,7 +224,7 @@ homedecor.register("lattice_"..m[1], {
end
homedecor.register("swing", {
- description = "Tree's swing",
+ description = S("Tree's swing"),
tiles = {
"homedecor_swing_top.png",
"homedecor_swing_top.png^[transformR180",
@@ -268,8 +274,6 @@ homedecor.register("swing", {
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
for j = 0, height do -- then fill that space with ropes...
local testpos = { x=pos.x, y=pos.y-j, z=pos.z }
- local testnode = minetest.get_node(testpos)
- local testreg = core.registered_nodes[testnode.name]
minetest.set_node(testpos, { name = "homedecor:swing_rope", param2 = fdir })
end
@@ -315,14 +319,14 @@ homedecor.register("well", {
mesh = "homedecor_well.obj",
tiles = {
"homedecor_rope_texture.png",
- "homedecor_generic_metal_black.png^[brighten",
+ { name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
"default_water.png",
"default_cobble.png",
"default_wood.png",
"homedecor_shingles_wood.png"
},
inventory_image = "homedecor_well_inv.png",
- description = "Water well",
+ description = S("Water well"),
groups = { snappy = 3 },
selection_box = homedecor.nodebox.slab_y(2),
collision_box = homedecor.nodebox.slab_y(2),
@@ -354,16 +358,16 @@ if minetest.get_modpath("bucket") then
end
homedecor.shrub_colors = {
- "green",
- "red",
- "yellow"
+ N_("green"),
+ N_("red"),
+ N_("yellow"),
}
local shrub_cbox = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
for _, color in ipairs(homedecor.shrub_colors) do
minetest.register_node("homedecor:shrubbery_large_"..color, {
- description = S("Shrubbery ("..color..")"),
+ description = S("Shrubbery (@1)", S(color)),
drawtype = "mesh",
mesh = "homedecor_cube.obj",
tiles = {"homedecor_shrubbery_"..color..".png"},
@@ -374,7 +378,7 @@ for _, color in ipairs(homedecor.shrub_colors) do
})
minetest.register_node("homedecor:shrubbery_"..color, {
- description = S("Shrubbery ("..color..")"),
+ description = S("Shrubbery (@1)", S(color)),
drawtype = "mesh",
mesh = "homedecor_shrubbery.obj",
tiles = {
diff --git a/homedecor/fences.lua b/homedecor/fences.lua
index 8352431..642b7c9 100644
--- a/homedecor/fences.lua
+++ b/homedecor/fences.lua
@@ -14,16 +14,24 @@ if signs_modpath then
sign_post_model = signs_lib.sign_post_model.nodebox
end
-local S = homedecor.gettext
-local materials = {"brass", "wrought_iron"}
+local S = homedecor_i18n.gettext
+
+local function N_(x) return x end
+
+local materials = {
+ { S("brass"), "brass" },
+ { S("wrought iron"), "wrought_iron" },
+}
for _, m in ipairs(materials) do
-homedecor.register("fence_"..m, {
- description = S("Fence/railing ("..m..")"),
+local desc, name = unpack(m)
+
+homedecor.register("fence_"..name, {
+ description = S("Fence/railing (@1)", desc),
drawtype = "fencelike",
- tiles = {"homedecor_generic_metal_"..m..".png"},
- inventory_image = "homedecor_fence_"..m..".png",
+ tiles = {"homedecor_generic_metal_"..name..".png"},
+ inventory_image = "homedecor_fence_"..name..".png",
selection_box = homedecor.nodebox.bar_y(1/7),
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
@@ -31,17 +39,17 @@ homedecor.register("fence_"..m, {
-- brass/wrought iron with signs:
-homedecor.register("fence_"..m.."_with_sign", {
- description = S("Fence/railing with sign ("..m..")"),
+homedecor.register("fence_"..name.."_with_sign", {
+ description = S("Fence/railing with sign (@1)", desc),
tiles = {
- "homedecor_sign_"..m.."_post_top.png",
- "homedecor_sign_"..m.."_post_bottom.png",
- "homedecor_sign_"..m.."_post_side.png",
- "homedecor_sign_"..m.."_post_side.png",
- "homedecor_sign_"..m.."_post_back.png",
- "homedecor_sign_"..m.."_post_front.png",
+ "homedecor_sign_"..name.."_post_top.png",
+ "homedecor_sign_"..name.."_post_bottom.png",
+ "homedecor_sign_"..name.."_post_side.png",
+ "homedecor_sign_"..name.."_post_side.png",
+ "homedecor_sign_"..name.."_post_back.png",
+ "homedecor_sign_"..name.."_post_front.png",
},
- wield_image = "homedecor_sign_"..m.."_post.png",
+ wield_image = "homedecor_sign_"..name.."_post.png",
node_box = sign_post_model,
groups = {snappy=3,not_in_creative_inventory=1},
sounds = default.node_sound_wood_defaults(),
@@ -50,7 +58,7 @@ homedecor.register("fence_"..m.."_with_sign", {
max_items = 2,
items = {
{ items = { "default:sign_wall" }},
- { items = { "homedecor:fence_"..m }},
+ { items = { "homedecor:fence_"..name }},
},
},
})
@@ -301,4 +309,3 @@ if signs_modpath then
signs_lib.register_fence_with_sign("homedecor:fence_brass", "homedecor:fence_brass_with_sign")
signs_lib.register_fence_with_sign("homedecor:fence_wrought_iron", "homedecor:fence_wrought_iron_with_sign")
end
-
diff --git a/homedecor/foyer.lua b/homedecor/foyer.lua
index 6d9afa7..ad2d54a 100644
--- a/homedecor/foyer.lua
+++ b/homedecor/foyer.lua
@@ -1,4 +1,3 @@
-local S = homedecor.gettext
homedecor.register("coatrack_wallmount", {
tiles = { homedecor.plain_wood },
diff --git a/homedecor/furniture.lua b/homedecor/furniture.lua
index fd79351..8f60c5d 100644
--- a/homedecor/furniture.lua
+++ b/homedecor/furniture.lua
@@ -1,21 +1,18 @@
-local S = homedecor.gettext
+
+local S = homedecor_i18n.gettext
local table_colors = {
- { "", homedecor.plain_wood },
- { "_mahogany", homedecor.mahogany_wood },
- { "_white", homedecor.white_wood }
+ { "", S("Table"), homedecor.plain_wood },
+ { "_mahogany", S("Mahogany Table"), homedecor.mahogany_wood },
+ { "_white", S("White Table"), homedecor.white_wood }
}
-for i in ipairs(table_colors) do
- local desc = S("Table ("..i..")")
-
- if i == 1 then
- desc = S("Table")
- end
+for _, t in ipairs(table_colors) do
+ local suffix, desc, texture = unpack(t)
- homedecor.register("table"..table_colors[i][1], {
+ homedecor.register("table"..suffix, {
description = desc,
- tiles = { table_colors[i][2] },
+ tiles = { texture },
node_box = {
type = "fixed",
fixed = {
@@ -36,13 +33,13 @@ for i in ipairs(table_colors) do
end
local chaircolors = {
- { "", "plain" },
- { "black", "Black" },
- { "red", "Red" },
- { "pink", "Pink" },
- { "violet", "Violet" },
- { "blue", "Blue" },
- { "dark_green", "Dark Green" },
+ { "", S("plain") },
+ { "black", S("black") },
+ { "red", S("red") },
+ { "pink", S("pink") },
+ { "violet", S("violet") },
+ { "blue", S("blue") },
+ { "dark_green", S("dark green") },
}
local kc_cbox = {
@@ -52,69 +49,84 @@ local kc_cbox = {
local ac_cbox = {
type = "fixed",
- fixed = {
+ fixed = {
{-0.5, -0.5, -0.5, 0.5, 0, 0.5 },
{-0.5, -0.5, 0.4, 0.5, 0.5, 0.5 }
}
}
-for i in ipairs(chaircolors) do
-
- local color = "_"..chaircolors[i][1]
- local color2 = chaircolors[i][1]
- local name = S(chaircolors[i][2])
- local chairtiles = {
+homedecor.register("kitchen_chair_wood", {
+ description = S("Kitchen chair"),
+ mesh = "homedecor_kitchen_chair.obj",
+ tiles = {
homedecor.plain_wood,
- "wool"..color..".png",
- }
-
- if chaircolors[i][1] == "" then
- color = ""
- chairtiles = {
- homedecor.plain_wood,
- homedecor.plain_wood
- }
+ homedecor.plain_wood
+ },
+ inventory_image = "homedecor_chair_wood_inv.png",
+ paramtype2 = "wallmounted",
+ selection_box = kc_cbox,
+ collision_box = kc_cbox,
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ sounds = default.node_sound_wood_defaults(),
+ after_place_node = homedecor.fix_rotation_nsew,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ pos.y = pos.y+0 -- where do I put my ass ?
+ homedecor.sit(pos, node, clicker)
+ return itemstack
end
+})
- homedecor.register("chair"..color, {
- description = S("Kitchen chair (%s)"):format(name),
- mesh = "homedecor_kitchen_chair.obj",
- tiles = chairtiles,
- selection_box = kc_cbox,
- collision_box = kc_cbox,
- groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
- sounds = default.node_sound_wood_defaults(),
- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+homedecor.register("kitchen_chair_padded", {
+ description = S("Kitchen chair"),
+ mesh = "homedecor_kitchen_chair.obj",
+ tiles = {
+ homedecor.plain_wood,
+ "wool_white.png",
+ },
+ inventory_image = "homedecor_chair_padded_inv.png",
+ paramtype2 = "colorwallmounted",
+ palette = "unifieddyes_palette_colorwallmounted.png",
+ selection_box = kc_cbox,
+ collision_box = kc_cbox,
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ sounds = default.node_sound_wood_defaults(),
+ after_place_node = homedecor.fix_rotation_nsew,
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local itemname = itemstack:get_name()
+ if string.find(itemname, "dye:") or string.find(itemname, "unifieddyes:") then
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "homedecor:kitchen_chair_padded", "wallmounted")
+ else
pos.y = pos.y+0 -- where do I put my ass ?
homedecor.sit(pos, node, clicker)
return itemstack
end
- })
+ end
+})
- if color ~= "" then
- homedecor.register("armchair"..color, {
- description = S("Armchair (%s)"):format(name),
- mesh = "forniture_armchair.obj",
- tiles = {
- "wool"..color..".png",
- "wool_dark_grey.png",
- "default_wood.png"
- },
- groups = {snappy=3},
- sounds = default.node_sound_wood_defaults(),
- node_box = ac_cbox
- })
-
- minetest.register_craft({
- output = "homedecor:armchair"..color.." 2",
- recipe = {
- { "wool:"..color2,""},
- { "group:wood","group:wood" },
- { "wool:"..color2,"wool:"..color2 },
- },
- })
+homedecor.register("armchair", {
+ description = S("Armchair"),
+ mesh = "forniture_armchair.obj",
+ tiles = {
+ "wool_white.png",
+ { name = "wool_dark_grey.png", color = 0xffffffff },
+ { name = "default_wood.png", color = 0xffffffff }
+ },
+ inventory_image = "homedecor_armchair_inv.png",
+ paramtype2 = "colorwallmounted",
+ palette = "unifieddyes_palette_colorwallmounted.png",
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ node_box = ac_cbox,
+ after_place_node = homedecor.fix_rotation_nsew,
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local itemname = itemstack:get_name()
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "homedecor:armchair", "wallmounted")
end
-end
+})
local ob_cbox = {
type = "fixed",
@@ -122,7 +134,7 @@ local ob_cbox = {
}
minetest.register_node(":homedecor:openframe_bookshelf", {
- description = "Bookshelf (open-frame)",
+ description = S("Bookshelf (open-frame)"),
drawtype = "mesh",
mesh = "homedecor_openframe_bookshelf.obj",
tiles = {
@@ -138,7 +150,7 @@ minetest.register_node(":homedecor:openframe_bookshelf", {
})
homedecor.register("wall_shelf", {
- description = "Wall Shelf",
+ description = S("Wall Shelf"),
tiles = {
"homedecor_wood_table_large_edges.png",
},
@@ -163,3 +175,72 @@ minetest.register_alias("homedecor:armchair", "homedecor:armchair_black")
minetest.register_alias('table', 'homedecor:table')
minetest.register_alias('chair', 'homedecor:chair')
minetest.register_alias('armchair', 'homedecor:armchair')
+
+-- conversion to param2 colorization
+
+homedecor.old_static_chairs = {}
+
+for _, color in ipairs(lrfurn.colors) do
+ table.insert(homedecor.old_static_chairs, "homedecor:chair_"..color)
+ table.insert(homedecor.old_static_chairs, "homedecor:armchair_"..color)
+end
+table.insert(homedecor.old_static_chairs, "homedecor:chair")
+
+minetest.register_lbm({
+ name = "homedecor:convert_chairs",
+ label = "Convert homedecor chairs to use param2 color",
+ run_at_every_load = true,
+ nodenames = homedecor.old_static_chairs,
+ action = function(pos, node)
+ local name = node.name
+ local paletteidx = 0
+ local color
+ local a,b = string.find(name, "_")
+
+ if a then
+ color = string.sub(name, a+1)
+
+ if color == "blue" then
+ color = "medium_blue"
+ elseif color == "violet" then
+ color = "medium_violet"
+ elseif color == "red" then
+ color = "medium_red"
+ elseif color == "black" then
+ color = "dark_grey"
+ end
+
+ paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
+ 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
+
+ local param2 = paletteidx + new_fdir
+ local newname = "homedecor:armchair"
+
+ print(name, dump(a), dump(b), dump(color).."("..dump(paletteidx)..")", dump(param2))
+
+ if node.name == "homedecor:chair" then
+ newname = "homedecor:kitchen_chair_wood"
+ elseif string.find(node.name, "homedecor:chair_") then
+ newname = "homedecor:kitchen_chair_padded"
+ end
+
+ minetest.set_node(pos, { name = newname, param2 = param2 })
+ local meta = minetest.get_meta(pos)
+ if color then
+ meta:set_string("dye", "unifieddyes:"..color)
+ end
+ end
+})
diff --git a/homedecor/furniture_medieval.lua b/homedecor/furniture_medieval.lua
index a029d5c..e0932a4 100644
--- a/homedecor/furniture_medieval.lua
+++ b/homedecor/furniture_medieval.lua
@@ -1,9 +1,9 @@
-local S = homedecor.gettext
+local S = homedecor_i18n.gettext
homedecor.register("bars", {
description = S("Bars"),
- tiles = { "homedecor_generic_metal_black.png^[transformR270" },
+ tiles = { { name = "homedecor_generic_metal.png^[transformR270", color = homedecor.color_black } },
node_box = {
type = "fixed",
fixed = {
@@ -25,7 +25,7 @@ homedecor.register("bars", {
--L Binding Bars
homedecor.register("L_binding_bars", {
description = S("Binding Bars"),
- tiles = { "homedecor_generic_metal_black.png^[transformR270" },
+ tiles = { { name = "homedecor_generic_metal.png^[transformR270", color = homedecor.color_black } },
node_box = {
type = "fixed",
fixed = {
@@ -50,7 +50,7 @@ local chain_cbox = {
homedecor.register("chains", {
description = S("Chains"),
mesh = "forniture_chains.obj",
- tiles = { "homedecor_generic_metal_black.png" },
+ tiles = { { name = "homedecor_generic_metal.png", color = homedecor.color_black } },
inventory_image="forniture_chains_inv.png",
selection_box = chain_cbox,
walkable = false,
@@ -71,8 +71,8 @@ homedecor.register("torch_wall", {
length=1.0,
},
},
- "homedecor_generic_metal_black.png",
- "homedecor_generic_metal_black.png^[brighten",
+ { name = "homedecor_generic_metal.png", color = homedecor.color_black },
+ { name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
"forniture_coal.png",
},
inventory_image="forniture_torch_inv.png",
@@ -93,8 +93,12 @@ local wl_cbox = {
homedecor.register("wall_lamp", {
description = S("Wall Lamp"),
mesh = "homedecor_wall_lamp.obj",
- tiles = {"homedecor_generic_metal_black.png^[brighten", "homedecor_generic_wood_luxury.png^[colorize:#000000:30",
- "homedecor_light.png", "homedecor_generic_metal_wrought_iron.png"},
+ tiles = {
+ { name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
+ homedecor.lux_wood,
+ "homedecor_light.png",
+ "homedecor_generic_metal_wrought_iron.png"
+ },
use_texture_alpha = true,
inventory_image = "homedecor_wall_lamp_inv.png",
groups = {snappy=3},
diff --git a/homedecor/furniture_recipes.lua b/homedecor/furniture_recipes.lua
index 208a31a..9ece79f 100644
--- a/homedecor/furniture_recipes.lua
+++ b/homedecor/furniture_recipes.lua
@@ -1,6 +1,6 @@
minetest.register_craft({
- output = "homedecor:table", "homedecor:chair 2",
+ output = "homedecor:table", "homedecor:kitchen_chair_wood 2",
recipe = {
{ "group:wood","group:wood", "group:wood" },
{ "group:stick", "", "group:stick" },
@@ -53,7 +53,7 @@ minetest.register_craft({
})
minetest.register_craft({
- output = "homedecor:chair 2",
+ output = "homedecor:kitchen_chair_wood 2",
recipe = {
{ "group:stick",""},
{ "group:wood","group:wood" },
@@ -62,40 +62,34 @@ minetest.register_craft({
})
minetest.register_craft({
- type = "fuel",
- recipe = "homedecor:chair",
- burntime = 15,
+ output = "homedecor:armchair 2",
+ recipe = {
+ { "wool:white",""},
+ { "group:wood","group:wood" },
+ { "wool:white","wool:white" },
+ },
})
-local chaircolors = { "black", "red", "pink", "violet", "blue", "dark_green" }
-
-for _, color in ipairs(chaircolors) do
-
- minetest.register_craft({
- type = "shapeless",
- output = "homedecor:chair_"..color,
- recipe = {
- "homedecor:chair",
- "wool:white",
- "dye:"..color
- },
- })
+minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:kitchen_chair_padded",
+ recipe = {
+ "homedecor:kitchen_chair_wood",
+ "wool:white",
+ },
+})
- minetest.register_craft({
- type = "shapeless",
- output = "homedecor:chair_"..color,
- recipe = {
- "homedecor:chair",
- "wool:"..color
- },
- })
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:kitchen_chair_wood",
+ burntime = 15,
+})
- minetest.register_craft({
- type = "fuel",
- recipe = "homedecor:chair_"..color,
- burntime = 15,
- })
-end
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:kitchen_chair_padded",
+ burntime = 15,
+})
minetest.register_craft({
type = "fuel",
@@ -104,99 +98,51 @@ minetest.register_craft({
})
minetest.register_craft({
- output = "homedecor:table_lamp_white_off",
+ output = "homedecor:standing_lamp_off",
recipe = {
- {"default:paper","default:torch" ,"default:paper"},
- {"","group:stick",""},
- {"","stairs:slab_wood",""},
+ {"homedecor:table_lamp_off"},
+ {"group:stick"},
+ {"group:stick"},
},
})
minetest.register_craft({
- output = "homedecor:table_lamp_white_off",
+ type = "fuel",
+ recipe = "homedecor:table_lamp_off",
+ burntime = 10,
+})
+
+minetest.register_craft({
+ output = "homedecor:table_lamp_off",
recipe = {
- {"default:paper","default:torch" ,"default:paper"},
- {"","group:stick",""},
- {"","moreblocks:slab_wood",""},
+ { "wool:white", "default:torch", "wool:white"},
+ { "", "group:stick", ""},
+ { "", "stairs:slab_wood", "" },
},
})
minetest.register_craft({
- output = "homedecor:standing_lamp_white_off",
+ output = "homedecor:table_lamp_off",
recipe = {
- {"homedecor:table_lamp_white_off"},
- {"group:stick"},
- {"group:stick"},
+ { "cottages:wool", "default:torch", "cottages:wool"},
+ { "", "group:stick", ""},
+ { "", "stairs:slab_wood", "" },
},
})
minetest.register_craft({
- type = "fuel",
- recipe = "homedecor:table_lamp_white_off",
- burntime = 10,
+ output = "homedecor:standing_lamp_off",
+ recipe = {
+ { "homedecor:table_lamp_off"},
+ { "group:stick"},
+ { "group:stick"},
+ },
})
-local lamp_colors = { "blue", "green", "pink", "red", "violet" }
-
-for _, color in ipairs(lamp_colors) do
-
- minetest.register_craft({
- output = "homedecor:table_lamp_"..color.."_off",
- recipe = {
- {"wool:"..color,"default:torch" ,"wool:"..color},
- {"","group:stick",""},
- {"","stairs:slab_wood",""},
- },
- })
-
- minetest.register_craft({
- output = "homedecor:table_lamp_"..color.."_off",
- recipe = {
- {"wool:"..color,"default:torch" ,"wool:"..color},
- {"","group:stick",""},
- {"","moreblocks:slab_wood",""},
- },
- })
-
- minetest.register_craft({
- type = "shapeless",
- output = "homedecor:table_lamp_"..color.."_off",
- recipe = {
- "dye:"..color,
- "homedecor:table_lamp_off",
- },
- })
-
- minetest.register_craft({
- type = "fuel",
- recipe = "homedecor:table_lamp_"..color.."_off",
- burntime = 10,
- })
-
- minetest.register_craft({
- output = "homedecor:standing_lamp_"..color.."_off",
- recipe = {
- {"homedecor:table_lamp_"..color.."_off"},
- {"group:stick"},
- {"group:stick"},
- },
- })
-
- minetest.register_craft({
- type = "shapeless",
- output = "homedecor:standing_lamp_"..color.."_off",
- recipe = {
- "homedecor:standing_lamp_off",
- "dye:"..color
- },
- })
-
-end
-
minetest.register_craft({
output = "homedecor:toilet",
recipe = {
- {"","","bucket:bucket_water"},
+ { "","","bucket:bucket_water"},
{ "group:marble","group:marble", "group:marble" },
{ "", "bucket:bucket_empty", "" },
},
diff --git a/homedecor/gastronomy.lua b/homedecor/gastronomy.lua
index d4bc611..052e526 100644
--- a/homedecor/gastronomy.lua
+++ b/homedecor/gastronomy.lua
@@ -1,4 +1,3 @@
-local S = homedecor.gettext
local cutlery_cbox = {
type = "fixed",
@@ -119,7 +118,7 @@ homedecor.register("beer_tap", {
mesh = "homedecor_beer_taps.obj",
tiles = {
"homedecor_generic_metal_bright.png",
- "homedecor_generic_metal_black.png",
+ { name = "homedecor_generic_metal.png", color = homedecor.color_black }
},
inventory_image = "homedecor_beertap_inv.png",
groups = { snappy=3 },
diff --git a/homedecor/handlers/expansion.lua b/homedecor/handlers/expansion.lua
index 0767837..705f313 100644
--- a/homedecor/handlers/expansion.lua
+++ b/homedecor/handlers/expansion.lua
@@ -1,4 +1,3 @@
-local S = homedecor.gettext
-- vectors to place one node next to or behind another
@@ -23,6 +22,35 @@ homedecor.fdir_to_fwd = {
{ -1, 0 },
}
+-- special case for wallmounted nodes
+
+homedecor.wall_fdir_to_right = {
+ nil,
+ nil,
+ { -1, 0 },
+ { 1, 0 },
+ { 0, -1 },
+ { 0, 1 },
+}
+
+homedecor.wall_fdir_to_left = {
+ nil,
+ nil,
+ { 1, 0 },
+ { -1, 0 },
+ { 0, 1 },
+ { 0, -1 },
+}
+
+homedecor.wall_fdir_to_fwd = {
+ nil,
+ nil,
+ { 0, -1 },
+ { 0, 1 },
+ { 1, 0 },
+ { -1, 0 },
+}
+
local placeholder_node = "homedecor:expansion_placeholder"
minetest.register_node(placeholder_node, {
description = "Expansion placeholder (you hacker you!)",
@@ -67,8 +95,8 @@ end
local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2)
local placer_name = placer:get_player_name() or ""
if is_buildable_to(placer_name, pos, pos2) then
- local fdir = fdir or minetest.dir_to_facedir(placer:get_look_dir())
- minetest.set_node(pos, { name = node1, param2 = fdir })
+ local lfdir = fdir or minetest.dir_to_facedir(placer:get_look_dir())
+ minetest.set_node(pos, { name = node1, param2 = lfdir })
node2 = node2 or "air" -- this can be used to clear buildable_to nodes even though we are using a multinode mesh
-- do not assume by default, as we still might want to allow overlapping in some cases
local has_facedir = node2 ~= "air"
@@ -76,7 +104,7 @@ local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2)
has_facedir = false
node2 = placeholder_node
end
- minetest.set_node(pos2, { name = node2, param2 = (has_facedir and fdir) or nil })
+ minetest.set_node(pos2, { name = node2, param2 = (has_facedir and lfdir) or nil })
-- call after_place_node of the placed node if available
local ctrl_node_def = minetest.registered_nodes[node1]
@@ -91,18 +119,18 @@ local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2)
return itemstack
end
-local function rightclick_pointed_thing(pos, placer, itemstack)
+local function rightclick_pointed_thing(pos, placer, itemstack, pointed_thing)
local node = minetest.get_node_or_nil(pos)
if not node then return false end
local def = minetest.registered_nodes[node.name]
if not def or not def.on_rightclick then return false end
- return def.on_rightclick(pos, node, placer, itemstack) or itemstack
+ return def.on_rightclick(pos, node, placer, itemstack, pointed_thing) or itemstack
end
-- Stack one node above another
-- leave the last argument nil if it's one 2m high node
function homedecor.stack_vertically(itemstack, placer, pointed_thing, node1, node2)
- local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack)
+ local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack, pointed_thing)
if rightclick_result then return rightclick_result end
local pos, def = select_node(pointed_thing)
@@ -117,7 +145,7 @@ end
-- like homedecor.stack_vertically but tests first if it was placed as a right wing, then uses node1_right and node2_right instead
function homedecor.stack_wing(itemstack, placer, pointed_thing, node1, node2, node1_right, node2_right)
- local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack)
+ local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack, pointed_thing)
if rightclick_result then return rightclick_result end
local pos, def = select_node(pointed_thing)
@@ -136,27 +164,27 @@ function homedecor.stack_wing(itemstack, placer, pointed_thing, node1, node2, no
end
function homedecor.stack_sideways(itemstack, placer, pointed_thing, node1, node2, dir)
- local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack)
+ local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack, pointed_thing)
if rightclick_result then return rightclick_result end
local pos, def = select_node(pointed_thing)
if not pos then return itemstack end
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
- local fdir_transform = dir and homedecor.fdir_to_right or homedecor.fdir_to_fwd
+ local fdir_transform = dir and homedecor.fdir_to_right or homedecor.dir_to_fwd
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)
end
-function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, color)
+function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, trybunks)
local thisnode = minetest.get_node(pos)
local fdir = thisnode.param2
- local fxd = homedecor.fdir_to_fwd[fdir+1][1]
- local fzd = homedecor.fdir_to_fwd[fdir+1][2]
+ local fxd = homedecor.wall_fdir_to_fwd[fdir+1][1]
+ local fzd = homedecor.wall_fdir_to_fwd[fdir+1][2]
local forwardpos = {x=pos.x+fxd, y=pos.y, z=pos.z+fzd}
local forwardnode = minetest.get_node(forwardpos)
@@ -170,65 +198,67 @@ function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, color)
return true
end
- if minetest.is_protected(forwardpos, placer_name) then
+ if minetest.is_protected(forwardpos, placer_name) then
minetest.chat_send_player( placer:get_player_name(), "Someone already owns the spot where the headboard goes." )
return true
end
minetest.set_node(forwardpos, {name = "air"})
- local lxd = homedecor.fdir_to_left[fdir+1][1]
- local lzd = homedecor.fdir_to_left[fdir+1][2]
+ local lxd = homedecor.wall_fdir_to_left[fdir+1][1]
+ local lzd = homedecor.wall_fdir_to_left[fdir+1][2]
local leftpos = {x=pos.x+lxd, y=pos.y, z=pos.z+lzd}
local leftnode = minetest.get_node(leftpos)
- local rxd = homedecor.fdir_to_right[fdir+1][1]
- local rzd = homedecor.fdir_to_right[fdir+1][2]
+ local rxd = homedecor.wall_fdir_to_right[fdir+1][1]
+ local rzd = homedecor.wall_fdir_to_right[fdir+1][2]
local rightpos = {x=pos.x+rxd, y=pos.y, z=pos.z+rzd}
local rightnode = minetest.get_node(rightpos)
- if leftnode.name == "homedecor:bed_"..color.."_regular" then
+ if leftnode.name == "homedecor:bed_regular" then
local newname = string.gsub(thisnode.name, "_regular", "_kingsize")
minetest.set_node(pos, {name = "air"})
minetest.set_node(leftpos, { name = newname, param2 = fdir})
- elseif rightnode.name == "homedecor:bed_"..color.."_regular" then
+ elseif rightnode.name == "homedecor:bed_regular" then
local newname = string.gsub(thisnode.name, "_regular", "_kingsize")
minetest.set_node(rightpos, {name = "air"})
minetest.set_node(pos, { name = newname, param2 = fdir})
end
-
- local topnode = 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})
- if string.find(topnode.name, "homedecor:bed_.*_regular$") then
- if fdir == topnode.param2 then
- local newname = string.gsub(thisnode.name, "_regular", "_extended")
- minetest.set_node(pos, { name = newname, param2 = fdir})
- end
- end
+ local toppos = {x=pos.x, y=pos.y+1.0, z=pos.z}
+ local botpos = {x=pos.x, y=pos.y-1.0, z=pos.z}
- if string.find(bottomnode.name, "homedecor:bed_.*_regular$") then
- if fdir == bottomnode.param2 then
- local newname = string.gsub(bottomnode.name, "_regular", "_extended")
- minetest.set_node({x=pos.x, y=pos.y-1.0, z=pos.z}, { name = newname, param2 = fdir})
- end
+ local topposfwd = {x=toppos.x+fxd, y=toppos.y, z=toppos.z+fzd}
+ local topnodefwd = minetest.get_node(topposfwd)
+
+ local topnode = minetest.get_node(toppos)
+ local bottomnode = minetest.get_node(botpos)
+
+ print(topnode.name, thisnode.name, bottomnode.name, itemstack:get_name(), dump(trybunks))
+
+ if trybunks and is_buildable_to(placer_name, toppos, topposfwd) then
+ print("want to stack beds, top seems to be clear")
+ local newname = string.gsub(thisnode.name, "_regular", "_extended")
+ minetest.set_node(toppos, { name = thisnode.name, param2 = fdir})
+ minetest.set_node(pos, { name = newname, param2 = fdir})
+ itemstack:take_item()
end
end
-function homedecor.unextend_bed(pos, color)
+function homedecor.unextend_bed(pos)
local bottomnode = minetest.get_node({x=pos.x, y=pos.y-1.0, z=pos.z})
local fdir = bottomnode.param2
- if string.find(bottomnode.name, "homedecor:bed_.*_extended$") then
+ if bottomnode.name == "homedecor:bed_extended" then
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})
end
end
function homedecor.place_banister(itemstack, placer, pointed_thing)
- local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack)
+ local rightclick_result = rightclick_pointed_thing(pointed_thing.under, placer, itemstack, pointed_thing)
if rightclick_result then return rightclick_result end
- local pos, def = select_node(pointed_thing)
+ local pos, _ = select_node(pointed_thing)
if not pos then return itemstack end
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
@@ -244,7 +274,7 @@ function homedecor.place_banister(itemstack, placer, pointed_thing)
return itemstack
end
- if minetest.is_protected(abovepos, placer_name) then
+ if minetest.is_protected(abovepos, placer_name) then
minetest.chat_send_player(placer_name, "Someone already owns that spot." )
return itemstack
end
@@ -269,21 +299,20 @@ function homedecor.place_banister(itemstack, placer, pointed_thing)
local right_fwd_below_pos = { x=pos.x+rxd+fxd, y=pos.y-1, z=pos.z+rzd+fzd }
local left_fwd_below_pos = { x=pos.x+lxd+fxd, y=pos.y-1, z=pos.z+lzd+fzd }
- local below_node = minetest.get_node(below_pos)
- local fwd_node = minetest.get_node(fwd_pos)
+ local below_node = minetest.get_node(below_pos)
+ --local fwd_node = minetest.get_node(fwd_pos)
local left_node = minetest.get_node(left_pos)
local right_node = minetest.get_node(right_pos)
local left_fwd_node = minetest.get_node(left_fwd_pos)
local right_fwd_node = minetest.get_node(right_fwd_pos)
local left_below_node = minetest.get_node({x=left_pos.x, y=left_pos.y-1, z=left_pos.z})
local right_below_node = minetest.get_node({x=right_pos.x, y=right_pos.y-1, z=right_pos.z})
- local right_fwd_above_node = minetest.get_node(right_fwd_above_pos)
- local left_fwd_above_node = minetest.get_node(left_fwd_above_pos)
+ --local right_fwd_above_node = minetest.get_node(right_fwd_above_pos)
+ --local left_fwd_above_node = minetest.get_node(left_fwd_above_pos)
local right_fwd_below_node = minetest.get_node(right_fwd_below_pos)
local left_fwd_below_node = minetest.get_node(left_fwd_below_pos)
local new_place_name = itemstack:get_name()
- local n = 0
-- try to place a diagonal one on the side of blocks stacked like stairs
-- or follow an existing diagonal with another.
@@ -326,7 +355,7 @@ function homedecor.place_banister(itemstack, placer, pointed_thing)
new_place_name = string.gsub(right_node.name, "_diagonal_.-$", "_horizontal")
-- try to place a horizontal in-line with the nearest diagonal, at the bottom
- elseif left_fwd_node and string.find(left_fwd_node.name, "homedecor:banister_.*_diagonal")
+ elseif left_fwd_node and string.find(left_fwd_node.name, "homedecor:banister_.*_diagonal")
and is_buildable_to(placer_name, fwd_pos, fwd_pos) then
fdir = left_fwd_node.param2
pos = fwd_pos
@@ -359,4 +388,3 @@ function homedecor.place_banister(itemstack, placer, pointed_thing)
itemstack:take_item()
return itemstack
end
-
diff --git a/homedecor/handlers/furnaces.lua b/homedecor/handlers/furnaces.lua
index d436b49..36a7939 100644
--- a/homedecor/handlers/furnaces.lua
+++ b/homedecor/handlers/furnaces.lua
@@ -1,6 +1,6 @@
-- This code supplies an oven/stove. Basically it's just a copy of the default furnace with different textures.
-local S = homedecor.gettext
+local S = homedecor_i18n.gettext
local function swap_node(pos, name)
local node = minetest.get_node(pos)
@@ -88,7 +88,7 @@ function homedecor.register_furnace(name, furnacedef)
furnacedef.cook_speed = furnacedef.cook_speed or 1
- local description = furnacedef.description or "Furnace"
+ local description = furnacedef.description or S("Furnace")
local furnace_construct = function(pos)
local meta = minetest.get_meta(pos)
@@ -106,7 +106,7 @@ function homedecor.register_furnace(name, furnacedef)
if listname == "fuel" then
if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then
if inv:is_empty("src") then
- meta:set_string("infotext", S("%s is empty"):format(description))
+ meta:set_string("infotext", S("@1 (empty)", description))
end
return stack:get_count()
else
@@ -125,7 +125,7 @@ function homedecor.register_furnace(name, furnacedef)
if to_list == "fuel" then
if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then
if inv:is_empty("src") then
- meta:set_string("infotext", S("%s is empty"):format(description))
+ meta:set_string("infotext", S("@1 (empty)", description))
end
return count
else
@@ -151,7 +151,7 @@ function homedecor.register_furnace(name, furnacedef)
}
local def_active = {
- description = description .. " (active)",
+ description = S("@1 (active)", description),
tiles = make_tiles(furnacedef.tiles_active, furnacedef.tile_format, true),
light_source = 8,
drop = "homedecor:" .. name,
@@ -171,28 +171,28 @@ function homedecor.register_furnace(name, furnacedef)
end
end
- local name_active = name.."_active"
+ local n_active = name.."_active"
homedecor.register(name, def)
- homedecor.register(name_active, def_active)
+ homedecor.register(n_active, def_active)
- local name, name_active = "homedecor:"..name, "homedecor:"..name_active
+ local nname, name_active = "homedecor:"..name, "homedecor:"..n_active
minetest.register_abm({
- nodenames = {name, name_active, name.."_locked", name_active.."_locked"},
+ nodenames = {nname, name_active, nname.."_locked", name_active.."_locked"},
label = "furnaces",
interval = 1.0,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local meta = minetest.get_meta(pos)
- for i, name in ipairs({
+ for i, pname in ipairs({
"fuel_totaltime",
"fuel_time",
"src_totaltime",
"src_time"
}) do
- if meta:get_string(name) == "" then
- meta:set_float(name, 0.0)
+ if meta:get_string(pname) == "" then
+ meta:set_float(pname, 0.0)
end
end
@@ -226,12 +226,12 @@ function homedecor.register_furnace(name, furnacedef)
-- XXX: Quick patch, make it better in the future.
local locked = node.name:find("_locked$") and "_locked" or ""
- local desc = minetest.registered_nodes[name..locked].description
+ local desc = minetest.registered_nodes[nname..locked].description
if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
local percent = math.floor(meta:get_float("fuel_time") /
meta:get_float("fuel_totaltime") * 100)
- meta:set_string("infotext",S("%s active: %d%%"):format(desc,percent))
+ meta:set_string("infotext", S("@1 (active: @2%)", desc, percent))
swap_node(pos,name_active..locked)
meta:set_string("formspec", make_formspec(furnacedef, percent))
return
@@ -239,9 +239,9 @@ function homedecor.register_furnace(name, furnacedef)
local fuel = nil
local afterfuel
- local cooked = nil
+ cooked = nil
local fuellist = inv:get_list("fuel")
- local srclist = inv:get_list("src")
+ srclist = inv:get_list("src")
if srclist then
cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
@@ -251,24 +251,24 @@ function homedecor.register_furnace(name, furnacedef)
end
if (not fuel) or (fuel.time <= 0) then
- meta:set_string("infotext",desc..S(": Out of fuel"))
- swap_node(pos, name..locked)
+ meta:set_string("infotext", S("@1 (out of fuel)", desc))
+ swap_node(pos, nname..locked)
meta:set_string("formspec", make_formspec(furnacedef, 0))
return
end
if cooked.item:is_empty() then
if was_active then
- meta:set_string("infotext",S("%s is empty"):format(desc))
- swap_node(pos, name..locked)
+ meta:set_string("infotext", S("@1 (empty)", desc))
+ swap_node(pos, nname..locked)
meta:set_string("formspec", make_formspec(furnacedef, 0))
end
return
end
if not inv:room_for_item("dst", cooked.item) then
- meta:set_string("infotext", desc..S(": output bins are full"))
- swap_node(pos, name..locked)
+ meta:set_string("infotext", S("@1 (output bins are full)", desc))
+ swap_node(pos, nname..locked)
meta:set_string("formspec", make_formspec(furnacedef, 0))
return
end
diff --git a/homedecor/handlers/inventory.lua b/homedecor/handlers/inventory.lua
index dc4b740..4db9892 100644
--- a/homedecor/handlers/inventory.lua
+++ b/homedecor/handlers/inventory.lua
@@ -1,4 +1,5 @@
-local S = homedecor.gettext
+
+local S = homedecor_i18n.gettext
local default_can_dig = function(pos,player)
local meta = minetest.get_meta(pos)
@@ -84,17 +85,17 @@ function homedecor.handle_inventory(name, def, original_def)
def.can_dig = def.can_dig or default_can_dig
def.on_metadata_inventory_move = def.on_metadata_inventory_move or function(pos, from_list, from_index, to_list, to_index, count, player)
- minetest.log("action", S("%s moves stuff in %s at %s"):format(
+ minetest.log("action", S("@1 moves stuff in @2 at @3",
player:get_player_name(), name, minetest.pos_to_string(pos)
))
end
def.on_metadata_inventory_put = def.on_metadata_inventory_put or function(pos, listname, index, stack, player)
- minetest.log("action", S("%s moves %s to %s at %s"):format(
+ minetest.log("action", S("@1 moves @2 to @3 at @4",
player:get_player_name(), stack:get_name(), name, minetest.pos_to_string(pos)
))
end
def.on_metadata_inventory_take = def.on_metadata_inventory_take or function(pos, listname, index, stack, player)
- minetest.log("action", S("%s takes %s from %s at %s"):format(
+ minetest.log("action", S("@1 takes @2 from @3 at @4",
player:get_player_name(), stack:get_name(), name, minetest.pos_to_string(pos)
))
end
@@ -107,7 +108,7 @@ function homedecor.handle_inventory(name, def, original_def)
local owner = placer:get_player_name() or ""
meta:set_string("owner", owner)
- meta:set_string("infotext", S("%s (owned by %s)"):format(def.infotext or def.description, owner))
+ meta:set_string("infotext", S("@1 (owned by @2)", def.infotext or def.description, owner))
return after_place_node and after_place_node(pos, placer)
end
@@ -117,15 +118,17 @@ function homedecor.handle_inventory(name, def, original_def)
local owner = meta:get_string("owner")
local playername = player:get_player_name()
- if (playername ~= owner) then
- minetest.log("action", string.format("%s tried to access a %s belonging to %s at %s",
- playername, name, owner, minetest.pos_to_string(pos)
- ))
- return 0
+ if playername == owner or
+ minetest.check_player_privs(player, "protection_bypass") then
+ return allow_move and
+ allow_move(pos, from_list, from_index, to_list, to_index, count, player) or
+ count
end
- return allow_move and allow_move(pos, from_list, from_index, to_list, to_index, count, player)
- or count
+ minetest.log("action", S("@1 tried to access a @2 belonging to @3 at @4",
+ playername, name, owner, minetest.pos_to_string(pos)
+ ))
+ return 0
end
local allow_put = def.allow_metadata_inventory_put
@@ -134,14 +137,16 @@ function homedecor.handle_inventory(name, def, original_def)
local owner = meta:get_string("owner")
local playername = player:get_player_name()
- if (playername ~= owner) then
- minetest.log("action", string.format("%s tried to access a %s belonging to %s at %s",
- playername, name, owner, minetest.pos_to_string(pos)
- ))
- return 0
+ if playername == owner or
+ minetest.check_player_privs(player, "protection_bypass") then
+ return allow_put and allow_put(pos, listname, index, stack, player) or
+ stack:get_count()
end
- return allow_put and allow_put(pos, listname, index, stack, player)
- or stack:get_count()
+
+ minetest.log("action", S("@1 tried to access a @2 belonging to @3 at @4",
+ playername, name, owner, minetest.pos_to_string(pos)
+ ))
+ return 0
end
local allow_take = def.allow_metadata_inventory_take
@@ -150,21 +155,23 @@ function homedecor.handle_inventory(name, def, original_def)
local owner = meta:get_string("owner")
local playername = player:get_player_name()
- if (playername ~= owner) then
- minetest.log("action", string.format("%s tried to access a %s belonging to %s at %s",
- playername, name, owner, minetest.pos_to_string(pos)
- ))
- return 0
+ if playername == owner or
+ minetest.check_player_privs(player, "protection_bypass") then
+ return allow_take and allow_take(pos, listname, index, stack, player) or
+ stack:get_count()
end
- return allow_take and allow_take(pos, listname, index, stack, player)
- or stack:get_count()
+
+ minetest.log("action", S("@1 tried to access a @2 belonging to @3 at @4",
+ playername, name, owner, minetest.pos_to_string(pos)
+ ))
+ return 0
end
end
local lockable = inventory.lockable
if lockable then
local locked_def = table.copy(original_def)
- locked_def.description = S("Locked %s"):format(def.description or name)
+ locked_def.description = S("@1 (Locked)", def.description or name)
local locked_inventory = locked_def.inventory
locked_inventory.locked = true
diff --git a/homedecor/handlers/nodeboxes.lua b/homedecor/handlers/nodeboxes.lua
index 0d8306e..c0a7df7 100644
--- a/homedecor/handlers/nodeboxes.lua
+++ b/homedecor/handlers/nodeboxes.lua
@@ -57,6 +57,3 @@ mt.__index = function(table, key)
error("unexpected datatype " .. tostring(type(ref)) .. " while looking for " .. key)
end
setmetatable(homedecor.nodebox, mt)
-
-
-
diff --git a/homedecor/handlers/registration.lua b/homedecor/handlers/registration.lua
index b25378f..8c20558 100644
--- a/homedecor/handlers/registration.lua
+++ b/homedecor/handlers/registration.lua
@@ -1,5 +1,5 @@
homedecor = homedecor or {}
-local S = homedecor.gettext
+
local placeholder_node = "homedecor:expansion_placeholder"
--wrapper around minetest.register_node that sets sane defaults and interprets some specialized settings
diff --git a/homedecor/handlers/sit.lua b/homedecor/handlers/sit.lua
index 636a585..fc49177 100644
--- a/homedecor/handlers/sit.lua
+++ b/homedecor/handlers/sit.lua
@@ -1,5 +1,6 @@
function homedecor.sit(pos, node, clicker)
- do return end -- delete it when the engine is stabler for the player's physics
+ return -- delete it when the engine is stabler for the player's physics
+--[[
local meta = minetest.get_meta(pos)
local param2 = node.param2
local name = clicker:get_player_name()
@@ -29,4 +30,5 @@ function homedecor.sit(pos, node, clicker)
clicker:set_look_yaw(4.75)
else return end
end
+--]]
end
diff --git a/homedecor/handlers/water_particles.lua b/homedecor/handlers/water_particles.lua
index a3334b0..c514e9a 100644
--- a/homedecor/handlers/water_particles.lua
+++ b/homedecor/handlers/water_particles.lua
@@ -25,8 +25,8 @@ function homedecor.start_particle_spawner(pos, node, particledef, soundname)
if id ~= 0 then
if s_handle then
- minetest.after(0, function(s_handle)
- minetest.sound_stop(s_handle)
+ minetest.after(0, function(handle)
+ minetest.sound_stop(handle)
end, s_handle)
end
minetest.delete_particlespawner(id)
@@ -104,12 +104,11 @@ function homedecor.stop_particle_spawner(pos)
end
if s_handle then
- minetest.after(0, function(s_handle)
- minetest.sound_stop(s_handle)
+ minetest.after(0, function(handle)
+ minetest.sound_stop(handle)
end, s_handle)
end
this_spawner_meta:set_int("active", nil)
this_spawner_meta:set_int("sound", nil)
end
-
diff --git a/homedecor/init.lua b/homedecor/init.lua
index b0e4482..f4c6ed6 100644
--- a/homedecor/init.lua
+++ b/homedecor/init.lua
@@ -9,12 +9,11 @@
local modpath = minetest.get_modpath("homedecor")
+local S = homedecor_i18n.gettext
+
homedecor = {
modpath = modpath,
- -- Boilerplate to support localized strings if intllib mod is installed.
- gettext = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end,
-
-- infinite stacks
expect_infinite_stacks = minetest.setting_getbool("creative_mode") and not minetest.get_modpath("unified_inventory")
}
@@ -32,9 +31,6 @@ function homedecor.find_ceiling(itemstack, placer, pointed_thing)
itemstack, pointed_thing)
return
end
- local pitch = placer:get_look_pitch()
- local fdir = core.dir_to_facedir(placer:get_look_dir())
- local wield_name = itemstack:get_name()
local above = pointed_thing.above
local under = pointed_thing.under
@@ -50,7 +46,6 @@ function homedecor.find_ceiling(itemstack, placer, pointed_thing)
if undef and undef.buildable_to then
pos = pointed_thing.under
node = unode
- iswall = false
end
if core.is_protected(pos, placer:get_player_name()) then
@@ -66,20 +61,46 @@ function homedecor.find_ceiling(itemstack, placer, pointed_thing)
return isceiling, pos
end
-screwdriver = screwdriver or {}
+-- call this function to reset the rotation of a "wallmounted" object on place
+
+function homedecor.fix_rotation(pos, placer, itemstack, pointed_thing)
+ local node = minetest.get_node(pos)
+ local yaw = placer:get_look_yaw()
+ local dir = minetest.yaw_to_dir(yaw-1.5)
+ local pitch = placer:get_look_vertical()
+
+ local fdir = minetest.dir_to_wallmounted(dir)
-homedecor.plain_wood = "homedecor_generic_wood_plain.png^"..
- "(homedecor_generic_wood_boards_overlay.png^[colorize:#a7682020:100)"
+ if pitch < -(math.pi/4) then
+ fdir = 0
+ elseif pitch > math.pi/4 then
+ fdir = 1
+ end
+ minetest.swap_node(pos, { name = node.name, param2 = fdir })
+end
-homedecor.mahogany_wood = "(homedecor_generic_wood_plain.png^[colorize:#401010:125)^"..
- "(homedecor_generic_wood_boards_overlay.png^[colorize:#66493880:200)"
+-- use this when you have a "wallmounted" node that should never be oriented
+-- to floor or ceiling (e.g. a desk lamp)
-homedecor.white_wood = "(homedecor_generic_wood_plain.png^[colorize:#e0f0ff:200)^"..
- "(homedecor_generic_wood_boards_overlay.png^[colorize:#ffffff:200)"
+function homedecor.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
+ local node = minetest.get_node(pos)
+ local yaw = placer:get_look_yaw()
+ local dir = minetest.yaw_to_dir(yaw)
+ local fdir = minetest.dir_to_wallmounted(dir)
+ minetest.swap_node(pos, { name = node.name, param2 = fdir })
+end
+
+screwdriver = screwdriver or {}
-homedecor.dark_wood = "(homedecor_generic_wood_plain.png^[colorize:#140900:200)^"..
- "(homedecor_generic_wood_boards_overlay.png^[colorize:#21110180:180)"
+homedecor.plain_wood = { name = "homedecor_generic_wood_plain.png", color = 0xffa76820 }
+homedecor.mahogany_wood = { name = "homedecor_generic_wood_plain.png", color = 0xff7d2506 }
+homedecor.white_wood = "homedecor_generic_wood_plain.png"
+homedecor.dark_wood = { name = "homedecor_generic_wood_plain.png", color = 0xff39240f }
+homedecor.lux_wood = { name = "homedecor_generic_wood_luxury.png", color = 0xff643f23 }
+homedecor.color_black = 0xff303030
+homedecor.color_dark_grey = 0xff606060
+homedecor.color_med_grey = 0xffa0a0a0
-- load different handler subsystems
dofile(modpath.."/handlers/init.lua")
@@ -131,4 +152,4 @@ dofile(modpath.."/wardrobe.lua")
dofile(modpath.."/crafts.lua")
-print("[HomeDecor] " .. homedecor.gettext("Loaded!"))
+print("[HomeDecor] " .. S("Loaded!"))
diff --git a/homedecor/intllib.lua b/homedecor/intllib.lua
new file mode 100644
index 0000000..6669d72
--- /dev/null
+++ b/homedecor/intllib.lua
@@ -0,0 +1,45 @@
+
+-- Fallback functions for when `intllib` is not installed.
+-- Code released under Unlicense <http://unlicense.org>.
+
+-- Get the latest version of this file at:
+-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
+
+local function format(str, ...)
+ local args = { ... }
+ local function repl(escape, open, num, close)
+ if escape == "" then
+ local replacement = tostring(args[tonumber(num)])
+ if open == "" then
+ replacement = replacement..close
+ end
+ return replacement
+ else
+ return "@"..open..num..close
+ end
+ end
+ return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
+end
+
+local gettext, ngettext
+if minetest.get_modpath("intllib") then
+ if intllib.make_gettext_pair then
+ -- New method using gettext.
+ gettext, ngettext = intllib.make_gettext_pair()
+ else
+ -- Old method using text files.
+ gettext = intllib.Getter()
+ end
+end
+
+-- Fill in missing functions.
+
+gettext = gettext or function(msgid, ...)
+ return format(msgid, ...)
+end
+
+ngettext = ngettext or function(msgid, msgid_plural, n, ...)
+ return format(n==1 and msgid or msgid_plural, ...)
+end
+
+return gettext, ngettext
diff --git a/homedecor/kitchen_appliances.lua b/homedecor/kitchen_appliances.lua
index 70d0703..1caa1ec 100644
--- a/homedecor/kitchen_appliances.lua
+++ b/homedecor/kitchen_appliances.lua
@@ -1,6 +1,8 @@
-- This file supplies refrigerators
-local S = homedecor.gettext
+local S = homedecor_i18n.gettext
+
+local function N_(x) return x end
-- steel-textured fridge
homedecor.register("refrigerator_steel", {
@@ -112,7 +114,7 @@ homedecor.register("coffee_maker", {
"homedecor_coffeemaker_cup.png",
"homedecor_coffeemaker_case.png",
},
- description = "Coffee Maker",
+ description = S("Coffee Maker"),
inventory_image = "homedecor_coffeemaker_inv.png",
walkable = false,
groups = {snappy=3},
@@ -159,7 +161,7 @@ minetest.register_abm({
})
homedecor.register("toaster", {
- description = "Toaster",
+ description = S("Toaster"),
tiles = { "homedecor_toaster_sides.png" },
inventory_image = "homedecor_toaster_inv.png",
walkable = false,
@@ -211,7 +213,7 @@ homedecor.register("toaster_loaf", {
homedecor.register("dishwasher", {
- description = "Dishwasher",
+ description = S("Dishwasher"),
drawtype = "nodebox",
tiles = {
"homedecor_dishwasher_top.png",
@@ -235,11 +237,11 @@ homedecor.register("dishwasher", {
groups = { snappy = 3 },
})
-local materials = {"granite", "marble", "steel", "wood"}
+local materials = { N_("granite"), N_("marble"), N_("steel"), N_("wood") }
for _, m in ipairs(materials) do
homedecor.register("dishwasher_"..m, {
- description = "Dishwasher ("..m..")",
+ description = S("Dishwasher (@1)", S(m)),
tiles = {
"homedecor_kitchen_cabinet_top_"..m..".png",
"homedecor_dishwasher_bottom.png",
diff --git a/homedecor/kitchen_furniture.lua b/homedecor/kitchen_furniture.lua
index cf240f8..d0712cf 100644
--- a/homedecor/kitchen_furniture.lua
+++ b/homedecor/kitchen_furniture.lua
@@ -1,18 +1,21 @@
-- This file supplies Kitchen cabinets and kitchen sink
-local S = homedecor.gettext
+local S = homedecor_i18n.gettext
-local counter_materials = { "", "granite", "marble", "steel" }
local cabinet_sides = "(default_wood.png^[transformR90)^homedecor_kitchen_cabinet_bevel.png"
local cabinet_bottom = "(default_wood.png^[colorize:#000000:100)^(homedecor_kitchen_cabinet_bevel.png^[colorize:#46321580)"
+local function N_(x) return x end
+
+local counter_materials = { "", N_("granite"), N_("marble"), N_("steel") }
+
for _, mat in ipairs(counter_materials) do
local desc = S("Kitchen Cabinet")
local material = ""
if mat ~= "" then
- desc = S("Kitchen Cabinet ("..mat.." top)")
+ desc = S("Kitchen Cabinet (@1 top)", S(mat))
material = "_"..mat
end
@@ -121,7 +124,8 @@ homedecor.register("kitchen_faucet", {
local below = minetest.get_node_or_nil({x=pos.x, y=pos.y-1, z=pos.z})
if below and
below.name == "homedecor:sink" or
- below.name == "homedecor:kitchen_cabinet_with_sink" then
+ below.name == "homedecor:kitchen_cabinet_with_sink" or
+ below.name == "homedecor:kitchen_cabinet_with_sink_locked" then
local particledef = {
outlet = { x = 0, y = -0.19, z = 0.13 },
velocity_x = { min = -0.05, max = 0.05 },
@@ -143,7 +147,7 @@ homedecor.register("paper_towel", {
"default_wood.png"
},
inventory_image = "homedecor_paper_towel_inv.png",
- description = "Paper towels",
+ description = S("Paper towels"),
groups = { snappy=3 },
walkable = false,
selection_box = {
diff --git a/homedecor/laundry.lua b/homedecor/laundry.lua
index e2ef721..5ee9ec6 100644
--- a/homedecor/laundry.lua
+++ b/homedecor/laundry.lua
@@ -52,7 +52,7 @@ homedecor.register("ironing_board", {
mesh = "homedecor_ironing_board.obj",
tiles = {
"wool_grey.png",
- "homedecor_generic_metal_black.png^[brighten"
+ { name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
},
expand = {right = "placeholder"},
groups = { snappy = 3 },
diff --git a/homedecor/lighting.lua b/homedecor/lighting.lua
index 6b8ff07..2101ce9 100644
--- a/homedecor/lighting.lua
+++ b/homedecor/lighting.lua
@@ -1,63 +1,12 @@
-- This file supplies glowlights
-local dirs1 = { 20, 23, 22, 21 }
local dirs2 = { 9, 18, 7, 12 }
-local S = homedecor.gettext
+local S = homedecor_i18n.gettext
-local colors = {"yellow","white"}
+local function N_(x) return x end
-for i in ipairs(colors) do
- local color = colors[i]
-
- minetest.register_abm({
- nodenames = { "homedecor:glowlight_thin_"..color },
- interval = 1,
- chance = 1,
- action = function(pos, node, active_object_count, active_object_count_wider)
- minetest.set_node(pos, {name = "homedecor:glowlight_quarter_"..color, param2 = 20})
- end,
- })
-
- minetest.register_abm({
- nodenames = { "homedecor:glowlight_thick_"..color },
- interval = 1,
- chance = 1,
- action = function(pos, node, active_object_count, active_object_count_wider)
- minetest.set_node(pos, {name = "homedecor:glowlight_half_"..color, param2 = 20})
- end,
- })
-
- minetest.register_abm({
- nodenames = { "homedecor:glowlight_thin_"..color.."_wall" },
- interval = 1,
- chance = 1,
- action = function(pos, node, active_object_count, active_object_count_wider)
- local fdir = node.param2 or 0
- local nfdir = dirs2[fdir+1]
- minetest.set_node(pos, {name = "homedecor:glowlight_quarter_"..color, param2 = nfdir})
- end,
- })
-
- minetest.register_abm({
- nodenames = { "homedecor:glowlight_thick_"..color.."_wall" },
- interval = 1,
- chance = 1,
- action = function(pos, node, active_object_count, active_object_count_wider)
- local fdir = node.param2 or 0
- local nfdir = dirs2[fdir+1]
- minetest.set_node(pos, {name = "homedecor:glowlight_half_"..color, param2 = nfdir})
- end,
- })
-
- minetest.register_abm({
- nodenames = { "homedecor:glowlight_small_cube_"..color.."_ceiling" },
- interval = 1,
- chance = 1,
- action = function(pos, node, active_object_count, active_object_count_wider)
- minetest.set_node(pos, {name = "homedecor:glowlight_small_cube_"..color, param2 = 20})
- end,
- })
+local colors = { N_("yellow"), N_("white") }
local glowlight_nodebox = {
half = homedecor.nodebox.slab_y(1/2),
@@ -68,66 +17,104 @@ local glowlight_nodebox = {
},
}
-homedecor.register("glowlight_half_"..color, {
- description = S("Thick Glowlight ("..color..")"),
+minetest.register_node("homedecor:glowlight_half", {
+ description = S("Thick Glowlight"),
tiles = {
- "homedecor_glowlight_"..color.."_top.png",
- "homedecor_glowlight_"..color.."_bottom.png",
- "homedecor_glowlight_thick_"..color.."_sides.png",
- "homedecor_glowlight_thick_"..color.."_sides.png",
- "homedecor_glowlight_thick_"..color.."_sides.png",
- "homedecor_glowlight_thick_"..color.."_sides.png"
+ "homedecor_glowlight_top.png",
+ "homedecor_glowlight_bottom.png",
+ "homedecor_glowlight_thick_sides.png",
+ "homedecor_glowlight_thick_sides.png",
+ "homedecor_glowlight_thick_sides.png",
+ "homedecor_glowlight_thick_sides.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "colorwallmounted",
+ palette = "unifieddyes_palette_colorwallmounted.png",
+ selection_box = {
+ type = "wallmounted",
+ wall_top = { -0.5, 0, -0.5, 0.5, 0.5, 0.5 },
+ wall_bottom = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 },
+ wall_side = { -0.5, -0.5, -0.5, 0, 0.5, 0.5 }
},
- selection_box = glowlight_nodebox.half,
node_box = glowlight_nodebox.half,
groups = { snappy = 3 },
light_source = default.LIGHT_MAX,
sounds = default.node_sound_glass_defaults(),
- on_place = minetest.rotate_node
+ after_place_node = homedecor.fix_rotation,
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "homedecor:glowlight_half", "wallmounted")
+ end,
})
-homedecor.register("glowlight_quarter_"..color, {
- description = S("Thin Glowlight ("..color..")"),
+minetest.register_node("homedecor:glowlight_quarter", {
+ description = S("Thin Glowlight"),
tiles = {
- "homedecor_glowlight_"..color.."_top.png",
- "homedecor_glowlight_"..color.."_bottom.png",
- "homedecor_glowlight_thin_"..color.."_sides.png",
- "homedecor_glowlight_thin_"..color.."_sides.png",
- "homedecor_glowlight_thin_"..color.."_sides.png",
- "homedecor_glowlight_thin_"..color.."_sides.png"
+ "homedecor_glowlight_top.png",
+ "homedecor_glowlight_bottom.png",
+ "homedecor_glowlight_thin_sides.png",
+ "homedecor_glowlight_thin_sides.png",
+ "homedecor_glowlight_thin_sides.png",
+ "homedecor_glowlight_thin_sides.png"
+ },
+ drawtype = "nodebox",
+ paramtype = "light",
+ paramtype2 = "colorwallmounted",
+ palette = "unifieddyes_palette_colorwallmounted.png",
+ selection_box = {
+ type = "wallmounted",
+ wall_top = { -0.5, 0.25, -0.5, 0.5, 0.5, 0.5 },
+ wall_bottom = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 },
+ wall_side = { -0.5, -0.5, -0.5, -0.25, 0.5, 0.5 }
},
- selection_box = glowlight_nodebox.quarter,
node_box = glowlight_nodebox.quarter,
groups = { snappy = 3 },
light_source = default.LIGHT_MAX-1,
sounds = default.node_sound_glass_defaults(),
- on_place = minetest.rotate_node
+ after_place_node = homedecor.fix_rotation,
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "homedecor:glowlight_quarter", "wallmounted")
+ end,
})
--- Glowlight "cubes"
-
-homedecor.register("glowlight_small_cube_"..color, {
- description = S("Small Glowlight Cube ("..color..")"),
+minetest.register_node("homedecor:glowlight_small_cube", {
+ description = S("Small Glowlight Cube"),
tiles = {
- "homedecor_glowlight_cube_"..color.."_tb.png",
- "homedecor_glowlight_cube_"..color.."_tb.png",
- "homedecor_glowlight_cube_"..color.."_sides.png",
- "homedecor_glowlight_cube_"..color.."_sides.png",
- "homedecor_glowlight_cube_"..color.."_sides.png",
- "homedecor_glowlight_cube_"..color.."_sides.png"
+ "homedecor_glowlight_cube_tb.png",
+ "homedecor_glowlight_cube_tb.png",
+ "homedecor_glowlight_cube_sides.png",
+ "homedecor_glowlight_cube_sides.png",
+ "homedecor_glowlight_cube_sides.png",
+ "homedecor_glowlight_cube_sides.png"
+ },
+ paramtype = "light",
+ paramtype2 = "colorwallmounted",
+ drawtype = "nodebox",
+ palette = "unifieddyes_palette_colorwallmounted.png",
+ selection_box = {
+ type = "wallmounted",
+ wall_top = { -0.25, 0, -0.25, 0.25, 0.5, 0.25 },
+ wall_bottom = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 },
+ wall_side = { -0.5, -0.25, -0.25, 0, 0.25, 0.25 }
},
- selection_box = glowlight_nodebox.small_cube,
node_box = glowlight_nodebox.small_cube,
groups = { snappy = 3 },
light_source = default.LIGHT_MAX-1,
sounds = default.node_sound_glass_defaults(),
- on_place = minetest.rotate_node
+ after_place_node = homedecor.fix_rotation,
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "homedecor:glowlight_small_cube", "wallmounted")
+ end,
})
-end
-
homedecor.register("plasma_lamp", {
- description = "Plasma Lamp",
+ description = S("Plasma Lamp"),
drawtype = "glasslike_framed",
tiles = {"default_gold_block.png","homedecor_glass_face_clean.png"},
special_tiles = {
@@ -147,10 +134,10 @@ homedecor.register("plasma_lamp", {
})
homedecor.register("plasma_ball", {
- description = "Plasma Ball",
+ description = S("Plasma Ball"),
mesh = "homedecor_plasma_ball.obj",
tiles = {
- "homedecor_generic_plastic_black.png",
+ "homedecor_generic_plastic.png",
{
name = "homedecor_plasma_ball_streamers.png",
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0},
@@ -158,7 +145,7 @@ homedecor.register("plasma_ball", {
"homedecor_plasma_ball_glass.png"
},
inventory_image = "homedecor_plasma_ball_inv.png",
- selection_box = {
+ selection_box = {
type = "fixed",
fixed = { -0.1875, -0.5, -0.1875, 0.1875, 0, 0.1875 }
},
@@ -280,10 +267,10 @@ homedecor.register("oil_lamp", {
mesh = "homedecor_oil_lamp.obj",
tiles = {
"homedecor_generic_metal_brass.png",
- "homedecor_generic_metal_black.png",
- "homedecor_generic_metal_black.png^[colorize:#ff0000:160",
+ { name = "homedecor_generic_metal.png", color = homedecor.color_black },
+ { name = "homedecor_generic_metal.png", color = 0xffa00000 },
"homedecor_oil_lamp_wick.png",
- "homedecor_generic_metal_black.png^[colorize:#ff0000:150",
+ { name = "homedecor_generic_metal.png", color = 0xffa00000 },
"homedecor_oil_lamp_glass.png",
},
use_texture_alpha = true,
@@ -357,7 +344,7 @@ homedecor.register("ceiling_lantern", {
use_texture_alpha = true,
inventory_image = "homedecor_ceiling_lantern_inv.png",
description = "Ceiling Lantern",
- groups = {snappy=3},
+ groups = {snappy=3},
light_source = 11,
selection_box = cl_cbox,
walkable = false
@@ -392,17 +379,31 @@ homedecor.register("lattice_lantern_small", {
on_place = minetest.rotate_node
})
-local repl = { off="low", low="med", med="hi", hi="max", max="off", }
+local brightness_tab = {
+ 0xffd0d0d0,
+ 0xffd8d8d8,
+ 0xffe0e0e0,
+ 0xffe8e8e8,
+ 0xffffffff,
+}
-local brights_tab = { 0, 50, 100, 150, 200 }
+-- table lamps and standing lamps
+
+local repl = {
+ ["off"] ="low",
+ ["low"] ="med",
+ ["med"] ="hi",
+ ["hi"] ="max",
+ ["max"] ="off",
+}
local lamp_colors = {
- {"white", "#ffffffe0:175"},
- {"blue", "#2626c6e0:200"},
- {"green", "#27a927e0:200"},
- {"pink", "#ff8fb7e0:200"},
- {"red", "#ad2323e0:200"},
- {"violet", "#7f29d7e0:200"}
+ "white",
+ "blue",
+ "green",
+ "pink",
+ "red",
+ "violet",
}
local tlamp_cbox = {
@@ -415,30 +416,23 @@ local slamp_cbox = {
fixed = { -0.25, -0.5, -0.25, 0.25, 1.5, 0.25 }
}
-local function reg_lamp(suffix, nxt, tilesuffix, light, color)
- local lampcolor = "_"..color[1]
- local colordesc = " ("..color[1]..")"
- local woolcolor = color[1]
- local invcolor = color[2]
- local wool_brighten = (light or 0) * 7
- local bulb_brighten = (light or 0) * 14
-
- if color == "" then
- lampcolor = ""
- colordesc = " (white)"
- woolcolor = "white"
- end
+local function reg_lamp(suffix, nxt, light, brightness)
+
+ local wool_brighten = (light or 0) * 15
- homedecor.register("table_lamp"..lampcolor.."_"..suffix, {
- description = S("Table Lamp "..colordesc),
+ homedecor.register("table_lamp_"..suffix, {
+ description = S("Table Lamp"),
mesh = "homedecor_table_lamp.obj",
tiles = {
- "wool_"..woolcolor..".png^[colorize:#ffffff:"..wool_brighten,
- "homedecor_table_standing_lamp_lightbulb.png^[colorize:#ffffff:"..bulb_brighten,
- "homedecor_generic_wood_red.png",
- "homedecor_generic_metal_black.png^[brighten",
+ "wool_grey.png^[colorize:#ffffff:"..wool_brighten,
+ { name = "homedecor_table_standing_lamp_lightbulb.png", color = brightness_tab[brightness] },
+ { name = "homedecor_generic_wood_red.png", color = 0xffffffff },
+ { name = "homedecor_generic_metal.png", color = homedecor.color_black },
},
- inventory_image = "homedecor_table_lamp_foot_inv.png^(homedecor_table_lamp_top_inv.png^[colorize:"..invcolor..")",
+ inventory_image = "homedecor_table_lamp_foot_inv.png^homedecor_table_lamp_top_inv.png",
+ paramtype = "light",
+ paramtype2 = "color",
+ palette = "unifieddyes_palette.png",
walkable = false,
light_source = light,
selection_box = tlamp_cbox,
@@ -446,25 +440,31 @@ local function reg_lamp(suffix, nxt, tilesuffix, light, color)
groups = {cracky=2,oddly_breakable_by_hand=1,
not_in_creative_inventory=((light ~= nil) and 1) or nil,
},
- drop = "homedecor:table_lamp"..lampcolor.."_off",
+ drop = "homedecor:table_lamp_off",
on_punch = function(pos, node, puncher)
- node.name = "homedecor:table_lamp"..lampcolor.."_"..repl[suffix]
+ node.name = "homedecor:table_lamp_"..repl[suffix]
minetest.set_node(pos, node)
end,
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "homedecor:table_lamp_"..suffix, false)
+ end,
})
- -- standing lamps
-
- homedecor.register("standing_lamp"..lampcolor.."_"..suffix, {
- description = S("Standing Lamp"..colordesc),
+ homedecor.register("standing_lamp_"..suffix, {
+ description = S("Standing Lamp"),
mesh = "homedecor_standing_lamp.obj",
tiles = {
- "wool_"..woolcolor..".png^[colorize:#ffffff:"..wool_brighten,
- "homedecor_table_standing_lamp_lightbulb.png^[colorize:#ffffff:"..bulb_brighten,
- "homedecor_generic_wood_red.png",
- "homedecor_generic_metal_black.png^[brighten",
+ "wool_grey.png^[colorize:#ffffff:"..wool_brighten,
+ { name = "homedecor_table_standing_lamp_lightbulb.png", color = brightness_tab[brightness] },
+ { name = "homedecor_generic_wood_red.png", color = 0xffffffff },
+ { name = "homedecor_generic_metal.png", color = homedecor.color_black },
},
- inventory_image = "homedecor_standing_lamp_foot_inv.png^(homedecor_standing_lamp_top_inv.png^[colorize:"..invcolor..")",
+ inventory_image = "homedecor_standing_lamp_foot_inv.png^homedecor_standing_lamp_top_inv.png",
+ paramtype = "light",
+ paramtype2 = "color",
+ palette = "unifieddyes_palette.png",
walkable = false,
light_source = light,
groups = {cracky=2,oddly_breakable_by_hand=1,
@@ -474,52 +474,60 @@ local function reg_lamp(suffix, nxt, tilesuffix, light, color)
sounds = default.node_sound_wood_defaults(),
on_rotate = screwdriver.rotate_simple,
on_punch = function(pos, node, puncher)
- node.name = "homedecor:standing_lamp"..lampcolor.."_"..repl[suffix]
+ node.name = "homedecor:standing_lamp_"..repl[suffix]
minetest.set_node(pos, node)
end,
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "homedecor:standing_lamp_"..suffix, false)
+ end,
expand = { top="placeholder" },
})
- minetest.register_alias("homedecor:standing_lamp_bottom"..lampcolor.."_"..suffix, "homedecor:standing_lamp"..lampcolor.."_"..suffix)
- minetest.register_alias("homedecor:standing_lamp_top"..lampcolor.."_"..suffix, "air")
-
-- for old maps that had the original 3dforniture mod
- if lampcolor == "" then
- minetest.register_alias("3dforniture:table_lamp_"..suffix, "homedecor:table_lamp_"..suffix)
- end
+ minetest.register_alias("3dforniture:table_lamp_"..suffix, "homedecor:table_lamp_"..suffix)
end
-for _, color in ipairs(lamp_colors) do
- reg_lamp("off", "low", "", nil, color )
- reg_lamp("low", "med", "l", 3, color )
- reg_lamp("med", "hi", "m", 7, color )
- reg_lamp("hi", "max", "h", 11, color )
- reg_lamp("max", "off", "x", 14, color )
-end
+reg_lamp("off", "low", nil, 1 )
+reg_lamp("low", "med", 3, 2 )
+reg_lamp("med", "hi", 7, 3 )
+reg_lamp("hi", "max", 11, 4 )
+reg_lamp("max", "off", 14, 5 )
+
+-- "gooseneck" style desk lamps
local dlamp_cbox = {
- type = "fixed",
- fixed = { -0.2, -0.5, -0.15, 0.32, 0.12, 0.15 },
+ type = "wallmounted",
+ wall_side = { -0.2, -0.5, -0.15, 0.32, 0.12, 0.15 },
}
-local dlamp_colors = { "red","blue","green","violet" }
+homedecor.register("desk_lamp", {
+ description = S("Desk Lamp"),
+ mesh = "homedecor_desk_lamp.obj",
+ tiles = {
+ "homedecor_generic_metal.png",
+ "homedecor_generic_metal.png",
+ { name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
+ { name = "homedecor_table_standing_lamp_lightbulb.png", color = brightness_tab[5] },
+ },
+ inventory_image = "homedecor_desk_lamp_inv.png",
+ paramtype = "light",
+ paramtype2 = "colorwallmounted",
+ palette = "unifieddyes_palette_colorwallmounted.png",
+ selection_box = dlamp_cbox,
+ node_box = dlamp_cbox,
+ walkable = false,
+ groups = {snappy=3},
+ after_place_node = homedecor.fix_rotation_nsew,
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "homedecor:desk_lamp", "wallmounted")
+ end,
+})
-for _, color in ipairs(dlamp_colors) do
- homedecor.register("desk_lamp_"..color, {
- description = S("Desk Lamp ("..color..")"),
- mesh = "homedecor_desk_lamp.obj",
- tiles = {
- "homedecor_table_standing_lamp_lightbulb.png^[colorize:#ffffff:200",
- "homedecor_generic_metal_black.png^[colorize:"..color..":150",
- "homedecor_generic_metal_black.png",
- "homedecor_generic_metal_black.png^[colorize:"..color..":150"
- },
- inventory_image = "homedecor_desk_lamp_stem_inv.png^(homedecor_desk_lamp_metal_inv.png^[colorize:"..color..":140)",
- selection_box = dlamp_cbox,
- walkable = false,
- groups = {snappy=3},
- })
-end
+-- "kitchen"/"dining room" ceiling lamp
homedecor.register("ceiling_lamp", {
description = S("Ceiling Lamp"),
@@ -527,8 +535,8 @@ homedecor.register("ceiling_lamp", {
tiles = {
"homedecor_generic_metal_brass.png",
"homedecor_ceiling_lamp_glass.png",
- "homedecor_table_standing_lamp_lightbulb.png^[colorize:#ffffff:200",
- "homedecor_generic_plastic_black.png^[colorize:#442d04:200",
+ "homedecor_table_standing_lamp_lightbulb.png",
+ { name = "homedecor_generic_plastic.png", color = 0xff442d04 },
},
inventory_image = "homedecor_ceiling_lamp_inv.png",
light_source = default.LIGHT_MAX,
@@ -545,8 +553,8 @@ homedecor.register("ceiling_lamp_off", {
tiles = {
"homedecor_generic_metal_brass.png",
"homedecor_ceiling_lamp_glass.png",
- "homedecor_table_standing_lamp_lightbulb.png",
- "homedecor_generic_plastic_black.png^[colorize:#442d04:200",
+ { "homedecor_table_standing_lamp_lightbulb.png", color = 0xffd0d0d0 },
+ { name = "homedecor_generic_plastic.png", color = 0xff442d04 },
},
groups = {snappy=3, not_in_creative_inventory=1},
walkable = false,
@@ -555,3 +563,162 @@ homedecor.register("ceiling_lamp_off", {
end,
drop = "homedecor:ceiling_lamp"
})
+
+-- conversion LBM for param2 coloring
+
+homedecor.old_static_nodes = {
+ "homedecor:glowlight_quarter_white",
+ "homedecor:glowlight_quarter_yellow",
+ "homedecor:glowlight_half_white",
+ "homedecor:glowlight_half_yellow",
+ "homedecor:glowlight_small_cube_white",
+ "homedecor:glowlight_small_cube_yellow"
+}
+
+local lamp_power = {"off", "low", "med", "hi", "max"}
+
+for _, power in ipairs(lamp_power) do
+ for _, color in ipairs(lamp_colors) do
+ table.insert(homedecor.old_static_nodes, "homedecor:table_lamp_"..color.."_"..power)
+ table.insert(homedecor.old_static_nodes, "homedecor:standing_lamp_"..color.."_"..power)
+ end
+end
+
+minetest.register_lbm({
+ name = "homedecor:convert_lighting",
+ label = "Convert homedecor glowlights, table lamps, and standing lamps to use param2 color",
+ run_at_every_load = true,
+ nodenames = homedecor.old_static_nodes,
+ action = function(pos, node)
+ local name = node.name
+ local newname
+ local color
+
+ if string.find(name, "small_cube") then
+ newname = "homedecor:glowlight_small_cube"
+ elseif string.find(name, "glowlight_half") then
+ newname = "homedecor:glowlight_half"
+ elseif string.find(name, "glowlight_quarter") then
+ newname = "homedecor:glowlight_quarter"
+ end
+
+ local lampname
+ if string.find(name, "standing_lamp") then
+ lampname = "homedecor:standing_lamp"
+ elseif string.find(name, "table_lamp") then
+ lampname = "homedecor:table_lamp"
+ end
+ if lampname then
+ newname = lampname
+ if string.find(name, "_off") then
+ newname = newname.."_off"
+ elseif string.find(name, "_low") then
+ newname = newname.."_low"
+ elseif string.find(name, "_med") then
+ newname = newname.."_med"
+ elseif string.find(name, "_hi") then
+ newname = newname.."_hi"
+ elseif string.find(name, "_max") then
+ newname = newname.."_max"
+ end
+ end
+
+ if string.find(name, "red") then
+ color = "red"
+ elseif string.find(name, "pink") then
+ color = "pink"
+ elseif string.find(name, "green") then
+ color = "green"
+ elseif string.find(name, "blue") then
+ color = "blue"
+ elseif string.find(name, "yellow") then
+ color = "yellow"
+ elseif string.find(name, "violet") then
+ color = "violet"
+ else
+ color = "white"
+ end
+
+ local paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..color, false)
+
+ local old_node = node.name
+ local old_fdir
+ local new_node = newname
+ local new_fdir
+ local param2
+
+ if string.find(name, "glowlight") then
+ paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
+
+ old_fdir = math.floor(node.param2 / 4)
+
+ if old_fdir == 5 then
+ new_fdir = 0
+ elseif old_fdir == 1 then
+ new_fdir = 5
+ elseif old_fdir == 2 then
+ new_fdir = 4
+ elseif old_fdir == 3 then
+ new_fdir = 3
+ elseif old_fdir == 4 then
+ new_fdir = 2
+ elseif old_fdir == 0 then
+ new_fdir = 1
+ end
+ param2 = paletteidx + new_fdir
+ else
+ param2 = paletteidx
+ end
+
+ minetest.set_node(pos, { name = new_node, param2 = param2 })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..color)
+ end
+})
+
+-- this one's for the small "gooseneck" desk lamps
+
+homedecor.old_static_desk_lamps = {
+ "homedecor:desk_lamp_red",
+ "homedecor:desk_lamp_blue",
+ "homedecor:desk_lamp_green",
+ "homedecor:desk_lamp_violet",
+}
+
+minetest.register_lbm({
+ name = "homedecor:convert_lighting",
+ label = "Convert homedecor glowlights, table lamps, and standing lamps to use param2 color",
+ run_at_every_load = true,
+ nodenames = homedecor.old_static_desk_lamps,
+ action = function(pos, node)
+ local name = node.name
+ local newname
+ local color = string.sub(name, string.find(name, "_", -8) + 1)
+
+ if color == "green" then
+ color = "medium_green"
+ elseif color == "violet" then
+ color = "magenta"
+ end
+
+ local paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
+ 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
+
+ local param2 = paletteidx + new_fdir
+
+ minetest.set_node(pos, { name = "homedecor:desk_lamp", param2 = param2 })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..color)
+ end
+})
diff --git a/homedecor/locale/de.po b/homedecor/locale/de.po
new file mode 100644
index 0000000..8185e22
--- /dev/null
+++ b/homedecor/locale/de.po
@@ -0,0 +1,1490 @@
+# German translations for PACKAGE package.
+# Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-01-25 00:03-0300\n"
+"PO-Revision-Date: 2017-01-25 00:03-0300\n"
+"Last-Translator: Xanthin <Xanthin@users.noreply.github.com>\n"
+"Language-Team: German\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../computer/miscitems.lua:13 ../homedecor/crafts.lua:32
+#, fuzzy
+msgid "Plastic sheet"
+msgstr "Kunststoffplatte"
+
+#: ../computer/miscitems.lua:18
+#, fuzzy
+msgid "Unprocessed Plastic base"
+msgstr "Unverarbeitetes Plastik"
+
+#: ../homedecor/bedroom.lua:7 ../homedecor/shutters.lua:13
+#: ../homedecor/misc-nodes.lua:69 ../homedecor/furniture.lua:36
+#, fuzzy
+msgid "black"
+msgstr "schwarz"
+
+#: ../homedecor/bedroom.lua:8 ../homedecor/books.lua:12
+msgid "brown"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:9 ../homedecor/window_treatments.lua:107
+#: ../homedecor/lighting.lua:400 ../homedecor/lighting.lua:498
+#: ../homedecor/books.lua:9 ../homedecor/furniture.lua:40
+#, fuzzy
+msgid "blue"
+msgstr "blau"
+
+#: ../homedecor/bedroom.lua:10
+msgid "cyan"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:11 ../homedecor/shutters.lua:14
+#, fuzzy
+msgid "dark grey"
+msgstr "dunkelgruen"
+
+#: ../homedecor/bedroom.lua:12 ../homedecor/furniture.lua:41
+#, fuzzy
+msgid "dark green"
+msgstr "dunkelgruen"
+
+#: ../homedecor/bedroom.lua:13 ../homedecor/window_treatments.lua:106
+#: ../homedecor/lighting.lua:401 ../homedecor/lighting.lua:498
+#: ../homedecor/exterior.lua:361 ../homedecor/misc-nodes.lua:69
+#: ../homedecor/books.lua:8
+#, fuzzy
+msgid "green"
+msgstr "gruen"
+
+#: ../homedecor/bedroom.lua:14 ../homedecor/shutters.lua:15
+#: ../homedecor/books.lua:11
+msgid "grey"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:15
+msgid "magenta"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:16
+msgid "orange"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:17 ../homedecor/window_treatments.lua:109
+#: ../homedecor/lighting.lua:402 ../homedecor/furniture.lua:38
+#, fuzzy
+msgid "pink"
+msgstr "rosa"
+
+#: ../homedecor/bedroom.lua:18 ../homedecor/window_treatments.lua:105
+#: ../homedecor/lighting.lua:403 ../homedecor/lighting.lua:498
+#: ../homedecor/shutters.lua:8 ../homedecor/exterior.lua:362
+#: ../homedecor/books.lua:7 ../homedecor/furniture.lua:37
+#, fuzzy
+msgid "red"
+msgstr "rot"
+
+#: ../homedecor/bedroom.lua:19 ../homedecor/window_treatments.lua:110
+#: ../homedecor/lighting.lua:404 ../homedecor/lighting.lua:498
+#: ../homedecor/shutters.lua:12 ../homedecor/books.lua:10
+#: ../homedecor/furniture.lua:39
+#, fuzzy
+msgid "violet"
+msgstr "violett"
+
+#: ../homedecor/bedroom.lua:20 ../homedecor/window_treatments.lua:108
+#: ../homedecor/lighting.lua:9 ../homedecor/lighting.lua:399
+#: ../homedecor/shutters.lua:16
+#, fuzzy
+msgid "white"
+msgstr "weiss"
+
+#: ../homedecor/bedroom.lua:21 ../homedecor/lighting.lua:9
+#: ../homedecor/shutters.lua:9 ../homedecor/exterior.lua:363
+msgid "yellow"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:70
+msgid "Bed (@1)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:131
+msgid "Bed (@1, king sized)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:159 ../homedecor/shutters.lua:7
+msgid "mahogany"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:159
+msgid "oak"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:161
+#, fuzzy
+msgid "Nightstand with One Drawer (@1)"
+msgstr "Eichenachttisch mit einer Schublade"
+
+#: ../homedecor/bedroom.lua:182
+#, fuzzy
+msgid "One-drawer Nightstand"
+msgstr "Nachttisch mit einer Schublade"
+
+#: ../homedecor/bedroom.lua:190
+#, fuzzy
+msgid "Nightstand with Two Drawers (@1)"
+msgstr "Eichenachttisch mit zwei Schubladen"
+
+#: ../homedecor/bedroom.lua:208
+#, fuzzy
+msgid "Two-drawer Nightstand"
+msgstr "Nachttisch mit zwei Schubladen"
+
+#: ../homedecor/kitchen_furniture.lua:10
+#: ../homedecor/kitchen_appliances.lua:240
+msgid "granite"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua:10
+#: ../homedecor/kitchen_appliances.lua:240
+msgid "marble"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua:10
+#: ../homedecor/kitchen_appliances.lua:240
+msgid "steel"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua:14 ../homedecor/kitchen_furniture.lua:32
+#: ../homedecor/kitchen_furniture.lua:55
+#, fuzzy
+msgid "Kitchen Cabinet"
+msgstr "Kuechenschrank"
+
+#: ../homedecor/kitchen_furniture.lua:18
+#, fuzzy
+msgid "Kitchen Cabinet (@1 top)"
+msgstr "Kuechenschrank"
+
+#: ../homedecor/kitchen_furniture.lua:42
+#, fuzzy
+msgid "Half-height Kitchen Cabinet (on ceiling)"
+msgstr "Halbhoher Kuechenschrank (haengend)"
+
+#: ../homedecor/kitchen_furniture.lua:63
+#, fuzzy
+msgid "Kitchen Cabinet with sink"
+msgstr "Unterschrank mit Spuele"
+
+#: ../homedecor/kitchen_furniture.lua:73
+#, fuzzy
+msgid "Under-sink cabinet"
+msgstr "Unterschrank"
+
+#: ../homedecor/kitchen_furniture.lua:150
+msgid "Paper towels"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua:5
+#, fuzzy
+msgid "Bars"
+msgstr "Gitterstaebe"
+
+#: ../homedecor/furniture_medieval.lua:27
+#, fuzzy
+msgid "Binding Bars"
+msgstr "Eckverbindung fuer Gitterstaebe"
+
+#: ../homedecor/furniture_medieval.lua:51
+#, fuzzy
+msgid "Chains"
+msgstr "Ketten"
+
+#: ../homedecor/furniture_medieval.lua:62
+#, fuzzy
+msgid "Wall Torch"
+msgstr "Wandfackel"
+
+#: ../homedecor/furniture_medieval.lua:94
+#, fuzzy
+msgid "Wall Lamp"
+msgstr "Tischlampe"
+
+#: ../homedecor/kitchen_appliances.lua:12
+#, fuzzy
+msgid "Refrigerator (stainless steel)"
+msgstr "Kuehlschrank"
+
+#: ../homedecor/kitchen_appliances.lua:18
+#: ../homedecor/kitchen_appliances.lua:31
+#: ../homedecor/kitchen_appliances.lua:37
+#, fuzzy
+msgid "Refrigerator"
+msgstr "Kuehlschrank"
+
+#: ../homedecor/kitchen_appliances.lua:60
+#, fuzzy
+msgid "Oven"
+msgstr "Herd"
+
+#: ../homedecor/kitchen_appliances.lua:68
+msgid "Oven (stainless steel)"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:76
+#, fuzzy
+msgid "Microwave Oven"
+msgstr "Mikrowelle"
+
+#: ../homedecor/kitchen_appliances.lua:117
+msgid "Coffee Maker"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:164
+msgid "Toaster"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:216
+msgid "Dishwasher"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:240 ../homedecor/roofing.lua:31
+#: ../homedecor/window_treatments.lua:167 ../homedecor/exterior.lua:193
+#: ../homedecor/misc-nodes.lua:440
+msgid "wood"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:244
+msgid "Dishwasher (@1)"
+msgstr ""
+
+#: ../homedecor/roofing.lua:7
+#, fuzzy
+msgid "Glass Skylight"
+msgstr "Glasdachfenster"
+
+#: ../homedecor/roofing.lua:19
+#, fuzzy
+msgid "Glass Skylight Frosted"
+msgstr "Milchglasdachfenster"
+
+#: ../homedecor/roofing.lua:31
+msgid "asphalt"
+msgstr ""
+
+#: ../homedecor/roofing.lua:31 ../homedecor/misc-nodes.lua:69
+#, fuzzy
+msgid "terracotta"
+msgstr "Terrakottaschindeln"
+
+#: ../homedecor/roofing.lua:33
+#, fuzzy
+msgid "Shingles (@1)"
+msgstr "Holzschindeln"
+
+#: ../homedecor/roofing.lua:87
+#, fuzzy
+msgid "@1 (outer corner)"
+msgstr "Holzschindeln (Aussenecke)"
+
+#: ../homedecor/roofing.lua:109
+#, fuzzy
+msgid "@1 (inner corner)"
+msgstr "Holzschindeln (Innenecke)"
+
+#: ../homedecor/roofing.lua:265 ../homedecor/roofing.lua:286
+#, fuzzy
+msgid "Wood Shingles"
+msgstr "Holzschindeln"
+
+#: ../homedecor/roofing.lua:271 ../homedecor/roofing.lua:293
+#, fuzzy
+msgid "Asphalt Shingles"
+msgstr "Asphaltschindeln"
+
+#: ../homedecor/roofing.lua:277 ../homedecor/roofing.lua:300
+#, fuzzy
+msgid "Terracotta Shingles"
+msgstr "Terrakottaschindeln"
+
+#: ../homedecor/roofing.lua:307
+#, fuzzy
+msgid "Glass Shingles"
+msgstr "Asphaltschindeln"
+
+#: ../homedecor/roofing.lua:312
+msgid "Chimney"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:7
+msgid "Window (quartered)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:38
+msgid "Window (plain)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:72
+#, fuzzy
+msgid "Window Blinds (thick)"
+msgstr "Weisse Gluehlampe (dick)"
+
+#: ../homedecor/window_treatments.lua:91
+#, fuzzy
+msgid "Window Blinds (thin)"
+msgstr "Weisse Gluehlampe (duenn)"
+
+#: ../homedecor/window_treatments.lua:117
+#: ../homedecor/window_treatments.lua:140
+#, fuzzy
+msgid "Curtains (@1)"
+msgstr "Vorhaenge (%s)"
+
+#: ../homedecor/window_treatments.lua:165 ../homedecor/fences.lua:22
+#: ../homedecor/misc-nodes.lua:458 ../homedecor/tables.lua:166
+msgid "brass"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:166 ../homedecor/fences.lua:23
+#: ../homedecor/misc-nodes.lua:467 ../homedecor/tables.lua:167
+#, fuzzy
+msgid "wrought iron"
+msgstr "Schmiedeeiserne Stange"
+
+#: ../homedecor/window_treatments.lua:175
+#, fuzzy
+msgid "Curtain Rod (@1)"
+msgstr "Vorhaenge (%s)"
+
+#: ../homedecor/window_treatments.lua:189
+msgid "Window flowerbox"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:209
+msgid "Stained Glass"
+msgstr ""
+
+#: ../homedecor/crafts.lua:10
+#, fuzzy
+msgid "Uncooked Terracotta Base"
+msgstr "Ungebrannte Terrakotta"
+
+#: ../homedecor/crafts.lua:15
+#, fuzzy
+msgid "Terracotta Roof Tile"
+msgstr "Terrakottadachziegel"
+
+#: ../homedecor/crafts.lua:20
+msgid "Oil extract"
+msgstr ""
+
+#: ../homedecor/crafts.lua:25
+#, fuzzy
+msgid "Unprocessed paraffin"
+msgstr "Unverarbeitetes Plastik"
+
+#: ../homedecor/crafts.lua:37
+#, fuzzy
+msgid "Plastic strips"
+msgstr "Kunststoffplatte"
+
+#: ../homedecor/crafts.lua:42
+#, fuzzy
+msgid "Small Wooden Drawer"
+msgstr "Kleiner Holzschubkasten"
+
+#: ../homedecor/crafts.lua:47
+#, fuzzy
+msgid "Simple Integrated Circuit"
+msgstr "Einfacher integrierter Schaltkreis"
+
+#: ../homedecor/crafts.lua:52
+msgid "Heating element"
+msgstr ""
+
+#: ../homedecor/crafts.lua:57
+msgid "Motor"
+msgstr ""
+
+#: ../homedecor/crafts.lua:62
+msgid "Power Crystal"
+msgstr ""
+
+#: ../homedecor/crafts.lua:67
+msgid "Blank Canvas"
+msgstr ""
+
+#: ../homedecor/crafts.lua:72
+msgid "VCR"
+msgstr ""
+
+#: ../homedecor/crafts.lua:77
+msgid "DVD Player"
+msgstr ""
+
+#: ../homedecor/crafts.lua:82
+msgid "Spool of copper wire"
+msgstr ""
+
+#: ../homedecor/crafts.lua:87
+msgid "Spool of steel wire"
+msgstr ""
+
+#: ../homedecor/crafts.lua:92
+msgid "Speaker driver"
+msgstr ""
+
+#: ../homedecor/crafts.lua:97
+msgid "Fan blades"
+msgstr ""
+
+#: ../homedecor/crafts.lua:102
+msgid "Copper Strip"
+msgstr ""
+
+#: ../homedecor/crafts.lua:107
+msgid "Steel Strip"
+msgstr ""
+
+#: ../homedecor/crafts.lua:112
+msgid "Steel chainlink"
+msgstr ""
+
+#: ../homedecor/crafts.lua:117
+#, fuzzy
+msgid "Brass chainlink"
+msgstr "Messingzaun/Gelaender"
+
+#: ../homedecor/crafts.lua:122
+msgid "Soda Can"
+msgstr ""
+
+#: ../homedecor/crafts.lua:128
+msgid "Gold Coin (for soda vending machine)"
+msgstr ""
+
+#: ../homedecor/crafts.lua:137
+#, fuzzy
+msgid "Silicon lump"
+msgstr "Silikonklumpen"
+
+#: ../homedecor/crafts.lua:154
+#, fuzzy
+msgid "Brass Ingot"
+msgstr "Messingbarren"
+
+#: ../homedecor/crafts.lua:3330
+#, fuzzy
+msgid "Small Flower Pot"
+msgstr "Schwarzer Plastikblumentopf"
+
+#: ../homedecor/electronics.lua:6
+#, fuzzy
+msgid "Large Stereo Speaker"
+msgstr "Grosser Lautsprecher"
+
+#: ../homedecor/electronics.lua:20
+#, fuzzy
+msgid "Large Stereo Speaker, open front"
+msgstr "Grosser Lautsprecher"
+
+#: ../homedecor/electronics.lua:41
+#, fuzzy
+msgid "Small Surround Speaker"
+msgstr "Kleiner Lautsprecher"
+
+#: ../homedecor/electronics.lua:54
+#, fuzzy
+msgid "Stereo Receiver"
+msgstr "Stereoanlage"
+
+#: ../homedecor/electronics.lua:66
+#, fuzzy
+msgid "Projection Screen Material"
+msgstr "Projektorleinwand"
+
+#: ../homedecor/electronics.lua:82
+#, fuzzy
+msgid "Small CRT Television"
+msgstr "Kleiner Roehrenfernseher"
+
+#: ../homedecor/electronics.lua:103
+msgid "DVD and VCR"
+msgstr ""
+
+#: ../homedecor/electronics.lua:138
+msgid "Telephone"
+msgstr ""
+
+#: ../homedecor/lighting.lua:73
+#, fuzzy
+msgid "Thick Glowlight (@1)"
+msgstr "Weisse Gluehlampe (duenn)"
+
+#: ../homedecor/lighting.lua:91
+#, fuzzy
+msgid "Thin Glowlight (@1)"
+msgstr "Weisse Gluehlampe (duenn)"
+
+#: ../homedecor/lighting.lua:111
+#, fuzzy
+msgid "Small Glowlight Cube (@1)"
+msgstr "Gelbe Gluehlampe (kleiner Wuerfel)"
+
+#: ../homedecor/lighting.lua:131
+msgid "Plasma Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua:151
+msgid "Plasma Ball"
+msgstr ""
+
+#: ../homedecor/lighting.lua:182
+msgid "Thick Candle"
+msgstr ""
+
+#: ../homedecor/lighting.lua:203
+msgid "Thin Candle"
+msgstr ""
+
+#: ../homedecor/lighting.lua:224
+msgid "Candlestick (wrought iron)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:239
+msgid "Candlestick (brass)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:254
+#, fuzzy
+msgid "Wall sconce"
+msgstr "Wandfackel"
+
+#: ../homedecor/lighting.lua:280
+msgid "Oil lamp (hurricane)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:300
+msgid "Oil Lamp (tabletop)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:319
+msgid "Ground Lantern"
+msgstr ""
+
+#: ../homedecor/lighting.lua:337
+msgid "Hanging Lantern"
+msgstr ""
+
+#: ../homedecor/lighting.lua:368
+msgid "Lattice lantern (large)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:376
+msgid "Lattice lantern (small)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:426
+#, fuzzy
+msgid "Table Lamp (@1)"
+msgstr "Tischlampe"
+
+#: ../homedecor/lighting.lua:452
+msgid "Standing Lamp (@1)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:502
+msgid "Desk Lamp (@1)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:518
+msgid "Ceiling Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua:536
+msgid "Ceiling Lamp (off)"
+msgstr ""
+
+#: ../homedecor/fences.lua:31
+#, fuzzy
+msgid "Fence/railing (@1)"
+msgstr "Messingzaun/Gelaender"
+
+#: ../homedecor/fences.lua:43
+#, fuzzy
+msgid "Fence/railing with sign (@1)"
+msgstr "Messingzaun/Gelaender mit Schild"
+
+#: ../homedecor/fences.lua:71
+#, fuzzy
+msgid "Unpainted Picket Fence"
+msgstr "Unlackierter Lattenenzaun"
+
+#: ../homedecor/fences.lua:87
+#, fuzzy
+msgid "Unpainted Picket Fence Corner"
+msgstr "Unlackierte Lattenenzaunecke"
+
+#: ../homedecor/fences.lua:103
+#, fuzzy
+msgid "White Picket Fence"
+msgstr "Weisser Lattenzaun"
+
+#: ../homedecor/fences.lua:119
+#, fuzzy
+msgid "White Picket Fence Corner"
+msgstr "Weisse Lattenzaunecke"
+
+#: ../homedecor/fences.lua:135
+#, fuzzy
+msgid "Wooden Privacy Fence"
+msgstr "Sichtschutzzaun aus Holz"
+
+#: ../homedecor/fences.lua:159
+#, fuzzy
+msgid "Wooden Privacy Fence Corner"
+msgstr "Sichtschutzzaunecke aus Holz"
+
+#: ../homedecor/fences.lua:194
+#, fuzzy
+msgid "Barbed Wire Fence"
+msgstr "Stacheldrahtzaun"
+
+#: ../homedecor/fences.lua:204
+#, fuzzy
+msgid "Barbed Wire Fence Corner"
+msgstr "Stacheldrahtzaunecke"
+
+#: ../homedecor/fences.lua:214
+#, fuzzy
+msgid "Chainlink Fence"
+msgstr "Maschendrahtzaun"
+
+#: ../homedecor/fences.lua:232
+#, fuzzy
+msgid "Chainlink Fence Corner"
+msgstr "Maschendrahtzaunecke"
+
+#: ../homedecor/fences.lua:249
+#, fuzzy
+msgid "Wrought Iron fence (type 2)"
+msgstr "Schmiedeeiserner Zaun/Gelaender"
+
+#: ../homedecor/fences.lua:276
+#, fuzzy
+msgid "Wrought Iron fence (type 2) Corner"
+msgstr "Schmiedeeiserner Zaun/Gelaender"
+
+#: ../homedecor/shutters.lua:6
+msgid "unpainted oak"
+msgstr ""
+
+#: ../homedecor/shutters.lua:10
+msgid "forest green"
+msgstr ""
+
+#: ../homedecor/shutters.lua:11
+#, fuzzy
+msgid "light blue"
+msgstr "rechts"
+
+#: ../homedecor/shutters.lua:35
+#, fuzzy
+msgid "Wooden Shutter (@1)"
+msgstr "Holzjalousie (rot)"
+
+#: ../homedecor/exterior.lua:12
+msgid "Barbecue"
+msgstr ""
+
+#: ../homedecor/exterior.lua:56
+msgid "Garden Bench (style 1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua:83
+msgid "Garden Bench (style 2)"
+msgstr ""
+
+#: ../homedecor/exterior.lua:106 ../homedecor/exterior.lua:121
+#, fuzzy
+msgid "Deck Chair"
+msgstr "Stuhl"
+
+#: ../homedecor/exterior.lua:137
+msgid "Doghouse"
+msgstr ""
+
+#: ../homedecor/exterior.lua:152
+msgid "Simple Bench"
+msgstr ""
+
+#: ../homedecor/exterior.lua:166
+msgid "Garden stone path"
+msgstr ""
+
+#: ../homedecor/exterior.lua:194
+#, fuzzy
+msgid "white wood"
+msgstr "weiss"
+
+#: ../homedecor/exterior.lua:195
+msgid "wood, with vegetation"
+msgstr ""
+
+#: ../homedecor/exterior.lua:197
+msgid "white wood, with vegetation"
+msgstr ""
+
+#: ../homedecor/exterior.lua:204
+msgid "Garden Lattice (@1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua:227
+msgid "Tree's swing"
+msgstr ""
+
+#: ../homedecor/exterior.lua:329
+msgid "Water well"
+msgstr ""
+
+#: ../homedecor/exterior.lua:370 ../homedecor/exterior.lua:381
+msgid "Shrubbery (@1)"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:17
+#, fuzzy
+msgid "Toilet"
+msgstr "Toilette"
+
+#: ../homedecor/bathroom_sanitation.lua:68
+#, fuzzy
+msgid "Toilet paper"
+msgstr "Toilette"
+
+#: ../homedecor/bathroom_sanitation.lua:89
+msgid "Bathroom Sink"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:137
+msgid "Bathroom taps/faucet"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:160
+msgid "Bathroom taps/faucet (brass)"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:185
+#, fuzzy
+msgid "Shower Tray"
+msgstr "Duschtasse"
+
+#: ../homedecor/bathroom_sanitation.lua:225
+#, fuzzy
+msgid "Shower Head"
+msgstr "Duschbrause"
+
+#: ../homedecor/bathroom_sanitation.lua:265
+msgid "Bathroom sundries set"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:6
+#, fuzzy
+msgid "Air Conditioner"
+msgstr "Klimaanlage"
+
+#: ../homedecor/climate-control.lua:44
+msgid "Desk Fan"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:83
+msgid "Ceiling Fan"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:107
+msgid "Space heater"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:139
+msgid "Radiator heater"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:124
+#, fuzzy
+msgid "Mahogany Closet Door (@1 opening)"
+msgstr "Wandschranktuer aus Mahagoni"
+
+#: ../homedecor/doors_and_gates.lua:129
+#, fuzzy
+msgid "Oak Closet Door (@1 opening)"
+msgstr "Wandschranktuer aus Eiche"
+
+#: ../homedecor/doors_and_gates.lua:134
+#, fuzzy
+msgid "Fancy Wood/Glass Door (@1 opening)"
+msgstr "Schicke Holz/Glastuer"
+
+#: ../homedecor/doors_and_gates.lua:144
+#, fuzzy
+msgid "Glass Office Door (@1 opening)"
+msgstr "Glasbuerotuer"
+
+#: ../homedecor/doors_and_gates.lua:149
+#, fuzzy
+msgid "Glass and Wood, Oak-colored (@1 opening)"
+msgstr "Glas-Holz-Tuer, eichefarben"
+
+#: ../homedecor/doors_and_gates.lua:158
+#, fuzzy
+msgid "Glass and Wood, Mahogany-colored (@1 opening)"
+msgstr "Glas-Holz-Tuer, mahagonifarben"
+
+#: ../homedecor/doors_and_gates.lua:167
+#, fuzzy
+msgid "Glass and Wood, White (@1 opening)"
+msgstr "Glas-Holz-Tuer, weiss"
+
+#: ../homedecor/doors_and_gates.lua:176
+#, fuzzy
+msgid "Plain Wooden Door (@1 opening)"
+msgstr "Einfache Holztuer"
+
+#: ../homedecor/doors_and_gates.lua:181
+msgid "White Bedroom Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:186
+#, fuzzy
+msgid "Wrought Iron Gate/Door (@1 opening)"
+msgstr "Schmiedeeiserner Zaun/Gelaender"
+
+#: ../homedecor/doors_and_gates.lua:191
+msgid "Wooden door with glass insert (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:201
+msgid "Wooden door with glass insert, type 2 (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:212
+#, fuzzy
+msgid "left"
+msgstr "links"
+
+#: ../homedecor/doors_and_gates.lua:212
+#, fuzzy
+msgid "right"
+msgstr "rechts"
+
+#: ../homedecor/doors_and_gates.lua:296
+#, fuzzy
+msgid "Unpainted Picket Fence Gate"
+msgstr "Unlackiertes Lattenzauntor"
+
+#: ../homedecor/doors_and_gates.lua:297
+#, fuzzy
+msgid "White Picket Fence Gate"
+msgstr "Weisses Lattenzauntor"
+
+#: ../homedecor/doors_and_gates.lua:298
+#, fuzzy
+msgid "Barbed Wire Fence Gate"
+msgstr "Stacheldrahtzauntor"
+
+#: ../homedecor/doors_and_gates.lua:299
+#, fuzzy
+msgid "Chainlink Fence Gate"
+msgstr "Maschendrahtzauntor"
+
+#: ../homedecor/doors_and_gates.lua:526
+msgid "Japanese wall (top)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:542
+msgid "Japanese wall"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:558
+msgid "Japanese wall (bottom)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:582
+msgid "Japanese tatami"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:595
+msgid "Japanese-style door"
+msgstr ""
+
+#: ../homedecor/init.lua:133
+#, fuzzy
+msgid "Loaded!"
+msgstr "Geladen!"
+
+#: ../homedecor/misc-nodes.lua:7
+#, fuzzy
+msgid "Textured Ceiling Paint"
+msgstr "Deckenfarbe (Raufaser)"
+
+#: ../homedecor/misc-nodes.lua:19
+#, fuzzy
+msgid "Drop-Ceiling Tile"
+msgstr "Deckenplatte"
+
+#: ../homedecor/misc-nodes.lua:31
+msgid "small"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:32
+msgid "large"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:33
+msgid "persian"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:57
+msgid "Rug (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:73
+msgid "Flower Pot (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:85
+msgid "Rose"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:86
+msgid "Tulip"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:87
+msgid "Yellow Dandelion"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:88
+msgid "White Dandelion"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:89
+msgid "Blue Geranium"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:90
+#, fuzzy
+msgid "Viola"
+msgstr "violett"
+
+#: ../homedecor/misc-nodes.lua:91
+msgid "Cactus"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:92
+msgid "Bonsai"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:99
+msgid "Potted flower (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:127
+#, fuzzy
+msgid "Brass Pole"
+msgstr "Messingstange"
+
+#: ../homedecor/misc-nodes.lua:145
+#, fuzzy
+msgid "Wrought Iron Pole"
+msgstr "Schmiedeeiserne Stange"
+
+#: ../homedecor/misc-nodes.lua:167
+msgid "Fishtank"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:189
+msgid "Fishtank (lighted)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:213
+msgid "Cardboard box (big)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:220 ../homedecor/misc-nodes.lua:227
+#: ../homedecor/misc-nodes.lua:240
+msgid "Cardboard box"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:247
+msgid "DVD/CD cabinet"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:273
+#, fuzzy
+msgid "Pool Table"
+msgstr "Tisch"
+
+#: ../homedecor/misc-nodes.lua:298
+msgid "Piano"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:316
+msgid "Trophy"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:334
+msgid "Sport bench"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:359
+msgid "Skateboard"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:368
+msgid "Metal tool cabinet and work table"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:399
+msgid "Picture Frame"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:424
+msgid "Decorative painting #@1"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:449
+msgid "dark topped"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:479
+msgid "diagonal"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:479
+msgid "horizontal"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:503
+msgid "Banister for Stairs (@1, @2)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:576
+msgid "not enough space"
+msgstr ""
+
+#: ../homedecor/tables.lua:7
+msgid "Small square glass table"
+msgstr ""
+
+#: ../homedecor/tables.lua:8
+#, fuzzy
+msgid "Small round glass table"
+msgstr "Kleiner Lautsprecher"
+
+#: ../homedecor/tables.lua:9
+msgid "Large glass table piece"
+msgstr ""
+
+#: ../homedecor/tables.lua:12
+#, fuzzy
+msgid "Small square wooden table"
+msgstr "Kleiner Holzschubkasten"
+
+#: ../homedecor/tables.lua:13
+#, fuzzy
+msgid "Small round wooden table"
+msgstr "Kleiner Lautsprecher"
+
+#: ../homedecor/tables.lua:14
+msgid "Large wooden table piece"
+msgstr ""
+
+#: ../homedecor/tables.lua:134
+#, fuzzy
+msgid "Utility Table"
+msgstr "Arbeitsplatte"
+
+#: ../homedecor/tables.lua:173
+#, fuzzy
+msgid "Table Legs (@1)"
+msgstr "Messingtischbeine"
+
+#: ../homedecor/tables.lua:189
+#, fuzzy
+msgid "Legs for Utility Table"
+msgstr "Tischbeine fuer Arbeitsplatte"
+
+#: ../homedecor/books.lua:45
+msgid "Writable Book (@1)"
+msgstr ""
+
+#: ../homedecor/books.lua:173
+msgid "@1 has written in a book (title: \"@2\"): \"@3\" at location @4"
+msgstr ""
+
+#: ../homedecor/furniture.lua:4
+#, fuzzy
+msgid "Table"
+msgstr "Tisch"
+
+#: ../homedecor/furniture.lua:5
+#, fuzzy
+msgid "Mahogany Table"
+msgstr "Wandschranktuer aus Mahagoni"
+
+#: ../homedecor/furniture.lua:6
+#, fuzzy
+msgid "White Table"
+msgstr "Arbeitsplatte"
+
+#: ../homedecor/furniture.lua:35
+msgid "plain"
+msgstr ""
+
+#: ../homedecor/furniture.lua:77
+#, fuzzy
+msgid "Kitchen chair (@1)"
+msgstr "Kuechenschrank"
+
+#: ../homedecor/furniture.lua:93
+#, fuzzy
+msgid "Armchair (@1)"
+msgstr "Sessel (%s)"
+
+#: ../homedecor/furniture.lua:122
+msgid "Bookshelf (open-frame)"
+msgstr ""
+
+#: ../homedecor/furniture.lua:138
+msgid "Wall Shelf"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua:87
+#, fuzzy
+msgid "@1 moves stuff in @2 at @3"
+msgstr "%s bewegt etwas im Nachttisch"
+
+#: ../homedecor/handlers/inventory.lua:92
+msgid "@1 moves @2 to @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua:97
+msgid "@1 takes @2 from @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua:110
+#, fuzzy
+msgid "@1 (owned by @2)"
+msgstr "%s (gehoert %s)"
+
+#: ../homedecor/handlers/inventory.lua:127
+#: ../homedecor/handlers/inventory.lua:145
+#: ../homedecor/handlers/inventory.lua:163
+#, fuzzy
+msgid "@1 tried to access a @2 belonging to @3 at @4"
+msgstr "%s versuchte Zugang zu %s von %s zu bekommen bei %s"
+
+#: ../homedecor/handlers/inventory.lua:173
+#, fuzzy
+msgid "@1 (Locked)"
+msgstr "%s (verschlossen)"
+
+#: ../homedecor/handlers/furnaces.lua:91
+msgid "Furnace"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua:109
+#: ../homedecor/handlers/furnaces.lua:128
+#: ../homedecor/handlers/furnaces.lua:262
+msgid "@1 (empty)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua:154
+msgid "@1 (active)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua:234
+#, fuzzy
+msgid "@1 (active: @2%)"
+msgstr "%s ist aktiv: %d%%"
+
+#: ../homedecor/handlers/furnaces.lua:254
+#, fuzzy
+msgid "@1 (out of fuel)"
+msgstr ": kein Brennmaterial vorhanden"
+
+#: ../homedecor/handlers/furnaces.lua:270
+#, fuzzy
+msgid "@1 (output bins are full)"
+msgstr ": Produktfelder sind voll"
+
+#: ../homedecor/office.lua:4 ../homedecor/office.lua:13
+#, fuzzy
+msgid "Filing cabinet"
+msgstr "Unterschrank"
+
+#: ../homedecor/bathroom_furniture.lua:5
+#, fuzzy
+msgid "white/grey"
+msgstr "weiss"
+
+#: ../homedecor/bathroom_furniture.lua:6
+msgid "white/dark grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:7
+msgid "white/black"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:8
+msgid "black/dark grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:9
+#, fuzzy
+msgid "white/red"
+msgstr "weiss"
+
+#: ../homedecor/bathroom_furniture.lua:10
+msgid "white/green"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:11
+#, fuzzy
+msgid "white/blue"
+msgstr "weiss"
+
+#: ../homedecor/bathroom_furniture.lua:12
+msgid "white/yellow"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:13
+#, fuzzy
+msgid "white/tan"
+msgstr "weiss"
+
+#: ../homedecor/bathroom_furniture.lua:27
+msgid "Bathroom/kitchen tiles (@1)"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:48
+msgid "Towel rod with towel"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:62
+#: ../homedecor/bathroom_furniture.lua:80
+#, fuzzy
+msgid "Medicine cabinet"
+msgstr "Unterschrank"
+
+#~ msgid "%s moves stuff in kitchen cabinet at %s "
+#~ msgstr "%s bewegt etwas im Kuechenschrank bei %s"
+
+#~ msgid "%s moves stuff to kitchen cabinet at %s "
+#~ msgstr "%s legt etwas in den Kuechenschrank bei %s"
+
+#~ msgid "%s takes stuff from kitchen cabinet at %s "
+#~ msgstr "%s nimmt etwas aus dem Kuechenschrank bei %s"
+
+#~ msgid "Not enough space above that spot to place a door! "
+#~ msgstr ""
+#~ "Es gibt nicht genug Raum ueber dieser Stelle um die Tuer zu platzieren!"
+
+#~ msgid "Bucket of white paint "
+#~ msgstr "Eimer mit weisser Farbe"
+
+#~ msgid "Legs for Small Utility table "
+#~ msgstr "Tischbeine fuer kleinen Arbeitsplatte"
+
+#~ msgid "Titanium Dioxide "
+#~ msgstr "Titandioxid"
+
+#~ msgid "Wrought Iron Fence/railing with sign "
+#~ msgstr "Schmiedeeiserner Zaun/Gelaender mit Schild"
+
+#~ msgid "want to simply place the wielded item like usual. "
+#~ msgstr "Moechte einfach den getragenen Gegenstand wie gewohnt platzieren."
+
+#~ msgid "Red "
+#~ msgstr "rot"
+
+#~ msgid "Pink "
+#~ msgstr "rosa"
+
+#~ msgid "Blue "
+#~ msgstr "blau"
+
+#~ msgid "Sink "
+#~ msgstr "Waschbecken"
+
+#~ msgid "Taps "
+#~ msgstr "Wasserhahn"
+
+#~ msgid "Asphalt Shingles (outer corner) "
+#~ msgstr "Asphaltschindeln (Aussenecke)"
+
+#~ msgid "Asphalt Shingles (inner corner) "
+#~ msgstr "Asphaltschindeln (Innenecke)"
+
+#~ msgid "Wrought Iron Table Legs "
+#~ msgstr "Schmiedeeiserne Tischbeine"
+
+#~ msgid "Glass Table (Small, Round) "
+#~ msgstr "Glastischplatte (klein, rund)"
+
+#~ msgid "Glass Table (Small, Square) "
+#~ msgstr "Glastischplatte (klein, quadratisch)"
+
+#~ msgid "Glass Table Piece (large) "
+#~ msgstr "Glastischplatte (gross)"
+
+#~ msgid "Green Plastic Flower Pot "
+#~ msgstr "Gruener Plastikblumentopf"
+
+#~ msgid "Large Area Rug "
+#~ msgstr "Grosser Teppich"
+
+#~ msgid "Small Throw Rug "
+#~ msgstr "Kleiner Teppich"
+
+#~ msgid "Terracotta Flower Pot "
+#~ msgstr "Terrakottablumentopf"
+
+#~ msgid "Terracotta Shingles (outer corner) "
+#~ msgstr "Terrakottaschindeln (Aussenecke)"
+
+#~ msgid "Terracotta Shingles (inner corner) "
+#~ msgstr "Terrakottaschindeln (Innenecke)"
+
+#~ msgid "Utility table mk2 "
+#~ msgstr "Arbeitsplatte Modell 2"
+
+#~ msgid "Wooden Shutter (Black) "
+#~ msgstr "Holzjalousie (schwarz)"
+
+#~ msgid "Wooden Shutter (Dark grey) "
+#~ msgstr "Holzjalousie (dunkelgrau)"
+
+#~ msgid "Wooden Shutter (Forest green) "
+#~ msgstr "Holzjalousie (waldgruen)"
+
+#~ msgid "Wooden Shutter (Grey) "
+#~ msgstr "Holzjalousie (grau)"
+
+#~ msgid "Wooden Shutter (Light blue) "
+#~ msgstr "Holzjalousie (hellblau)"
+
+#~ msgid "Wooden Shutter (Violet) "
+#~ msgstr "Holzjalousie (violett)"
+
+#~ msgid "Wooden Shutter (Mahogany) "
+#~ msgstr "Holzjalousie (mahagoni)"
+
+#~ msgid "Wooden Shutter (Unpainted oak) "
+#~ msgstr "Holzjalousie (eiche)"
+
+#~ msgid "Wooden Shutter (White) "
+#~ msgstr "Holzjalousie (weiss)"
+
+#~ msgid "Wooden Shutter (Yellow) "
+#~ msgstr "Holzjalousie (gelb)"
+
+#~ msgid "Wood Table Piece (large)"
+#~ msgstr "Holztischplatte (gross)"
+
+#~ msgid "Wood Table (Small, Round) "
+#~ msgstr "Holztischplatte (klein, rund)"
+
+#~ msgid "Wood Table (Small, Square) "
+#~ msgstr "Holztischplatte (klein, quadratisch)"
+
+#~ msgid "someone "
+#~ msgstr "jemand"
+
+#~ msgid "Sorry, %s owns that spot. "
+#~ msgstr "Tut mir leid, %s gehoert diese Stelle."
+
+#~ msgid "White Glowlight (small cube) "
+#~ msgstr "Weisse Gluehlampe (kleiner Wuerfel)"
+
+#~ msgid "White Glowlight (small cube, on ceiling) "
+#~ msgstr "Weisse Gluehlampe (kleiner Wuerfel, an der Decke)"
+
+#~ msgid "White Glowlight (thick, on wall) "
+#~ msgstr "Weisse Gluehlampe (dick, an der Wand)"
+
+#~ msgid "White Glowlight (thin, on wall) "
+#~ msgstr "Weisse Gluehlampe (duenn, an der Wand)"
+
+#~ msgid "Yellow Glowlight (small cube, on ceiling) "
+#~ msgstr "Gelbe Gluehlampe (kleiner Wuerfel, an der Decke)"
+
+#~ msgid "Yellow Glowlight (thick) "
+#~ msgstr "Gelbe Gluehlampe (dick)"
+
+#~ msgid "Yellow Glowlight (thick, on wall) "
+#~ msgstr "Gelbe Gluehlampe (dick, an der Wand)"
+
+#~ msgid "Yellow Glowlight (thin) "
+#~ msgstr "Gelbe Gluehlampe (duenn)"
+
+#~ msgid "Yellow Glowlight (thin, on wall) "
+#~ msgstr "Gelbe Gluehlampe (duenn, an der Wand)"
+
+#~ msgid "Locked Fridge "
+#~ msgstr "Verschlossener Kuehlschrank"
+
+#~ msgid "Locked Cabinet "
+#~ msgstr "Verschlossener Schrank"
+
+#~ msgid "Locked Nightstand "
+#~ msgstr "Verschlossener Nachttisch"
+
+#~ msgid "Locked Oven "
+#~ msgstr "Verschlossener Herd"
+
+#~ msgid "Locked Oven (active) "
+#~ msgstr "Verschlossener Herd (aktiv)"
+
+#~ msgid "Locked Microwave Oven "
+#~ msgstr "Verschlossene Mikrowelle"
+
+#~ msgid "Locked Microwave Oven (active) "
+#~ msgstr "Verschlossene Mikrowelle (aktiv)"
+
+#~ msgid "Mahogany Nightstand with One Drawer "
+#~ msgstr "Mahagoninachttisch mit einer Schublade"
+
+#~ msgid "Mahogany Nightstand with Two Drawers "
+#~ msgstr "Mahagoninachttisch mit zwei Schubladen"
+
+#~ msgid "%s moves stuff to nightstand at %s "
+#~ msgstr "%s legt etwas in den Nachttisch"
+
+#~ msgid "%s takes stuff from nightstand at %s "
+#~ msgstr "%s nimmt etwas aus dem Nachttisch"
+
+#~ msgid "%s is empty "
+#~ msgstr "%s ist leer"
+
+#~ msgid "%s moves stuff in refrigerator at %s "
+#~ msgstr "%s bewegt etwas im Kuehlschrank bei %s"
+
+#~ msgid "%s moves stuff to refrigerator at %s "
+#~ msgstr "%s legt etwas in den Kuehlschrank bei %s"
+
+#~ msgid "%s takes stuff from refrigerator at %s "
+#~ msgstr "%s nimmt etwas aus dem Kuehlschrank bei %s"
+
+#~ msgid "Not enough vertical space to place a refrigerator! "
+#~ msgstr ""
+#~ "Es gibt nicht genug Raum ueber dieser Stelle um den Kuehlschrank zu "
+#~ "platzieren!"
diff --git a/homedecor/locale/es.po b/homedecor/locale/es.po
new file mode 100644
index 0000000..8395815
--- /dev/null
+++ b/homedecor/locale/es.po
@@ -0,0 +1,1152 @@
+# Spanish translations for PACKAGE package.
+# Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-01-25 00:02-0300\n"
+"PO-Revision-Date: 2017-01-24 20:24-0300\n"
+"Last-Translator: Diego Martínez <kaeza@users.noreply.github.com>\n"
+"Language-Team: Spanish\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../computer/miscitems.lua:13 ../homedecor/crafts.lua:32
+msgid "Plastic sheet"
+msgstr "Placa de plástico"
+
+#: ../computer/miscitems.lua:18
+msgid "Unprocessed Plastic base"
+msgstr "Base de plástico sin procesar"
+
+#: ../homedecor/bedroom.lua:7 ../homedecor/shutters.lua:13
+#: ../homedecor/misc-nodes.lua:69 ../homedecor/furniture.lua:36
+msgid "black"
+msgstr "negra"
+
+#: ../homedecor/bedroom.lua:8 ../homedecor/books.lua:12
+msgid "brown"
+msgstr "marrón"
+
+#: ../homedecor/bedroom.lua:9 ../homedecor/window_treatments.lua:107
+#: ../homedecor/lighting.lua:400 ../homedecor/lighting.lua:498
+#: ../homedecor/books.lua:9 ../homedecor/furniture.lua:40
+msgid "blue"
+msgstr "azul"
+
+#: ../homedecor/bedroom.lua:10
+msgid "cyan"
+msgstr "cian"
+
+#: ../homedecor/bedroom.lua:11 ../homedecor/shutters.lua:14
+msgid "dark grey"
+msgstr "gris oscuro"
+
+#: ../homedecor/bedroom.lua:12 ../homedecor/furniture.lua:41
+msgid "dark green"
+msgstr "verde oscuro"
+
+#: ../homedecor/bedroom.lua:13 ../homedecor/window_treatments.lua:106
+#: ../homedecor/lighting.lua:401 ../homedecor/lighting.lua:498
+#: ../homedecor/exterior.lua:361 ../homedecor/misc-nodes.lua:69
+#: ../homedecor/books.lua:8
+msgid "green"
+msgstr "verde"
+
+#: ../homedecor/bedroom.lua:14 ../homedecor/shutters.lua:15
+#: ../homedecor/books.lua:11
+msgid "grey"
+msgstr "gris"
+
+#: ../homedecor/bedroom.lua:15
+msgid "magenta"
+msgstr "magenta"
+
+#: ../homedecor/bedroom.lua:16
+msgid "orange"
+msgstr "naranja"
+
+#: ../homedecor/bedroom.lua:17 ../homedecor/window_treatments.lua:109
+#: ../homedecor/lighting.lua:402 ../homedecor/furniture.lua:38
+msgid "pink"
+msgstr "rosa"
+
+#: ../homedecor/bedroom.lua:18 ../homedecor/window_treatments.lua:105
+#: ../homedecor/lighting.lua:403 ../homedecor/lighting.lua:498
+#: ../homedecor/shutters.lua:8 ../homedecor/exterior.lua:362
+#: ../homedecor/books.lua:7 ../homedecor/furniture.lua:37
+msgid "red"
+msgstr "roja"
+
+#: ../homedecor/bedroom.lua:19 ../homedecor/window_treatments.lua:110
+#: ../homedecor/lighting.lua:404 ../homedecor/lighting.lua:498
+#: ../homedecor/shutters.lua:12 ../homedecor/books.lua:10
+#: ../homedecor/furniture.lua:39
+msgid "violet"
+msgstr "violeta"
+
+#: ../homedecor/bedroom.lua:20 ../homedecor/window_treatments.lua:108
+#: ../homedecor/lighting.lua:9 ../homedecor/lighting.lua:399
+#: ../homedecor/shutters.lua:16
+msgid "white"
+msgstr "blanca"
+
+#: ../homedecor/bedroom.lua:21 ../homedecor/lighting.lua:9
+#: ../homedecor/shutters.lua:9 ../homedecor/exterior.lua:363
+msgid "yellow"
+msgstr "amarilla"
+
+#: ../homedecor/bedroom.lua:70
+msgid "Bed (@1)"
+msgstr "Cama (@1)"
+
+#: ../homedecor/bedroom.lua:131
+msgid "Bed (@1, king sized)"
+msgstr "Cama (@1, tamaño rey)"
+
+#: ../homedecor/bedroom.lua:159 ../homedecor/shutters.lua:7
+msgid "mahogany"
+msgstr "caoba"
+
+#: ../homedecor/bedroom.lua:159
+msgid "oak"
+msgstr "roble"
+
+#: ../homedecor/bedroom.lua:161
+msgid "Nightstand with One Drawer (@1)"
+msgstr "Mesa de luz con un cajón (@1)"
+
+#: ../homedecor/bedroom.lua:182
+msgid "One-drawer Nightstand"
+msgstr "Mesa de luz con un cajón"
+
+#: ../homedecor/bedroom.lua:190
+msgid "Nightstand with Two Drawers (@1)"
+msgstr "Mesa de luz con dos cajones (@1)"
+
+#: ../homedecor/bedroom.lua:208
+msgid "Two-drawer Nightstand"
+msgstr "Mesa de luz con dos cajones"
+
+#: ../homedecor/kitchen_furniture.lua:10
+#: ../homedecor/kitchen_appliances.lua:240
+msgid "granite"
+msgstr "granito"
+
+#: ../homedecor/kitchen_furniture.lua:10
+#: ../homedecor/kitchen_appliances.lua:240
+msgid "marble"
+msgstr "mármol"
+
+#: ../homedecor/kitchen_furniture.lua:10
+#: ../homedecor/kitchen_appliances.lua:240
+msgid "steel"
+msgstr "acero"
+
+#: ../homedecor/kitchen_furniture.lua:14 ../homedecor/kitchen_furniture.lua:32
+#: ../homedecor/kitchen_furniture.lua:55
+msgid "Kitchen Cabinet"
+msgstr "Gabinete de cocina"
+
+#: ../homedecor/kitchen_furniture.lua:18
+msgid "Kitchen Cabinet (@1 top)"
+msgstr "Gabinete de cocina (mesada de @1)"
+
+#: ../homedecor/kitchen_furniture.lua:42
+msgid "Half-height Kitchen Cabinet (on ceiling)"
+msgstr "Gabinete de cocina de media altura (en techo)"
+
+#: ../homedecor/kitchen_furniture.lua:63
+msgid "Kitchen Cabinet with sink"
+msgstr "Gabinete de cocina con lavabo"
+
+#: ../homedecor/kitchen_furniture.lua:73
+msgid "Under-sink cabinet"
+msgstr "Gabinete bajo lavabo"
+
+#: ../homedecor/kitchen_furniture.lua:150
+msgid "Paper towels"
+msgstr "Toallas de papel"
+
+#: ../homedecor/furniture_medieval.lua:5
+msgid "Bars"
+msgstr "Barrotes"
+
+#: ../homedecor/furniture_medieval.lua:27
+msgid "Binding Bars"
+msgstr "Barrotes de contención"
+
+#: ../homedecor/furniture_medieval.lua:51
+msgid "Chains"
+msgstr "Cadenas"
+
+#: ../homedecor/furniture_medieval.lua:62
+msgid "Wall Torch"
+msgstr "Antorcha de pared"
+
+#: ../homedecor/furniture_medieval.lua:94
+msgid "Wall Lamp"
+msgstr "Lámpara de pared"
+
+#: ../homedecor/kitchen_appliances.lua:12
+msgid "Refrigerator (stainless steel)"
+msgstr "Refrigerador (acero inoxidable)"
+
+#: ../homedecor/kitchen_appliances.lua:18
+#: ../homedecor/kitchen_appliances.lua:31
+#: ../homedecor/kitchen_appliances.lua:37
+msgid "Refrigerator"
+msgstr "Refrigerador"
+
+#: ../homedecor/kitchen_appliances.lua:60
+msgid "Oven"
+msgstr "Horno"
+
+#: ../homedecor/kitchen_appliances.lua:68
+msgid "Oven (stainless steel)"
+msgstr "Horno (acero inoxidable)"
+
+#: ../homedecor/kitchen_appliances.lua:76
+msgid "Microwave Oven"
+msgstr "Horno microondas"
+
+#: ../homedecor/kitchen_appliances.lua:117
+msgid "Coffee Maker"
+msgstr "Cafetera"
+
+#: ../homedecor/kitchen_appliances.lua:164
+msgid "Toaster"
+msgstr "Tostador"
+
+#: ../homedecor/kitchen_appliances.lua:216
+msgid "Dishwasher"
+msgstr "Lavavajillas"
+
+#: ../homedecor/kitchen_appliances.lua:240 ../homedecor/roofing.lua:31
+#: ../homedecor/window_treatments.lua:167 ../homedecor/exterior.lua:193
+#: ../homedecor/misc-nodes.lua:440
+msgid "wood"
+msgstr "madera"
+
+#: ../homedecor/kitchen_appliances.lua:244
+msgid "Dishwasher (@1)"
+msgstr "Lavavajillas (@1)"
+
+#: ../homedecor/roofing.lua:7
+msgid "Glass Skylight"
+msgstr "Claraboya de cristal"
+
+#: ../homedecor/roofing.lua:19
+msgid "Glass Skylight Frosted"
+msgstr "Claraboya de cristal esmerilado"
+
+#: ../homedecor/roofing.lua:31
+msgid "asphalt"
+msgstr "asfalto"
+
+#: ../homedecor/roofing.lua:31 ../homedecor/misc-nodes.lua:69
+msgid "terracotta"
+msgstr "terracota"
+
+#: ../homedecor/roofing.lua:33
+msgid "Shingles (@1)"
+msgstr "Tejas (@1)"
+
+#: ../homedecor/roofing.lua:87
+msgid "@1 (outer corner)"
+msgstr "@1 (esquina exterior)"
+
+#: ../homedecor/roofing.lua:109
+msgid "@1 (inner corner)"
+msgstr "@1 (esquina interior)"
+
+#: ../homedecor/roofing.lua:265 ../homedecor/roofing.lua:286
+msgid "Wood Shingles"
+msgstr "Tejado de madera"
+
+#: ../homedecor/roofing.lua:271 ../homedecor/roofing.lua:293
+msgid "Asphalt Shingles"
+msgstr "Tejado de asfalto"
+
+#: ../homedecor/roofing.lua:277 ../homedecor/roofing.lua:300
+msgid "Terracotta Shingles"
+msgstr "Tejado de terracota"
+
+#: ../homedecor/roofing.lua:307
+msgid "Glass Shingles"
+msgstr "Claraboya de cristal"
+
+#: ../homedecor/roofing.lua:312
+msgid "Chimney"
+msgstr "Chimenea"
+
+#: ../homedecor/window_treatments.lua:7
+msgid "Window (quartered)"
+msgstr "Ventana (cuarteada)"
+
+#: ../homedecor/window_treatments.lua:38
+msgid "Window (plain)"
+msgstr "Ventana (lisa)"
+
+#: ../homedecor/window_treatments.lua:72
+msgid "Window Blinds (thick)"
+msgstr "Persianas (gruesas)"
+
+#: ../homedecor/window_treatments.lua:91
+msgid "Window Blinds (thin)"
+msgstr "Persianas (finas)"
+
+#: ../homedecor/window_treatments.lua:117
+#: ../homedecor/window_treatments.lua:140
+msgid "Curtains (@1)"
+msgstr "Cortinas (@1)"
+
+#: ../homedecor/window_treatments.lua:165 ../homedecor/fences.lua:22
+#: ../homedecor/misc-nodes.lua:458 ../homedecor/tables.lua:166
+msgid "brass"
+msgstr "latón"
+
+#: ../homedecor/window_treatments.lua:166 ../homedecor/fences.lua:23
+#: ../homedecor/misc-nodes.lua:467 ../homedecor/tables.lua:167
+msgid "wrought iron"
+msgstr "hierro forjado"
+
+#: ../homedecor/window_treatments.lua:175
+msgid "Curtain Rod (@1)"
+msgstr "Palo de cortinas (@1)"
+
+#: ../homedecor/window_treatments.lua:189
+msgid "Window flowerbox"
+msgstr "Caja de flores de ventana"
+
+#: ../homedecor/window_treatments.lua:209
+msgid "Stained Glass"
+msgstr "Vídrio coloreado"
+
+#: ../homedecor/crafts.lua:10
+msgid "Uncooked Terracotta Base"
+msgstr "Base de terracota sin cocer"
+
+#: ../homedecor/crafts.lua:15
+msgid "Terracotta Roof Tile"
+msgstr "Tejado de terracota"
+
+#: ../homedecor/crafts.lua:20
+msgid "Oil extract"
+msgstr "Extracto de aceite"
+
+#: ../homedecor/crafts.lua:25
+msgid "Unprocessed paraffin"
+msgstr "Parafina sin procesar"
+
+#: ../homedecor/crafts.lua:37
+msgid "Plastic strips"
+msgstr "Tiras de plástico"
+
+#: ../homedecor/crafts.lua:42
+msgid "Small Wooden Drawer"
+msgstr "Cajón de madera pequeño"
+
+#: ../homedecor/crafts.lua:47
+msgid "Simple Integrated Circuit"
+msgstr "Circuito integrado simple"
+
+#: ../homedecor/crafts.lua:52
+msgid "Heating element"
+msgstr "Elemento de calefacción"
+
+#: ../homedecor/crafts.lua:57
+msgid "Motor"
+msgstr "Motor"
+
+#: ../homedecor/crafts.lua:62
+msgid "Power Crystal"
+msgstr "Cristal de poder"
+
+#: ../homedecor/crafts.lua:67
+msgid "Blank Canvas"
+msgstr "Lienzo en blanco"
+
+#: ../homedecor/crafts.lua:72
+msgid "VCR"
+msgstr "Grabadora de vídeo"
+
+#: ../homedecor/crafts.lua:77
+msgid "DVD Player"
+msgstr "Reproductor de DVD"
+
+#: ../homedecor/crafts.lua:82
+msgid "Spool of copper wire"
+msgstr "Bobina de alambre de cobre"
+
+#: ../homedecor/crafts.lua:87
+msgid "Spool of steel wire"
+msgstr "Bobina de alambre de acero"
+
+#: ../homedecor/crafts.lua:92
+msgid "Speaker driver"
+msgstr "Conductor de altavoz"
+
+#: ../homedecor/crafts.lua:97
+msgid "Fan blades"
+msgstr "Aspas de ventilador"
+
+#: ../homedecor/crafts.lua:102
+msgid "Copper Strip"
+msgstr "Tira de cobre"
+
+#: ../homedecor/crafts.lua:107
+msgid "Steel Strip"
+msgstr "Tira de acero"
+
+#: ../homedecor/crafts.lua:112
+msgid "Steel chainlink"
+msgstr "Cadenas de acero"
+
+#: ../homedecor/crafts.lua:117
+msgid "Brass chainlink"
+msgstr "Cadenas de latón"
+
+#: ../homedecor/crafts.lua:122
+msgid "Soda Can"
+msgstr "Lata de refresco"
+
+#: ../homedecor/crafts.lua:128
+msgid "Gold Coin (for soda vending machine)"
+msgstr "Moneda de oro (para la máquina expendedora)"
+
+#: ../homedecor/crafts.lua:137
+msgid "Silicon lump"
+msgstr "Bulto de silicio"
+
+#: ../homedecor/crafts.lua:154
+msgid "Brass Ingot"
+msgstr "Lingote de latón"
+
+#: ../homedecor/crafts.lua:3330
+msgid "Small Flower Pot"
+msgstr "Maceta pequeña"
+
+#: ../homedecor/electronics.lua:6
+msgid "Large Stereo Speaker"
+msgstr "Altavoz estéreo grande"
+
+#: ../homedecor/electronics.lua:20
+msgid "Large Stereo Speaker, open front"
+msgstr "Altavoz estéreo grande con frente abierto"
+
+#: ../homedecor/electronics.lua:41
+msgid "Small Surround Speaker"
+msgstr "Altavoz envolvente pequeño"
+
+#: ../homedecor/electronics.lua:54
+msgid "Stereo Receiver"
+msgstr "Receptor estéreo"
+
+#: ../homedecor/electronics.lua:66
+msgid "Projection Screen Material"
+msgstr "Material para pantalla de proyección"
+
+#: ../homedecor/electronics.lua:82
+msgid "Small CRT Television"
+msgstr "Televisión CRT pequeña"
+
+#: ../homedecor/electronics.lua:103
+msgid "DVD and VCR"
+msgstr "DVD y reproductor de vídeo"
+
+#: ../homedecor/electronics.lua:138
+msgid "Telephone"
+msgstr "Teléfono"
+
+#: ../homedecor/lighting.lua:73
+msgid "Thick Glowlight (@1)"
+msgstr "Luz brillante gruesa (@1)"
+
+#: ../homedecor/lighting.lua:91
+msgid "Thin Glowlight (@1)"
+msgstr "Luz brillante fina (@1)"
+
+#: ../homedecor/lighting.lua:111
+msgid "Small Glowlight Cube (@1)"
+msgstr "Cubo pequeño de luz brillante (@1)"
+
+#: ../homedecor/lighting.lua:131
+msgid "Plasma Lamp"
+msgstr "Lámpara de plasma"
+
+#: ../homedecor/lighting.lua:151
+msgid "Plasma Ball"
+msgstr "Bola de plasma"
+
+#: ../homedecor/lighting.lua:182
+msgid "Thick Candle"
+msgstr "Vela gruesa"
+
+#: ../homedecor/lighting.lua:203
+msgid "Thin Candle"
+msgstr "Vela fina"
+
+#: ../homedecor/lighting.lua:224
+msgid "Candlestick (wrought iron)"
+msgstr "Candelero (hierro forjado)"
+
+#: ../homedecor/lighting.lua:239
+msgid "Candlestick (brass)"
+msgstr "Candelero (latón)"
+
+#: ../homedecor/lighting.lua:254
+msgid "Wall sconce"
+msgstr "Candelabro de pared"
+
+#: ../homedecor/lighting.lua:280
+msgid "Oil lamp (hurricane)"
+msgstr "Lámpara de aceite (huracán)"
+
+#: ../homedecor/lighting.lua:300
+msgid "Oil Lamp (tabletop)"
+msgstr "Lámpara de aceite de mesa"
+
+#: ../homedecor/lighting.lua:319
+msgid "Ground Lantern"
+msgstr "Linterna de piso"
+
+#: ../homedecor/lighting.lua:337
+msgid "Hanging Lantern"
+msgstr "Linterna colgante"
+
+#: ../homedecor/lighting.lua:368
+msgid "Lattice lantern (large)"
+msgstr "Linterna enrejada (grande)"
+
+#: ../homedecor/lighting.lua:376
+msgid "Lattice lantern (small)"
+msgstr "Linterna enrejada (pequeña)"
+
+#: ../homedecor/lighting.lua:426
+msgid "Table Lamp (@1)"
+msgstr "Lámpara de mesa (@1)"
+
+#: ../homedecor/lighting.lua:452
+msgid "Standing Lamp (@1)"
+msgstr "Lámpara de pié"
+
+#: ../homedecor/lighting.lua:502
+msgid "Desk Lamp (@1)"
+msgstr "Lámpara de escritorio (@1)"
+
+#: ../homedecor/lighting.lua:518
+msgid "Ceiling Lamp"
+msgstr "Lámpara de techo"
+
+#: ../homedecor/lighting.lua:536
+msgid "Ceiling Lamp (off)"
+msgstr "Lámpara de techo (apagada)"
+
+#: ../homedecor/fences.lua:31
+msgid "Fence/railing (@1)"
+msgstr "Cerca/barandilla (@1)"
+
+#: ../homedecor/fences.lua:43
+msgid "Fence/railing with sign (@1)"
+msgstr "Cerca/barandilla con letrero (@1)"
+
+#: ../homedecor/fences.lua:71
+msgid "Unpainted Picket Fence"
+msgstr "Cerca de piquete sin pintar"
+
+#: ../homedecor/fences.lua:87
+msgid "Unpainted Picket Fence Corner"
+msgstr "Esquina de cerca de piquete sin pintar"
+
+#: ../homedecor/fences.lua:103
+msgid "White Picket Fence"
+msgstr "Cerca de piquete blanca"
+
+#: ../homedecor/fences.lua:119
+msgid "White Picket Fence Corner"
+msgstr "Esquina de cerca de piquete blanca"
+
+#: ../homedecor/fences.lua:135
+msgid "Wooden Privacy Fence"
+msgstr "Cerca de privacidad de madera"
+
+#: ../homedecor/fences.lua:159
+msgid "Wooden Privacy Fence Corner"
+msgstr "Esquina de cerca de privacidad de madera"
+
+#: ../homedecor/fences.lua:194
+msgid "Barbed Wire Fence"
+msgstr "Cerca de alambre de espino"
+
+#: ../homedecor/fences.lua:204
+msgid "Barbed Wire Fence Corner"
+msgstr "Esquina de cerca de alambre de espino"
+
+#: ../homedecor/fences.lua:214
+msgid "Chainlink Fence"
+msgstr "Cerca de eslabón de cadena"
+
+#: ../homedecor/fences.lua:232
+msgid "Chainlink Fence Corner"
+msgstr "Esquina de cerca de eslabón de cadena"
+
+#: ../homedecor/fences.lua:249
+msgid "Wrought Iron fence (type 2)"
+msgstr "Cerca de hierro forjado (tipo 2)"
+
+#: ../homedecor/fences.lua:276
+msgid "Wrought Iron fence (type 2) Corner"
+msgstr "Esquina de cerca de hierro forjado (tipo 2)"
+
+#: ../homedecor/shutters.lua:6
+msgid "unpainted oak"
+msgstr "roble sin pintar"
+
+#: ../homedecor/shutters.lua:10
+msgid "forest green"
+msgstr "verde bosque"
+
+#: ../homedecor/shutters.lua:11
+msgid "light blue"
+msgstr "azul claro"
+
+#: ../homedecor/shutters.lua:35
+msgid "Wooden Shutter (@1)"
+msgstr "Postigo de madera (@1)"
+
+#: ../homedecor/exterior.lua:12
+msgid "Barbecue"
+msgstr "Barbacoa"
+
+#: ../homedecor/exterior.lua:56
+msgid "Garden Bench (style 1)"
+msgstr "Banco de jardín (estilo 1)"
+
+#: ../homedecor/exterior.lua:83
+msgid "Garden Bench (style 2)"
+msgstr "Banco de jardín (estilo 2)"
+
+#: ../homedecor/exterior.lua:106 ../homedecor/exterior.lua:121
+msgid "Deck Chair"
+msgstr "Tumbona"
+
+#: ../homedecor/exterior.lua:137
+msgid "Doghouse"
+msgstr "Casa de perros"
+
+#: ../homedecor/exterior.lua:152
+msgid "Simple Bench"
+msgstr "Banco simple"
+
+#: ../homedecor/exterior.lua:166
+msgid "Garden stone path"
+msgstr "Camino de piedra de jardín"
+
+#: ../homedecor/exterior.lua:194
+msgid "white wood"
+msgstr "madera blanca"
+
+#: ../homedecor/exterior.lua:195
+msgid "wood, with vegetation"
+msgstr "madera, con vegetación"
+
+#: ../homedecor/exterior.lua:197
+msgid "white wood, with vegetation"
+msgstr "madera blanca, con vegetación"
+
+#: ../homedecor/exterior.lua:204
+msgid "Garden Lattice (@1)"
+msgstr "Enrejado de jardín (@1)"
+
+#: ../homedecor/exterior.lua:227
+msgid "Tree's swing"
+msgstr "Columpio"
+
+#: ../homedecor/exterior.lua:329
+msgid "Water well"
+msgstr "Pozo de agua"
+
+#: ../homedecor/exterior.lua:370 ../homedecor/exterior.lua:381
+msgid "Shrubbery (@1)"
+msgstr "Arbustos (@1)"
+
+#: ../homedecor/bathroom_sanitation.lua:17
+msgid "Toilet"
+msgstr "Inodoro"
+
+#: ../homedecor/bathroom_sanitation.lua:68
+msgid "Toilet paper"
+msgstr "Papel higiénico"
+
+#: ../homedecor/bathroom_sanitation.lua:89
+msgid "Bathroom Sink"
+msgstr "Lavabo de baño"
+
+#: ../homedecor/bathroom_sanitation.lua:137
+msgid "Bathroom taps/faucet"
+msgstr "Grifo de baño"
+
+#: ../homedecor/bathroom_sanitation.lua:160
+msgid "Bathroom taps/faucet (brass)"
+msgstr "Grifo de baño (latón)"
+
+#: ../homedecor/bathroom_sanitation.lua:185
+msgid "Shower Tray"
+msgstr "Plato de ducha"
+
+#: ../homedecor/bathroom_sanitation.lua:225
+msgid "Shower Head"
+msgstr "Ducha"
+
+#: ../homedecor/bathroom_sanitation.lua:265
+msgid "Bathroom sundries set"
+msgstr "Artículos de baño"
+
+#: ../homedecor/climate-control.lua:6
+msgid "Air Conditioner"
+msgstr "Acondicionador de aire"
+
+#: ../homedecor/climate-control.lua:44
+msgid "Desk Fan"
+msgstr "Ventilador de escritorio"
+
+#: ../homedecor/climate-control.lua:83
+msgid "Ceiling Fan"
+msgstr "Ventilador de techo"
+
+#: ../homedecor/climate-control.lua:107
+msgid "Space heater"
+msgstr "Calentador de espacios"
+
+#: ../homedecor/climate-control.lua:139
+msgid "Radiator heater"
+msgstr "Radiador"
+
+#: ../homedecor/doors_and_gates.lua:124
+msgid "Mahogany Closet Door (@1 opening)"
+msgstr "Puerta de armario de caoba (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua:129
+msgid "Oak Closet Door (@1 opening)"
+msgstr "Puerta de armario de roble (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua:134
+msgid "Fancy Wood/Glass Door (@1 opening)"
+msgstr "Puerta de madera/cristal de lujo (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua:144
+msgid "Glass Office Door (@1 opening)"
+msgstr "Vídrio de cristal de oficina (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua:149
+msgid "Glass and Wood, Oak-colored (@1 opening)"
+msgstr "Vídrio y madera, color roble (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua:158
+msgid "Glass and Wood, Mahogany-colored (@1 opening)"
+msgstr "Vídrio y madera, color caoba (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua:167
+msgid "Glass and Wood, White (@1 opening)"
+msgstr "Vídrio y madera, blanca (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua:176
+msgid "Plain Wooden Door (@1 opening)"
+msgstr "Puerta de madera lisa (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua:181
+msgid "White Bedroom Door (@1 opening)"
+msgstr "Puerta de habitación blanca (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua:186
+msgid "Wrought Iron Gate/Door (@1 opening)"
+msgstr "Portón de hierro forjado (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua:191
+msgid "Wooden door with glass insert (@1 opening)"
+msgstr "Puerta de madera con inserto de vídrio (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua:201
+msgid "Wooden door with glass insert, type 2 (@1 opening)"
+msgstr "Puerta de madera con inserto de vídrio, tipo 2 (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua:212
+msgid "left"
+msgstr "izquierda"
+
+#: ../homedecor/doors_and_gates.lua:212
+msgid "right"
+msgstr "derecha"
+
+#: ../homedecor/doors_and_gates.lua:296
+msgid "Unpainted Picket Fence Gate"
+msgstr "Cerca de piquete sin pintar"
+
+#: ../homedecor/doors_and_gates.lua:297
+msgid "White Picket Fence Gate"
+msgstr "Cerca de piquete blanca"
+
+#: ../homedecor/doors_and_gates.lua:298
+msgid "Barbed Wire Fence Gate"
+msgstr "Cerca de alambre de espino"
+
+#: ../homedecor/doors_and_gates.lua:299
+msgid "Chainlink Fence Gate"
+msgstr "Cerca de eslabón de cadena"
+
+#: ../homedecor/doors_and_gates.lua:526
+msgid "Japanese wall (top)"
+msgstr "Pared japonesa (parte más alta)"
+
+#: ../homedecor/doors_and_gates.lua:542
+msgid "Japanese wall"
+msgstr "Pared japonesa"
+
+#: ../homedecor/doors_and_gates.lua:558
+msgid "Japanese wall (bottom)"
+msgstr "Pared japonesa (parte más baja)"
+
+#: ../homedecor/doors_and_gates.lua:582
+msgid "Japanese tatami"
+msgstr "Tatami"
+
+#: ../homedecor/doors_and_gates.lua:595
+msgid "Japanese-style door"
+msgstr "Puerta estilo japonés"
+
+#: ../homedecor/init.lua:133
+msgid "Loaded!"
+msgstr "¡Cargado!"
+
+#: ../homedecor/misc-nodes.lua:7
+msgid "Textured Ceiling Paint"
+msgstr "Pintura de techo con textura"
+
+#: ../homedecor/misc-nodes.lua:19
+msgid "Drop-Ceiling Tile"
+msgstr "Azulejo de techo"
+
+#: ../homedecor/misc-nodes.lua:31
+msgid "small"
+msgstr "pequeño"
+
+#: ../homedecor/misc-nodes.lua:32
+msgid "large"
+msgstr "grande"
+
+#: ../homedecor/misc-nodes.lua:33
+msgid "persian"
+msgstr "persa"
+
+#: ../homedecor/misc-nodes.lua:57
+msgid "Rug (@1)"
+msgstr "Tapete (@1)"
+
+#: ../homedecor/misc-nodes.lua:73
+msgid "Flower Pot (@1)"
+msgstr "Maceta (@1)"
+
+#: ../homedecor/misc-nodes.lua:85
+msgid "Rose"
+msgstr "Rosa"
+
+#: ../homedecor/misc-nodes.lua:86
+msgid "Tulip"
+msgstr "Tulipán"
+
+#: ../homedecor/misc-nodes.lua:87
+msgid "Yellow Dandelion"
+msgstr "Diente de león amarillo"
+
+#: ../homedecor/misc-nodes.lua:88
+msgid "White Dandelion"
+msgstr "Diente de león blanco"
+
+#: ../homedecor/misc-nodes.lua:89
+msgid "Blue Geranium"
+msgstr "Geranio azul"
+
+#: ../homedecor/misc-nodes.lua:90
+msgid "Viola"
+msgstr "Viola"
+
+#: ../homedecor/misc-nodes.lua:91
+msgid "Cactus"
+msgstr "Cacto"
+
+#: ../homedecor/misc-nodes.lua:92
+msgid "Bonsai"
+msgstr "Bonsai"
+
+#: ../homedecor/misc-nodes.lua:99
+msgid "Potted flower (@1)"
+msgstr "Flor en maceta (@1)"
+
+#: ../homedecor/misc-nodes.lua:127
+msgid "Brass Pole"
+msgstr "Poste de latón"
+
+#: ../homedecor/misc-nodes.lua:145
+msgid "Wrought Iron Pole"
+msgstr "Poste de hierro forjado"
+
+#: ../homedecor/misc-nodes.lua:167
+msgid "Fishtank"
+msgstr "Estanque para peces"
+
+#: ../homedecor/misc-nodes.lua:189
+msgid "Fishtank (lighted)"
+msgstr "Estanque para peces (iliminado)"
+
+#: ../homedecor/misc-nodes.lua:213
+msgid "Cardboard box (big)"
+msgstr "Caja de cartón (grande)"
+
+#: ../homedecor/misc-nodes.lua:220 ../homedecor/misc-nodes.lua:227
+#: ../homedecor/misc-nodes.lua:240
+msgid "Cardboard box"
+msgstr "Caja de cartón"
+
+#: ../homedecor/misc-nodes.lua:247
+msgid "DVD/CD cabinet"
+msgstr "Gabinete de CDs/DVDs"
+
+#: ../homedecor/misc-nodes.lua:273
+msgid "Pool Table"
+msgstr "Mesa de pool"
+
+#: ../homedecor/misc-nodes.lua:298
+msgid "Piano"
+msgstr "Piano"
+
+#: ../homedecor/misc-nodes.lua:316
+msgid "Trophy"
+msgstr "Trofeo"
+
+#: ../homedecor/misc-nodes.lua:334
+msgid "Sport bench"
+msgstr "Banco deportivo"
+
+#: ../homedecor/misc-nodes.lua:359
+msgid "Skateboard"
+msgstr "Patineta"
+
+#: ../homedecor/misc-nodes.lua:368
+msgid "Metal tool cabinet and work table"
+msgstr "Mesa de trabajo y gabinete en hierro"
+
+#: ../homedecor/misc-nodes.lua:399
+msgid "Picture Frame"
+msgstr "Marco de fotografía"
+
+#: ../homedecor/misc-nodes.lua:424
+msgid "Decorative painting #@1"
+msgstr "Pintura decorativa nº@1"
+
+#: ../homedecor/misc-nodes.lua:449
+msgid "dark topped"
+msgstr "mesada oscura"
+
+#: ../homedecor/misc-nodes.lua:479
+msgid "diagonal"
+msgstr "diagonal"
+
+#: ../homedecor/misc-nodes.lua:479
+msgid "horizontal"
+msgstr "horizontal"
+
+#: ../homedecor/misc-nodes.lua:503
+msgid "Banister for Stairs (@1, @2)"
+msgstr "Barandilla para escaleras (@1, @2)"
+
+#: ../homedecor/misc-nodes.lua:576
+msgid "not enough space"
+msgstr "no hay suficiente espacio"
+
+#: ../homedecor/tables.lua:7
+msgid "Small square glass table"
+msgstr "Mesa cuadrada pequeña de vídrio"
+
+#: ../homedecor/tables.lua:8
+msgid "Small round glass table"
+msgstr "Mesa redonda pequeña de vídrio"
+
+#: ../homedecor/tables.lua:9
+msgid "Large glass table piece"
+msgstr "Mesa grande de vídrio"
+
+#: ../homedecor/tables.lua:12
+msgid "Small square wooden table"
+msgstr "Mesa cuadrada pequeña de madera"
+
+#: ../homedecor/tables.lua:13
+msgid "Small round wooden table"
+msgstr "Mesa redonda pequeña de madera"
+
+#: ../homedecor/tables.lua:14
+msgid "Large wooden table piece"
+msgstr "Mesa grande de madera"
+
+#: ../homedecor/tables.lua:134
+msgid "Utility Table"
+msgstr "Mesa utilitaria"
+
+#: ../homedecor/tables.lua:173
+msgid "Table Legs (@1)"
+msgstr "Patas de mesa (@1)"
+
+#: ../homedecor/tables.lua:189
+msgid "Legs for Utility Table"
+msgstr "Patas para mesa utilitaria"
+
+#: ../homedecor/books.lua:45
+msgid "Writable Book (@1)"
+msgstr "Libro (@1)"
+
+#: ../homedecor/books.lua:173
+msgid "@1 has written in a book (title: \"@2\"): \"@3\" at location @4"
+msgstr "@1 ha escrito en un libro (título: \"@2\"): \"@3\" en la ubicación @4"
+
+#: ../homedecor/furniture.lua:4
+msgid "Table"
+msgstr "Mesa"
+
+#: ../homedecor/furniture.lua:5
+msgid "Mahogany Table"
+msgstr "Mesa de caoba"
+
+#: ../homedecor/furniture.lua:6
+msgid "White Table"
+msgstr "Mesa blanca"
+
+#: ../homedecor/furniture.lua:35
+msgid "plain"
+msgstr "liso"
+
+#: ../homedecor/furniture.lua:77
+msgid "Kitchen chair (@1)"
+msgstr "Silla de cocina (@1)"
+
+#: ../homedecor/furniture.lua:93
+msgid "Armchair (@1)"
+msgstr "Sillón (@1)"
+
+#: ../homedecor/furniture.lua:122
+msgid "Bookshelf (open-frame)"
+msgstr "Estante para libros (abierto)"
+
+#: ../homedecor/furniture.lua:138
+msgid "Wall Shelf"
+msgstr "Estante"
+
+#: ../homedecor/handlers/inventory.lua:87
+msgid "@1 moves stuff in @2 at @3"
+msgstr "@1 mueve cosas en @2 en @3"
+
+#: ../homedecor/handlers/inventory.lua:92
+msgid "@1 moves @2 to @3 at @4"
+msgstr "@1 mueve @2 a @3 en @4"
+
+#: ../homedecor/handlers/inventory.lua:97
+msgid "@1 takes @2 from @3 at @4"
+msgstr "@1 toma @2 desde @3 en @4"
+
+#: ../homedecor/handlers/inventory.lua:110
+msgid "@1 (owned by @2)"
+msgstr "@1 (propiedad de @2)"
+
+#: ../homedecor/handlers/inventory.lua:127
+#: ../homedecor/handlers/inventory.lua:145
+#: ../homedecor/handlers/inventory.lua:163
+msgid "@1 tried to access a @2 belonging to @3 at @4"
+msgstr "@1 intentó acceder a @2 perteneciente a @3 en @4"
+
+#: ../homedecor/handlers/inventory.lua:173
+msgid "@1 (Locked)"
+msgstr "@1 (Cerrado)"
+
+#: ../homedecor/handlers/furnaces.lua:91
+msgid "Furnace"
+msgstr "Horno"
+
+#: ../homedecor/handlers/furnaces.lua:109
+#: ../homedecor/handlers/furnaces.lua:128
+#: ../homedecor/handlers/furnaces.lua:262
+msgid "@1 (empty)"
+msgstr "@1 (vacía)"
+
+#: ../homedecor/handlers/furnaces.lua:154
+msgid "@1 (active)"
+msgstr "@1 (activo)"
+
+#: ../homedecor/handlers/furnaces.lua:234
+msgid "@1 (active: @2%)"
+msgstr "@1 (activo: @2%)"
+
+#: ../homedecor/handlers/furnaces.lua:254
+msgid "@1 (out of fuel)"
+msgstr "@1 (sin combustible)"
+
+#: ../homedecor/handlers/furnaces.lua:270
+msgid "@1 (output bins are full)"
+msgstr "@1 (output bins are full)"
+
+#: ../homedecor/office.lua:4 ../homedecor/office.lua:13
+msgid "Filing cabinet"
+msgstr "Archivador"
+
+#: ../homedecor/bathroom_furniture.lua:5
+msgid "white/grey"
+msgstr "blanco/gris"
+
+#: ../homedecor/bathroom_furniture.lua:6
+msgid "white/dark grey"
+msgstr "blanco/gris oscuro"
+
+#: ../homedecor/bathroom_furniture.lua:7
+msgid "white/black"
+msgstr "blanco/negro"
+
+#: ../homedecor/bathroom_furniture.lua:8
+msgid "black/dark grey"
+msgstr "negro/gris oscuro"
+
+#: ../homedecor/bathroom_furniture.lua:9
+msgid "white/red"
+msgstr "blanco/rojo"
+
+#: ../homedecor/bathroom_furniture.lua:10
+msgid "white/green"
+msgstr "blanco/verde"
+
+#: ../homedecor/bathroom_furniture.lua:11
+msgid "white/blue"
+msgstr "blanco/azul"
+
+#: ../homedecor/bathroom_furniture.lua:12
+msgid "white/yellow"
+msgstr "blanco/amarillo"
+
+#: ../homedecor/bathroom_furniture.lua:13
+msgid "white/tan"
+msgstr "blanco/marrón"
+
+#: ../homedecor/bathroom_furniture.lua:27
+msgid "Bathroom/kitchen tiles (@1)"
+msgstr "Azulejo de baño/cocina (@1)"
+
+#: ../homedecor/bathroom_furniture.lua:48
+msgid "Towel rod with towel"
+msgstr "Toallero con toalla"
+
+#: ../homedecor/bathroom_furniture.lua:62
+#: ../homedecor/bathroom_furniture.lua:80
+msgid "Medicine cabinet"
+msgstr "Gabinete de medicinas"
diff --git a/homedecor/locale/fr.po b/homedecor/locale/fr.po
new file mode 100644
index 0000000..5fc61e3
--- /dev/null
+++ b/homedecor/locale/fr.po
@@ -0,0 +1,1438 @@
+# French translations for PACKAGE package.
+# Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-01-25 00:03-0300\n"
+"PO-Revision-Date: 2017-01-25 00:03-0300\n"
+"Last-Translator: Calinou <Calinou@users.noreply.github.com>\n"
+"Language-Team: French\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: ../computer/miscitems.lua:13 ../homedecor/crafts.lua:32
+#, fuzzy
+msgid "Plastic sheet"
+msgstr "Bout de plastique"
+
+#: ../computer/miscitems.lua:18
+#, fuzzy
+msgid "Unprocessed Plastic base"
+msgstr "Base de plastique non transformée"
+
+#: ../homedecor/bedroom.lua:7 ../homedecor/shutters.lua:13
+#: ../homedecor/misc-nodes.lua:69 ../homedecor/furniture.lua:36
+msgid "black"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:8 ../homedecor/books.lua:12
+msgid "brown"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:9 ../homedecor/window_treatments.lua:107
+#: ../homedecor/lighting.lua:400 ../homedecor/lighting.lua:498
+#: ../homedecor/books.lua:9 ../homedecor/furniture.lua:40
+#, fuzzy
+msgid "blue"
+msgstr "bleues"
+
+#: ../homedecor/bedroom.lua:10
+msgid "cyan"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:11 ../homedecor/shutters.lua:14
+msgid "dark grey"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:12 ../homedecor/furniture.lua:41
+#, fuzzy
+msgid "dark green"
+msgstr "vertes"
+
+#: ../homedecor/bedroom.lua:13 ../homedecor/window_treatments.lua:106
+#: ../homedecor/lighting.lua:401 ../homedecor/lighting.lua:498
+#: ../homedecor/exterior.lua:361 ../homedecor/misc-nodes.lua:69
+#: ../homedecor/books.lua:8
+#, fuzzy
+msgid "green"
+msgstr "vertes"
+
+#: ../homedecor/bedroom.lua:14 ../homedecor/shutters.lua:15
+#: ../homedecor/books.lua:11
+msgid "grey"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:15
+msgid "magenta"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:16
+msgid "orange"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:17 ../homedecor/window_treatments.lua:109
+#: ../homedecor/lighting.lua:402 ../homedecor/furniture.lua:38
+#, fuzzy
+msgid "pink"
+msgstr "roses"
+
+#: ../homedecor/bedroom.lua:18 ../homedecor/window_treatments.lua:105
+#: ../homedecor/lighting.lua:403 ../homedecor/lighting.lua:498
+#: ../homedecor/shutters.lua:8 ../homedecor/exterior.lua:362
+#: ../homedecor/books.lua:7 ../homedecor/furniture.lua:37
+#, fuzzy
+msgid "red"
+msgstr "rouges"
+
+#: ../homedecor/bedroom.lua:19 ../homedecor/window_treatments.lua:110
+#: ../homedecor/lighting.lua:404 ../homedecor/lighting.lua:498
+#: ../homedecor/shutters.lua:12 ../homedecor/books.lua:10
+#: ../homedecor/furniture.lua:39
+#, fuzzy
+msgid "violet"
+msgstr "violettes"
+
+#: ../homedecor/bedroom.lua:20 ../homedecor/window_treatments.lua:108
+#: ../homedecor/lighting.lua:9 ../homedecor/lighting.lua:399
+#: ../homedecor/shutters.lua:16
+#, fuzzy
+msgid "white"
+msgstr "blanches"
+
+#: ../homedecor/bedroom.lua:21 ../homedecor/lighting.lua:9
+#: ../homedecor/shutters.lua:9 ../homedecor/exterior.lua:363
+msgid "yellow"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:70
+msgid "Bed (@1)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:131
+msgid "Bed (@1, king sized)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:159 ../homedecor/shutters.lua:7
+msgid "mahogany"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:159
+msgid "oak"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:161
+#, fuzzy
+msgid "Nightstand with One Drawer (@1)"
+msgstr "Table de chevet en chêne avec un tiroir"
+
+#: ../homedecor/bedroom.lua:182
+#, fuzzy
+msgid "One-drawer Nightstand"
+msgstr "Table de chevet avec un tiroir"
+
+#: ../homedecor/bedroom.lua:190
+#, fuzzy
+msgid "Nightstand with Two Drawers (@1)"
+msgstr "Table de chevet en chêne avec deux tiroirs"
+
+#: ../homedecor/bedroom.lua:208
+#, fuzzy
+msgid "Two-drawer Nightstand"
+msgstr "Table de chevet avec deux tiroirs"
+
+#: ../homedecor/kitchen_furniture.lua:10
+#: ../homedecor/kitchen_appliances.lua:240
+msgid "granite"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua:10
+#: ../homedecor/kitchen_appliances.lua:240
+msgid "marble"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua:10
+#: ../homedecor/kitchen_appliances.lua:240
+msgid "steel"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua:14 ../homedecor/kitchen_furniture.lua:32
+#: ../homedecor/kitchen_furniture.lua:55
+#, fuzzy
+msgid "Kitchen Cabinet"
+msgstr "Meuble de cuisine"
+
+#: ../homedecor/kitchen_furniture.lua:18
+#, fuzzy
+msgid "Kitchen Cabinet (@1 top)"
+msgstr "Meuble de cuisine"
+
+#: ../homedecor/kitchen_furniture.lua:42
+#, fuzzy
+msgid "Half-height Kitchen Cabinet (on ceiling)"
+msgstr "Meuble de cuisine réduit en hauteur (sur le plafond)"
+
+#: ../homedecor/kitchen_furniture.lua:63
+#, fuzzy
+msgid "Kitchen Cabinet with sink"
+msgstr "Meuble de cuisine avec lavabo"
+
+#: ../homedecor/kitchen_furniture.lua:73
+#, fuzzy
+msgid "Under-sink cabinet"
+msgstr "Meuble sous évier"
+
+#: ../homedecor/kitchen_furniture.lua:150
+msgid "Paper towels"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua:5
+msgid "Bars"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua:27
+msgid "Binding Bars"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua:51
+msgid "Chains"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua:62
+msgid "Wall Torch"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua:94
+msgid "Wall Lamp"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:12
+#, fuzzy
+msgid "Refrigerator (stainless steel)"
+msgstr "Réfrégirateur"
+
+#: ../homedecor/kitchen_appliances.lua:18
+#: ../homedecor/kitchen_appliances.lua:31
+#: ../homedecor/kitchen_appliances.lua:37
+#, fuzzy
+msgid "Refrigerator"
+msgstr "Réfrégirateur"
+
+#: ../homedecor/kitchen_appliances.lua:60
+#, fuzzy
+msgid "Oven"
+msgstr "Four"
+
+#: ../homedecor/kitchen_appliances.lua:68
+msgid "Oven (stainless steel)"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:76
+msgid "Microwave Oven"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:117
+msgid "Coffee Maker"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:164
+msgid "Toaster"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:216
+msgid "Dishwasher"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:240 ../homedecor/roofing.lua:31
+#: ../homedecor/window_treatments.lua:167 ../homedecor/exterior.lua:193
+#: ../homedecor/misc-nodes.lua:440
+msgid "wood"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:244
+msgid "Dishwasher (@1)"
+msgstr ""
+
+#: ../homedecor/roofing.lua:7
+#, fuzzy
+msgid "Glass Skylight"
+msgstr "Verre"
+
+#: ../homedecor/roofing.lua:19
+#, fuzzy
+msgid "Glass Skylight Frosted"
+msgstr "Verre"
+
+#: ../homedecor/roofing.lua:31
+msgid "asphalt"
+msgstr ""
+
+#: ../homedecor/roofing.lua:31 ../homedecor/misc-nodes.lua:69
+#, fuzzy
+msgid "terracotta"
+msgstr "Tuile en terre cuite"
+
+#: ../homedecor/roofing.lua:33
+#, fuzzy
+msgid "Shingles (@1)"
+msgstr "Bardeaux de bois"
+
+#: ../homedecor/roofing.lua:87
+msgid "@1 (outer corner)"
+msgstr ""
+
+#: ../homedecor/roofing.lua:109
+msgid "@1 (inner corner)"
+msgstr ""
+
+#: ../homedecor/roofing.lua:265 ../homedecor/roofing.lua:286
+#, fuzzy
+msgid "Wood Shingles"
+msgstr "Bardeaux de bois"
+
+#: ../homedecor/roofing.lua:271 ../homedecor/roofing.lua:293
+#, fuzzy
+msgid "Asphalt Shingles"
+msgstr "Bardeaux d'asphalte"
+
+#: ../homedecor/roofing.lua:277 ../homedecor/roofing.lua:300
+#, fuzzy
+msgid "Terracotta Shingles"
+msgstr "Tuile en terre cuite"
+
+#: ../homedecor/roofing.lua:307
+#, fuzzy
+msgid "Glass Shingles"
+msgstr "Bardeaux d'asphalte"
+
+#: ../homedecor/roofing.lua:312
+msgid "Chimney"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:7
+msgid "Window (quartered)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:38
+msgid "Window (plain)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:72
+#, fuzzy
+msgid "Window Blinds (thick)"
+msgstr "Lampe blanche (épaisse)"
+
+#: ../homedecor/window_treatments.lua:91
+#, fuzzy
+msgid "Window Blinds (thin)"
+msgstr "Lampe blanche (fine)"
+
+#: ../homedecor/window_treatments.lua:117
+#: ../homedecor/window_treatments.lua:140
+#, fuzzy
+msgid "Curtains (@1)"
+msgstr "Volets (%s)"
+
+#: ../homedecor/window_treatments.lua:165 ../homedecor/fences.lua:22
+#: ../homedecor/misc-nodes.lua:458 ../homedecor/tables.lua:166
+msgid "brass"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:166 ../homedecor/fences.lua:23
+#: ../homedecor/misc-nodes.lua:467 ../homedecor/tables.lua:167
+#, fuzzy
+msgid "wrought iron"
+msgstr "Barre de fer forgé"
+
+#: ../homedecor/window_treatments.lua:175
+#, fuzzy
+msgid "Curtain Rod (@1)"
+msgstr "Volets (%s)"
+
+#: ../homedecor/window_treatments.lua:189
+msgid "Window flowerbox"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:209
+msgid "Stained Glass"
+msgstr ""
+
+#: ../homedecor/crafts.lua:10
+#, fuzzy
+msgid "Uncooked Terracotta Base"
+msgstr "Base de terre non cuite"
+
+#: ../homedecor/crafts.lua:15
+#, fuzzy
+msgid "Terracotta Roof Tile"
+msgstr "Tuile de toit en terre cuite"
+
+#: ../homedecor/crafts.lua:20
+msgid "Oil extract"
+msgstr ""
+
+#: ../homedecor/crafts.lua:25
+#, fuzzy
+msgid "Unprocessed paraffin"
+msgstr "Base de plastique non transformée"
+
+#: ../homedecor/crafts.lua:37
+#, fuzzy
+msgid "Plastic strips"
+msgstr "Bout de plastique"
+
+#: ../homedecor/crafts.lua:42
+#, fuzzy
+msgid "Small Wooden Drawer"
+msgstr "Petit tiroir en bois"
+
+#: ../homedecor/crafts.lua:47
+#, fuzzy
+msgid "Simple Integrated Circuit"
+msgstr "Circuit intégré simple"
+
+#: ../homedecor/crafts.lua:52
+msgid "Heating element"
+msgstr ""
+
+#: ../homedecor/crafts.lua:57
+msgid "Motor"
+msgstr ""
+
+#: ../homedecor/crafts.lua:62
+msgid "Power Crystal"
+msgstr ""
+
+#: ../homedecor/crafts.lua:67
+msgid "Blank Canvas"
+msgstr ""
+
+#: ../homedecor/crafts.lua:72
+msgid "VCR"
+msgstr ""
+
+#: ../homedecor/crafts.lua:77
+msgid "DVD Player"
+msgstr ""
+
+#: ../homedecor/crafts.lua:82
+msgid "Spool of copper wire"
+msgstr ""
+
+#: ../homedecor/crafts.lua:87
+msgid "Spool of steel wire"
+msgstr ""
+
+#: ../homedecor/crafts.lua:92
+msgid "Speaker driver"
+msgstr ""
+
+#: ../homedecor/crafts.lua:97
+msgid "Fan blades"
+msgstr ""
+
+#: ../homedecor/crafts.lua:102
+msgid "Copper Strip"
+msgstr ""
+
+#: ../homedecor/crafts.lua:107
+msgid "Steel Strip"
+msgstr ""
+
+#: ../homedecor/crafts.lua:112
+msgid "Steel chainlink"
+msgstr ""
+
+#: ../homedecor/crafts.lua:117
+#, fuzzy
+msgid "Brass chainlink"
+msgstr "Barrière en laiton"
+
+#: ../homedecor/crafts.lua:122
+msgid "Soda Can"
+msgstr ""
+
+#: ../homedecor/crafts.lua:128
+msgid "Gold Coin (for soda vending machine)"
+msgstr ""
+
+#: ../homedecor/crafts.lua:137
+#, fuzzy
+msgid "Silicon lump"
+msgstr "Silicone"
+
+#: ../homedecor/crafts.lua:154
+#, fuzzy
+msgid "Brass Ingot"
+msgstr "Lingot de laiton"
+
+#: ../homedecor/crafts.lua:3330
+#, fuzzy
+msgid "Small Flower Pot"
+msgstr "Pot de fleur en plastique noir"
+
+#: ../homedecor/electronics.lua:6
+#, fuzzy
+msgid "Large Stereo Speaker"
+msgstr "Grand haut-parleur stéréo"
+
+#: ../homedecor/electronics.lua:20
+#, fuzzy
+msgid "Large Stereo Speaker, open front"
+msgstr "Grand haut-parleur stéréo"
+
+#: ../homedecor/electronics.lua:41
+#, fuzzy
+msgid "Small Surround Speaker"
+msgstr "Petit haut-parleur surround"
+
+#: ../homedecor/electronics.lua:54
+#, fuzzy
+msgid "Stereo Receiver"
+msgstr "Récepteur stéréo"
+
+#: ../homedecor/electronics.lua:66
+#, fuzzy
+msgid "Projection Screen Material"
+msgstr "Matériel pour projecteur"
+
+#: ../homedecor/electronics.lua:82
+#, fuzzy
+msgid "Small CRT Television"
+msgstr "Petite télévision à tube cathodique"
+
+#: ../homedecor/electronics.lua:103
+msgid "DVD and VCR"
+msgstr ""
+
+#: ../homedecor/electronics.lua:138
+msgid "Telephone"
+msgstr ""
+
+#: ../homedecor/lighting.lua:73
+#, fuzzy
+msgid "Thick Glowlight (@1)"
+msgstr "Lampe blanche (fine)"
+
+#: ../homedecor/lighting.lua:91
+#, fuzzy
+msgid "Thin Glowlight (@1)"
+msgstr "Lampe blanche (fine)"
+
+#: ../homedecor/lighting.lua:111
+#, fuzzy
+msgid "Small Glowlight Cube (@1)"
+msgstr "Lampe jaune (petit cube)"
+
+#: ../homedecor/lighting.lua:131
+msgid "Plasma Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua:151
+msgid "Plasma Ball"
+msgstr ""
+
+#: ../homedecor/lighting.lua:182
+msgid "Thick Candle"
+msgstr ""
+
+#: ../homedecor/lighting.lua:203
+msgid "Thin Candle"
+msgstr ""
+
+#: ../homedecor/lighting.lua:224
+msgid "Candlestick (wrought iron)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:239
+msgid "Candlestick (brass)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:254
+msgid "Wall sconce"
+msgstr ""
+
+#: ../homedecor/lighting.lua:280
+msgid "Oil lamp (hurricane)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:300
+msgid "Oil Lamp (tabletop)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:319
+msgid "Ground Lantern"
+msgstr ""
+
+#: ../homedecor/lighting.lua:337
+msgid "Hanging Lantern"
+msgstr ""
+
+#: ../homedecor/lighting.lua:368
+msgid "Lattice lantern (large)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:376
+msgid "Lattice lantern (small)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:426
+msgid "Table Lamp (@1)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:452
+msgid "Standing Lamp (@1)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:502
+msgid "Desk Lamp (@1)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:518
+msgid "Ceiling Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua:536
+msgid "Ceiling Lamp (off)"
+msgstr ""
+
+#: ../homedecor/fences.lua:31
+#, fuzzy
+msgid "Fence/railing (@1)"
+msgstr "Barrière en laiton"
+
+#: ../homedecor/fences.lua:43
+#, fuzzy
+msgid "Fence/railing with sign (@1)"
+msgstr "Barrière en laiton avec pancarte"
+
+#: ../homedecor/fences.lua:71
+#, fuzzy
+msgid "Unpainted Picket Fence"
+msgstr "Barrière en piquets non peinte"
+
+#: ../homedecor/fences.lua:87
+#, fuzzy
+msgid "Unpainted Picket Fence Corner"
+msgstr "Barrière en piquets non peinte"
+
+#: ../homedecor/fences.lua:103
+#, fuzzy
+msgid "White Picket Fence"
+msgstr "Barrière en piquets blanche"
+
+#: ../homedecor/fences.lua:119
+#, fuzzy
+msgid "White Picket Fence Corner"
+msgstr "Barrière en piquets blanche"
+
+#: ../homedecor/fences.lua:135
+#, fuzzy
+msgid "Wooden Privacy Fence"
+msgstr "Barrière en bois"
+
+#: ../homedecor/fences.lua:159
+#, fuzzy
+msgid "Wooden Privacy Fence Corner"
+msgstr "Barrière en bois"
+
+#: ../homedecor/fences.lua:194
+#, fuzzy
+msgid "Barbed Wire Fence"
+msgstr "Barrière en fil barbelé"
+
+#: ../homedecor/fences.lua:204
+#, fuzzy
+msgid "Barbed Wire Fence Corner"
+msgstr "Barrière en fil barbelé"
+
+#: ../homedecor/fences.lua:214
+#, fuzzy
+msgid "Chainlink Fence"
+msgstr "Grillage"
+
+#: ../homedecor/fences.lua:232
+#, fuzzy
+msgid "Chainlink Fence Corner"
+msgstr "Grillage"
+
+#: ../homedecor/fences.lua:249
+#, fuzzy
+msgid "Wrought Iron fence (type 2)"
+msgstr "Barrière en fer forgé"
+
+#: ../homedecor/fences.lua:276
+#, fuzzy
+msgid "Wrought Iron fence (type 2) Corner"
+msgstr "Barrière en fer forgé"
+
+#: ../homedecor/shutters.lua:6
+msgid "unpainted oak"
+msgstr ""
+
+#: ../homedecor/shutters.lua:10
+msgid "forest green"
+msgstr ""
+
+#: ../homedecor/shutters.lua:11
+#, fuzzy
+msgid "light blue"
+msgstr "droite"
+
+#: ../homedecor/shutters.lua:35
+#, fuzzy
+msgid "Wooden Shutter (@1)"
+msgstr "Volet en bois (rouge)"
+
+#: ../homedecor/exterior.lua:12
+msgid "Barbecue"
+msgstr ""
+
+#: ../homedecor/exterior.lua:56
+msgid "Garden Bench (style 1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua:83
+msgid "Garden Bench (style 2)"
+msgstr ""
+
+#: ../homedecor/exterior.lua:106 ../homedecor/exterior.lua:121
+msgid "Deck Chair"
+msgstr ""
+
+#: ../homedecor/exterior.lua:137
+msgid "Doghouse"
+msgstr ""
+
+#: ../homedecor/exterior.lua:152
+msgid "Simple Bench"
+msgstr ""
+
+#: ../homedecor/exterior.lua:166
+msgid "Garden stone path"
+msgstr ""
+
+#: ../homedecor/exterior.lua:194
+#, fuzzy
+msgid "white wood"
+msgstr "blanches"
+
+#: ../homedecor/exterior.lua:195
+msgid "wood, with vegetation"
+msgstr ""
+
+#: ../homedecor/exterior.lua:197
+msgid "white wood, with vegetation"
+msgstr ""
+
+#: ../homedecor/exterior.lua:204
+msgid "Garden Lattice (@1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua:227
+msgid "Tree's swing"
+msgstr ""
+
+#: ../homedecor/exterior.lua:329
+msgid "Water well"
+msgstr ""
+
+#: ../homedecor/exterior.lua:370 ../homedecor/exterior.lua:381
+msgid "Shrubbery (@1)"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:17
+msgid "Toilet"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:68
+msgid "Toilet paper"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:89
+msgid "Bathroom Sink"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:137
+msgid "Bathroom taps/faucet"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:160
+msgid "Bathroom taps/faucet (brass)"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:185
+msgid "Shower Tray"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:225
+msgid "Shower Head"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:265
+msgid "Bathroom sundries set"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:6
+msgid "Air Conditioner"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:44
+msgid "Desk Fan"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:83
+msgid "Ceiling Fan"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:107
+msgid "Space heater"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:139
+msgid "Radiator heater"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:124
+#, fuzzy
+msgid "Mahogany Closet Door (@1 opening)"
+msgstr "Porte en bois d'acajou"
+
+#: ../homedecor/doors_and_gates.lua:129
+#, fuzzy
+msgid "Oak Closet Door (@1 opening)"
+msgstr "Porte en bois de chêne"
+
+#: ../homedecor/doors_and_gates.lua:134
+#, fuzzy
+msgid "Fancy Wood/Glass Door (@1 opening)"
+msgstr "Porte artistique en bois et verre"
+
+#: ../homedecor/doors_and_gates.lua:144
+#, fuzzy
+msgid "Glass Office Door (@1 opening)"
+msgstr "Porte en verre"
+
+#: ../homedecor/doors_and_gates.lua:149
+#, fuzzy
+msgid "Glass and Wood, Oak-colored (@1 opening)"
+msgstr "Porte couleur chêne en bois et verre"
+
+#: ../homedecor/doors_and_gates.lua:158
+#, fuzzy
+msgid "Glass and Wood, Mahogany-colored (@1 opening)"
+msgstr "Porte couleur acajou en bois et verre"
+
+#: ../homedecor/doors_and_gates.lua:167
+#, fuzzy
+msgid "Glass and Wood, White (@1 opening)"
+msgstr "Porte blanche en bois et verre"
+
+#: ../homedecor/doors_and_gates.lua:176
+#, fuzzy
+msgid "Plain Wooden Door (@1 opening)"
+msgstr "Porte en bois simple"
+
+#: ../homedecor/doors_and_gates.lua:181
+msgid "White Bedroom Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:186
+#, fuzzy
+msgid "Wrought Iron Gate/Door (@1 opening)"
+msgstr "Barrière en fer forgé"
+
+#: ../homedecor/doors_and_gates.lua:191
+msgid "Wooden door with glass insert (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:201
+msgid "Wooden door with glass insert, type 2 (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:212
+#, fuzzy
+msgid "left"
+msgstr "gauche"
+
+#: ../homedecor/doors_and_gates.lua:212
+#, fuzzy
+msgid "right"
+msgstr "droite"
+
+#: ../homedecor/doors_and_gates.lua:296
+#, fuzzy
+msgid "Unpainted Picket Fence Gate"
+msgstr "Porte de barrière en piquets non peinte"
+
+#: ../homedecor/doors_and_gates.lua:297
+#, fuzzy
+msgid "White Picket Fence Gate"
+msgstr "Porte de barrière en piquets blanche"
+
+#: ../homedecor/doors_and_gates.lua:298
+#, fuzzy
+msgid "Barbed Wire Fence Gate"
+msgstr "Porte de barrière en fil barbelé"
+
+#: ../homedecor/doors_and_gates.lua:299
+#, fuzzy
+msgid "Chainlink Fence Gate"
+msgstr "Porte de grillage"
+
+#: ../homedecor/doors_and_gates.lua:526
+msgid "Japanese wall (top)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:542
+msgid "Japanese wall"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:558
+msgid "Japanese wall (bottom)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:582
+msgid "Japanese tatami"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:595
+msgid "Japanese-style door"
+msgstr ""
+
+#: ../homedecor/init.lua:133
+#, fuzzy
+msgid "Loaded!"
+msgstr "Chargé !"
+
+#: ../homedecor/misc-nodes.lua:7
+#, fuzzy
+msgid "Textured Ceiling Paint"
+msgstr "Papier peint avec motif pour plafond"
+
+#: ../homedecor/misc-nodes.lua:19
+#, fuzzy
+msgid "Drop-Ceiling Tile"
+msgstr "Dalle suspendue au plafond"
+
+#: ../homedecor/misc-nodes.lua:31
+msgid "small"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:32
+msgid "large"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:33
+msgid "persian"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:57
+msgid "Rug (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:73
+msgid "Flower Pot (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:85
+msgid "Rose"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:86
+msgid "Tulip"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:87
+msgid "Yellow Dandelion"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:88
+msgid "White Dandelion"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:89
+msgid "Blue Geranium"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:90
+msgid "Viola"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:91
+msgid "Cactus"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:92
+msgid "Bonsai"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:99
+msgid "Potted flower (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:127
+#, fuzzy
+msgid "Brass Pole"
+msgstr "Barre en laiton"
+
+#: ../homedecor/misc-nodes.lua:145
+#, fuzzy
+msgid "Wrought Iron Pole"
+msgstr "Barre de fer forgé"
+
+#: ../homedecor/misc-nodes.lua:167
+msgid "Fishtank"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:189
+msgid "Fishtank (lighted)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:213
+msgid "Cardboard box (big)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:220 ../homedecor/misc-nodes.lua:227
+#: ../homedecor/misc-nodes.lua:240
+msgid "Cardboard box"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:247
+msgid "DVD/CD cabinet"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:273
+msgid "Pool Table"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:298
+msgid "Piano"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:316
+msgid "Trophy"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:334
+msgid "Sport bench"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:359
+msgid "Skateboard"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:368
+msgid "Metal tool cabinet and work table"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:399
+msgid "Picture Frame"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:424
+msgid "Decorative painting #@1"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:449
+msgid "dark topped"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:479
+msgid "diagonal"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:479
+msgid "horizontal"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:503
+msgid "Banister for Stairs (@1, @2)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:576
+msgid "not enough space"
+msgstr ""
+
+#: ../homedecor/tables.lua:7
+msgid "Small square glass table"
+msgstr ""
+
+#: ../homedecor/tables.lua:8
+#, fuzzy
+msgid "Small round glass table"
+msgstr "Petit haut-parleur surround"
+
+#: ../homedecor/tables.lua:9
+#, fuzzy
+msgid "Large glass table piece"
+msgstr "Grand bout de verre de table"
+
+#: ../homedecor/tables.lua:12
+#, fuzzy
+msgid "Small square wooden table"
+msgstr "Petit tiroir en bois"
+
+#: ../homedecor/tables.lua:13
+#, fuzzy
+msgid "Small round wooden table"
+msgstr "Petit haut-parleur surround"
+
+#: ../homedecor/tables.lua:14
+#, fuzzy
+msgid "Large wooden table piece"
+msgstr "Bout de dessus de table"
+
+#: ../homedecor/tables.lua:134
+#, fuzzy
+msgid "Utility Table"
+msgstr "Table basse"
+
+#: ../homedecor/tables.lua:173
+#, fuzzy
+msgid "Table Legs (@1)"
+msgstr "Pieds de table en laiton"
+
+#: ../homedecor/tables.lua:189
+#, fuzzy
+msgid "Legs for Utility Table"
+msgstr "Pieds pour table basse"
+
+#: ../homedecor/books.lua:45
+msgid "Writable Book (@1)"
+msgstr ""
+
+#: ../homedecor/books.lua:173
+msgid "@1 has written in a book (title: \"@2\"): \"@3\" at location @4"
+msgstr ""
+
+#: ../homedecor/furniture.lua:4
+msgid "Table"
+msgstr ""
+
+#: ../homedecor/furniture.lua:5
+#, fuzzy
+msgid "Mahogany Table"
+msgstr "Porte en bois d'acajou"
+
+#: ../homedecor/furniture.lua:6
+#, fuzzy
+msgid "White Table"
+msgstr "Table basse"
+
+#: ../homedecor/furniture.lua:35
+msgid "plain"
+msgstr ""
+
+#: ../homedecor/furniture.lua:77
+#, fuzzy
+msgid "Kitchen chair (@1)"
+msgstr "Meuble de cuisine"
+
+#: ../homedecor/furniture.lua:93
+msgid "Armchair (@1)"
+msgstr ""
+
+#: ../homedecor/furniture.lua:122
+msgid "Bookshelf (open-frame)"
+msgstr ""
+
+#: ../homedecor/furniture.lua:138
+msgid "Wall Shelf"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua:87
+#, fuzzy
+msgid "@1 moves stuff in @2 at @3"
+msgstr "%s déplace des objets dans une table de chevet à %s"
+
+#: ../homedecor/handlers/inventory.lua:92
+msgid "@1 moves @2 to @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua:97
+msgid "@1 takes @2 from @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua:110
+#, fuzzy
+msgid "@1 (owned by @2)"
+msgstr "%s (propriété de %s)"
+
+#: ../homedecor/handlers/inventory.lua:127
+#: ../homedecor/handlers/inventory.lua:145
+#: ../homedecor/handlers/inventory.lua:163
+#, fuzzy
+msgid "@1 tried to access a @2 belonging to @3 at @4"
+msgstr "%s a essayé d'accéder à %s qui est propriété de %s à %s"
+
+#: ../homedecor/handlers/inventory.lua:173
+#, fuzzy
+msgid "@1 (Locked)"
+msgstr "%s (verrouillé)"
+
+#: ../homedecor/handlers/furnaces.lua:91
+msgid "Furnace"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua:109
+#: ../homedecor/handlers/furnaces.lua:128
+#: ../homedecor/handlers/furnaces.lua:262
+msgid "@1 (empty)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua:154
+msgid "@1 (active)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua:234
+msgid "@1 (active: @2%)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua:254
+#, fuzzy
+msgid "@1 (out of fuel)"
+msgstr "Four sans carburant"
+
+#: ../homedecor/handlers/furnaces.lua:270
+msgid "@1 (output bins are full)"
+msgstr ""
+
+#: ../homedecor/office.lua:4 ../homedecor/office.lua:13
+#, fuzzy
+msgid "Filing cabinet"
+msgstr "Meuble sous évier"
+
+#: ../homedecor/bathroom_furniture.lua:5
+#, fuzzy
+msgid "white/grey"
+msgstr "blanches"
+
+#: ../homedecor/bathroom_furniture.lua:6
+msgid "white/dark grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:7
+msgid "white/black"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:8
+msgid "black/dark grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:9
+#, fuzzy
+msgid "white/red"
+msgstr "blanches"
+
+#: ../homedecor/bathroom_furniture.lua:10
+msgid "white/green"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:11
+#, fuzzy
+msgid "white/blue"
+msgstr "blanches"
+
+#: ../homedecor/bathroom_furniture.lua:12
+msgid "white/yellow"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:13
+#, fuzzy
+msgid "white/tan"
+msgstr "blanches"
+
+#: ../homedecor/bathroom_furniture.lua:27
+msgid "Bathroom/kitchen tiles (@1)"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:48
+msgid "Towel rod with towel"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:62
+#: ../homedecor/bathroom_furniture.lua:80
+#, fuzzy
+msgid "Medicine cabinet"
+msgstr "Meuble sous évier"
+
+#~ msgid "%s moves stuff in kitchen cabinet at %s "
+#~ msgstr "%s déplace des objets dans un meuble de cuisine à %s"
+
+#~ msgid "%s moves stuff to kitchen cabinet at %s "
+#~ msgstr "%s édplace des objets vers un meuble de cuisine à %s"
+
+#~ msgid "%s takes stuff from kitchen cabinet at %s "
+#~ msgstr "%s prend des objets d'un meuble de cuisine à %s"
+
+#~ msgid "(Top Half, %s-opening) "
+#~ msgstr "(partie supérieur, charnière à %s)"
+
+#~ msgid "(%s-opening) "
+#~ msgstr "(charnière à %s)"
+
+#~ msgid "Not enough vertical space to place a door! "
+#~ msgstr "Pas assez d'espace vertical pour placer une porte !"
+
+#~ msgid "Bucket of white paint "
+#~ msgstr "Seau de peinture blanche"
+
+#~ msgid "Legs for Small Utility table "
+#~ msgstr "Pieds pour table basse"
+
+#~ msgid "Titanium Dioxide "
+#~ msgstr "Dioxide de titane"
+
+#~ msgid "Chainlink Fence Gate (open) "
+#~ msgstr "Porte de grillage (ouverte)"
+
+#~ msgid "Wrought Iron Fence/railing with sign "
+#~ msgstr "Barrière en fer forgé avec pancarte"
+
+#~ msgid "want to simply place the wielded item like usual. "
+#~ msgstr "veut simplement placer l'objet comme d'habitude."
+
+#~ msgid "Glass Table (Small, Round) "
+#~ msgstr "Table en verre (petite, ronde)"
+
+#~ msgid "Glass Table (Small, Square) "
+#~ msgstr "Table en verre (petite, carrée)"
+
+#~ msgid "Green Plastic Flower Pot "
+#~ msgstr "Pot de fleur en plastique vert"
+
+#~ msgid "Large Area Rug "
+#~ msgstr "Grande couverture"
+
+#~ msgid "Small Throw Rug "
+#~ msgstr "Petite couverture"
+
+#~ msgid "Terracotta Flower Pot "
+#~ msgstr "Pot de fleur en terre cuite"
+
+#~ msgid "Utility table mk2 "
+#~ msgstr "Table basse MK2"
+
+#~ msgid "Wooden Shutter (Black) "
+#~ msgstr "Volet en bois (noir)"
+
+#~ msgid "Wooden Shutter (Dark Grey) "
+#~ msgstr "Volet en bois (gris foncé)"
+
+#~ msgid "Wooden Shutter (Forest Green) "
+#~ msgstr "Volet en bois (vert foncé)"
+
+#~ msgid "Wooden Shutter (Grey) "
+#~ msgstr "Volet en bois (gris)"
+
+#~ msgid "Wooden Shutter (Light Blue) "
+#~ msgstr "Volet en bois (bleu clair)"
+
+#~ msgid "Wooden Shutter (Purple) "
+#~ msgstr "Volet en bois (violet)"
+
+#~ msgid "Wooden Shutter (Unpainted Mahogany) "
+#~ msgstr "Volet en bois (acajou non peint)"
+
+#~ msgid "Wooden Shutter (Unpainted Oak) "
+#~ msgstr "Volet en bois (chêne non peint)"
+
+#~ msgid "Wooden Shutter (White) "
+#~ msgstr "Volet en bois (blanc)"
+
+#~ msgid "Wooden Shutter (Yellow) "
+#~ msgstr "Volet en bois (jaune)"
+
+#~ msgid "Wooden Tabletop (Small, Round) "
+#~ msgstr "Dessus de table (petit, rond)"
+
+#~ msgid "Wooden Tabletop (Small, Square) "
+#~ msgstr "Dessus de table (petit, carré)"
+
+#~ msgid "someone "
+#~ msgstr "quelqu'un"
+
+#~ msgid "Sorry, %s owns that spot. "
+#~ msgstr "Désolé, %s est propriétaire de cette zone."
+
+#~ msgid "White Glowlight (small cube) "
+#~ msgstr "Lampe blanche (petit cube)"
+
+#~ msgid "White Glowlight (small cube, on ceiling) "
+#~ msgstr "Lampe blanche (petit cube, sur le plafond)"
+
+#~ msgid "White Glowlight (thick, on wall) "
+#~ msgstr "Lampe blanche (épaisse, sur le mur)"
+
+#~ msgid "White Glowlight (thin, on wall) "
+#~ msgstr "Lampe blanche (fine, sur le mur)"
+
+#~ msgid "Yellow Glowlight (small cube, on ceiling) "
+#~ msgstr "Lampe jaune (petit cube, sur le plafond)"
+
+#~ msgid "Yellow Glowlight (thick) "
+#~ msgstr "Lampe jaune (épaisse)"
+
+#~ msgid "Yellow Glowlight (thick, on wall) "
+#~ msgstr "Lampe jaune (épaisse, sur le mur)"
+
+#~ msgid "Yellow Glowlight (thin) "
+#~ msgstr "Lampe jaune (fine)"
+
+#~ msgid "Yellow Glowlight (thin, on wall) "
+#~ msgstr "Lampe jaune (fine, sur le mur)"
+
+#~ msgid "Locked Cabinet "
+#~ msgstr "Meuble verrouillé"
+
+#~ msgid "Locked Nightstand "
+#~ msgstr "Table de chevet verrouillée"
+
+#~ msgid "Locked Fridge "
+#~ msgstr "Réfrégirateur verrouillé"
+
+#~ msgid "Locked Oven "
+#~ msgstr "Four verrouillé"
+
+#~ msgid "Mahogany Nightstand with One Drawer "
+#~ msgstr "Table de chevet en acajou avec un tiroir"
+
+#~ msgid "Mahogany Nightstand with Two Drawers "
+#~ msgstr "Table de chevet en acajou avec deux tiroirs"
+
+#~ msgid "%s moves stuff to nightstand at %s "
+#~ msgstr "%s déplace des objets vers une table de chevet à %s"
+
+#~ msgid "%s takes stuff from nightstand at %s "
+#~ msgstr "%s prend des objets d'une table de chevet à %s"
+
+#~ msgid "Oven active: %d%% "
+#~ msgstr "Four actif : %d%%"
+
+#~ msgid "Oven is empty "
+#~ msgstr "Four vide"
+
+#~ msgid "%s moves stuff in refrigerator at %s "
+#~ msgstr "%s déplace des objets dans un réfrégirateur à %s"
+
+#~ msgid "%s moves stuff to refrigerator at %s "
+#~ msgstr "%s déplace des objets vers un réfrégirateur à %s"
+
+#~ msgid "%s takes stuff from refrigerator at %s "
+#~ msgstr "%s prend des objets d'un réfrégirateur à %s"
+
+#~ msgid "Not enough vertical space to place a refrigerator! "
+#~ msgstr "Pas assez d'espace vertical pour placer un réfrégirateur !"
+
+#~ msgid "E: character map file not found "
+#~ msgstr "E: fichier de table de caractère non trouvé"
+
+#~ msgid "W: unknown symbol in '%s' at %d (probably %s) "
+#~ msgstr "A: symbole inconnu dans '%s' dans %d (probablement %s)"
diff --git a/homedecor/locale/it.po b/homedecor/locale/it.po
new file mode 100644
index 0000000..0b4a439
--- /dev/null
+++ b/homedecor/locale/it.po
@@ -0,0 +1,1512 @@
+# Italian translations for PACKAGE package.
+# Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-01-25 00:03-0300\n"
+"PO-Revision-Date: 2017-01-25 00:03-0300\n"
+"Last-Translator: Emon <?>\n"
+"Language-Team: Italian\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../computer/miscitems.lua:13 ../homedecor/crafts.lua:32
+#, fuzzy
+msgid "Plastic sheet"
+msgstr "Foglio di plastica"
+
+#: ../computer/miscitems.lua:18
+#, fuzzy
+msgid "Unprocessed Plastic base"
+msgstr "Base non lavorata di plastica"
+
+#: ../homedecor/bedroom.lua:7 ../homedecor/shutters.lua:13
+#: ../homedecor/misc-nodes.lua:69 ../homedecor/furniture.lua:36
+#, fuzzy
+msgid "black"
+msgstr "nero"
+
+#: ../homedecor/bedroom.lua:8 ../homedecor/books.lua:12
+msgid "brown"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:9 ../homedecor/window_treatments.lua:107
+#: ../homedecor/lighting.lua:400 ../homedecor/lighting.lua:498
+#: ../homedecor/books.lua:9 ../homedecor/furniture.lua:40
+#, fuzzy
+msgid "blue"
+msgstr "blu"
+
+#: ../homedecor/bedroom.lua:10
+msgid "cyan"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:11 ../homedecor/shutters.lua:14
+#, fuzzy
+msgid "dark grey"
+msgstr "verde scuro"
+
+#: ../homedecor/bedroom.lua:12 ../homedecor/furniture.lua:41
+#, fuzzy
+msgid "dark green"
+msgstr "verde scuro"
+
+#: ../homedecor/bedroom.lua:13 ../homedecor/window_treatments.lua:106
+#: ../homedecor/lighting.lua:401 ../homedecor/lighting.lua:498
+#: ../homedecor/exterior.lua:361 ../homedecor/misc-nodes.lua:69
+#: ../homedecor/books.lua:8
+#, fuzzy
+msgid "green"
+msgstr "verde"
+
+#: ../homedecor/bedroom.lua:14 ../homedecor/shutters.lua:15
+#: ../homedecor/books.lua:11
+msgid "grey"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:15
+msgid "magenta"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:16
+msgid "orange"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:17 ../homedecor/window_treatments.lua:109
+#: ../homedecor/lighting.lua:402 ../homedecor/furniture.lua:38
+#, fuzzy
+msgid "pink"
+msgstr "rosa"
+
+#: ../homedecor/bedroom.lua:18 ../homedecor/window_treatments.lua:105
+#: ../homedecor/lighting.lua:403 ../homedecor/lighting.lua:498
+#: ../homedecor/shutters.lua:8 ../homedecor/exterior.lua:362
+#: ../homedecor/books.lua:7 ../homedecor/furniture.lua:37
+#, fuzzy
+msgid "red"
+msgstr "rosso"
+
+#: ../homedecor/bedroom.lua:19 ../homedecor/window_treatments.lua:110
+#: ../homedecor/lighting.lua:404 ../homedecor/lighting.lua:498
+#: ../homedecor/shutters.lua:12 ../homedecor/books.lua:10
+#: ../homedecor/furniture.lua:39
+#, fuzzy
+msgid "violet"
+msgstr "viola"
+
+#: ../homedecor/bedroom.lua:20 ../homedecor/window_treatments.lua:108
+#: ../homedecor/lighting.lua:9 ../homedecor/lighting.lua:399
+#: ../homedecor/shutters.lua:16
+#, fuzzy
+msgid "white"
+msgstr "bianco"
+
+#: ../homedecor/bedroom.lua:21 ../homedecor/lighting.lua:9
+#: ../homedecor/shutters.lua:9 ../homedecor/exterior.lua:363
+msgid "yellow"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:70
+msgid "Bed (@1)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:131
+msgid "Bed (@1, king sized)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:159 ../homedecor/shutters.lua:7
+msgid "mahogany"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:159
+msgid "oak"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:161
+#, fuzzy
+msgid "Nightstand with One Drawer (@1)"
+msgstr "Comodino in quercia con un cassetto"
+
+#: ../homedecor/bedroom.lua:182
+#, fuzzy
+msgid "One-drawer Nightstand"
+msgstr "Comodino a singolo cassetto"
+
+#: ../homedecor/bedroom.lua:190
+#, fuzzy
+msgid "Nightstand with Two Drawers (@1)"
+msgstr "Comodino in quercia con due cassetti"
+
+#: ../homedecor/bedroom.lua:208
+#, fuzzy
+msgid "Two-drawer Nightstand"
+msgstr "Comodino a doppio cassetto"
+
+#: ../homedecor/kitchen_furniture.lua:10
+#: ../homedecor/kitchen_appliances.lua:240
+msgid "granite"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua:10
+#: ../homedecor/kitchen_appliances.lua:240
+msgid "marble"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua:10
+#: ../homedecor/kitchen_appliances.lua:240
+msgid "steel"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua:14 ../homedecor/kitchen_furniture.lua:32
+#: ../homedecor/kitchen_furniture.lua:55
+#, fuzzy
+msgid "Kitchen Cabinet"
+msgstr "Armadietto della cucina"
+
+#: ../homedecor/kitchen_furniture.lua:18
+#, fuzzy
+msgid "Kitchen Cabinet (@1 top)"
+msgstr "Armadietto della cucina"
+
+#: ../homedecor/kitchen_furniture.lua:42
+#, fuzzy
+msgid "Half-height Kitchen Cabinet (on ceiling)"
+msgstr "Armadietto della cucina di altezza dimezzata (sul soffitto)"
+
+#: ../homedecor/kitchen_furniture.lua:63
+#, fuzzy
+msgid "Kitchen Cabinet with sink"
+msgstr "Armadietto della cucina con il lavandino"
+
+#: ../homedecor/kitchen_furniture.lua:73
+#, fuzzy
+msgid "Under-sink cabinet"
+msgstr "Armadietto sotto il lavandino"
+
+#: ../homedecor/kitchen_furniture.lua:150
+msgid "Paper towels"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua:5
+#, fuzzy
+msgid "Bars"
+msgstr "Sbarre"
+
+#: ../homedecor/furniture_medieval.lua:27
+#, fuzzy
+msgid "Binding Bars"
+msgstr "Ceppi"
+
+#: ../homedecor/furniture_medieval.lua:51
+#, fuzzy
+msgid "Chains"
+msgstr "Catene"
+
+#: ../homedecor/furniture_medieval.lua:62
+#, fuzzy
+msgid "Wall Torch"
+msgstr "Torcia a muro"
+
+#: ../homedecor/furniture_medieval.lua:94
+#, fuzzy
+msgid "Wall Lamp"
+msgstr "Lampada da tavolo"
+
+#: ../homedecor/kitchen_appliances.lua:12
+#, fuzzy
+msgid "Refrigerator (stainless steel)"
+msgstr "Frigorifero"
+
+#: ../homedecor/kitchen_appliances.lua:18
+#: ../homedecor/kitchen_appliances.lua:31
+#: ../homedecor/kitchen_appliances.lua:37
+#, fuzzy
+msgid "Refrigerator"
+msgstr "Frigorifero"
+
+#: ../homedecor/kitchen_appliances.lua:60
+#, fuzzy
+msgid "Oven"
+msgstr "Forno"
+
+#: ../homedecor/kitchen_appliances.lua:68
+msgid "Oven (stainless steel)"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:76
+#, fuzzy
+msgid "Microwave Oven"
+msgstr "Forno a microonde"
+
+#: ../homedecor/kitchen_appliances.lua:117
+msgid "Coffee Maker"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:164
+msgid "Toaster"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:216
+msgid "Dishwasher"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:240 ../homedecor/roofing.lua:31
+#: ../homedecor/window_treatments.lua:167 ../homedecor/exterior.lua:193
+#: ../homedecor/misc-nodes.lua:440
+msgid "wood"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:244
+msgid "Dishwasher (@1)"
+msgstr ""
+
+#: ../homedecor/roofing.lua:7
+#, fuzzy
+msgid "Glass Skylight"
+msgstr "Lucernario di vetro"
+
+#: ../homedecor/roofing.lua:19
+#, fuzzy
+msgid "Glass Skylight Frosted"
+msgstr "Lucernario di vetro satinato"
+
+#: ../homedecor/roofing.lua:31
+msgid "asphalt"
+msgstr ""
+
+#: ../homedecor/roofing.lua:31 ../homedecor/misc-nodes.lua:69
+#, fuzzy
+msgid "terracotta"
+msgstr "Tegole di terracotta"
+
+#: ../homedecor/roofing.lua:33
+#, fuzzy
+msgid "Shingles (@1)"
+msgstr "Tegole in legno"
+
+#: ../homedecor/roofing.lua:87
+#, fuzzy
+msgid "@1 (outer corner)"
+msgstr "Tegole in legno (angolo esterno)"
+
+#: ../homedecor/roofing.lua:109
+#, fuzzy
+msgid "@1 (inner corner)"
+msgstr "Tegole in legno (angolo interno)"
+
+#: ../homedecor/roofing.lua:265 ../homedecor/roofing.lua:286
+#, fuzzy
+msgid "Wood Shingles"
+msgstr "Tegole in legno"
+
+#: ../homedecor/roofing.lua:271 ../homedecor/roofing.lua:293
+#, fuzzy
+msgid "Asphalt Shingles"
+msgstr "Mattonelle di asfalto"
+
+#: ../homedecor/roofing.lua:277 ../homedecor/roofing.lua:300
+#, fuzzy
+msgid "Terracotta Shingles"
+msgstr "Tegole di terracotta"
+
+#: ../homedecor/roofing.lua:307
+#, fuzzy
+msgid "Glass Shingles"
+msgstr "Mattonelle di asfalto"
+
+#: ../homedecor/roofing.lua:312
+msgid "Chimney"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:7
+msgid "Window (quartered)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:38
+msgid "Window (plain)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:72
+#, fuzzy
+msgid "Window Blinds (thick)"
+msgstr "Luce fosforescente bianca (spessa)"
+
+#: ../homedecor/window_treatments.lua:91
+#, fuzzy
+msgid "Window Blinds (thin)"
+msgstr "Luce fosforescente bianca (sottile)"
+
+#: ../homedecor/window_treatments.lua:117
+#: ../homedecor/window_treatments.lua:140
+#, fuzzy
+msgid "Curtains (@1)"
+msgstr "Tende (%s)"
+
+#: ../homedecor/window_treatments.lua:165 ../homedecor/fences.lua:22
+#: ../homedecor/misc-nodes.lua:458 ../homedecor/tables.lua:166
+msgid "brass"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:166 ../homedecor/fences.lua:23
+#: ../homedecor/misc-nodes.lua:467 ../homedecor/tables.lua:167
+#, fuzzy
+msgid "wrought iron"
+msgstr "Palo di ferro battuto"
+
+#: ../homedecor/window_treatments.lua:175
+#, fuzzy
+msgid "Curtain Rod (@1)"
+msgstr "Tende (%s)"
+
+#: ../homedecor/window_treatments.lua:189
+msgid "Window flowerbox"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:209
+msgid "Stained Glass"
+msgstr ""
+
+#: ../homedecor/crafts.lua:10
+#, fuzzy
+msgid "Uncooked Terracotta Base"
+msgstr "Base cruda di terracotta"
+
+#: ../homedecor/crafts.lua:15
+#, fuzzy
+msgid "Terracotta Roof Tile"
+msgstr "Tegole di terracotta"
+
+#: ../homedecor/crafts.lua:20
+msgid "Oil extract"
+msgstr ""
+
+#: ../homedecor/crafts.lua:25
+#, fuzzy
+msgid "Unprocessed paraffin"
+msgstr "Base non lavorata di plastica"
+
+#: ../homedecor/crafts.lua:37
+#, fuzzy
+msgid "Plastic strips"
+msgstr "Foglio di plastica"
+
+#: ../homedecor/crafts.lua:42
+#, fuzzy
+msgid "Small Wooden Drawer"
+msgstr "Bauletto in legno"
+
+#: ../homedecor/crafts.lua:47
+#, fuzzy
+msgid "Simple Integrated Circuit"
+msgstr "Circuito integrato semplice"
+
+#: ../homedecor/crafts.lua:52
+msgid "Heating element"
+msgstr ""
+
+#: ../homedecor/crafts.lua:57
+msgid "Motor"
+msgstr ""
+
+#: ../homedecor/crafts.lua:62
+msgid "Power Crystal"
+msgstr ""
+
+#: ../homedecor/crafts.lua:67
+msgid "Blank Canvas"
+msgstr ""
+
+#: ../homedecor/crafts.lua:72
+msgid "VCR"
+msgstr ""
+
+#: ../homedecor/crafts.lua:77
+msgid "DVD Player"
+msgstr ""
+
+#: ../homedecor/crafts.lua:82
+msgid "Spool of copper wire"
+msgstr ""
+
+#: ../homedecor/crafts.lua:87
+msgid "Spool of steel wire"
+msgstr ""
+
+#: ../homedecor/crafts.lua:92
+msgid "Speaker driver"
+msgstr ""
+
+#: ../homedecor/crafts.lua:97
+msgid "Fan blades"
+msgstr ""
+
+#: ../homedecor/crafts.lua:102
+msgid "Copper Strip"
+msgstr ""
+
+#: ../homedecor/crafts.lua:107
+msgid "Steel Strip"
+msgstr ""
+
+#: ../homedecor/crafts.lua:112
+msgid "Steel chainlink"
+msgstr ""
+
+#: ../homedecor/crafts.lua:117
+#, fuzzy
+msgid "Brass chainlink"
+msgstr "Recinzione di ottone/ringhiera"
+
+#: ../homedecor/crafts.lua:122
+msgid "Soda Can"
+msgstr ""
+
+#: ../homedecor/crafts.lua:128
+msgid "Gold Coin (for soda vending machine)"
+msgstr ""
+
+#: ../homedecor/crafts.lua:137
+#, fuzzy
+msgid "Silicon lump"
+msgstr "Grumo di silicone"
+
+#: ../homedecor/crafts.lua:154
+#, fuzzy
+msgid "Brass Ingot"
+msgstr "Lingotto di ottone"
+
+#: ../homedecor/crafts.lua:3330
+#, fuzzy
+msgid "Small Flower Pot"
+msgstr "Vaso per fiori di plastica nera"
+
+#: ../homedecor/electronics.lua:6
+#, fuzzy
+msgid "Large Stereo Speaker"
+msgstr "Altoparlante stereo grande"
+
+#: ../homedecor/electronics.lua:20
+#, fuzzy
+msgid "Large Stereo Speaker, open front"
+msgstr "Altoparlante stereo grande"
+
+#: ../homedecor/electronics.lua:41
+#, fuzzy
+msgid "Small Surround Speaker"
+msgstr "Altoparlante audio surround piccolo"
+
+#: ../homedecor/electronics.lua:54
+#, fuzzy
+msgid "Stereo Receiver"
+msgstr "Ricevitore stereo"
+
+#: ../homedecor/electronics.lua:66
+#, fuzzy
+msgid "Projection Screen Material"
+msgstr "Materiale per lo schermo di proiezione"
+
+#: ../homedecor/electronics.lua:82
+#, fuzzy
+msgid "Small CRT Television"
+msgstr "Piccola televisione a tubo catodico"
+
+#: ../homedecor/electronics.lua:103
+msgid "DVD and VCR"
+msgstr ""
+
+#: ../homedecor/electronics.lua:138
+msgid "Telephone"
+msgstr ""
+
+#: ../homedecor/lighting.lua:73
+#, fuzzy
+msgid "Thick Glowlight (@1)"
+msgstr "Luce fosforescente bianca (sottile)"
+
+#: ../homedecor/lighting.lua:91
+#, fuzzy
+msgid "Thin Glowlight (@1)"
+msgstr "Luce fosforescente bianca (sottile)"
+
+#: ../homedecor/lighting.lua:111
+#, fuzzy
+msgid "Small Glowlight Cube (@1)"
+msgstr "Luce fosforescente gialla (cubo piccolo)"
+
+#: ../homedecor/lighting.lua:131
+msgid "Plasma Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua:151
+msgid "Plasma Ball"
+msgstr ""
+
+#: ../homedecor/lighting.lua:182
+msgid "Thick Candle"
+msgstr ""
+
+#: ../homedecor/lighting.lua:203
+msgid "Thin Candle"
+msgstr ""
+
+#: ../homedecor/lighting.lua:224
+msgid "Candlestick (wrought iron)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:239
+msgid "Candlestick (brass)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:254
+#, fuzzy
+msgid "Wall sconce"
+msgstr "Torcia a muro"
+
+#: ../homedecor/lighting.lua:280
+msgid "Oil lamp (hurricane)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:300
+msgid "Oil Lamp (tabletop)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:319
+msgid "Ground Lantern"
+msgstr ""
+
+#: ../homedecor/lighting.lua:337
+msgid "Hanging Lantern"
+msgstr ""
+
+#: ../homedecor/lighting.lua:368
+msgid "Lattice lantern (large)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:376
+msgid "Lattice lantern (small)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:426
+#, fuzzy
+msgid "Table Lamp (@1)"
+msgstr "Lampada da tavolo"
+
+#: ../homedecor/lighting.lua:452
+msgid "Standing Lamp (@1)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:502
+msgid "Desk Lamp (@1)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:518
+msgid "Ceiling Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua:536
+msgid "Ceiling Lamp (off)"
+msgstr ""
+
+#: ../homedecor/fences.lua:31
+#, fuzzy
+msgid "Fence/railing (@1)"
+msgstr "Recinzione di ottone/ringhiera"
+
+#: ../homedecor/fences.lua:43
+#, fuzzy
+msgid "Fence/railing with sign (@1)"
+msgstr "Recinzione di ottone/ringhiera con cartello"
+
+#: ../homedecor/fences.lua:71
+#, fuzzy
+msgid "Unpainted Picket Fence"
+msgstr "Recinzione non verniciata di paletti"
+
+#: ../homedecor/fences.lua:87
+#, fuzzy
+msgid "Unpainted Picket Fence Corner"
+msgstr "Angolo della recinzione non verniciata di paletti"
+
+#: ../homedecor/fences.lua:103
+#, fuzzy
+msgid "White Picket Fence"
+msgstr "Recinzione di paletti bianca"
+
+#: ../homedecor/fences.lua:119
+#, fuzzy
+msgid "White Picket Fence Corner"
+msgstr "Angolo della recinzione di paletti bianca"
+
+#: ../homedecor/fences.lua:135
+#, fuzzy
+msgid "Wooden Privacy Fence"
+msgstr "Recinzione di isolamento in legno"
+
+#: ../homedecor/fences.lua:159
+#, fuzzy
+msgid "Wooden Privacy Fence Corner"
+msgstr "Angolo della recinzione di isolamento in legno"
+
+#: ../homedecor/fences.lua:194
+#, fuzzy
+msgid "Barbed Wire Fence"
+msgstr "Recinzione di filo spinato"
+
+#: ../homedecor/fences.lua:204
+#, fuzzy
+msgid "Barbed Wire Fence Corner"
+msgstr "Angolo della recinzione di filo spinato"
+
+#: ../homedecor/fences.lua:214
+#, fuzzy
+msgid "Chainlink Fence"
+msgstr "Rete metallica"
+
+#: ../homedecor/fences.lua:232
+#, fuzzy
+msgid "Chainlink Fence Corner"
+msgstr "Angolo della rete metallica"
+
+#: ../homedecor/fences.lua:249
+#, fuzzy
+msgid "Wrought Iron fence (type 2)"
+msgstr "Recinzione/ringhiera in ferro battuto"
+
+#: ../homedecor/fences.lua:276
+#, fuzzy
+msgid "Wrought Iron fence (type 2) Corner"
+msgstr "Recinzione/ringhiera in ferro battuto"
+
+#: ../homedecor/shutters.lua:6
+msgid "unpainted oak"
+msgstr ""
+
+#: ../homedecor/shutters.lua:10
+msgid "forest green"
+msgstr ""
+
+#: ../homedecor/shutters.lua:11
+#, fuzzy
+msgid "light blue"
+msgstr "destra"
+
+#: ../homedecor/shutters.lua:35
+#, fuzzy
+msgid "Wooden Shutter (@1)"
+msgstr "Persiana in legno (rossa)"
+
+#: ../homedecor/exterior.lua:12
+msgid "Barbecue"
+msgstr ""
+
+#: ../homedecor/exterior.lua:56
+msgid "Garden Bench (style 1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua:83
+msgid "Garden Bench (style 2)"
+msgstr ""
+
+#: ../homedecor/exterior.lua:106 ../homedecor/exterior.lua:121
+#, fuzzy
+msgid "Deck Chair"
+msgstr "Sedia"
+
+#: ../homedecor/exterior.lua:137
+msgid "Doghouse"
+msgstr ""
+
+#: ../homedecor/exterior.lua:152
+msgid "Simple Bench"
+msgstr ""
+
+#: ../homedecor/exterior.lua:166
+msgid "Garden stone path"
+msgstr ""
+
+#: ../homedecor/exterior.lua:194
+#, fuzzy
+msgid "white wood"
+msgstr "bianco"
+
+#: ../homedecor/exterior.lua:195
+msgid "wood, with vegetation"
+msgstr ""
+
+#: ../homedecor/exterior.lua:197
+msgid "white wood, with vegetation"
+msgstr ""
+
+#: ../homedecor/exterior.lua:204
+msgid "Garden Lattice (@1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua:227
+msgid "Tree's swing"
+msgstr ""
+
+#: ../homedecor/exterior.lua:329
+msgid "Water well"
+msgstr ""
+
+#: ../homedecor/exterior.lua:370 ../homedecor/exterior.lua:381
+msgid "Shrubbery (@1)"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:17
+#, fuzzy
+msgid "Toilet"
+msgstr "Water"
+
+#: ../homedecor/bathroom_sanitation.lua:68
+#, fuzzy
+msgid "Toilet paper"
+msgstr "Water"
+
+#: ../homedecor/bathroom_sanitation.lua:89
+msgid "Bathroom Sink"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:137
+msgid "Bathroom taps/faucet"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:160
+msgid "Bathroom taps/faucet (brass)"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:185
+#, fuzzy
+msgid "Shower Tray"
+msgstr "Piatto della doccia"
+
+#: ../homedecor/bathroom_sanitation.lua:225
+#, fuzzy
+msgid "Shower Head"
+msgstr "Pigna della doccia"
+
+#: ../homedecor/bathroom_sanitation.lua:265
+msgid "Bathroom sundries set"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:6
+#, fuzzy
+msgid "Air Conditioner"
+msgstr "Condizionatore dell'aria"
+
+#: ../homedecor/climate-control.lua:44
+msgid "Desk Fan"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:83
+msgid "Ceiling Fan"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:107
+msgid "Space heater"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:139
+msgid "Radiator heater"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:124
+#, fuzzy
+msgid "Mahogany Closet Door (@1 opening)"
+msgstr "Porta dell'armadio in mogano"
+
+#: ../homedecor/doors_and_gates.lua:129
+#, fuzzy
+msgid "Oak Closet Door (@1 opening)"
+msgstr "Porta dell'armadio in quercia"
+
+#: ../homedecor/doors_and_gates.lua:134
+#, fuzzy
+msgid "Fancy Wood/Glass Door (@1 opening)"
+msgstr "Porta decorativa in vetro e legno"
+
+#: ../homedecor/doors_and_gates.lua:144
+#, fuzzy
+msgid "Glass Office Door (@1 opening)"
+msgstr "Porta dell'ufficio in vetro"
+
+#: ../homedecor/doors_and_gates.lua:149
+#, fuzzy
+msgid "Glass and Wood, Oak-colored (@1 opening)"
+msgstr "Vetro e legno, color quercia"
+
+#: ../homedecor/doors_and_gates.lua:158
+#, fuzzy
+msgid "Glass and Wood, Mahogany-colored (@1 opening)"
+msgstr "Vetro e legno, color mogano"
+
+#: ../homedecor/doors_and_gates.lua:167
+#, fuzzy
+msgid "Glass and Wood, White (@1 opening)"
+msgstr "Vetro e legno, bianca"
+
+#: ../homedecor/doors_and_gates.lua:176
+#, fuzzy
+msgid "Plain Wooden Door (@1 opening)"
+msgstr "Porta in legno semplice"
+
+#: ../homedecor/doors_and_gates.lua:181
+msgid "White Bedroom Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:186
+#, fuzzy
+msgid "Wrought Iron Gate/Door (@1 opening)"
+msgstr "Recinzione/ringhiera in ferro battuto"
+
+#: ../homedecor/doors_and_gates.lua:191
+msgid "Wooden door with glass insert (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:201
+msgid "Wooden door with glass insert, type 2 (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:212
+#, fuzzy
+msgid "left"
+msgstr "sinistra"
+
+#: ../homedecor/doors_and_gates.lua:212
+#, fuzzy
+msgid "right"
+msgstr "destra"
+
+#: ../homedecor/doors_and_gates.lua:296
+#, fuzzy
+msgid "Unpainted Picket Fence Gate"
+msgstr "Cancello della recinzione non verniciata di paletti"
+
+#: ../homedecor/doors_and_gates.lua:297
+#, fuzzy
+msgid "White Picket Fence Gate"
+msgstr "Cancello della recinzione di paletti bianca"
+
+#: ../homedecor/doors_and_gates.lua:298
+#, fuzzy
+msgid "Barbed Wire Fence Gate"
+msgstr "Cancello della recinzione di filo spinato"
+
+#: ../homedecor/doors_and_gates.lua:299
+#, fuzzy
+msgid "Chainlink Fence Gate"
+msgstr "Cancello della rete metallica"
+
+#: ../homedecor/doors_and_gates.lua:526
+msgid "Japanese wall (top)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:542
+msgid "Japanese wall"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:558
+msgid "Japanese wall (bottom)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:582
+msgid "Japanese tatami"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:595
+msgid "Japanese-style door"
+msgstr ""
+
+#: ../homedecor/init.lua:133
+#, fuzzy
+msgid "Loaded!"
+msgstr "Caricato!"
+
+#: ../homedecor/misc-nodes.lua:7
+#, fuzzy
+msgid "Textured Ceiling Paint"
+msgstr "Vernice con trama per il soffitto"
+
+#: ../homedecor/misc-nodes.lua:19
+#, fuzzy
+msgid "Drop-Ceiling Tile"
+msgstr "Piastrella del controsoffitto"
+
+#: ../homedecor/misc-nodes.lua:31
+msgid "small"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:32
+msgid "large"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:33
+msgid "persian"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:57
+msgid "Rug (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:73
+msgid "Flower Pot (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:85
+msgid "Rose"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:86
+msgid "Tulip"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:87
+msgid "Yellow Dandelion"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:88
+msgid "White Dandelion"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:89
+msgid "Blue Geranium"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:90
+#, fuzzy
+msgid "Viola"
+msgstr "viola"
+
+#: ../homedecor/misc-nodes.lua:91
+msgid "Cactus"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:92
+msgid "Bonsai"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:99
+msgid "Potted flower (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:127
+#, fuzzy
+msgid "Brass Pole"
+msgstr "Palo di ottone"
+
+#: ../homedecor/misc-nodes.lua:145
+#, fuzzy
+msgid "Wrought Iron Pole"
+msgstr "Palo di ferro battuto"
+
+#: ../homedecor/misc-nodes.lua:167
+msgid "Fishtank"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:189
+msgid "Fishtank (lighted)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:213
+msgid "Cardboard box (big)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:220 ../homedecor/misc-nodes.lua:227
+#: ../homedecor/misc-nodes.lua:240
+msgid "Cardboard box"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:247
+msgid "DVD/CD cabinet"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:273
+#, fuzzy
+msgid "Pool Table"
+msgstr "Tavolo"
+
+#: ../homedecor/misc-nodes.lua:298
+msgid "Piano"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:316
+msgid "Trophy"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:334
+msgid "Sport bench"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:359
+msgid "Skateboard"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:368
+msgid "Metal tool cabinet and work table"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:399
+msgid "Picture Frame"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:424
+msgid "Decorative painting #@1"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:449
+msgid "dark topped"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:479
+msgid "diagonal"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:479
+msgid "horizontal"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:503
+msgid "Banister for Stairs (@1, @2)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:576
+msgid "not enough space"
+msgstr ""
+
+#: ../homedecor/tables.lua:7
+msgid "Small square glass table"
+msgstr ""
+
+#: ../homedecor/tables.lua:8
+#, fuzzy
+msgid "Small round glass table"
+msgstr "Altoparlante audio surround piccolo"
+
+#: ../homedecor/tables.lua:9
+msgid "Large glass table piece"
+msgstr ""
+
+#: ../homedecor/tables.lua:12
+#, fuzzy
+msgid "Small square wooden table"
+msgstr "Bauletto in legno"
+
+#: ../homedecor/tables.lua:13
+#, fuzzy
+msgid "Small round wooden table"
+msgstr "Altoparlante audio surround piccolo"
+
+#: ../homedecor/tables.lua:14
+msgid "Large wooden table piece"
+msgstr ""
+
+#: ../homedecor/tables.lua:134
+#, fuzzy
+msgid "Utility Table"
+msgstr "Tavolo di lavoro"
+
+#: ../homedecor/tables.lua:173
+#, fuzzy
+msgid "Table Legs (@1)"
+msgstr "Gambe in ottone del tavolo"
+
+#: ../homedecor/tables.lua:189
+#, fuzzy
+msgid "Legs for Utility Table"
+msgstr "Gambe per il tavolo da lavoro"
+
+#: ../homedecor/books.lua:45
+msgid "Writable Book (@1)"
+msgstr ""
+
+#: ../homedecor/books.lua:173
+msgid "@1 has written in a book (title: \"@2\"): \"@3\" at location @4"
+msgstr ""
+
+#: ../homedecor/furniture.lua:4
+#, fuzzy
+msgid "Table"
+msgstr "Tavolo"
+
+#: ../homedecor/furniture.lua:5
+#, fuzzy
+msgid "Mahogany Table"
+msgstr "Porta dell'armadio in mogano"
+
+#: ../homedecor/furniture.lua:6
+#, fuzzy
+msgid "White Table"
+msgstr "Tavolo di lavoro"
+
+#: ../homedecor/furniture.lua:35
+msgid "plain"
+msgstr ""
+
+#: ../homedecor/furniture.lua:77
+#, fuzzy
+msgid "Kitchen chair (@1)"
+msgstr "Armadietto della cucina"
+
+#: ../homedecor/furniture.lua:93
+#, fuzzy
+msgid "Armchair (@1)"
+msgstr "Poltrona (%s)"
+
+#: ../homedecor/furniture.lua:122
+msgid "Bookshelf (open-frame)"
+msgstr ""
+
+#: ../homedecor/furniture.lua:138
+msgid "Wall Shelf"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua:87
+#, fuzzy
+msgid "@1 moves stuff in @2 at @3"
+msgstr "%s sposta delle cose nel comodino alla posizione %s"
+
+#: ../homedecor/handlers/inventory.lua:92
+msgid "@1 moves @2 to @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua:97
+msgid "@1 takes @2 from @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua:110
+#, fuzzy
+msgid "@1 (owned by @2)"
+msgstr "%s (di proprietà di %s)"
+
+#: ../homedecor/handlers/inventory.lua:127
+#: ../homedecor/handlers/inventory.lua:145
+#: ../homedecor/handlers/inventory.lua:163
+#, fuzzy
+msgid "@1 tried to access a @2 belonging to @3 at @4"
+msgstr "%s ha provato ad accedere a %s di proprietà di %s alla posizione %s"
+
+#: ../homedecor/handlers/inventory.lua:173
+#, fuzzy
+msgid "@1 (Locked)"
+msgstr "%s (Con lucchetto)"
+
+#: ../homedecor/handlers/furnaces.lua:91
+msgid "Furnace"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua:109
+#: ../homedecor/handlers/furnaces.lua:128
+#: ../homedecor/handlers/furnaces.lua:262
+msgid "@1 (empty)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua:154
+msgid "@1 (active)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua:234
+msgid "@1 (active: @2%)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua:254
+#, fuzzy
+msgid "@1 (out of fuel)"
+msgstr "Senza combustibile"
+
+#: ../homedecor/handlers/furnaces.lua:270
+#, fuzzy
+msgid "@1 (output bins are full)"
+msgstr "i contenitori sono pieni"
+
+#: ../homedecor/office.lua:4 ../homedecor/office.lua:13
+#, fuzzy
+msgid "Filing cabinet"
+msgstr "Armadietto sotto il lavandino"
+
+#: ../homedecor/bathroom_furniture.lua:5
+#, fuzzy
+msgid "white/grey"
+msgstr "bianco"
+
+#: ../homedecor/bathroom_furniture.lua:6
+msgid "white/dark grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:7
+msgid "white/black"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:8
+msgid "black/dark grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:9
+#, fuzzy
+msgid "white/red"
+msgstr "bianco"
+
+#: ../homedecor/bathroom_furniture.lua:10
+msgid "white/green"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:11
+#, fuzzy
+msgid "white/blue"
+msgstr "bianco"
+
+#: ../homedecor/bathroom_furniture.lua:12
+msgid "white/yellow"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:13
+#, fuzzy
+msgid "white/tan"
+msgstr "bianco"
+
+#: ../homedecor/bathroom_furniture.lua:27
+msgid "Bathroom/kitchen tiles (@1)"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:48
+msgid "Towel rod with towel"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:62
+#: ../homedecor/bathroom_furniture.lua:80
+#, fuzzy
+msgid "Medicine cabinet"
+msgstr "Armadietto sotto il lavandino"
+
+#~ msgid "%s moves stuff in kitchen cabinet at %s "
+#~ msgstr "%s sposta delle cose nell'armadietto della cucina a %s"
+
+#~ msgid "%s moves stuff to kitchen cabinet at %s "
+#~ msgstr "%s mette delle cose nell'armadietto della cucina a %s"
+
+#~ msgid "%s takes stuff from kitchen cabinet at %s "
+#~ msgstr "%s prende delle cose nell'armadietto della cucina a %s"
+
+#~ msgid "(Top Half, %s-opening) "
+#~ msgstr "(Metà superiore, apertura a %s)"
+
+#~ msgid "(%s-opening) "
+#~ msgstr "(apertura a %s)"
+
+#~ msgid "Not enough space above that spot to place a door! "
+#~ msgstr "Non c'è abbastanza spazio sopra quel punto per mettere una porta!"
+
+#~ msgid "Bucket of white paint "
+#~ msgstr "Secchio di vernice bianca"
+
+#~ msgid "Legs for Small Utility table "
+#~ msgstr "Gambe per il tavolo da lavoro piccolo"
+
+#~ msgid "Titanium Dioxide "
+#~ msgstr "Biossido di titanio"
+
+#~ msgid "Wrought Iron Fence/railing with sign "
+#~ msgstr "Recinzione/ringhiera in ferro battuto con cartello"
+
+#~ msgid "want to simply place the wielded item like usual. "
+#~ msgstr "vuole mettere l'oggetto impugnato come sempre."
+
+#~ msgid "Red "
+#~ msgstr "rosso"
+
+#~ msgid "Pink "
+#~ msgstr "rosa"
+
+#~ msgid "Blue "
+#~ msgstr "blu"
+
+#~ msgid "Sink "
+#~ msgstr "Lavandino"
+
+#~ msgid "Taps "
+#~ msgstr "Rubinetti"
+
+#~ msgid "Asphalt Shingles (outer corner) "
+#~ msgstr "Mattonelle di asfalto (angolo esterno)"
+
+#~ msgid "Asphalt Shingles (inner corner) "
+#~ msgstr "Mattonelle di asfalto (angolo interno)"
+
+#~ msgid "Wrought Iron Table Legs "
+#~ msgstr "Gambe in ferro battuto del tavolo"
+
+#~ msgid "Glass Table (Small, Round) "
+#~ msgstr "Tavolo di vetro (piccolo, rotondo)"
+
+#~ msgid "Glass Table (Small, Square) "
+#~ msgstr "Tavolo di vetro (piccolo, quadrato)"
+
+#~ msgid "Glass Table Piece (large) "
+#~ msgstr "Pezzo di tavolo di vetro (grande)"
+
+#~ msgid "Green Plastic Flower Pot "
+#~ msgstr "Vaso per fiori di plastica verde"
+
+#~ msgid "Large Area Rug "
+#~ msgstr "Tappeto per aree grandi"
+
+#~ msgid "Small Throw Rug "
+#~ msgstr "Tappetino"
+
+#~ msgid "Terracotta Flower Pot "
+#~ msgstr "Vaso per fiori in terracotta"
+
+#~ msgid "Terracotta Shingles (outer corner) "
+#~ msgstr "Tegole di terracotta (angolo esterno)"
+
+#~ msgid "Terracotta Shingles (inner corner) "
+#~ msgstr "Tegole di terracotta (angolo interno)"
+
+#~ msgid "Utility table mk2 "
+#~ msgstr "Tavolo di lavoro mk2"
+
+#~ msgid "Wooden Shutter (Black) "
+#~ msgstr "Persiana in legno (nera)"
+
+#~ msgid "Wooden Shutter (Dark grey) "
+#~ msgstr "Persiana in legno (grigia scura)"
+
+#~ msgid "Wooden Shutter (Forest green) "
+#~ msgstr "Persiana in legno (verde foresta)"
+
+#~ msgid "Wooden Shutter (Grey) "
+#~ msgstr "Persiana in legno (grigia)"
+
+#~ msgid "Wooden Shutter (Light blue) "
+#~ msgstr "Persiana in legno (blu chiaro)"
+
+#~ msgid "Wooden Shutter (Violet) "
+#~ msgstr "Persiana in legno (viola)"
+
+#~ msgid "Wooden Shutter (Mahogany) "
+#~ msgstr "Persiana in legno (mogano)"
+
+#~ msgid "Wooden Shutter (Unpainted oak) "
+#~ msgstr "Persiana in legno (quercia non verniciata)"
+
+#~ msgid "Wooden Shutter (White) "
+#~ msgstr "Persiana in legno (bianca)"
+
+#~ msgid "Wooden Shutter (Yellow) "
+#~ msgstr "Persiana in legno (gialla)"
+
+#~ msgid "Wood Table Piece (large)"
+#~ msgstr "Pezzo di tavolo in legno (grande)"
+
+#~ msgid "Wood Table (Small, Round) "
+#~ msgstr "Tavolo in legno (piccolo, rotondo)"
+
+#~ msgid "Wood Table (Small, Square) "
+#~ msgstr "Tavolo in legno (piccolo, quadrato)"
+
+#~ msgid "someone "
+#~ msgstr "qualcuno"
+
+#~ msgid "Sorry, %s owns that spot. "
+#~ msgstr "Spiacente, quel punto è di proprietà di %s."
+
+#~ msgid "White Glowlight (small cube) "
+#~ msgstr "Luce fosforescente bianca (cubo piccolo)"
+
+#~ msgid "White Glowlight (small cube, on ceiling) "
+#~ msgstr "Luce fosforescente bianca (cubo piccolo, sul soffitto)"
+
+#~ msgid "White Glowlight (thick, on wall) "
+#~ msgstr "Luce fosforescente bianca (spessa, a muro)"
+
+#~ msgid "White Glowlight (thin, on wall) "
+#~ msgstr "Luce fosforescente bianca (sottile, a muro)"
+
+#~ msgid "Yellow Glowlight (small cube, on ceiling) "
+#~ msgstr "Luce fosforescente gialla (cubo piccolo, sul soffitto)"
+
+#~ msgid "Yellow Glowlight (thick) "
+#~ msgstr "Luce fosforescente gialla (spessa)"
+
+#~ msgid "Yellow Glowlight (thick, on wall) "
+#~ msgstr "Luce fosforescente gialla (spessa, a muro)"
+
+#~ msgid "Yellow Glowlight (thin) "
+#~ msgstr "Luce fosforescente gialla (sottile)"
+
+#~ msgid "Yellow Glowlight (thin, on wall) "
+#~ msgstr "Luce fosforescente gialla (sottile, a muro)"
+
+#~ msgid "Locked Fridge "
+#~ msgstr "Frigorifero con lucchetto"
+
+#~ msgid "Locked Cabinet "
+#~ msgstr "Armadietto con lucchetto"
+
+#~ msgid "Locked Nightstand "
+#~ msgstr "Comodino con lucchetto"
+
+#~ msgid "Locked Oven "
+#~ msgstr "Forno con lucchetto"
+
+#~ msgid "Locked Oven (active) "
+#~ msgstr "Forno con lucchetto (attivo)"
+
+#~ msgid "Locked Microwave Oven "
+#~ msgstr "Forno a microonde con lucchetto"
+
+#~ msgid "Locked Microwave Oven (active) "
+#~ msgstr "Forno a microonde con lucchetto (attivo)"
+
+#~ msgid "Mahogany Nightstand with One Drawer "
+#~ msgstr "Comodino in mogano con un cassetto"
+
+#~ msgid "Mahogany Nightstand with Two Drawers "
+#~ msgstr "Comodino in mogano con due cassetti"
+
+#~ msgid "%s moves stuff to nightstand at %s "
+#~ msgstr "%s mette delle cose nel comodino alla posizione %s"
+
+#~ msgid "%s takes stuff from nightstand at %s "
+#~ msgstr "%s prende delle cose nel comodino alla posizione %s"
+
+#~ msgid "%s is empty "
+#~ msgstr "%s è vuoto"
+
+#~ msgid "%s moves stuff in refrigerator at %s "
+#~ msgstr "%s sposta delle cose nel frigorifero alla posizione %s"
+
+#~ msgid "%s moves stuff to refrigerator at %s "
+#~ msgstr "%s mette delle cose nel comodino alla posizione %s"
+
+#~ msgid "%s takes stuff from refrigerator at %s "
+#~ msgstr "%s prende delle cose nel comodino alla posizione %s"
+
+#~ msgid "Not enough vertical space to place a refrigerator! "
+#~ msgstr "Non c'è abbastanza spazio verticale per mettere un frigorifero!"
+
+#~ msgid "%s wrote \"%s\" to sign at %s "
+#~ msgstr "%s ha scritto \"%s\" sul cartello alla posizione %s"
+
+#~ msgid "Reading cached character database. "
+#~ msgstr "Lettura della banca dati dei caratteri nella cache."
+
+#~ msgid "Font seems to have changed. Rebuilding cache. "
+#~ msgstr "Sembra che i caratteri siano cambiati. Ricostruzione della cache."
+
+#~ msgid "Could not find font line height in cached DB. Trying brute force. "
+#~ msgstr ""
+#~ "Non è stato possibile trovare l'altezza della riga del carattere nella "
+#~ "banca dati nella cache."
+
+#~ msgid "Registered %s and %s "
+#~ msgstr "Registrato %s e %s"
+
+#~ msgid "signs loaded "
+#~ msgstr "cartelli caricati"
diff --git a/homedecor/locale/ms.po b/homedecor/locale/ms.po
new file mode 100644
index 0000000..bcdc5e4
--- /dev/null
+++ b/homedecor/locale/ms.po
@@ -0,0 +1,1512 @@
+# Malay translations for PACKAGE package.
+# Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-01-25 00:03-0300\n"
+"PO-Revision-Date: 2017-01-25 00:03-0300\n"
+"Last-Translator: muhdnurhidayat <MuhdNurHidayat@users.noreply.github.com>\n"
+"Language-Team: Malay\n"
+"Language: ms\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../computer/miscitems.lua:13 ../homedecor/crafts.lua:32
+#, fuzzy
+msgid "Plastic sheet"
+msgstr "Kepingan Plastik"
+
+#: ../computer/miscitems.lua:18
+#, fuzzy
+msgid "Unprocessed Plastic base"
+msgstr "Bes Plastik Belum Diproses"
+
+#: ../homedecor/bedroom.lua:7 ../homedecor/shutters.lua:13
+#: ../homedecor/misc-nodes.lua:69 ../homedecor/furniture.lua:36
+#, fuzzy
+msgid "black"
+msgstr "Hitam"
+
+#: ../homedecor/bedroom.lua:8 ../homedecor/books.lua:12
+msgid "brown"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:9 ../homedecor/window_treatments.lua:107
+#: ../homedecor/lighting.lua:400 ../homedecor/lighting.lua:498
+#: ../homedecor/books.lua:9 ../homedecor/furniture.lua:40
+#, fuzzy
+msgid "blue"
+msgstr "biru"
+
+#: ../homedecor/bedroom.lua:10
+msgid "cyan"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:11 ../homedecor/shutters.lua:14
+#, fuzzy
+msgid "dark grey"
+msgstr "Hijau Gelap"
+
+#: ../homedecor/bedroom.lua:12 ../homedecor/furniture.lua:41
+#, fuzzy
+msgid "dark green"
+msgstr "Hijau Gelap"
+
+#: ../homedecor/bedroom.lua:13 ../homedecor/window_treatments.lua:106
+#: ../homedecor/lighting.lua:401 ../homedecor/lighting.lua:498
+#: ../homedecor/exterior.lua:361 ../homedecor/misc-nodes.lua:69
+#: ../homedecor/books.lua:8
+#, fuzzy
+msgid "green"
+msgstr "hijau"
+
+#: ../homedecor/bedroom.lua:14 ../homedecor/shutters.lua:15
+#: ../homedecor/books.lua:11
+msgid "grey"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:15
+msgid "magenta"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:16
+msgid "orange"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:17 ../homedecor/window_treatments.lua:109
+#: ../homedecor/lighting.lua:402 ../homedecor/furniture.lua:38
+#, fuzzy
+msgid "pink"
+msgstr "merah jambu"
+
+#: ../homedecor/bedroom.lua:18 ../homedecor/window_treatments.lua:105
+#: ../homedecor/lighting.lua:403 ../homedecor/lighting.lua:498
+#: ../homedecor/shutters.lua:8 ../homedecor/exterior.lua:362
+#: ../homedecor/books.lua:7 ../homedecor/furniture.lua:37
+#, fuzzy
+msgid "red"
+msgstr "merah"
+
+#: ../homedecor/bedroom.lua:19 ../homedecor/window_treatments.lua:110
+#: ../homedecor/lighting.lua:404 ../homedecor/lighting.lua:498
+#: ../homedecor/shutters.lua:12 ../homedecor/books.lua:10
+#: ../homedecor/furniture.lua:39
+#, fuzzy
+msgid "violet"
+msgstr "ungu"
+
+#: ../homedecor/bedroom.lua:20 ../homedecor/window_treatments.lua:108
+#: ../homedecor/lighting.lua:9 ../homedecor/lighting.lua:399
+#: ../homedecor/shutters.lua:16
+#, fuzzy
+msgid "white"
+msgstr "putih"
+
+#: ../homedecor/bedroom.lua:21 ../homedecor/lighting.lua:9
+#: ../homedecor/shutters.lua:9 ../homedecor/exterior.lua:363
+msgid "yellow"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:70
+msgid "Bed (@1)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:131
+msgid "Bed (@1, king sized)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:159 ../homedecor/shutters.lua:7
+msgid "mahogany"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:159
+msgid "oak"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:161
+#, fuzzy
+msgid "Nightstand with One Drawer (@1)"
+msgstr "Kabinet Katil Oak dengan Satu Laci"
+
+#: ../homedecor/bedroom.lua:182
+#, fuzzy
+msgid "One-drawer Nightstand"
+msgstr "Kabinet Katil Laci Satu"
+
+#: ../homedecor/bedroom.lua:190
+#, fuzzy
+msgid "Nightstand with Two Drawers (@1)"
+msgstr "Kabinet Katil Oak dengan Dua Laci"
+
+#: ../homedecor/bedroom.lua:208
+#, fuzzy
+msgid "Two-drawer Nightstand"
+msgstr "Kabinet Katil Laci Dua"
+
+#: ../homedecor/kitchen_furniture.lua:10
+#: ../homedecor/kitchen_appliances.lua:240
+msgid "granite"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua:10
+#: ../homedecor/kitchen_appliances.lua:240
+msgid "marble"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua:10
+#: ../homedecor/kitchen_appliances.lua:240
+msgid "steel"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua:14 ../homedecor/kitchen_furniture.lua:32
+#: ../homedecor/kitchen_furniture.lua:55
+#, fuzzy
+msgid "Kitchen Cabinet"
+msgstr "Kabinet Dapur"
+
+#: ../homedecor/kitchen_furniture.lua:18
+#, fuzzy
+msgid "Kitchen Cabinet (@1 top)"
+msgstr "Kabinet Dapur"
+
+#: ../homedecor/kitchen_furniture.lua:42
+#, fuzzy
+msgid "Half-height Kitchen Cabinet (on ceiling)"
+msgstr "Kabinet Dapur Separuh (atas siling)"
+
+#: ../homedecor/kitchen_furniture.lua:63
+#, fuzzy
+msgid "Kitchen Cabinet with sink"
+msgstr "Kabinet Dapur dengan Sinki"
+
+#: ../homedecor/kitchen_furniture.lua:73
+#, fuzzy
+msgid "Under-sink cabinet"
+msgstr "Kabinet Bawah Sinki"
+
+#: ../homedecor/kitchen_furniture.lua:150
+msgid "Paper towels"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua:5
+#, fuzzy
+msgid "Bars"
+msgstr "Palang"
+
+#: ../homedecor/furniture_medieval.lua:27
+#, fuzzy
+msgid "Binding Bars"
+msgstr "Palang Bersambung"
+
+#: ../homedecor/furniture_medieval.lua:51
+#, fuzzy
+msgid "Chains"
+msgstr "Rantai"
+
+#: ../homedecor/furniture_medieval.lua:62
+#, fuzzy
+msgid "Wall Torch"
+msgstr "Obor Dinding"
+
+#: ../homedecor/furniture_medieval.lua:94
+#, fuzzy
+msgid "Wall Lamp"
+msgstr "Lampu Meja"
+
+#: ../homedecor/kitchen_appliances.lua:12
+#, fuzzy
+msgid "Refrigerator (stainless steel)"
+msgstr "Peti Sejuk"
+
+#: ../homedecor/kitchen_appliances.lua:18
+#: ../homedecor/kitchen_appliances.lua:31
+#: ../homedecor/kitchen_appliances.lua:37
+#, fuzzy
+msgid "Refrigerator"
+msgstr "Peti Sejuk"
+
+#: ../homedecor/kitchen_appliances.lua:60
+#, fuzzy
+msgid "Oven"
+msgstr "Ketuhar"
+
+#: ../homedecor/kitchen_appliances.lua:68
+msgid "Oven (stainless steel)"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:76
+#, fuzzy
+msgid "Microwave Oven"
+msgstr "Ketuhar Gelombang Mikro"
+
+#: ../homedecor/kitchen_appliances.lua:117
+msgid "Coffee Maker"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:164
+msgid "Toaster"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:216
+msgid "Dishwasher"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:240 ../homedecor/roofing.lua:31
+#: ../homedecor/window_treatments.lua:167 ../homedecor/exterior.lua:193
+#: ../homedecor/misc-nodes.lua:440
+msgid "wood"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:244
+msgid "Dishwasher (@1)"
+msgstr ""
+
+#: ../homedecor/roofing.lua:7
+#, fuzzy
+msgid "Glass Skylight"
+msgstr "Bumbung Kaca"
+
+#: ../homedecor/roofing.lua:19
+#, fuzzy
+msgid "Glass Skylight Frosted"
+msgstr "Bumbung Kaca Berkabut"
+
+#: ../homedecor/roofing.lua:31
+msgid "asphalt"
+msgstr ""
+
+#: ../homedecor/roofing.lua:31 ../homedecor/misc-nodes.lua:69
+#, fuzzy
+msgid "terracotta"
+msgstr "Genting Terracotta"
+
+#: ../homedecor/roofing.lua:33
+#, fuzzy
+msgid "Shingles (@1)"
+msgstr "Genting Kayu"
+
+#: ../homedecor/roofing.lua:87
+#, fuzzy
+msgid "@1 (outer corner)"
+msgstr "Genting Kayu (bucu luar)"
+
+#: ../homedecor/roofing.lua:109
+#, fuzzy
+msgid "@1 (inner corner)"
+msgstr "Genting Kayu (bucu dalam)"
+
+#: ../homedecor/roofing.lua:265 ../homedecor/roofing.lua:286
+#, fuzzy
+msgid "Wood Shingles"
+msgstr "Genting Kayu"
+
+#: ../homedecor/roofing.lua:271 ../homedecor/roofing.lua:293
+#, fuzzy
+msgid "Asphalt Shingles"
+msgstr "Genting Asfalt"
+
+#: ../homedecor/roofing.lua:277 ../homedecor/roofing.lua:300
+#, fuzzy
+msgid "Terracotta Shingles"
+msgstr "Genting Terracotta"
+
+#: ../homedecor/roofing.lua:307
+#, fuzzy
+msgid "Glass Shingles"
+msgstr "Genting Asfalt"
+
+#: ../homedecor/roofing.lua:312
+msgid "Chimney"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:7
+msgid "Window (quartered)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:38
+msgid "Window (plain)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:72
+#, fuzzy
+msgid "Window Blinds (thick)"
+msgstr "Lampu Bara Putih (tebal)"
+
+#: ../homedecor/window_treatments.lua:91
+#, fuzzy
+msgid "Window Blinds (thin)"
+msgstr "Lampu Bara (nipis)"
+
+#: ../homedecor/window_treatments.lua:117
+#: ../homedecor/window_treatments.lua:140
+#, fuzzy
+msgid "Curtains (@1)"
+msgstr "Langsir (%s)"
+
+#: ../homedecor/window_treatments.lua:165 ../homedecor/fences.lua:22
+#: ../homedecor/misc-nodes.lua:458 ../homedecor/tables.lua:166
+msgid "brass"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:166 ../homedecor/fences.lua:23
+#: ../homedecor/misc-nodes.lua:467 ../homedecor/tables.lua:167
+#, fuzzy
+msgid "wrought iron"
+msgstr "Tiang Besi Tempaan"
+
+#: ../homedecor/window_treatments.lua:175
+#, fuzzy
+msgid "Curtain Rod (@1)"
+msgstr "Langsir (%s)"
+
+#: ../homedecor/window_treatments.lua:189
+msgid "Window flowerbox"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:209
+msgid "Stained Glass"
+msgstr ""
+
+#: ../homedecor/crafts.lua:10
+#, fuzzy
+msgid "Uncooked Terracotta Base"
+msgstr "Bes Terracotta Belum Dimasak"
+
+#: ../homedecor/crafts.lua:15
+#, fuzzy
+msgid "Terracotta Roof Tile"
+msgstr "Genting Bumbung Terracotta"
+
+#: ../homedecor/crafts.lua:20
+msgid "Oil extract"
+msgstr ""
+
+#: ../homedecor/crafts.lua:25
+#, fuzzy
+msgid "Unprocessed paraffin"
+msgstr "Bes Plastik Belum Diproses"
+
+#: ../homedecor/crafts.lua:37
+#, fuzzy
+msgid "Plastic strips"
+msgstr "Kepingan Plastik"
+
+#: ../homedecor/crafts.lua:42
+#, fuzzy
+msgid "Small Wooden Drawer"
+msgstr "Laci Kayu Kecil"
+
+#: ../homedecor/crafts.lua:47
+#, fuzzy
+msgid "Simple Integrated Circuit"
+msgstr "Litar Bersepadu Ringkas"
+
+#: ../homedecor/crafts.lua:52
+msgid "Heating element"
+msgstr ""
+
+#: ../homedecor/crafts.lua:57
+msgid "Motor"
+msgstr ""
+
+#: ../homedecor/crafts.lua:62
+msgid "Power Crystal"
+msgstr ""
+
+#: ../homedecor/crafts.lua:67
+msgid "Blank Canvas"
+msgstr ""
+
+#: ../homedecor/crafts.lua:72
+msgid "VCR"
+msgstr ""
+
+#: ../homedecor/crafts.lua:77
+msgid "DVD Player"
+msgstr ""
+
+#: ../homedecor/crafts.lua:82
+msgid "Spool of copper wire"
+msgstr ""
+
+#: ../homedecor/crafts.lua:87
+msgid "Spool of steel wire"
+msgstr ""
+
+#: ../homedecor/crafts.lua:92
+msgid "Speaker driver"
+msgstr ""
+
+#: ../homedecor/crafts.lua:97
+msgid "Fan blades"
+msgstr ""
+
+#: ../homedecor/crafts.lua:102
+msgid "Copper Strip"
+msgstr ""
+
+#: ../homedecor/crafts.lua:107
+msgid "Steel Strip"
+msgstr ""
+
+#: ../homedecor/crafts.lua:112
+msgid "Steel chainlink"
+msgstr ""
+
+#: ../homedecor/crafts.lua:117
+#, fuzzy
+msgid "Brass chainlink"
+msgstr "Pagar/Kisi-kisi Loyang"
+
+#: ../homedecor/crafts.lua:122
+msgid "Soda Can"
+msgstr ""
+
+#: ../homedecor/crafts.lua:128
+msgid "Gold Coin (for soda vending machine)"
+msgstr ""
+
+#: ../homedecor/crafts.lua:137
+#, fuzzy
+msgid "Silicon lump"
+msgstr "Ketulan Silikon"
+
+#: ../homedecor/crafts.lua:154
+#, fuzzy
+msgid "Brass Ingot"
+msgstr "Jongkong Loyang"
+
+#: ../homedecor/crafts.lua:3330
+#, fuzzy
+msgid "Small Flower Pot"
+msgstr "Pasu Bunga Plastik Hitam"
+
+#: ../homedecor/electronics.lua:6
+#, fuzzy
+msgid "Large Stereo Speaker"
+msgstr "Pembesar Suara Stereo Besar"
+
+#: ../homedecor/electronics.lua:20
+#, fuzzy
+msgid "Large Stereo Speaker, open front"
+msgstr "Pembesar Suara Stereo Besar"
+
+#: ../homedecor/electronics.lua:41
+#, fuzzy
+msgid "Small Surround Speaker"
+msgstr "Pembesar Suara Keliling Kecil"
+
+#: ../homedecor/electronics.lua:54
+#, fuzzy
+msgid "Stereo Receiver"
+msgstr "Penerima Stereo"
+
+#: ../homedecor/electronics.lua:66
+#, fuzzy
+msgid "Projection Screen Material"
+msgstr "Bahan Skrin Pemancaran"
+
+#: ../homedecor/electronics.lua:82
+#, fuzzy
+msgid "Small CRT Television"
+msgstr "Televisyen CRT Kecil"
+
+#: ../homedecor/electronics.lua:103
+msgid "DVD and VCR"
+msgstr ""
+
+#: ../homedecor/electronics.lua:138
+msgid "Telephone"
+msgstr ""
+
+#: ../homedecor/lighting.lua:73
+#, fuzzy
+msgid "Thick Glowlight (@1)"
+msgstr "Lampu Bara (nipis)"
+
+#: ../homedecor/lighting.lua:91
+#, fuzzy
+msgid "Thin Glowlight (@1)"
+msgstr "Lampu Bara (nipis)"
+
+#: ../homedecor/lighting.lua:111
+#, fuzzy
+msgid "Small Glowlight Cube (@1)"
+msgstr "Lampu Bara Kuning (kiub kecil)"
+
+#: ../homedecor/lighting.lua:131
+msgid "Plasma Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua:151
+msgid "Plasma Ball"
+msgstr ""
+
+#: ../homedecor/lighting.lua:182
+msgid "Thick Candle"
+msgstr ""
+
+#: ../homedecor/lighting.lua:203
+msgid "Thin Candle"
+msgstr ""
+
+#: ../homedecor/lighting.lua:224
+msgid "Candlestick (wrought iron)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:239
+msgid "Candlestick (brass)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:254
+#, fuzzy
+msgid "Wall sconce"
+msgstr "Obor Dinding"
+
+#: ../homedecor/lighting.lua:280
+msgid "Oil lamp (hurricane)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:300
+msgid "Oil Lamp (tabletop)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:319
+msgid "Ground Lantern"
+msgstr ""
+
+#: ../homedecor/lighting.lua:337
+msgid "Hanging Lantern"
+msgstr ""
+
+#: ../homedecor/lighting.lua:368
+msgid "Lattice lantern (large)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:376
+msgid "Lattice lantern (small)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:426
+#, fuzzy
+msgid "Table Lamp (@1)"
+msgstr "Lampu Meja"
+
+#: ../homedecor/lighting.lua:452
+msgid "Standing Lamp (@1)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:502
+msgid "Desk Lamp (@1)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:518
+msgid "Ceiling Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua:536
+msgid "Ceiling Lamp (off)"
+msgstr ""
+
+#: ../homedecor/fences.lua:31
+#, fuzzy
+msgid "Fence/railing (@1)"
+msgstr "Pagar/Kisi-kisi Loyang"
+
+#: ../homedecor/fences.lua:43
+#, fuzzy
+msgid "Fence/railing with sign (@1)"
+msgstr "Pagar/Kisi-kisi Loyang dengan Papan Tanda"
+
+#: ../homedecor/fences.lua:71
+#, fuzzy
+msgid "Unpainted Picket Fence"
+msgstr "Pagar Pancang Tidak Bercat"
+
+#: ../homedecor/fences.lua:87
+#, fuzzy
+msgid "Unpainted Picket Fence Corner"
+msgstr "Bucu Pagar Pancang Tidak Bercat"
+
+#: ../homedecor/fences.lua:103
+#, fuzzy
+msgid "White Picket Fence"
+msgstr "Pagar Pancang Putih"
+
+#: ../homedecor/fences.lua:119
+#, fuzzy
+msgid "White Picket Fence Corner"
+msgstr "Bucu Pagar Pancang Putih"
+
+#: ../homedecor/fences.lua:135
+#, fuzzy
+msgid "Wooden Privacy Fence"
+msgstr "Pagar Privasi Kayu"
+
+#: ../homedecor/fences.lua:159
+#, fuzzy
+msgid "Wooden Privacy Fence Corner"
+msgstr "Bucu Pagar Privasi Kayu"
+
+#: ../homedecor/fences.lua:194
+#, fuzzy
+msgid "Barbed Wire Fence"
+msgstr "Pagar Dawai Berduri"
+
+#: ../homedecor/fences.lua:204
+#, fuzzy
+msgid "Barbed Wire Fence Corner"
+msgstr "Bucu Pagar Dawai Berduri"
+
+#: ../homedecor/fences.lua:214
+#, fuzzy
+msgid "Chainlink Fence"
+msgstr "Pagar Dawai Berangkai"
+
+#: ../homedecor/fences.lua:232
+#, fuzzy
+msgid "Chainlink Fence Corner"
+msgstr "Bucu Pagar Dawai Berangkai"
+
+#: ../homedecor/fences.lua:249
+#, fuzzy
+msgid "Wrought Iron fence (type 2)"
+msgstr "Pagar/Kisi-kisi Besi Tempaan"
+
+#: ../homedecor/fences.lua:276
+#, fuzzy
+msgid "Wrought Iron fence (type 2) Corner"
+msgstr "Pagar/Kisi-kisi Besi Tempaan"
+
+#: ../homedecor/shutters.lua:6
+msgid "unpainted oak"
+msgstr ""
+
+#: ../homedecor/shutters.lua:10
+msgid "forest green"
+msgstr ""
+
+#: ../homedecor/shutters.lua:11
+#, fuzzy
+msgid "light blue"
+msgstr "kanan"
+
+#: ../homedecor/shutters.lua:35
+#, fuzzy
+msgid "Wooden Shutter (@1)"
+msgstr "Pengatup Kayu (Merah)"
+
+#: ../homedecor/exterior.lua:12
+msgid "Barbecue"
+msgstr ""
+
+#: ../homedecor/exterior.lua:56
+msgid "Garden Bench (style 1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua:83
+msgid "Garden Bench (style 2)"
+msgstr ""
+
+#: ../homedecor/exterior.lua:106 ../homedecor/exterior.lua:121
+#, fuzzy
+msgid "Deck Chair"
+msgstr "Kerusi"
+
+#: ../homedecor/exterior.lua:137
+msgid "Doghouse"
+msgstr ""
+
+#: ../homedecor/exterior.lua:152
+msgid "Simple Bench"
+msgstr ""
+
+#: ../homedecor/exterior.lua:166
+msgid "Garden stone path"
+msgstr ""
+
+#: ../homedecor/exterior.lua:194
+#, fuzzy
+msgid "white wood"
+msgstr "putih"
+
+#: ../homedecor/exterior.lua:195
+msgid "wood, with vegetation"
+msgstr ""
+
+#: ../homedecor/exterior.lua:197
+msgid "white wood, with vegetation"
+msgstr ""
+
+#: ../homedecor/exterior.lua:204
+msgid "Garden Lattice (@1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua:227
+msgid "Tree's swing"
+msgstr ""
+
+#: ../homedecor/exterior.lua:329
+msgid "Water well"
+msgstr ""
+
+#: ../homedecor/exterior.lua:370 ../homedecor/exterior.lua:381
+msgid "Shrubbery (@1)"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:17
+#, fuzzy
+msgid "Toilet"
+msgstr "Tandas"
+
+#: ../homedecor/bathroom_sanitation.lua:68
+#, fuzzy
+msgid "Toilet paper"
+msgstr "Tandas"
+
+#: ../homedecor/bathroom_sanitation.lua:89
+msgid "Bathroom Sink"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:137
+msgid "Bathroom taps/faucet"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:160
+msgid "Bathroom taps/faucet (brass)"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:185
+#, fuzzy
+msgid "Shower Tray"
+msgstr "Lubang Air Mandi"
+
+#: ../homedecor/bathroom_sanitation.lua:225
+#, fuzzy
+msgid "Shower Head"
+msgstr "Kepala Air Mandi"
+
+#: ../homedecor/bathroom_sanitation.lua:265
+msgid "Bathroom sundries set"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:6
+#, fuzzy
+msgid "Air Conditioner"
+msgstr "Pendingin Hawa"
+
+#: ../homedecor/climate-control.lua:44
+msgid "Desk Fan"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:83
+msgid "Ceiling Fan"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:107
+msgid "Space heater"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:139
+msgid "Radiator heater"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:124
+#, fuzzy
+msgid "Mahogany Closet Door (@1 opening)"
+msgstr "Pintu Almari Mahogani"
+
+#: ../homedecor/doors_and_gates.lua:129
+#, fuzzy
+msgid "Oak Closet Door (@1 opening)"
+msgstr "Pintu Almari Oak"
+
+#: ../homedecor/doors_and_gates.lua:134
+#, fuzzy
+msgid "Fancy Wood/Glass Door (@1 opening)"
+msgstr "Pintu Hiasan Kayu/Kaca"
+
+#: ../homedecor/doors_and_gates.lua:144
+#, fuzzy
+msgid "Glass Office Door (@1 opening)"
+msgstr "Pintu Pejabat Kaca"
+
+#: ../homedecor/doors_and_gates.lua:149
+#, fuzzy
+msgid "Glass and Wood, Oak-colored (@1 opening)"
+msgstr "Kaca dan Kayu, warna Oak"
+
+#: ../homedecor/doors_and_gates.lua:158
+#, fuzzy
+msgid "Glass and Wood, Mahogany-colored (@1 opening)"
+msgstr "Kaca dan Kayu, warna Mahogani"
+
+#: ../homedecor/doors_and_gates.lua:167
+#, fuzzy
+msgid "Glass and Wood, White (@1 opening)"
+msgstr "Kaca dan Kayu, warna Putih"
+
+#: ../homedecor/doors_and_gates.lua:176
+#, fuzzy
+msgid "Plain Wooden Door (@1 opening)"
+msgstr "Pintu Kayu Biasa"
+
+#: ../homedecor/doors_and_gates.lua:181
+msgid "White Bedroom Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:186
+#, fuzzy
+msgid "Wrought Iron Gate/Door (@1 opening)"
+msgstr "Pagar/Kisi-kisi Besi Tempaan"
+
+#: ../homedecor/doors_and_gates.lua:191
+msgid "Wooden door with glass insert (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:201
+msgid "Wooden door with glass insert, type 2 (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:212
+#, fuzzy
+msgid "left"
+msgstr "kiri"
+
+#: ../homedecor/doors_and_gates.lua:212
+#, fuzzy
+msgid "right"
+msgstr "kanan"
+
+#: ../homedecor/doors_and_gates.lua:296
+#, fuzzy
+msgid "Unpainted Picket Fence Gate"
+msgstr "Pintu Pagar Pancang Tidak Bercat"
+
+#: ../homedecor/doors_and_gates.lua:297
+#, fuzzy
+msgid "White Picket Fence Gate"
+msgstr "Pintu Pagar Pancang Putih"
+
+#: ../homedecor/doors_and_gates.lua:298
+#, fuzzy
+msgid "Barbed Wire Fence Gate"
+msgstr "Pintu Pagar Dawai Berduri"
+
+#: ../homedecor/doors_and_gates.lua:299
+#, fuzzy
+msgid "Chainlink Fence Gate"
+msgstr "Pintu Pagar Dawai Berangkai"
+
+#: ../homedecor/doors_and_gates.lua:526
+msgid "Japanese wall (top)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:542
+msgid "Japanese wall"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:558
+msgid "Japanese wall (bottom)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:582
+msgid "Japanese tatami"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:595
+msgid "Japanese-style door"
+msgstr ""
+
+#: ../homedecor/init.lua:133
+#, fuzzy
+msgid "Loaded!"
+msgstr "Telah Dimuatkan!"
+
+#: ../homedecor/misc-nodes.lua:7
+#, fuzzy
+msgid "Textured Ceiling Paint"
+msgstr "Cat Siling Bertekstur"
+
+#: ../homedecor/misc-nodes.lua:19
+#, fuzzy
+msgid "Drop-Ceiling Tile"
+msgstr "Kepingan Siling"
+
+#: ../homedecor/misc-nodes.lua:31
+msgid "small"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:32
+msgid "large"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:33
+msgid "persian"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:57
+msgid "Rug (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:73
+msgid "Flower Pot (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:85
+msgid "Rose"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:86
+msgid "Tulip"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:87
+msgid "Yellow Dandelion"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:88
+msgid "White Dandelion"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:89
+msgid "Blue Geranium"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:90
+#, fuzzy
+msgid "Viola"
+msgstr "Ungu"
+
+#: ../homedecor/misc-nodes.lua:91
+msgid "Cactus"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:92
+msgid "Bonsai"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:99
+msgid "Potted flower (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:127
+#, fuzzy
+msgid "Brass Pole"
+msgstr "Tiang Loyang"
+
+#: ../homedecor/misc-nodes.lua:145
+#, fuzzy
+msgid "Wrought Iron Pole"
+msgstr "Tiang Besi Tempaan"
+
+#: ../homedecor/misc-nodes.lua:167
+msgid "Fishtank"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:189
+msgid "Fishtank (lighted)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:213
+msgid "Cardboard box (big)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:220 ../homedecor/misc-nodes.lua:227
+#: ../homedecor/misc-nodes.lua:240
+msgid "Cardboard box"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:247
+msgid "DVD/CD cabinet"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:273
+#, fuzzy
+msgid "Pool Table"
+msgstr "Meja"
+
+#: ../homedecor/misc-nodes.lua:298
+msgid "Piano"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:316
+msgid "Trophy"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:334
+msgid "Sport bench"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:359
+msgid "Skateboard"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:368
+msgid "Metal tool cabinet and work table"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:399
+msgid "Picture Frame"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:424
+msgid "Decorative painting #@1"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:449
+msgid "dark topped"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:479
+msgid "diagonal"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:479
+msgid "horizontal"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:503
+msgid "Banister for Stairs (@1, @2)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:576
+msgid "not enough space"
+msgstr ""
+
+#: ../homedecor/tables.lua:7
+msgid "Small square glass table"
+msgstr ""
+
+#: ../homedecor/tables.lua:8
+#, fuzzy
+msgid "Small round glass table"
+msgstr "Pembesar Suara Keliling Kecil"
+
+#: ../homedecor/tables.lua:9
+msgid "Large glass table piece"
+msgstr ""
+
+#: ../homedecor/tables.lua:12
+#, fuzzy
+msgid "Small square wooden table"
+msgstr "Laci Kayu Kecil"
+
+#: ../homedecor/tables.lua:13
+#, fuzzy
+msgid "Small round wooden table"
+msgstr "Pembesar Suara Keliling Kecil"
+
+#: ../homedecor/tables.lua:14
+msgid "Large wooden table piece"
+msgstr ""
+
+#: ../homedecor/tables.lua:134
+#, fuzzy
+msgid "Utility Table"
+msgstr "Meja Utiliti"
+
+#: ../homedecor/tables.lua:173
+#, fuzzy
+msgid "Table Legs (@1)"
+msgstr "Kaki Meja Loyang"
+
+#: ../homedecor/tables.lua:189
+#, fuzzy
+msgid "Legs for Utility Table"
+msgstr "Kaki untuk Meja Utiliti"
+
+#: ../homedecor/books.lua:45
+msgid "Writable Book (@1)"
+msgstr ""
+
+#: ../homedecor/books.lua:173
+msgid "@1 has written in a book (title: \"@2\"): \"@3\" at location @4"
+msgstr ""
+
+#: ../homedecor/furniture.lua:4
+#, fuzzy
+msgid "Table"
+msgstr "Meja"
+
+#: ../homedecor/furniture.lua:5
+#, fuzzy
+msgid "Mahogany Table"
+msgstr "Pintu Almari Mahogani"
+
+#: ../homedecor/furniture.lua:6
+#, fuzzy
+msgid "White Table"
+msgstr "Meja Utiliti"
+
+#: ../homedecor/furniture.lua:35
+msgid "plain"
+msgstr ""
+
+#: ../homedecor/furniture.lua:77
+#, fuzzy
+msgid "Kitchen chair (@1)"
+msgstr "Kabinet Dapur"
+
+#: ../homedecor/furniture.lua:93
+#, fuzzy
+msgid "Armchair (@1)"
+msgstr "Kerusi Tangan (%s)"
+
+#: ../homedecor/furniture.lua:122
+msgid "Bookshelf (open-frame)"
+msgstr ""
+
+#: ../homedecor/furniture.lua:138
+msgid "Wall Shelf"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua:87
+#, fuzzy
+msgid "@1 moves stuff in @2 at @3"
+msgstr "%s pindah barang dalam kabinet katil dekat %s"
+
+#: ../homedecor/handlers/inventory.lua:92
+msgid "@1 moves @2 to @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua:97
+msgid "@1 takes @2 from @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua:110
+#, fuzzy
+msgid "@1 (owned by @2)"
+msgstr "%s (hak milik %s)"
+
+#: ../homedecor/handlers/inventory.lua:127
+#: ../homedecor/handlers/inventory.lua:145
+#: ../homedecor/handlers/inventory.lua:163
+#, fuzzy
+msgid "@1 tried to access a @2 belonging to @3 at @4"
+msgstr "%s cuba untuk pakai %s milik %s dekat %s"
+
+#: ../homedecor/handlers/inventory.lua:173
+#, fuzzy
+msgid "@1 (Locked)"
+msgstr "%s (Berkunci)"
+
+#: ../homedecor/handlers/furnaces.lua:91
+msgid "Furnace"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua:109
+#: ../homedecor/handlers/furnaces.lua:128
+#: ../homedecor/handlers/furnaces.lua:262
+msgid "@1 (empty)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua:154
+msgid "@1 (active)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua:234
+#, fuzzy
+msgid "@1 (active: @2%)"
+msgstr "%s aktif: %d%%"
+
+#: ../homedecor/handlers/furnaces.lua:254
+#, fuzzy
+msgid "@1 (out of fuel)"
+msgstr ": Kehabisan bahan api"
+
+#: ../homedecor/handlers/furnaces.lua:270
+#, fuzzy
+msgid "@1 (output bins are full)"
+msgstr ": dulang keluar penuh"
+
+#: ../homedecor/office.lua:4 ../homedecor/office.lua:13
+#, fuzzy
+msgid "Filing cabinet"
+msgstr "Kabinet Bawah Sinki"
+
+#: ../homedecor/bathroom_furniture.lua:5
+#, fuzzy
+msgid "white/grey"
+msgstr "putih"
+
+#: ../homedecor/bathroom_furniture.lua:6
+msgid "white/dark grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:7
+msgid "white/black"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:8
+msgid "black/dark grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:9
+#, fuzzy
+msgid "white/red"
+msgstr "putih"
+
+#: ../homedecor/bathroom_furniture.lua:10
+msgid "white/green"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:11
+#, fuzzy
+msgid "white/blue"
+msgstr "putih"
+
+#: ../homedecor/bathroom_furniture.lua:12
+msgid "white/yellow"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:13
+#, fuzzy
+msgid "white/tan"
+msgstr "putih"
+
+#: ../homedecor/bathroom_furniture.lua:27
+msgid "Bathroom/kitchen tiles (@1)"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:48
+msgid "Towel rod with towel"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:62
+#: ../homedecor/bathroom_furniture.lua:80
+#, fuzzy
+msgid "Medicine cabinet"
+msgstr "Kabinet Bawah Sinki"
+
+#~ msgid "%s moves stuff in kitchen cabinet at %s "
+#~ msgstr "%s pindah barang dalam kabinet dapur dekat %s"
+
+#~ msgid "%s moves stuff to kitchen cabinet at %s "
+#~ msgstr "%s pindah barang masuk kabinet dapur dekat %s"
+
+#~ msgid "%s takes stuff from kitchen cabinet at %s "
+#~ msgstr "%s ambil barang dari kabinet dapur dekat %s"
+
+#~ msgid "(Top Half, %s-opening) "
+#~ msgstr "(Separuh Atas, bukaan %s)"
+
+#~ msgid "(%s-opening) "
+#~ msgstr "(Bukaan %s)"
+
+#~ msgid "Not enough space above that spot to place a door! "
+#~ msgstr "Tidak cukup ruang di atas kawasan untuk letak pintu!"
+
+#~ msgid "Bucket of white paint "
+#~ msgstr "Baldi cat putih"
+
+#~ msgid "Legs for Small Utility table "
+#~ msgstr "Kaki untuk Meja Utiliti Kecil"
+
+#~ msgid "Titanium Dioxide "
+#~ msgstr "Titanium Dioksida"
+
+#~ msgid "Wrought Iron Fence/railing with sign "
+#~ msgstr "Pagar/Kisi-kisi Besi Tempaan dengan Papan Tanda"
+
+#~ msgid "want to simply place the wielded item like usual. "
+#~ msgstr "ingin letakkan barangan yang diacukan seperti biasa."
+
+#~ msgid "Red "
+#~ msgstr "Merah"
+
+#~ msgid "Pink "
+#~ msgstr "Merah Jambu"
+
+#~ msgid "Blue "
+#~ msgstr "Biru"
+
+#~ msgid "Sink "
+#~ msgstr "Sinki"
+
+#~ msgid "Taps "
+#~ msgstr "Pili Air"
+
+#~ msgid "Asphalt Shingles (outer corner) "
+#~ msgstr "Genting Asfalt (bucu luar)"
+
+#~ msgid "Asphalt Shingles (inner corner) "
+#~ msgstr "Genting Asfalt (bucu dalam)"
+
+#~ msgid "Wrought Iron Table Legs "
+#~ msgstr "Kaki Meja Besi Tempaan"
+
+#~ msgid "Glass Table (Small, Round) "
+#~ msgstr "Meja Kaca (Bulat, Kecil)"
+
+#~ msgid "Glass Table (Small, Square) "
+#~ msgstr "Meja Kaca (Segi Empat, Kecil)"
+
+#~ msgid "Glass Table Piece (large) "
+#~ msgstr "Kepingan Meja Kaca (besar)"
+
+#~ msgid "Green Plastic Flower Pot "
+#~ msgstr "Pasu Bunga Plastik Hijau"
+
+#~ msgid "Large Area Rug "
+#~ msgstr "Ambal Kawasan Besar"
+
+#~ msgid "Small Throw Rug "
+#~ msgstr "Ambal Kecil"
+
+#~ msgid "Terracotta Flower Pot "
+#~ msgstr "Pasu Bunga Terracotta"
+
+#~ msgid "Terracotta Shingles (outer corner) "
+#~ msgstr "Genting Terracotta (bucu luar)"
+
+#~ msgid "Terracotta Shingles (inner corner) "
+#~ msgstr "Genting Terracotta (bucu dalam)"
+
+#~ msgid "Utility table mk2 "
+#~ msgstr "Meja utiliti mk2"
+
+#~ msgid "Wooden Shutter (Black) "
+#~ msgstr "Pengatup Kayu (Hitam)"
+
+#~ msgid "Wooden Shutter (Dark grey) "
+#~ msgstr "Pengatup Kayu (Kelabu Gelap)"
+
+#~ msgid "Wooden Shutter (Forest green) "
+#~ msgstr "Pengatup Kayu (Hijau Rimba)"
+
+#~ msgid "Wooden Shutter (Grey) "
+#~ msgstr "Pengatup Kayu (Kelabu)"
+
+#~ msgid "Wooden Shutter (Light blue) "
+#~ msgstr "Pengatup Kayu (Biru Cerah)"
+
+#~ msgid "Wooden Shutter (Violet) "
+#~ msgstr "Pengatup Kayu (Ungu)"
+
+#~ msgid "Wooden Shutter (Mahogany) "
+#~ msgstr "Pengatup Kayu (Mahogani)"
+
+#~ msgid "Wooden Shutter (Unpainted oak) "
+#~ msgstr "Pengatup Kayu (Oak tak bercat)"
+
+#~ msgid "Wooden Shutter (White) "
+#~ msgstr "Pengatup Kayu (Putih)"
+
+#~ msgid "Wooden Shutter (Yellow) "
+#~ msgstr "Pengatup Kayu (Kuning)"
+
+#~ msgid "Wood Table Piece (large)"
+#~ msgstr "Kepingan Meja Kayu (besar)"
+
+#~ msgid "Wood Table (Small, Round) "
+#~ msgstr "Meja Kayu (Bulat, Kecil)"
+
+#~ msgid "Wood Table (Small, Square) "
+#~ msgstr "Meja Kayu (Segi Empat, Kecil)"
+
+#~ msgid "someone "
+#~ msgstr "seseorang"
+
+#~ msgid "Sorry, %s owns that spot. "
+#~ msgstr "Maaf, ini kawasan %s."
+
+#~ msgid "White Glowlight (small cube) "
+#~ msgstr "Lampu Bara Putih (kiub kecil)"
+
+#~ msgid "White Glowlight (small cube, on ceiling) "
+#~ msgstr "Lampu Bara Putih (kiub kecil, dekat siling)"
+
+#~ msgid "White Glowlight (thick, on wall) "
+#~ msgstr "Lampu Bara Putih (tebal, dekat dinding)"
+
+#~ msgid "White Glowlight (thin, on wall) "
+#~ msgstr "Lampu Bara Putih (nipis, dekat dinding)"
+
+#~ msgid "Yellow Glowlight (small cube, on ceiling) "
+#~ msgstr "Lampu Bara Kuning (kiub kecil, dekat siling)"
+
+#~ msgid "Yellow Glowlight (thick) "
+#~ msgstr "Lampu Bara Kuning (tebal)"
+
+#~ msgid "Yellow Glowlight (thick, on wall) "
+#~ msgstr "Lampu Bara Kuning (tebal, dekat dinding)"
+
+#~ msgid "Yellow Glowlight (thin) "
+#~ msgstr "Lampu Bara Kuning (nipis)"
+
+#~ msgid "Yellow Glowlight (thin, on wall) "
+#~ msgstr "Lampu Bara Kuning (nipis, dekat dinding)"
+
+#~ msgid "Locked Fridge "
+#~ msgstr "Peti Sejuk Berkunci"
+
+#~ msgid "Locked Cabinet "
+#~ msgstr "Kabinet Berkunci"
+
+#~ msgid "Locked Nightstand "
+#~ msgstr "Kabinet Katil Berkunci"
+
+#~ msgid "Locked Oven "
+#~ msgstr "Ketuhar Berkunci"
+
+#~ msgid "Locked Oven (active) "
+#~ msgstr "Ketuhar Berkunci (aktif)"
+
+#~ msgid "Locked Microwave Oven "
+#~ msgstr "Ketuhar Gelombang Mikro Berkunci"
+
+#~ msgid "Locked Microwave Oven (active) "
+#~ msgstr "Ketuhar Gelombang Mikro Berkunci (aktif)"
+
+#~ msgid "Mahogany Nightstand with One Drawer "
+#~ msgstr "Kabinet Katil Mahogani dengan Satu Laci"
+
+#~ msgid "Mahogany Nightstand with Two Drawers "
+#~ msgstr "Kabinet Katil Mahogani dengan Dua Laci"
+
+#~ msgid "%s moves stuff to nightstand at %s "
+#~ msgstr "%s pindah barang masuk kabinet katil dekat %s"
+
+#~ msgid "%s takes stuff from nightstand at %s "
+#~ msgstr "%s ambil barang dari kabinet katil dekat %s"
+
+#~ msgid "%s is empty "
+#~ msgstr "%s tiada apa-apa"
+
+#~ msgid "%s moves stuff in refrigerator at %s "
+#~ msgstr "%s pindah barang dalam peti sejuk dekat %s"
+
+#~ msgid "%s moves stuff to refrigerator at %s "
+#~ msgstr "%s pindah barang masuk peti sejuk dekat %s"
+
+#~ msgid "%s takes stuff from refrigerator at %s "
+#~ msgstr "%s ambil barang dari peti sejuk dekat %s"
+
+#~ msgid "Not enough vertical space to place a refrigerator! "
+#~ msgstr "Tidak cukup ruangan menegak untuk meletak peti sejuk!"
+
+#~ msgid "%s wrote \"%s\" to sign at %s "
+#~ msgstr "%s menulis \"%s\" pada papan tanda dekat %s"
+
+#~ msgid "Reading cached character database. "
+#~ msgstr "Sedang membaca pangkalan data watak yang di-cache."
+
+#~ msgid "Font seems to have changed. Rebuilding cache. "
+#~ msgstr "Nampaknya fon tulisan berubah. Membina semula cache."
+
+#~ msgid "Could not find font line height in cached DB. Trying brute force. "
+#~ msgstr ""
+#~ "Tak jumpa ketinggian baris fon dalam DB yang di-cache. Sedang cuba "
+#~ "paksaan kasar."
+
+#~ msgid "Registered %s and %s "
+#~ msgstr "Dah daftarkan %s dan %s"
+
+#~ msgid "signs loaded "
+#~ msgstr "papan tanda telah dimuatkan"
diff --git a/homedecor/locale/ms.txt b/homedecor/locale/ms.txt
new file mode 100644
index 0000000..c764568
--- /dev/null
+++ b/homedecor/locale/ms.txt
@@ -0,0 +1,233 @@
+
+#
+# Language: Malay
+# Author: muhdnurhidayat
+#
+
+
+### Special strings ###
+
+### kitchen_cabinet.lua ###
+Kitchen Cabinet = Kabinet Dapur
+## 1: Player name, 2: position
+%s moves stuff in kitchen cabinet at %s = %s pindah barang dalam kabinet dapur dekat %s
+%s moves stuff to kitchen cabinet at %s = %s pindah barang masuk kabinet dapur dekat %s
+%s takes stuff from kitchen cabinet at %s = %s ambil barang dari kabinet dapur dekat %s
+Half-height Kitchen Cabinet (on ceiling) = Kabinet Dapur Separuh (atas siling)
+Under-sink cabinet = Kabinet Bawah Sinki
+Kitchen Cabinet with sink = Kabinet Dapur dengan Sinki
+
+### door_models.lua ###
+Mahogany Closet Door = Pintu Almari Mahogani
+Oak Closet Door = Pintu Almari Oak
+Fancy Wood/Glass Door = Pintu Hiasan Kayu/Kaca
+Glass Office Door = Pintu Pejabat Kaca
+Glass and Wood, Mahogany-colored = Kaca dan Kayu, warna Mahogani
+Glass and Wood, Oak-colored = Kaca dan Kayu, warna Oak
+Glass and Wood, White = Kaca dan Kayu, warna Putih
+Plain Wooden Door = Pintu Kayu Biasa
+left = kiri
+right = kanan
+## 1: Side the doors opens to
+(Top Half, %s-opening) = (Separuh Atas, bukaan %s)
+(%s-opening) = (Bukaan %s)
+
+
+### door_nodes.lua ###
+Not enough space above that spot to place a door! = Tidak cukup ruang di atas kawasan untuk letak pintu!
+
+### crafts.lua ###
+Brass Ingot = Jongkong Loyang
+Bucket of white paint = Baldi cat putih
+Legs for Small Utility table = Kaki untuk Meja Utiliti Kecil
+Plastic sheet = Kepingan Plastik
+Silicon lump = Ketulan Silikon
+Simple Integrated Circuit = Litar Bersepadu Ringkas
+Small Wooden Drawer = Laci Kayu Kecil
+Terracotta Roof Tile = Genting Bumbung Terracotta
+Titanium Dioxide = Titanium Dioksida
+Uncooked Terracotta Base = Bes Terracotta Belum Dimasak
+Unprocessed Plastic base = Bes Plastik Belum Diproses
+
+### door_models.lua ###
+
+### door_nodes.lua ###
+
+### fences.lua ###
+Barbed Wire Fence = Pagar Dawai Berduri
+Barbed Wire Fence Corner = Bucu Pagar Dawai Berduri
+Barbed Wire Fence Gate = Pintu Pagar Dawai Berduri
+Brass Fence/railing = Pagar/Kisi-kisi Loyang
+Brass Fence/railing with sign = Pagar/Kisi-kisi Loyang dengan Papan Tanda
+Chainlink Fence = Pagar Dawai Berangkai
+Chainlink Fence Corner = Bucu Pagar Dawai Berangkai
+Chainlink Fence Gate = Pintu Pagar Dawai Berangkai
+Unpainted Picket Fence = Pagar Pancang Tidak Bercat
+Unpainted Picket Fence Corner = Bucu Pagar Pancang Tidak Bercat
+Unpainted Picket Fence Gate = Pintu Pagar Pancang Tidak Bercat
+White Picket Fence = Pagar Pancang Putih
+White Picket Fence Corner = Bucu Pagar Pancang Putih
+White Picket Fence Gate = Pintu Pagar Pancang Putih
+Wooden Privacy Fence = Pagar Privasi Kayu
+Wooden Privacy Fence Corner = Bucu Pagar Privasi Kayu
+Wrought Iron Fence/railing = Pagar/Kisi-kisi Besi Tempaan
+Wrought Iron Fence/railing with sign = Pagar/Kisi-kisi Besi Tempaan dengan Papan Tanda
+want to simply place the wielded item like usual. = ingin letakkan barangan yang diacukan seperti biasa.
+
+### furniture.lua ###
+Table = Meja
+Chair = Kerusi
+Black = Hitam
+Red = Merah
+Pink = Merah Jambu
+Violet = Ungu
+Blue = Biru
+Dark Green = Hijau Gelap
+## 1: Color name
+Armchair (%s) = Kerusi Tangan (%s)
+Table Lamp = Lampu Meja
+
+### furniture_medieval.lua ###
+Bars = Palang
+Binding Bars = Palang Bersambung
+Chains = Rantai
+Wall Torch = Obor Dinding
+
+### furniture_bathroom.lua ###
+Toilet = Tandas
+Sink = Sinki
+Taps = Pili Air
+Shower Tray = Lubang Air Mandi
+Shower Head = Kepala Air Mandi
+
+### init.lua ###
+Loaded! = Telah Dimuatkan!
+Air Conditioner = Pendingin Hawa
+Asphalt Shingles = Genting Asfalt
+Asphalt Shingles (outer corner) = Genting Asfalt (bucu luar)
+Asphalt Shingles (inner corner) = Genting Asfalt (bucu dalam)
+Black Plastic Flower Pot = Pasu Bunga Plastik Hitam
+Brass Pole = Tiang Loyang
+Brass Table Legs = Kaki Meja Loyang
+Wrought Iron Table Legs = Kaki Meja Besi Tempaan
+red = merah
+green = hijau
+blue = biru
+white = putih
+pink = merah jambu
+violet = ungu
+## 1: Color name
+Curtains (%s) = Langsir (%s)
+Drop-Ceiling Tile = Kepingan Siling
+Glass Skylight = Bumbung Kaca
+Glass Skylight Frosted = Bumbung Kaca Berkabut
+Glass Table (Small, Round) = Meja Kaca (Bulat, Kecil)
+Glass Table (Small, Square) = Meja Kaca (Segi Empat, Kecil)
+Glass Table Piece (large) = Kepingan Meja Kaca (besar)
+Green Plastic Flower Pot = Pasu Bunga Plastik Hijau
+Large Area Rug = Ambal Kawasan Besar
+Glass Table Piece (large) = Kepingan Meja Kaca (besar)
+Large Stereo Speaker = Pembesar Suara Stereo Besar
+Legs for Utility Table = Kaki untuk Meja Utiliti
+Projection Screen Material = Bahan Skrin Pemancaran
+Small Surround Speaker = Pembesar Suara Keliling Kecil
+Small Throw Rug = Ambal Kecil
+Stereo Receiver = Penerima Stereo
+Terracotta Flower Pot = Pasu Bunga Terracotta
+Terracotta Shingles = Genting Terracotta
+Terracotta Shingles (outer corner) = Genting Terracotta (bucu luar)
+Terracotta Shingles (inner corner) = Genting Terracotta (bucu dalam)
+Textured Ceiling Paint = Cat Siling Bertekstur
+Utility Table = Meja Utiliti
+Utility table mk2 = Meja utiliti mk2
+Wooden Shutter (Black) = Pengatup Kayu (Hitam)
+Wooden Shutter (Dark grey) = Pengatup Kayu (Kelabu Gelap)
+Wooden Shutter (Forest green) = Pengatup Kayu (Hijau Rimba)
+Wooden Shutter (Grey) = Pengatup Kayu (Kelabu)
+Wooden Shutter (Light blue) = Pengatup Kayu (Biru Cerah)
+Wooden Shutter (Violet) = Pengatup Kayu (Ungu)
+Wooden Shutter (Red) = Pengatup Kayu (Merah)
+Wooden Shutter (Mahogany) = Pengatup Kayu (Mahogani)
+Wooden Shutter (Unpainted oak) = Pengatup Kayu (Oak tak bercat)
+Wooden Shutter (White) = Pengatup Kayu (Putih)
+Wooden Shutter (Yellow) = Pengatup Kayu (Kuning)
+Wood Table Piece (large)= Kepingan Meja Kayu (besar)
+Wood Table (Small, Round) = Meja Kayu (Bulat, Kecil)
+Wood Table (Small, Square) = Meja Kayu (Segi Empat, Kecil)
+Wood Shingles = Genting Kayu
+Wood Shingles (outer corner) = Genting Kayu (bucu luar)
+Wood Shingles (inner corner) = Genting Kayu (bucu dalam)
+Wrought Iron Pole = Tiang Besi Tempaan
+someone = seseorang
+## 1: Player name
+Sorry, %s owns that spot. = Maaf, ini kawasan %s.
+
+### lighting.lua ###
+White Glowlight (small cube) = Lampu Bara Putih (kiub kecil)
+White Glowlight (small cube, on ceiling) = Lampu Bara Putih (kiub kecil, dekat siling)
+White Glowlight (thick) = Lampu Bara Putih (tebal)
+White Glowlight (thick, on wall) = Lampu Bara Putih (tebal, dekat dinding)
+White Glowlight (thin) = Lampu Bara (nipis)
+White Glowlight (thin, on wall) = Lampu Bara Putih (nipis, dekat dinding)
+Yellow Glowlight (small cube) = Lampu Bara Kuning (kiub kecil)
+Yellow Glowlight (small cube, on ceiling) = Lampu Bara Kuning (kiub kecil, dekat siling)
+Yellow Glowlight (thick) = Lampu Bara Kuning (tebal)
+Yellow Glowlight (thick, on wall) = Lampu Bara Kuning (tebal, dekat dinding)
+Yellow Glowlight (thin) = Lampu Bara Kuning (nipis)
+Yellow Glowlight (thin, on wall) = Lampu Bara Kuning (nipis, dekat dinding)
+
+### locked.lua ###
+## 1: Item description, 2: Owner name
+%s (owned by %s) = %s (hak milik %s)
+## 1: Player name, 2: Item description, 3: Owner name, 4: Position
+%s tried to access a %s belonging to %s at %s = %s cuba untuk pakai %s milik %s dekat %s
+## 1: Item description
+%s (Locked) = %s (Berkunci)
+Locked Fridge = Peti Sejuk Berkunci
+Locked Cabinet = Kabinet Berkunci
+Locked Nightstand = Kabinet Katil Berkunci
+Locked Oven = Ketuhar Berkunci
+Locked Oven (active) = Ketuhar Berkunci (aktif)
+Locked Microwave Oven = Ketuhar Gelombang Mikro Berkunci
+Locked Microwave Oven (active) = Ketuhar Gelombang Mikro Berkunci (aktif)
+
+### nightstands.lua ###
+Mahogany Nightstand with One Drawer = Kabinet Katil Mahogani dengan Satu Laci
+Mahogany Nightstand with Two Drawers = Kabinet Katil Mahogani dengan Dua Laci
+Oak Nightstand with One Drawer = Kabinet Katil Oak dengan Satu Laci
+Oak Nightstand with Two Drawers = Kabinet Katil Oak dengan Dua Laci
+## 1: Player name, 2: position
+%s moves stuff in nightstand at %s = %s pindah barang dalam kabinet katil dekat %s
+%s moves stuff to nightstand at %s = %s pindah barang masuk kabinet katil dekat %s
+%s takes stuff from nightstand at %s = %s ambil barang dari kabinet katil dekat %s
+One-drawer Nightstand = Kabinet Katil Laci Satu
+Two-drawer Nightstand = Kabinet Katil Laci Dua
+
+### oven.lua ###
+Oven = Ketuhar
+Microwave Oven = Ketuhar Gelombang Mikro
+## 1: Item description, 2: Percentage
+%s active: %d%% = %s aktif: %d%%
+## 1: Item description
+%s is empty = %s tiada apa-apa
+: Out of fuel = : Kehabisan bahan api
+: output bins are full = : dulang keluar penuh
+
+### refrigerator.lua ###
+Refrigerator = Peti Sejuk
+## 1: Player name, 2: position
+%s moves stuff in refrigerator at %s = %s pindah barang dalam peti sejuk dekat %s
+%s moves stuff to refrigerator at %s = %s pindah barang masuk peti sejuk dekat %s
+%s takes stuff from refrigerator at %s = %s ambil barang dari peti sejuk dekat %s
+Not enough vertical space to place a refrigerator! = Tidak cukup ruangan menegak untuk meletak peti sejuk!
+
+### television.lua ###
+Small CRT Television = Televisyen CRT Kecil
+
+### signs_lib.lua ###
+%s wrote "%s" to sign at %s = %s menulis "%s" pada papan tanda dekat %s
+Reading cached character database. = Sedang membaca pangkalan data watak yang di-cache.
+Font seems to have changed. Rebuilding cache. = Nampaknya fon tulisan berubah. Membina semula cache.
+Could not find font line height in cached DB. Trying brute force. = Tak jumpa ketinggian baris fon dalam DB yang di-cache. Sedang cuba paksaan kasar.
+Registered %s and %s = Dah daftarkan %s dan %s
+signs loaded = papan tanda telah dimuatkan
diff --git a/homedecor/locale/pt.po b/homedecor/locale/pt.po
new file mode 100644
index 0000000..5f4acc9
--- /dev/null
+++ b/homedecor/locale/pt.po
@@ -0,0 +1,1343 @@
+# Portuguese translations for homedecor package.
+# Translations distributed under CC-BY-SA license.
+#
+# Translators and reviewers (updates):
+# BrunoMine <borgesdossantosbruno@gmail.com> [2017]
+# Aracnus <frederico@teia.bio.br>, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-01-25 00:03-0300\n"
+"PO-Revision-Date: 2017-01-29 00:21-0200\n"
+"Last-Translator: Aracnus <frederico@teia.bio.br>\n"
+"Language-Team: Portuguese\n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+#: ../computer/miscitems.lua:13 ../homedecor/crafts.lua:32
+msgid "Plastic sheet"
+msgstr "Folha de Plástico"
+
+#: ../computer/miscitems.lua:18
+msgid "Unprocessed Plastic base"
+msgstr "Base de plástico não Processada"
+
+#: ../homedecor/bedroom.lua:7 ../homedecor/shutters.lua:13
+#: ../homedecor/misc-nodes.lua:69 ../homedecor/furniture.lua:36
+msgid "black"
+msgstr "preto"
+
+#: ../homedecor/bedroom.lua:8 ../homedecor/books.lua:12
+msgid "brown"
+msgstr "marrom"
+
+#: ../homedecor/bedroom.lua:9 ../homedecor/window_treatments.lua:107
+#: ../homedecor/lighting.lua:400 ../homedecor/lighting.lua:498
+#: ../homedecor/books.lua:9 ../homedecor/furniture.lua:40
+msgid "blue"
+msgstr "azul"
+
+#: ../homedecor/bedroom.lua:10
+msgid "cyan"
+msgstr "ciano\t\t"
+
+#: ../homedecor/bedroom.lua:11 ../homedecor/shutters.lua:14
+msgid "dark grey"
+msgstr "cinza escuro"
+
+#: ../homedecor/bedroom.lua:12 ../homedecor/furniture.lua:41
+msgid "dark green"
+msgstr "verde escuro"
+
+#: ../homedecor/bedroom.lua:13 ../homedecor/window_treatments.lua:106
+#: ../homedecor/lighting.lua:401 ../homedecor/lighting.lua:498
+#: ../homedecor/exterior.lua:361 ../homedecor/misc-nodes.lua:69
+#: ../homedecor/books.lua:8
+msgid "green"
+msgstr "verde"
+
+#: ../homedecor/bedroom.lua:14 ../homedecor/shutters.lua:15
+#: ../homedecor/books.lua:11
+msgid "grey"
+msgstr "cinza"
+
+#: ../homedecor/bedroom.lua:15
+msgid "magenta"
+msgstr "magenta"
+
+#: ../homedecor/bedroom.lua:16
+msgid "orange"
+msgstr "laranja"
+
+#: ../homedecor/bedroom.lua:17 ../homedecor/window_treatments.lua:109
+#: ../homedecor/lighting.lua:402 ../homedecor/furniture.lua:38
+msgid "pink"
+msgstr "rosa"
+
+#: ../homedecor/bedroom.lua:18 ../homedecor/window_treatments.lua:105
+#: ../homedecor/lighting.lua:403 ../homedecor/lighting.lua:498
+#: ../homedecor/shutters.lua:8 ../homedecor/exterior.lua:362
+#: ../homedecor/books.lua:7 ../homedecor/furniture.lua:37
+msgid "red"
+msgstr "vermelho"
+
+#: ../homedecor/bedroom.lua:19 ../homedecor/window_treatments.lua:110
+#: ../homedecor/lighting.lua:404 ../homedecor/lighting.lua:498
+#: ../homedecor/shutters.lua:12 ../homedecor/books.lua:10
+#: ../homedecor/furniture.lua:39
+msgid "violet"
+msgstr "violeta"
+
+#: ../homedecor/bedroom.lua:20 ../homedecor/window_treatments.lua:108
+#: ../homedecor/lighting.lua:9 ../homedecor/lighting.lua:399
+#: ../homedecor/shutters.lua:16
+msgid "white"
+msgstr "branco"
+
+#: ../homedecor/bedroom.lua:21 ../homedecor/lighting.lua:9
+#: ../homedecor/shutters.lua:9 ../homedecor/exterior.lua:363
+msgid "yellow"
+msgstr "amarelo"
+
+#: ../homedecor/bedroom.lua:70
+msgid "Bed (@1)"
+msgstr "Cama (@1)"
+
+#: ../homedecor/bedroom.lua:131
+msgid "Bed (@1, king sized)"
+msgstr "Cama (@1, aumentada)"
+
+#: ../homedecor/bedroom.lua:159 ../homedecor/shutters.lua:7
+msgid "mahogany"
+msgstr "mogno"
+
+#: ../homedecor/bedroom.lua:159
+msgid "oak"
+msgstr "carvalho"
+
+#: ../homedecor/bedroom.lua:161
+msgid "Nightstand with One Drawer (@1)"
+msgstr "Mesa de Cabeceira com Gaveta (@1)"
+
+#: ../homedecor/bedroom.lua:182
+msgid "One-drawer Nightstand"
+msgstr "Mesinha de Uma Gaveta"
+
+#: ../homedecor/bedroom.lua:190
+msgid "Nightstand with Two Drawers (@1)"
+msgstr "Mesa de Cabeceira com Duas Gavetas"
+
+#: ../homedecor/bedroom.lua:208
+msgid "Two-drawer Nightstand"
+msgstr "Mesinha de Duas Gavetas"
+
+#: ../homedecor/kitchen_furniture.lua:10
+#: ../homedecor/kitchen_appliances.lua:240
+msgid "granite"
+msgstr "granito"
+
+#: ../homedecor/kitchen_furniture.lua:10
+#: ../homedecor/kitchen_appliances.lua:240
+msgid "marble"
+msgstr "mármore"
+
+#: ../homedecor/kitchen_furniture.lua:10
+#: ../homedecor/kitchen_appliances.lua:240
+msgid "steel"
+msgstr "aço"
+
+#: ../homedecor/kitchen_furniture.lua:14 ../homedecor/kitchen_furniture.lua:32
+#: ../homedecor/kitchen_furniture.lua:55
+msgid "Kitchen Cabinet"
+msgstr "Armário de Cozinha"
+
+#: ../homedecor/kitchen_furniture.lua:18
+msgid "Kitchen Cabinet (@1 top)"
+msgstr "Armário de Cozinha (tampo de @1)"
+
+#: ../homedecor/kitchen_furniture.lua:42
+msgid "Half-height Kitchen Cabinet (on ceiling)"
+msgstr "Armário Superior de Cozinha (no teto)"
+
+#: ../homedecor/kitchen_furniture.lua:63
+msgid "Kitchen Cabinet with sink"
+msgstr "Armário de Cozinha com Pia"
+
+#: ../homedecor/kitchen_furniture.lua:73
+msgid "Under-sink cabinet"
+msgstr "Armário sob a Pia"
+
+#: ../homedecor/kitchen_furniture.lua:150
+msgid "Paper towels"
+msgstr "Papel toalha"
+
+#: ../homedecor/furniture_medieval.lua:5
+msgid "Bars"
+msgstr "Barras"
+
+#: ../homedecor/furniture_medieval.lua:27
+msgid "Binding Bars"
+msgstr "Barras do Canto"
+
+#: ../homedecor/furniture_medieval.lua:51
+msgid "Chains"
+msgstr "Correntes"
+
+#: ../homedecor/furniture_medieval.lua:62
+msgid "Wall Torch"
+msgstr "Tocha de parede"
+
+#: ../homedecor/furniture_medieval.lua:94
+msgid "Wall Lamp"
+msgstr "Lâmpada de Parede"
+
+#: ../homedecor/kitchen_appliances.lua:12
+msgid "Refrigerator (stainless steel)"
+msgstr "Refrigerador (aço inoxidável)"
+
+#: ../homedecor/kitchen_appliances.lua:18
+#: ../homedecor/kitchen_appliances.lua:31
+#: ../homedecor/kitchen_appliances.lua:37
+msgid "Refrigerator"
+msgstr "Refrigerador"
+
+#: ../homedecor/kitchen_appliances.lua:60
+msgid "Oven"
+msgstr "Forno"
+
+#: ../homedecor/kitchen_appliances.lua:68
+msgid "Oven (stainless steel)"
+msgstr "Forno (aço inoxidável)"
+
+#: ../homedecor/kitchen_appliances.lua:76
+msgid "Microwave Oven"
+msgstr "Forno Microondas"
+
+#: ../homedecor/kitchen_appliances.lua:117
+msgid "Coffee Maker"
+msgstr "Cafeteira"
+
+#: ../homedecor/kitchen_appliances.lua:164
+msgid "Toaster"
+msgstr "Torradeira"
+
+#: ../homedecor/kitchen_appliances.lua:216
+msgid "Dishwasher"
+msgstr "Lava Louças"
+
+#: ../homedecor/kitchen_appliances.lua:240 ../homedecor/roofing.lua:31
+#: ../homedecor/window_treatments.lua:167 ../homedecor/exterior.lua:193
+#: ../homedecor/misc-nodes.lua:440
+msgid "wood"
+msgstr "madeira"
+
+#: ../homedecor/kitchen_appliances.lua:244
+msgid "Dishwasher (@1)"
+msgstr "Lava Louças (@1)"
+
+#: ../homedecor/roofing.lua:7
+msgid "Glass Skylight"
+msgstr "Claraboia de Vidro"
+
+#: ../homedecor/roofing.lua:19
+msgid "Glass Skylight Frosted"
+msgstr "Claraboia de Vidro Fosco"
+
+#: ../homedecor/roofing.lua:31
+msgid "asphalt"
+msgstr "asfalto"
+
+#: ../homedecor/roofing.lua:31 ../homedecor/misc-nodes.lua:69
+msgid "terracotta"
+msgstr "terracota"
+
+#: ../homedecor/roofing.lua:33
+msgid "Shingles (@1)"
+msgstr "Telhas (@1)"
+
+#: ../homedecor/roofing.lua:87
+msgid "@1 (outer corner)"
+msgstr "@1 (canto exterior)"
+
+#: ../homedecor/roofing.lua:109
+msgid "@1 (inner corner)"
+msgstr "@1 (canto interno)"
+
+#: ../homedecor/roofing.lua:265 ../homedecor/roofing.lua:286
+msgid "Wood Shingles"
+msgstr "Telhas de Madeira"
+
+#: ../homedecor/roofing.lua:271 ../homedecor/roofing.lua:293
+msgid "Asphalt Shingles"
+msgstr "Telhas de Asfalto"
+
+#: ../homedecor/roofing.lua:277 ../homedecor/roofing.lua:300
+msgid "Terracotta Shingles"
+msgstr "Telhas de Terracota"
+
+#: ../homedecor/roofing.lua:307
+msgid "Glass Shingles"
+msgstr "Telhas de Vidro"
+
+#: ../homedecor/roofing.lua:312
+msgid "Chimney"
+msgstr "Chaminé"
+
+#: ../homedecor/window_treatments.lua:7
+msgid "Window (quartered)"
+msgstr "Janela Dividida"
+
+#: ../homedecor/window_treatments.lua:38
+msgid "Window (plain)"
+msgstr "Janela (Sem Acabamento)"
+
+#: ../homedecor/window_treatments.lua:72
+msgid "Window Blinds (thick)"
+msgstr "Persiana (grossa)"
+
+#: ../homedecor/window_treatments.lua:91
+msgid "Window Blinds (thin)"
+msgstr "Persiana (fina)"
+
+#: ../homedecor/window_treatments.lua:117
+#: ../homedecor/window_treatments.lua:140
+msgid "Curtains (@1)"
+msgstr "Cortinas (@1)"
+
+#: ../homedecor/window_treatments.lua:165 ../homedecor/fences.lua:22
+#: ../homedecor/misc-nodes.lua:458 ../homedecor/tables.lua:166
+msgid "brass"
+msgstr "latão"
+
+#: ../homedecor/window_treatments.lua:166 ../homedecor/fences.lua:23
+#: ../homedecor/misc-nodes.lua:467 ../homedecor/tables.lua:167
+msgid "wrought iron"
+msgstr "ferro forjado"
+
+#: ../homedecor/window_treatments.lua:175
+msgid "Curtain Rod (@1)"
+msgstr "Suporte de Cortina (@1)"
+
+#: ../homedecor/window_treatments.lua:189
+msgid "Window flowerbox"
+msgstr "Janela com Caixa de Flores"
+
+#: ../homedecor/window_treatments.lua:209
+msgid "Stained Glass"
+msgstr "Vitral"
+
+#: ../homedecor/crafts.lua:10
+msgid "Uncooked Terracotta Base"
+msgstr "Base Bruta de Terracota"
+
+#: ../homedecor/crafts.lua:15
+msgid "Terracotta Roof Tile"
+msgstr "Telha de Terracota"
+
+#: ../homedecor/crafts.lua:20
+msgid "Oil extract"
+msgstr "Extrato de Óleo"
+
+#: ../homedecor/crafts.lua:25
+msgid "Unprocessed paraffin"
+msgstr "Parafina não processada"
+
+#: ../homedecor/crafts.lua:37
+msgid "Plastic strips"
+msgstr "Faixas de plástico"
+
+#: ../homedecor/crafts.lua:42
+msgid "Small Wooden Drawer"
+msgstr "Gaveta Pequena de Madeira"
+
+#: ../homedecor/crafts.lua:47
+msgid "Simple Integrated Circuit"
+msgstr "Circuito Integrado Simples"
+
+#: ../homedecor/crafts.lua:52
+msgid "Heating element"
+msgstr "Elemento de aquecimento"
+
+#: ../homedecor/crafts.lua:57
+msgid "Motor"
+msgstr "Motor"
+
+#: ../homedecor/crafts.lua:62
+msgid "Power Crystal"
+msgstr "Cristal de Força"
+
+#: ../homedecor/crafts.lua:67
+msgid "Blank Canvas"
+msgstr "Tela Branca"
+
+#: ../homedecor/crafts.lua:72
+msgid "VCR"
+msgstr "VCR"
+
+#: ../homedecor/crafts.lua:77
+msgid "DVD Player"
+msgstr "DVD Player"
+
+#: ../homedecor/crafts.lua:82
+msgid "Spool of copper wire"
+msgstr "Bobina de fio de cobre"
+
+#: ../homedecor/crafts.lua:87
+msgid "Spool of steel wire"
+msgstr "Bobina de fio de aço"
+
+#: ../homedecor/crafts.lua:92
+msgid "Speaker driver"
+msgstr "Alto-falante"
+
+#: ../homedecor/crafts.lua:97
+msgid "Fan blades"
+msgstr "Pás de ventilador"
+
+#: ../homedecor/crafts.lua:102
+msgid "Copper Strip"
+msgstr "Tira de Cobre"
+
+#: ../homedecor/crafts.lua:107
+msgid "Steel Strip"
+msgstr "Tira de Aço"
+
+#: ../homedecor/crafts.lua:112
+msgid "Steel chainlink"
+msgstr "Cerca/corrimão de aço"
+
+#: ../homedecor/crafts.lua:117
+msgid "Brass chainlink"
+msgstr "Cerca/corrimão de bronze"
+
+#: ../homedecor/crafts.lua:122
+msgid "Soda Can"
+msgstr "Lata de Refrigerante"
+
+#: ../homedecor/crafts.lua:128
+msgid "Gold Coin (for soda vending machine)"
+msgstr "Moeda de Ouro (para máquina de venda de refrigerante)"
+
+#: ../homedecor/crafts.lua:137
+msgid "Silicon lump"
+msgstr "Massa de silício"
+
+#: ../homedecor/crafts.lua:154
+msgid "Brass Ingot"
+msgstr "Lingote de Latão"
+
+#: ../homedecor/crafts.lua:3330
+msgid "Small Flower Pot"
+msgstr "Vaso de Flor Pequeno"
+
+#: ../homedecor/electronics.lua:6
+msgid "Large Stereo Speaker"
+msgstr "Alto-falante Grande"
+
+#: ../homedecor/electronics.lua:20
+msgid "Large Stereo Speaker, open front"
+msgstr "Alto-falante Grande, frente aberta"
+
+#: ../homedecor/electronics.lua:41
+msgid "Small Surround Speaker"
+msgstr "Alto-falante Pequeno"
+
+#: ../homedecor/electronics.lua:54
+msgid "Stereo Receiver"
+msgstr "Aparelho de Som"
+
+#: ../homedecor/electronics.lua:66
+msgid "Projection Screen Material"
+msgstr "Material de Tela de Projeção"
+
+#: ../homedecor/electronics.lua:82
+msgid "Small CRT Television"
+msgstr "TV de tubo pequena"
+
+#: ../homedecor/electronics.lua:103
+msgid "DVD and VCR"
+msgstr "DVD e VCR"
+
+#: ../homedecor/electronics.lua:138
+msgid "Telephone"
+msgstr "Telefone"
+
+#: ../homedecor/lighting.lua:73
+msgid "Thick Glowlight (@1)"
+msgstr "Arandela Fina (@1)"
+
+#: ../homedecor/lighting.lua:91
+msgid "Thin Glowlight (@1)"
+msgstr "Arandela Grossa (@1)"
+
+#: ../homedecor/lighting.lua:111
+msgid "Small Glowlight Cube (@1)"
+msgstr "Arandela Cúbica Pequena (@1)"
+
+#: ../homedecor/lighting.lua:131
+msgid "Plasma Lamp"
+msgstr "Lâmpada de Plasma"
+
+#: ../homedecor/lighting.lua:151
+msgid "Plasma Ball"
+msgstr "Bola de Plasma"
+
+#: ../homedecor/lighting.lua:182
+msgid "Thick Candle"
+msgstr "Vela Grossa"
+
+#: ../homedecor/lighting.lua:203
+msgid "Thin Candle"
+msgstr "Vela Fina"
+
+#: ../homedecor/lighting.lua:224
+msgid "Candlestick (wrought iron)"
+msgstr "Castiçal (ferro forjado)"
+
+#: ../homedecor/lighting.lua:239
+msgid "Candlestick (brass)"
+msgstr "Castiçal (latão)"
+
+#: ../homedecor/lighting.lua:254
+msgid "Wall sconce"
+msgstr "Candeeiro de Parede"
+
+#: ../homedecor/lighting.lua:280
+msgid "Oil lamp (hurricane)"
+msgstr "Luminária a óleo (lamparina)"
+
+#: ../homedecor/lighting.lua:300
+msgid "Oil Lamp (tabletop)"
+msgstr "Luminária a Óleo (sobre mesa)"
+
+#: ../homedecor/lighting.lua:319
+msgid "Ground Lantern"
+msgstr "Lanterna de Chão"
+
+#: ../homedecor/lighting.lua:337
+msgid "Hanging Lantern"
+msgstr "Lanterna de Parede"
+
+#: ../homedecor/lighting.lua:368
+msgid "Lattice lantern (large)"
+msgstr "Lanterna com gelosia (grande)"
+
+#: ../homedecor/lighting.lua:376
+msgid "Lattice lantern (small)"
+msgstr "Lanterna com gelosia (pequena)"
+
+#: ../homedecor/lighting.lua:426
+msgid "Table Lamp (@1)"
+msgstr "Luminária de Mesa (@1)"
+
+#: ../homedecor/lighting.lua:452
+msgid "Standing Lamp (@1)"
+msgstr "Luminária Elevada (@1)"
+
+#: ../homedecor/lighting.lua:502
+msgid "Desk Lamp (@1)"
+msgstr "Luminária de Escritório (@1)"
+
+#: ../homedecor/lighting.lua:518
+msgid "Ceiling Lamp"
+msgstr "Luminária de Teto"
+
+#: ../homedecor/lighting.lua:536
+msgid "Ceiling Lamp (off)"
+msgstr "Luminária de Teto (desligada)"
+
+#: ../homedecor/fences.lua:31
+msgid "Fence/railing (@1)"
+msgstr "Cerca/corrimão (@1)"
+
+#: ../homedecor/fences.lua:43
+msgid "Fence/railing with sign (@1)"
+msgstr "Cerca/corrimão com placa (@1)"
+
+#: ../homedecor/fences.lua:71
+msgid "Unpainted Picket Fence"
+msgstr "Cerca de Piquete Não Pintada"
+
+#: ../homedecor/fences.lua:87
+msgid "Unpainted Picket Fence Corner"
+msgstr "Cerca de Piquete Não Pintada de Canto"
+
+#: ../homedecor/fences.lua:103
+msgid "White Picket Fence"
+msgstr "Cerca de Piquete Branca"
+
+#: ../homedecor/fences.lua:119
+msgid "White Picket Fence Corner"
+msgstr "Cerca de Piquete Branca de Canto"
+
+#: ../homedecor/fences.lua:135
+msgid "Wooden Privacy Fence"
+msgstr "Cerca Privativa de Madeira"
+
+#: ../homedecor/fences.lua:159
+msgid "Wooden Privacy Fence Corner"
+msgstr "Cerca Privativa de Madeira de Canto"
+
+#: ../homedecor/fences.lua:194
+msgid "Barbed Wire Fence"
+msgstr "Cerca de Arame Farpado"
+
+#: ../homedecor/fences.lua:204
+msgid "Barbed Wire Fence Corner"
+msgstr "Cerca de Arame Farpado de Canto"
+
+#: ../homedecor/fences.lua:214
+msgid "Chainlink Fence"
+msgstr "Cerca de Tela de Arame"
+
+#: ../homedecor/fences.lua:232
+msgid "Chainlink Fence Corner"
+msgstr "Cerca de Tela de Arame de Canto"
+
+#: ../homedecor/fences.lua:249
+msgid "Wrought Iron fence (type 2)"
+msgstr "Cerca de Ferro Forjado (tipo 2)"
+
+#: ../homedecor/fences.lua:276
+msgid "Wrought Iron fence (type 2) Corner"
+msgstr "Cerca de Ferro Forjado (tipo 2) de Canto"
+
+#: ../homedecor/shutters.lua:6
+msgid "unpainted oak"
+msgstr "carvalho não pintado"
+
+#: ../homedecor/shutters.lua:10
+msgid "forest green"
+msgstr "verde floresta"
+
+#: ../homedecor/shutters.lua:11
+msgid "light blue"
+msgstr "azul claro"
+
+#: ../homedecor/shutters.lua:35
+msgid "Wooden Shutter (@1)"
+msgstr "Persiana de Madeira (@1)"
+
+#: ../homedecor/exterior.lua:12
+msgid "Barbecue"
+msgstr "Churrasqueira"
+
+#: ../homedecor/exterior.lua:56
+msgid "Garden Bench (style 1)"
+msgstr "Banco de Jardim (estilo 1)"
+
+#: ../homedecor/exterior.lua:83
+msgid "Garden Bench (style 2)"
+msgstr "Banco de Jardim (estilo 2)"
+
+#: ../homedecor/exterior.lua:106 ../homedecor/exterior.lua:121
+msgid "Deck Chair"
+msgstr "Cadeira de Praia"
+
+#: ../homedecor/exterior.lua:137
+msgid "Doghouse"
+msgstr "Casa de Cachorro"
+
+#: ../homedecor/exterior.lua:152
+msgid "Simple Bench"
+msgstr "Banco Simples"
+
+#: ../homedecor/exterior.lua:166
+msgid "Garden stone path"
+msgstr "Caminho de pedra de jardim"
+
+#: ../homedecor/exterior.lua:194
+msgid "white wood"
+msgstr "madeira branca"
+
+#: ../homedecor/exterior.lua:195
+msgid "wood, with vegetation"
+msgstr "madeira, com vegetação"
+
+#: ../homedecor/exterior.lua:197
+msgid "white wood, with vegetation"
+msgstr "madeira branca, com vegetação"
+
+#: ../homedecor/exterior.lua:204
+msgid "Garden Lattice (@1)"
+msgstr "Gelosia de Jardin (@1)"
+
+#: ../homedecor/exterior.lua:227
+msgid "Tree's swing"
+msgstr "Balancinho de árvore"
+
+#: ../homedecor/exterior.lua:329
+msgid "Water well"
+msgstr "Poço de agua"
+
+#: ../homedecor/exterior.lua:370 ../homedecor/exterior.lua:381
+msgid "Shrubbery (@1)"
+msgstr "Matagal (@1)"
+
+#: ../homedecor/bathroom_sanitation.lua:17
+msgid "Toilet"
+msgstr "Vaso Sanitário"
+
+#: ../homedecor/bathroom_sanitation.lua:68
+msgid "Toilet paper"
+msgstr "Papel higiênico "
+
+#: ../homedecor/bathroom_sanitation.lua:89
+msgid "Bathroom Sink"
+msgstr "Pia de Banheiro"
+
+#: ../homedecor/bathroom_sanitation.lua:137
+msgid "Bathroom taps/faucet"
+msgstr "Torneira de Banheiro"
+
+#: ../homedecor/bathroom_sanitation.lua:160
+msgid "Bathroom taps/faucet (brass)"
+msgstr "Torneira de Banheiro (latão)"
+
+#: ../homedecor/bathroom_sanitation.lua:185
+msgid "Shower Tray"
+msgstr "Ralo do Chuveiro"
+
+#: ../homedecor/bathroom_sanitation.lua:225
+msgid "Shower Head"
+msgstr "Chuveiro"
+
+#: ../homedecor/bathroom_sanitation.lua:265
+msgid "Bathroom sundries set"
+msgstr "Espelho de Banheiro com bancada"
+
+#: ../homedecor/climate-control.lua:6
+msgid "Air Conditioner"
+msgstr "Ar condicionado"
+
+#: ../homedecor/climate-control.lua:44
+msgid "Desk Fan"
+msgstr "Ventilador de Escritório"
+
+#: ../homedecor/climate-control.lua:83
+msgid "Ceiling Fan"
+msgstr "Ventilador de Teto"
+
+#: ../homedecor/climate-control.lua:107
+msgid "Space heater"
+msgstr "Aquecedor de ambiente"
+
+#: ../homedecor/climate-control.lua:139
+msgid "Radiator heater"
+msgstr "Aquecedor de radiador"
+
+#: ../homedecor/doors_and_gates.lua:124
+msgid "Mahogany Closet Door (@1 opening)"
+msgstr "Porta de Closet em Mogno (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua:129
+msgid "Oak Closet Door (@1 opening)"
+msgstr "Porta de Closet em Carvalho (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua:134
+msgid "Fancy Wood/Glass Door (@1 opening)"
+msgstr "Porta de madeira/vidro trabalhada (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua:144
+msgid "Glass Office Door (@1 opening)"
+msgstr "Porta de Vidro para Escritório (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua:149
+msgid "Glass and Wood, Oak-colored (@1 opening)"
+msgstr "Vidro e madeira (carvalho) (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua:158
+msgid "Glass and Wood, Mahogany-colored (@1 opening)"
+msgstr "Vidro e madeira (mogno) (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua:167
+msgid "Glass and Wood, White (@1 opening)"
+msgstr "Vidro e madeira (branca) (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua:176
+msgid "Plain Wooden Door (@1 opening)"
+msgstr "Porta de Madeira Sem Acabamento (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua:181
+msgid "White Bedroom Door (@1 opening)"
+msgstr "Porta de Quarto Branca (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua:186
+msgid "Wrought Iron Gate/Door (@1 opening)"
+msgstr "Cerca/corrimão de ferro forjado (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua:191
+msgid "Wooden door with glass insert (@1 opening)"
+msgstr "Porta de Madeira com Vidraça (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua:201
+msgid "Wooden door with glass insert, type 2 (@1 opening)"
+msgstr "Porta de Madeira com Vidraça, tipo 2 (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua:212
+msgid "left"
+msgstr "esquerda"
+
+#: ../homedecor/doors_and_gates.lua:212
+msgid "right"
+msgstr "direita"
+
+#: ../homedecor/doors_and_gates.lua:296
+msgid "Unpainted Picket Fence Gate"
+msgstr "Porteira de Madeira Não Pintada"
+
+#: ../homedecor/doors_and_gates.lua:297
+msgid "White Picket Fence Gate"
+msgstr "Porteira Branca de Piquete "
+
+#: ../homedecor/doors_and_gates.lua:298
+msgid "Barbed Wire Fence Gate"
+msgstr "Porteira de Arame Farpado"
+
+#: ../homedecor/doors_and_gates.lua:299
+msgid "Chainlink Fence Gate"
+msgstr "Porteira de Tela de Arame"
+
+#: ../homedecor/doors_and_gates.lua:526
+msgid "Japanese wall (top)"
+msgstr "Divisória japonesa (superior)"
+
+#: ../homedecor/doors_and_gates.lua:542
+msgid "Japanese wall"
+msgstr "Divisória japonesa"
+
+#: ../homedecor/doors_and_gates.lua:558
+msgid "Japanese wall (bottom)"
+msgstr "Divisória japonesa (inferior)"
+
+#: ../homedecor/doors_and_gates.lua:582
+msgid "Japanese tatami"
+msgstr "Tatami Japonês"
+
+#: ../homedecor/doors_and_gates.lua:595
+msgid "Japanese-style door"
+msgstr "Porta estilo japonês"
+
+#: ../homedecor/init.lua:133
+msgid "Loaded!"
+msgstr "Carregado!"
+
+#: ../homedecor/misc-nodes.lua:7
+msgid "Textured Ceiling Paint"
+msgstr "Pintura Texturizada do Teto"
+
+#: ../homedecor/misc-nodes.lua:19
+msgid "Drop-Ceiling Tile"
+msgstr "Placa de Teto"
+
+#: ../homedecor/misc-nodes.lua:31
+msgid "small"
+msgstr "pequeno"
+
+#: ../homedecor/misc-nodes.lua:32
+msgid "large"
+msgstr "grande"
+
+#: ../homedecor/misc-nodes.lua:33
+msgid "persian"
+msgstr "persiana"
+
+#: ../homedecor/misc-nodes.lua:57
+msgid "Rug (@1)"
+msgstr "Carpete (@1)"
+
+#: ../homedecor/misc-nodes.lua:73
+msgid "Flower Pot (@1)"
+msgstr "Vaso de Flores"
+
+#: ../homedecor/misc-nodes.lua:85
+msgid "Rose"
+msgstr "Rosa"
+
+#: ../homedecor/misc-nodes.lua:86
+msgid "Tulip"
+msgstr "Tulipa"
+
+#: ../homedecor/misc-nodes.lua:87
+msgid "Yellow Dandelion"
+msgstr "Dente de Leão Amarelo"
+
+#: ../homedecor/misc-nodes.lua:88
+msgid "White Dandelion"
+msgstr "Dente de Leão Branco"
+
+#: ../homedecor/misc-nodes.lua:89
+msgid "Blue Geranium"
+msgstr "Gerânio Azul"
+
+#: ../homedecor/misc-nodes.lua:90
+msgid "Viola"
+msgstr "Violeta"
+
+#: ../homedecor/misc-nodes.lua:91
+msgid "Cactus"
+msgstr "Cacto"
+
+#: ../homedecor/misc-nodes.lua:92
+msgid "Bonsai"
+msgstr "Bonsai"
+
+#: ../homedecor/misc-nodes.lua:99
+msgid "Potted flower (@1)"
+msgstr "Vaso de Flor (@1)"
+
+#: ../homedecor/misc-nodes.lua:127
+msgid "Brass Pole"
+msgstr "Poste de bronze"
+
+#: ../homedecor/misc-nodes.lua:145
+msgid "Wrought Iron Pole"
+msgstr "Poste de Ferro Forjado"
+
+#: ../homedecor/misc-nodes.lua:167
+msgid "Fishtank"
+msgstr "Aquário"
+
+#: ../homedecor/misc-nodes.lua:189
+msgid "Fishtank (lighted)"
+msgstr "Aquário (iluminado)"
+
+#: ../homedecor/misc-nodes.lua:213
+msgid "Cardboard box (big)"
+msgstr "Caixa de Papelão (grande)"
+
+#: ../homedecor/misc-nodes.lua:220 ../homedecor/misc-nodes.lua:227
+#: ../homedecor/misc-nodes.lua:240
+msgid "Cardboard box"
+msgstr "Caixa de Papelão"
+
+#: ../homedecor/misc-nodes.lua:247
+msgid "DVD/CD cabinet"
+msgstr "Gabinete de DVD/CD"
+
+#: ../homedecor/misc-nodes.lua:273
+msgid "Pool Table"
+msgstr "Mesa de Sinuca"
+
+#: ../homedecor/misc-nodes.lua:298
+msgid "Piano"
+msgstr "Piano"
+
+#: ../homedecor/misc-nodes.lua:316
+msgid "Trophy"
+msgstr "Troféu"
+
+#: ../homedecor/misc-nodes.lua:334
+msgid "Sport bench"
+msgstr "Supino Reto"
+
+#: ../homedecor/misc-nodes.lua:359
+msgid "Skateboard"
+msgstr "Skate"
+
+#: ../homedecor/misc-nodes.lua:368
+msgid "Metal tool cabinet and work table"
+msgstr "Gabinete de ferramentas metálicas e mesa de trabalho"
+
+#: ../homedecor/misc-nodes.lua:399
+msgid "Picture Frame"
+msgstr "Quadro de Foto"
+
+#: ../homedecor/misc-nodes.lua:424
+msgid "Decorative painting #@1"
+msgstr "Quadro Decorativo #@1"
+
+#: ../homedecor/misc-nodes.lua:449
+msgid "dark topped"
+msgstr "coberto escuro"
+
+#: ../homedecor/misc-nodes.lua:479
+msgid "diagonal"
+msgstr "diagonal"
+
+#: ../homedecor/misc-nodes.lua:479
+msgid "horizontal"
+msgstr "horizontal"
+
+#: ../homedecor/misc-nodes.lua:503
+msgid "Banister for Stairs (@1, @2)"
+msgstr "Corrimão para Escadas (@1, @2)"
+
+#: ../homedecor/misc-nodes.lua:576
+msgid "not enough space"
+msgstr "Espaço induficiente"
+
+#: ../homedecor/tables.lua:7
+msgid "Small square glass table"
+msgstr "Tampo Quadrado de Vidro"
+
+#: ../homedecor/tables.lua:8
+msgid "Small round glass table"
+msgstr "Tampo Redondo de Vidro"
+
+#: ../homedecor/tables.lua:9
+msgid "Large glass table piece"
+msgstr "Tampo Grande de Vidro"
+
+#: ../homedecor/tables.lua:12
+msgid "Small square wooden table"
+msgstr "Tampo Quadrado de Madeira"
+
+#: ../homedecor/tables.lua:13
+msgid "Small round wooden table"
+msgstr "Tampo Redondo de Madeira"
+
+#: ../homedecor/tables.lua:14
+msgid "Large wooden table piece"
+msgstr "Tampo Grande de Madeira"
+
+#: ../homedecor/tables.lua:134
+msgid "Utility Table"
+msgstr "Mesa de Trabalho"
+
+#: ../homedecor/tables.lua:173
+msgid "Table Legs (@1)"
+msgstr "Pernas de Mesa (@1)"
+
+#: ../homedecor/tables.lua:189
+msgid "Legs for Utility Table"
+msgstr "Pernas para Mesa de Trabalho"
+
+#: ../homedecor/books.lua:45
+msgid "Writable Book (@1)"
+msgstr "Livro Consumível (@1)"
+
+#: ../homedecor/books.lua:173
+msgid "@1 has written in a book (title: \"@2\"): \"@3\" at location @4"
+msgstr "@1 escreveu um livro (título: \"@2\"): \"@3\" na localização @4"
+
+#: ../homedecor/furniture.lua:4
+msgid "Table"
+msgstr "Mesa"
+
+#: ../homedecor/furniture.lua:5
+msgid "Mahogany Table"
+msgstr "Mesa em Mogno"
+
+#: ../homedecor/furniture.lua:6
+msgid "White Table"
+msgstr "Mesa Branca"
+
+#: ../homedecor/furniture.lua:35
+msgid "plain"
+msgstr "Sem Acabamento"
+
+#: ../homedecor/furniture.lua:77
+msgid "Kitchen chair (@1)"
+msgstr "Cadeira de Cozinha (@1)"
+
+#: ../homedecor/furniture.lua:93
+msgid "Armchair (@1)"
+msgstr "Poltrona (@1)"
+
+#: ../homedecor/furniture.lua:122
+msgid "Bookshelf (open-frame)"
+msgstr "Estante de Livros de Parede"
+
+#: ../homedecor/furniture.lua:138
+msgid "Wall Shelf"
+msgstr "Estante de Parede"
+
+#: ../homedecor/handlers/inventory.lua:87
+msgid "@1 moves stuff in @2 at @3"
+msgstr "@1 moveu algo de @2 em @3"
+
+#: ../homedecor/handlers/inventory.lua:92
+msgid "@1 moves @2 to @3 at @4"
+msgstr "@1 moveu @2 de @3 em @4"
+
+#: ../homedecor/handlers/inventory.lua:97
+msgid "@1 takes @2 from @3 at @4"
+msgstr "@1 pegou @2 de @3 em @4"
+
+#: ../homedecor/handlers/inventory.lua:110
+msgid "@1 (owned by @2)"
+msgstr "@1 (pertence a @2)"
+
+#: ../homedecor/handlers/inventory.lua:127
+#: ../homedecor/handlers/inventory.lua:145
+#: ../homedecor/handlers/inventory.lua:163
+msgid "@1 tried to access a @2 belonging to @3 at @4"
+msgstr "@1 tentou acessar @2 pertencente a @3 em @4"
+
+#: ../homedecor/handlers/inventory.lua:173
+msgid "@1 (Locked)"
+msgstr "@1 (trancado)"
+
+#: ../homedecor/handlers/furnaces.lua:91
+msgid "Furnace"
+msgstr "Forno"
+
+#: ../homedecor/handlers/furnaces.lua:109
+#: ../homedecor/handlers/furnaces.lua:128
+#: ../homedecor/handlers/furnaces.lua:262
+msgid "@1 (empty)"
+msgstr "@1 (vazio)"
+
+#: ../homedecor/handlers/furnaces.lua:154
+msgid "@1 (active)"
+msgstr "@1 (ativo)"
+
+#: ../homedecor/handlers/furnaces.lua:234
+msgid "@1 (active: @2%)"
+msgstr "@1 (ativo: @2%)"
+
+#: ../homedecor/handlers/furnaces.lua:254
+msgid "@1 (out of fuel)"
+msgstr "@1 (sem combustível)"
+
+#: ../homedecor/handlers/furnaces.lua:270
+msgid "@1 (output bins are full)"
+msgstr "@1 (saída de itens está lotada)"
+
+#: ../homedecor/office.lua:4 ../homedecor/office.lua:13
+msgid "Filing cabinet"
+msgstr "Armário sob a Pia"
+
+#: ../homedecor/bathroom_furniture.lua:5
+msgid "white/grey"
+msgstr "branco/cinza"
+
+#: ../homedecor/bathroom_furniture.lua:6
+msgid "white/dark grey"
+msgstr "branco/cinza escuro"
+
+#: ../homedecor/bathroom_furniture.lua:7
+msgid "white/black"
+msgstr "branco/preto"
+
+#: ../homedecor/bathroom_furniture.lua:8
+msgid "black/dark grey"
+msgstr "preto/cinza escuro"
+
+#: ../homedecor/bathroom_furniture.lua:9
+msgid "white/red"
+msgstr "branco/vermelho"
+
+#: ../homedecor/bathroom_furniture.lua:10
+msgid "white/green"
+msgstr "branco/verde"
+
+#: ../homedecor/bathroom_furniture.lua:11
+msgid "white/blue"
+msgstr "branco/azul"
+
+#: ../homedecor/bathroom_furniture.lua:12
+msgid "white/yellow"
+msgstr "branco/amarelo"
+
+#: ../homedecor/bathroom_furniture.lua:13
+msgid "white/tan"
+msgstr "branco/bronzeado"
+
+#: ../homedecor/bathroom_furniture.lua:27
+msgid "Bathroom/kitchen tiles (@1)"
+msgstr "Azulejo de Banheiro/Cozinha (@1)"
+
+#: ../homedecor/bathroom_furniture.lua:48
+msgid "Towel rod with towel"
+msgstr "Tolo de Toalha com Toalha"
+
+#: ../homedecor/bathroom_furniture.lua:62
+#: ../homedecor/bathroom_furniture.lua:80
+msgid "Medicine cabinet"
+msgstr "Gabinete Medicinal"
+
+#~ msgid "%s moves stuff in kitchen cabinet at %s "
+#~ msgstr "%s moveu itens no armário de cozinha em %s"
+
+#~ msgid "%s moves stuff to kitchen cabinet at %s "
+#~ msgstr "%s moveu itens para o armário de cozinha em %s"
+
+#~ msgid "%s takes stuff from kitchen cabinet at %s "
+#~ msgstr "%s retirou itens do armário de cozinha em %s"
+
+#~ msgid "(Top Half, %s-opening) "
+#~ msgstr "(Metade superior, abre para %s)"
+
+#~ msgid "(%s-opening) "
+#~ msgstr "(abre para %s)"
+
+#~ msgid "Not enough vertical space to place a door! "
+#~ msgstr "Não existe espaço vertical suficiente para colocar uma porta."
+
+#~ msgid "Bucket of white paint "
+#~ msgstr "Balde de tinta branca"
+
+#~ msgid "Legs for Small Utility table "
+#~ msgstr "Pernas para mesa pequena"
+
+#~ msgid "Titanium Dioxide "
+#~ msgstr "Dióxido de titânio"
+
+#~ msgid "Chainlink Fence Gate (open) "
+#~ msgstr "Portão da cerca de tela de arame (aberto)"
+
+#~ msgid "Wrought Iron Fence/railing with sign "
+#~ msgstr "Cerca/corrimão de ferro forjado, com placa"
+
+#~ msgid "want to simply place the wielded item like usual. "
+#~ msgstr "quer somente colocar o item empunhado normalmente."
+
+#~ msgid "Sink "
+#~ msgstr "Pia"
+
+#~ msgid "Taps "
+#~ msgstr "Torneira"
+
+#~ msgid "Glass Table (Small, Round) "
+#~ msgstr "Mesa de vidro (pequena, redonda)"
+
+#~ msgid "Glass Table (Small, Square) "
+#~ msgstr "Mesa de vidro (pequena, quadrada)"
+
+#~ msgid "Green Plastic Flower Pot "
+#~ msgstr "Vaso de flor de plástico verde"
+
+#~ msgid "Large Area Rug "
+#~ msgstr "Tapete grande"
+
+#~ msgid "Small Throw Rug "
+#~ msgstr "Tapete pequeno"
+
+#~ msgid "Terracotta Flower Pot "
+#~ msgstr "Vaso de flor de terracota"
+
+#~ msgid "Utility table mk2 "
+#~ msgstr "Mesa de trabalho mk2"
+
+#~ msgid "Wooden Shutter (Black) "
+#~ msgstr "Persiana de madeira (preta)"
+
+#~ msgid "Wooden Shutter (Dark Grey) "
+#~ msgstr "Persiana de madeira (cinza escura)"
+
+#~ msgid "Wooden Shutter (Forest Green) "
+#~ msgstr "Persiana de madeira (verde)"
+
+#~ msgid "Wooden Shutter (Grey) "
+#~ msgstr "Persiana de madeira (cinza)"
+
+#~ msgid "Wooden Shutter (Light Blue) "
+#~ msgstr "Persiana de madeira (azul clara)"
+
+#~ msgid "Wooden Shutter (Purple) "
+#~ msgstr "Persiana de madeira (roxa)"
+
+#~ msgid "Wooden Shutter (Unpainted Mahogany) "
+#~ msgstr "Persiana de madeira (mogno)"
+
+#~ msgid "Wooden Shutter (Unpainted Oak) "
+#~ msgstr "Persiana de madeira (carvalho)"
+
+#~ msgid "Wooden Shutter (White) "
+#~ msgstr "Persiana de madeira (branca)"
+
+#~ msgid "Wooden Shutter (Yellow) "
+#~ msgstr "Persiana de madeira (amarela)"
+
+#~ msgid "Wooden Tabletop (Small, Round) "
+#~ msgstr "Tampo da mesa (pequeno, arredondado)"
+
+#~ msgid "Wooden Tabletop (Small, Square) "
+#~ msgstr "Tampo da mesa (pequeno, quadrado)"
+
+#~ msgid "someone "
+#~ msgstr "alguém"
+
+#~ msgid "Sorry, %s owns that spot. "
+#~ msgstr "Desculpe, mas esse local pertence a %s."
+
+#~ msgid "White Glowlight (small cube) "
+#~ msgstr "Arandela branca (cubo pequeno)"
+
+#~ msgid "White Glowlight (small cube, on ceiling) "
+#~ msgstr "Arandela branca (cubo pequeno, na parede)"
+
+#~ msgid "White Glowlight (thick, on wall) "
+#~ msgstr "Arandela branca (grossa, na parede)"
+
+#~ msgid "White Glowlight (thin, on wall) "
+#~ msgstr "Arandela branca (fina, na parede)"
+
+#~ msgid "Yellow Glowlight (small cube, on ceiling) "
+#~ msgstr "Arandela amarela (cubo pequeno, na parede)"
+
+#~ msgid "Yellow Glowlight (thick) "
+#~ msgstr "Arandela amarela (grossa)"
+
+#~ msgid "Yellow Glowlight (thick, on wall) "
+#~ msgstr "Arandela amarela (grossa, na parede)"
+
+#~ msgid "Yellow Glowlight (thin) "
+#~ msgstr "Arandela amarela (fina)"
+
+#~ msgid "Yellow Glowlight (thin, on wall) "
+#~ msgstr "Arandela amarela (fina, na parede)"
+
+#~ msgid "Locked Cabinet "
+#~ msgstr "Armário trancado"
+
+#~ msgid "Locked Nightstand "
+#~ msgstr "Criado-mudo trancado"
+
+#~ msgid "Mahogany Nightstand with One Drawer "
+#~ msgstr "Criado-mudo de mogno, com uma gaveta"
+
+#~ msgid "Mahogany Nightstand with Two Drawers "
+#~ msgstr "Criado-mudo de mogno, com duas gavetas"
+
+#~ msgid "%s moves stuff to nightstand at %s "
+#~ msgstr "%s moveu item(ns) para o criado-mudo em %s"
+
+#~ msgid "%s takes stuff from nightstand at %s "
+#~ msgstr "%s tirou item(ns) do criado-mudo em %s"
+
+#~ msgid "Oven active: %d%% "
+#~ msgstr "Forno ativo: %d%%"
+
+#~ msgid "Oven is empty "
+#~ msgstr "O forno está vazio"
+
+#~ msgid "%s moves stuff in refrigerator at %s "
+#~ msgstr "%s moveu item(ns) na geladeira em %s"
+
+#~ msgid "%s moves stuff to refrigerator at %s "
+#~ msgstr "%s moveu item(ns) para a geladeira em %s"
+
+#~ msgid "%s takes stuff from refrigerator at %s "
+#~ msgstr "%s tirou item(ns) da geladeira em %s"
+
+#~ msgid "Not enough vertical space to place a refrigerator! "
+#~ msgstr "Não existe espaço vertical suficiente para adicionar uma geladeira."
+
+#~ msgid "%s wrote \"%s\" to sign at %s "
+#~ msgstr "%s escreveu \"%s\" na placa em %s"
+
+#~ msgid "Reading cached character database. "
+#~ msgstr "Lendo banco de dados de caracteres no cache."
+
+#~ msgid "Font seems to have changed. Rebuilding cache. "
+#~ msgstr "Aparentemente as fontes foram alteradas. Reconstruindo o cache."
+
+#~ msgid "Could not find font line height in cached DB. Trying brute force. "
+#~ msgstr ""
+#~ "Não foi possível encontrar a altura da linha da fonte no cache do BD. "
+#~ "Tentando na marra."
+
+#~ msgid "Registered %s and %s "
+#~ msgstr "%s e %s registrados"
+
+#~ msgid "signs loaded "
+#~ msgstr "placas carregadas"
diff --git a/homedecor/locale/template.pot b/homedecor/locale/template.pot
new file mode 100644
index 0000000..ee7cd93
--- /dev/null
+++ b/homedecor/locale/template.pot
@@ -0,0 +1,1152 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-01-25 00:03-0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../computer/miscitems.lua:13 ../homedecor/crafts.lua:32
+msgid "Plastic sheet"
+msgstr ""
+
+#: ../computer/miscitems.lua:18
+msgid "Unprocessed Plastic base"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:7 ../homedecor/shutters.lua:13
+#: ../homedecor/misc-nodes.lua:69 ../homedecor/furniture.lua:36
+msgid "black"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:8 ../homedecor/books.lua:12
+msgid "brown"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:9 ../homedecor/window_treatments.lua:107
+#: ../homedecor/lighting.lua:400 ../homedecor/lighting.lua:498
+#: ../homedecor/books.lua:9 ../homedecor/furniture.lua:40
+msgid "blue"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:10
+msgid "cyan"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:11 ../homedecor/shutters.lua:14
+msgid "dark grey"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:12 ../homedecor/furniture.lua:41
+msgid "dark green"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:13 ../homedecor/window_treatments.lua:106
+#: ../homedecor/lighting.lua:401 ../homedecor/lighting.lua:498
+#: ../homedecor/exterior.lua:361 ../homedecor/misc-nodes.lua:69
+#: ../homedecor/books.lua:8
+msgid "green"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:14 ../homedecor/shutters.lua:15
+#: ../homedecor/books.lua:11
+msgid "grey"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:15
+msgid "magenta"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:16
+msgid "orange"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:17 ../homedecor/window_treatments.lua:109
+#: ../homedecor/lighting.lua:402 ../homedecor/furniture.lua:38
+msgid "pink"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:18 ../homedecor/window_treatments.lua:105
+#: ../homedecor/lighting.lua:403 ../homedecor/lighting.lua:498
+#: ../homedecor/shutters.lua:8 ../homedecor/exterior.lua:362
+#: ../homedecor/books.lua:7 ../homedecor/furniture.lua:37
+msgid "red"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:19 ../homedecor/window_treatments.lua:110
+#: ../homedecor/lighting.lua:404 ../homedecor/lighting.lua:498
+#: ../homedecor/shutters.lua:12 ../homedecor/books.lua:10
+#: ../homedecor/furniture.lua:39
+msgid "violet"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:20 ../homedecor/window_treatments.lua:108
+#: ../homedecor/lighting.lua:9 ../homedecor/lighting.lua:399
+#: ../homedecor/shutters.lua:16
+msgid "white"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:21 ../homedecor/lighting.lua:9
+#: ../homedecor/shutters.lua:9 ../homedecor/exterior.lua:363
+msgid "yellow"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:70
+msgid "Bed (@1)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:131
+msgid "Bed (@1, king sized)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:159 ../homedecor/shutters.lua:7
+msgid "mahogany"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:159
+msgid "oak"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:161
+msgid "Nightstand with One Drawer (@1)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:182
+msgid "One-drawer Nightstand"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:190
+msgid "Nightstand with Two Drawers (@1)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua:208
+msgid "Two-drawer Nightstand"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua:10
+#: ../homedecor/kitchen_appliances.lua:240
+msgid "granite"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua:10
+#: ../homedecor/kitchen_appliances.lua:240
+msgid "marble"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua:10
+#: ../homedecor/kitchen_appliances.lua:240
+msgid "steel"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua:14 ../homedecor/kitchen_furniture.lua:32
+#: ../homedecor/kitchen_furniture.lua:55
+msgid "Kitchen Cabinet"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua:18
+msgid "Kitchen Cabinet (@1 top)"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua:42
+msgid "Half-height Kitchen Cabinet (on ceiling)"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua:63
+msgid "Kitchen Cabinet with sink"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua:73
+msgid "Under-sink cabinet"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua:150
+msgid "Paper towels"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua:5
+msgid "Bars"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua:27
+msgid "Binding Bars"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua:51
+msgid "Chains"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua:62
+msgid "Wall Torch"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua:94
+msgid "Wall Lamp"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:12
+msgid "Refrigerator (stainless steel)"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:18
+#: ../homedecor/kitchen_appliances.lua:31
+#: ../homedecor/kitchen_appliances.lua:37
+msgid "Refrigerator"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:60
+msgid "Oven"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:68
+msgid "Oven (stainless steel)"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:76
+msgid "Microwave Oven"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:117
+msgid "Coffee Maker"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:164
+msgid "Toaster"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:216
+msgid "Dishwasher"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:240 ../homedecor/roofing.lua:31
+#: ../homedecor/window_treatments.lua:167 ../homedecor/exterior.lua:193
+#: ../homedecor/misc-nodes.lua:440
+msgid "wood"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua:244
+msgid "Dishwasher (@1)"
+msgstr ""
+
+#: ../homedecor/roofing.lua:7
+msgid "Glass Skylight"
+msgstr ""
+
+#: ../homedecor/roofing.lua:19
+msgid "Glass Skylight Frosted"
+msgstr ""
+
+#: ../homedecor/roofing.lua:31
+msgid "asphalt"
+msgstr ""
+
+#: ../homedecor/roofing.lua:31 ../homedecor/misc-nodes.lua:69
+msgid "terracotta"
+msgstr ""
+
+#: ../homedecor/roofing.lua:33
+msgid "Shingles (@1)"
+msgstr ""
+
+#: ../homedecor/roofing.lua:87
+msgid "@1 (outer corner)"
+msgstr ""
+
+#: ../homedecor/roofing.lua:109
+msgid "@1 (inner corner)"
+msgstr ""
+
+#: ../homedecor/roofing.lua:265 ../homedecor/roofing.lua:286
+msgid "Wood Shingles"
+msgstr ""
+
+#: ../homedecor/roofing.lua:271 ../homedecor/roofing.lua:293
+msgid "Asphalt Shingles"
+msgstr ""
+
+#: ../homedecor/roofing.lua:277 ../homedecor/roofing.lua:300
+msgid "Terracotta Shingles"
+msgstr ""
+
+#: ../homedecor/roofing.lua:307
+msgid "Glass Shingles"
+msgstr ""
+
+#: ../homedecor/roofing.lua:312
+msgid "Chimney"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:7
+msgid "Window (quartered)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:38
+msgid "Window (plain)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:72
+msgid "Window Blinds (thick)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:91
+msgid "Window Blinds (thin)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:117
+#: ../homedecor/window_treatments.lua:140
+msgid "Curtains (@1)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:165 ../homedecor/fences.lua:22
+#: ../homedecor/misc-nodes.lua:458 ../homedecor/tables.lua:166
+msgid "brass"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:166 ../homedecor/fences.lua:23
+#: ../homedecor/misc-nodes.lua:467 ../homedecor/tables.lua:167
+msgid "wrought iron"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:175
+msgid "Curtain Rod (@1)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:189
+msgid "Window flowerbox"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua:209
+msgid "Stained Glass"
+msgstr ""
+
+#: ../homedecor/crafts.lua:10
+msgid "Uncooked Terracotta Base"
+msgstr ""
+
+#: ../homedecor/crafts.lua:15
+msgid "Terracotta Roof Tile"
+msgstr ""
+
+#: ../homedecor/crafts.lua:20
+msgid "Oil extract"
+msgstr ""
+
+#: ../homedecor/crafts.lua:25
+msgid "Unprocessed paraffin"
+msgstr ""
+
+#: ../homedecor/crafts.lua:37
+msgid "Plastic strips"
+msgstr ""
+
+#: ../homedecor/crafts.lua:42
+msgid "Small Wooden Drawer"
+msgstr ""
+
+#: ../homedecor/crafts.lua:47
+msgid "Simple Integrated Circuit"
+msgstr ""
+
+#: ../homedecor/crafts.lua:52
+msgid "Heating element"
+msgstr ""
+
+#: ../homedecor/crafts.lua:57
+msgid "Motor"
+msgstr ""
+
+#: ../homedecor/crafts.lua:62
+msgid "Power Crystal"
+msgstr ""
+
+#: ../homedecor/crafts.lua:67
+msgid "Blank Canvas"
+msgstr ""
+
+#: ../homedecor/crafts.lua:72
+msgid "VCR"
+msgstr ""
+
+#: ../homedecor/crafts.lua:77
+msgid "DVD Player"
+msgstr ""
+
+#: ../homedecor/crafts.lua:82
+msgid "Spool of copper wire"
+msgstr ""
+
+#: ../homedecor/crafts.lua:87
+msgid "Spool of steel wire"
+msgstr ""
+
+#: ../homedecor/crafts.lua:92
+msgid "Speaker driver"
+msgstr ""
+
+#: ../homedecor/crafts.lua:97
+msgid "Fan blades"
+msgstr ""
+
+#: ../homedecor/crafts.lua:102
+msgid "Copper Strip"
+msgstr ""
+
+#: ../homedecor/crafts.lua:107
+msgid "Steel Strip"
+msgstr ""
+
+#: ../homedecor/crafts.lua:112
+msgid "Steel chainlink"
+msgstr ""
+
+#: ../homedecor/crafts.lua:117
+msgid "Brass chainlink"
+msgstr ""
+
+#: ../homedecor/crafts.lua:122
+msgid "Soda Can"
+msgstr ""
+
+#: ../homedecor/crafts.lua:128
+msgid "Gold Coin (for soda vending machine)"
+msgstr ""
+
+#: ../homedecor/crafts.lua:137
+msgid "Silicon lump"
+msgstr ""
+
+#: ../homedecor/crafts.lua:154
+msgid "Brass Ingot"
+msgstr ""
+
+#: ../homedecor/crafts.lua:3330
+msgid "Small Flower Pot"
+msgstr ""
+
+#: ../homedecor/electronics.lua:6
+msgid "Large Stereo Speaker"
+msgstr ""
+
+#: ../homedecor/electronics.lua:20
+msgid "Large Stereo Speaker, open front"
+msgstr ""
+
+#: ../homedecor/electronics.lua:41
+msgid "Small Surround Speaker"
+msgstr ""
+
+#: ../homedecor/electronics.lua:54
+msgid "Stereo Receiver"
+msgstr ""
+
+#: ../homedecor/electronics.lua:66
+msgid "Projection Screen Material"
+msgstr ""
+
+#: ../homedecor/electronics.lua:82
+msgid "Small CRT Television"
+msgstr ""
+
+#: ../homedecor/electronics.lua:103
+msgid "DVD and VCR"
+msgstr ""
+
+#: ../homedecor/electronics.lua:138
+msgid "Telephone"
+msgstr ""
+
+#: ../homedecor/lighting.lua:73
+msgid "Thick Glowlight (@1)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:91
+msgid "Thin Glowlight (@1)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:111
+msgid "Small Glowlight Cube (@1)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:131
+msgid "Plasma Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua:151
+msgid "Plasma Ball"
+msgstr ""
+
+#: ../homedecor/lighting.lua:182
+msgid "Thick Candle"
+msgstr ""
+
+#: ../homedecor/lighting.lua:203
+msgid "Thin Candle"
+msgstr ""
+
+#: ../homedecor/lighting.lua:224
+msgid "Candlestick (wrought iron)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:239
+msgid "Candlestick (brass)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:254
+msgid "Wall sconce"
+msgstr ""
+
+#: ../homedecor/lighting.lua:280
+msgid "Oil lamp (hurricane)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:300
+msgid "Oil Lamp (tabletop)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:319
+msgid "Ground Lantern"
+msgstr ""
+
+#: ../homedecor/lighting.lua:337
+msgid "Hanging Lantern"
+msgstr ""
+
+#: ../homedecor/lighting.lua:368
+msgid "Lattice lantern (large)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:376
+msgid "Lattice lantern (small)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:426
+msgid "Table Lamp (@1)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:452
+msgid "Standing Lamp (@1)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:502
+msgid "Desk Lamp (@1)"
+msgstr ""
+
+#: ../homedecor/lighting.lua:518
+msgid "Ceiling Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua:536
+msgid "Ceiling Lamp (off)"
+msgstr ""
+
+#: ../homedecor/fences.lua:31
+msgid "Fence/railing (@1)"
+msgstr ""
+
+#: ../homedecor/fences.lua:43
+msgid "Fence/railing with sign (@1)"
+msgstr ""
+
+#: ../homedecor/fences.lua:71
+msgid "Unpainted Picket Fence"
+msgstr ""
+
+#: ../homedecor/fences.lua:87
+msgid "Unpainted Picket Fence Corner"
+msgstr ""
+
+#: ../homedecor/fences.lua:103
+msgid "White Picket Fence"
+msgstr ""
+
+#: ../homedecor/fences.lua:119
+msgid "White Picket Fence Corner"
+msgstr ""
+
+#: ../homedecor/fences.lua:135
+msgid "Wooden Privacy Fence"
+msgstr ""
+
+#: ../homedecor/fences.lua:159
+msgid "Wooden Privacy Fence Corner"
+msgstr ""
+
+#: ../homedecor/fences.lua:194
+msgid "Barbed Wire Fence"
+msgstr ""
+
+#: ../homedecor/fences.lua:204
+msgid "Barbed Wire Fence Corner"
+msgstr ""
+
+#: ../homedecor/fences.lua:214
+msgid "Chainlink Fence"
+msgstr ""
+
+#: ../homedecor/fences.lua:232
+msgid "Chainlink Fence Corner"
+msgstr ""
+
+#: ../homedecor/fences.lua:249
+msgid "Wrought Iron fence (type 2)"
+msgstr ""
+
+#: ../homedecor/fences.lua:276
+msgid "Wrought Iron fence (type 2) Corner"
+msgstr ""
+
+#: ../homedecor/shutters.lua:6
+msgid "unpainted oak"
+msgstr ""
+
+#: ../homedecor/shutters.lua:10
+msgid "forest green"
+msgstr ""
+
+#: ../homedecor/shutters.lua:11
+msgid "light blue"
+msgstr ""
+
+#: ../homedecor/shutters.lua:35
+msgid "Wooden Shutter (@1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua:12
+msgid "Barbecue"
+msgstr ""
+
+#: ../homedecor/exterior.lua:56
+msgid "Garden Bench (style 1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua:83
+msgid "Garden Bench (style 2)"
+msgstr ""
+
+#: ../homedecor/exterior.lua:106 ../homedecor/exterior.lua:121
+msgid "Deck Chair"
+msgstr ""
+
+#: ../homedecor/exterior.lua:137
+msgid "Doghouse"
+msgstr ""
+
+#: ../homedecor/exterior.lua:152
+msgid "Simple Bench"
+msgstr ""
+
+#: ../homedecor/exterior.lua:166
+msgid "Garden stone path"
+msgstr ""
+
+#: ../homedecor/exterior.lua:194
+msgid "white wood"
+msgstr ""
+
+#: ../homedecor/exterior.lua:195
+msgid "wood, with vegetation"
+msgstr ""
+
+#: ../homedecor/exterior.lua:197
+msgid "white wood, with vegetation"
+msgstr ""
+
+#: ../homedecor/exterior.lua:204
+msgid "Garden Lattice (@1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua:227
+msgid "Tree's swing"
+msgstr ""
+
+#: ../homedecor/exterior.lua:329
+msgid "Water well"
+msgstr ""
+
+#: ../homedecor/exterior.lua:370 ../homedecor/exterior.lua:381
+msgid "Shrubbery (@1)"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:17
+msgid "Toilet"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:68
+msgid "Toilet paper"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:89
+msgid "Bathroom Sink"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:137
+msgid "Bathroom taps/faucet"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:160
+msgid "Bathroom taps/faucet (brass)"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:185
+msgid "Shower Tray"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:225
+msgid "Shower Head"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua:265
+msgid "Bathroom sundries set"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:6
+msgid "Air Conditioner"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:44
+msgid "Desk Fan"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:83
+msgid "Ceiling Fan"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:107
+msgid "Space heater"
+msgstr ""
+
+#: ../homedecor/climate-control.lua:139
+msgid "Radiator heater"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:124
+msgid "Mahogany Closet Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:129
+msgid "Oak Closet Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:134
+msgid "Fancy Wood/Glass Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:144
+msgid "Glass Office Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:149
+msgid "Glass and Wood, Oak-colored (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:158
+msgid "Glass and Wood, Mahogany-colored (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:167
+msgid "Glass and Wood, White (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:176
+msgid "Plain Wooden Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:181
+msgid "White Bedroom Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:186
+msgid "Wrought Iron Gate/Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:191
+msgid "Wooden door with glass insert (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:201
+msgid "Wooden door with glass insert, type 2 (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:212
+msgid "left"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:212
+msgid "right"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:296
+msgid "Unpainted Picket Fence Gate"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:297
+msgid "White Picket Fence Gate"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:298
+msgid "Barbed Wire Fence Gate"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:299
+msgid "Chainlink Fence Gate"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:526
+msgid "Japanese wall (top)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:542
+msgid "Japanese wall"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:558
+msgid "Japanese wall (bottom)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:582
+msgid "Japanese tatami"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua:595
+msgid "Japanese-style door"
+msgstr ""
+
+#: ../homedecor/init.lua:133
+msgid "Loaded!"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:7
+msgid "Textured Ceiling Paint"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:19
+msgid "Drop-Ceiling Tile"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:31
+msgid "small"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:32
+msgid "large"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:33
+msgid "persian"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:57
+msgid "Rug (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:73
+msgid "Flower Pot (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:85
+msgid "Rose"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:86
+msgid "Tulip"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:87
+msgid "Yellow Dandelion"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:88
+msgid "White Dandelion"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:89
+msgid "Blue Geranium"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:90
+msgid "Viola"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:91
+msgid "Cactus"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:92
+msgid "Bonsai"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:99
+msgid "Potted flower (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:127
+msgid "Brass Pole"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:145
+msgid "Wrought Iron Pole"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:167
+msgid "Fishtank"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:189
+msgid "Fishtank (lighted)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:213
+msgid "Cardboard box (big)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:220 ../homedecor/misc-nodes.lua:227
+#: ../homedecor/misc-nodes.lua:240
+msgid "Cardboard box"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:247
+msgid "DVD/CD cabinet"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:273
+msgid "Pool Table"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:298
+msgid "Piano"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:316
+msgid "Trophy"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:334
+msgid "Sport bench"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:359
+msgid "Skateboard"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:368
+msgid "Metal tool cabinet and work table"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:399
+msgid "Picture Frame"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:424
+msgid "Decorative painting #@1"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:449
+msgid "dark topped"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:479
+msgid "diagonal"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:479
+msgid "horizontal"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:503
+msgid "Banister for Stairs (@1, @2)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua:576
+msgid "not enough space"
+msgstr ""
+
+#: ../homedecor/tables.lua:7
+msgid "Small square glass table"
+msgstr ""
+
+#: ../homedecor/tables.lua:8
+msgid "Small round glass table"
+msgstr ""
+
+#: ../homedecor/tables.lua:9
+msgid "Large glass table piece"
+msgstr ""
+
+#: ../homedecor/tables.lua:12
+msgid "Small square wooden table"
+msgstr ""
+
+#: ../homedecor/tables.lua:13
+msgid "Small round wooden table"
+msgstr ""
+
+#: ../homedecor/tables.lua:14
+msgid "Large wooden table piece"
+msgstr ""
+
+#: ../homedecor/tables.lua:134
+msgid "Utility Table"
+msgstr ""
+
+#: ../homedecor/tables.lua:173
+msgid "Table Legs (@1)"
+msgstr ""
+
+#: ../homedecor/tables.lua:189
+msgid "Legs for Utility Table"
+msgstr ""
+
+#: ../homedecor/books.lua:45
+msgid "Writable Book (@1)"
+msgstr ""
+
+#: ../homedecor/books.lua:173
+msgid "@1 has written in a book (title: \"@2\"): \"@3\" at location @4"
+msgstr ""
+
+#: ../homedecor/furniture.lua:4
+msgid "Table"
+msgstr ""
+
+#: ../homedecor/furniture.lua:5
+msgid "Mahogany Table"
+msgstr ""
+
+#: ../homedecor/furniture.lua:6
+msgid "White Table"
+msgstr ""
+
+#: ../homedecor/furniture.lua:35
+msgid "plain"
+msgstr ""
+
+#: ../homedecor/furniture.lua:77
+msgid "Kitchen chair (@1)"
+msgstr ""
+
+#: ../homedecor/furniture.lua:93
+msgid "Armchair (@1)"
+msgstr ""
+
+#: ../homedecor/furniture.lua:122
+msgid "Bookshelf (open-frame)"
+msgstr ""
+
+#: ../homedecor/furniture.lua:138
+msgid "Wall Shelf"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua:87
+msgid "@1 moves stuff in @2 at @3"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua:92
+msgid "@1 moves @2 to @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua:97
+msgid "@1 takes @2 from @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua:110
+msgid "@1 (owned by @2)"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua:127
+#: ../homedecor/handlers/inventory.lua:145
+#: ../homedecor/handlers/inventory.lua:163
+msgid "@1 tried to access a @2 belonging to @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua:173
+msgid "@1 (Locked)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua:91
+msgid "Furnace"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua:109
+#: ../homedecor/handlers/furnaces.lua:128
+#: ../homedecor/handlers/furnaces.lua:262
+msgid "@1 (empty)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua:154
+msgid "@1 (active)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua:234
+msgid "@1 (active: @2%)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua:254
+msgid "@1 (out of fuel)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua:270
+msgid "@1 (output bins are full)"
+msgstr ""
+
+#: ../homedecor/office.lua:4 ../homedecor/office.lua:13
+msgid "Filing cabinet"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:5
+msgid "white/grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:6
+msgid "white/dark grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:7
+msgid "white/black"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:8
+msgid "black/dark grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:9
+msgid "white/red"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:10
+msgid "white/green"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:11
+msgid "white/blue"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:12
+msgid "white/yellow"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:13
+msgid "white/tan"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:27
+msgid "Bathroom/kitchen tiles (@1)"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:48
+msgid "Towel rod with towel"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua:62
+#: ../homedecor/bathroom_furniture.lua:80
+msgid "Medicine cabinet"
+msgstr ""
diff --git a/homedecor/misc-nodes.lua b/homedecor/misc-nodes.lua
index 70322d4..3eb4240 100644
--- a/homedecor/misc-nodes.lua
+++ b/homedecor/misc-nodes.lua
@@ -1,4 +1,7 @@
-local S = homedecor.gettext
+
+local S = homedecor_i18n.gettext
+
+local function N_(x) return x end
homedecor.register("ceiling_paint", {
description = S("Textured Ceiling Paint"),
@@ -25,14 +28,13 @@ homedecor.register("ceiling_tile", {
})
local rug_types = {
- { "small", "homedecor_small_rug.obj" },
- { "large", homedecor.box.slab_y(0.0625)},
- { "persian", homedecor.box.slab_y(0.0625)}
+ { N_("small"), "homedecor_small_rug.obj" },
+ { N_("large"), homedecor.box.slab_y(0.0625) },
+ { N_("persian"), homedecor.box.slab_y(0.0625) },
}
-for i in ipairs(rug_types) do
- s = rug_types[i][1]
- m = rug_types[i][2]
+for _, rt in ipairs(rug_types) do
+ local s, m = unpack(rt)
local mesh = m
local nodebox = nil
@@ -41,7 +43,7 @@ for i in ipairs(rug_types) do
if type(m) == "table" then
mesh = nil
nodebox = {
- type = "fixed",
+ type = "fixed",
fixed = m
}
tiles = {
@@ -52,7 +54,7 @@ for i in ipairs(rug_types) do
end
homedecor.register("rug_"..s, {
- description = S("Rug ("..s..")"),
+ description = S("Rug (@1)", S(s)),
mesh = mesh,
tiles = tiles,
node_box = nodebox,
@@ -64,15 +66,15 @@ for i in ipairs(rug_types) do
})
end
-local pot_colors = {"black", "green", "terracotta"}
+local pot_colors = { N_("black"), N_("green"), N_("terracotta") }
for _, p in ipairs(pot_colors) do
homedecor.register("flower_pot_"..p, {
- description = S("Flower Pot ("..p..")"),
+ description = S("Flower Pot (@1)", S(p)),
mesh = "homedecor_flowerpot.obj",
tiles = {
"homedecor_flower_pot_"..p..".png",
- "default_dirt.png^[colorize:#000000:175"
+ { name = "default_dirt.png", color = 0xff505050 },
},
groups = { snappy = 3, potting_soil=1 },
sounds = default.node_sound_stone_defaults(),
@@ -80,27 +82,25 @@ homedecor.register("flower_pot_"..p, {
end
local flowers_list = {
- { "Rose", "rose", "flowers:rose" },
- { "Tulip", "tulip", "flowers:tulip" },
- { "Yellow Dandelion", "dandelion_yellow", "flowers:dandelion_yellow" },
- { "White Dandelion", "dandelion_white", "flowers:dandelion_white" },
- { "Blue Geranium", "geranium", "flowers:geranium" },
- { "Viola", "viola", "flowers:viola" },
- { "Cactus", "cactus", "default:cactus" },
- { "Bonsai", "bonsai", "default:sapling" }
+ { S("Rose"), "rose", "flowers:rose" },
+ { S("Tulip"), "tulip", "flowers:tulip" },
+ { S("Yellow Dandelion"), "dandelion_yellow", "flowers:dandelion_yellow" },
+ { S("White Dandelion"), "dandelion_white", "flowers:dandelion_white" },
+ { S("Blue Geranium"), "geranium", "flowers:geranium" },
+ { S("Viola"), "viola", "flowers:viola" },
+ { S("Cactus"), "cactus", "default:cactus" },
+ { S("Bonsai"), "bonsai", "default:sapling" }
}
-for i in ipairs(flowers_list) do
- local flowerdesc = flowers_list[i][1]
- local flower = flowers_list[i][2]
- local craftwith = flowers_list[i][3]
-
+for _, f in ipairs(flowers_list) do
+ local flowerdesc, flower, craftwith = unpack(f)
+
homedecor.register("potted_"..flower, {
- description = S("Potted flower ("..flowerdesc..")"),
+ description = S("Potted flower (@1)", flowerdesc),
mesh = "homedecor_potted_plant.obj",
tiles = {
"homedecor_flower_pot_terracotta.png",
- "default_dirt.png^[colorize:#000000:175",
+ { name = "default_dirt.png", color = 0xff303030 },
"flowers_"..flower..".png"
},
walkable = false,
@@ -164,10 +164,10 @@ local ft_cbox = {
}
homedecor.register("fishtank", {
- description = "Fishtank",
+ description = S("Fishtank"),
mesh = "homedecor_fishtank.obj",
tiles = {
- "homedecor_generic_plastic_black.png",
+ { name = "homedecor_generic_plastic.png", color = homedecor.color_black },
"homedecor_fishtank_filter.png",
"homedecor_fishtank_fishes.png",
"homedecor_fishtank_gravel.png",
@@ -186,10 +186,10 @@ homedecor.register("fishtank", {
})
homedecor.register("fishtank_lighted", {
- description = "Fishtank (lighted)",
+ description = S("Fishtank (lighted)"),
mesh = "homedecor_fishtank.obj",
tiles = {
- "homedecor_generic_plastic_black.png",
+ { name = "homedecor_generic_plastic.png", color = homedecor.color_black },
"homedecor_fishtank_filter.png",
"homedecor_fishtank_fishes_lighted.png",
"homedecor_fishtank_gravel_lighted.png",
@@ -244,7 +244,7 @@ homedecor.register("cardboard_box", {
})
homedecor.register("dvd_cd_cabinet", {
- description = "DVD/CD cabinet",
+ description = S("DVD/CD cabinet"),
mesh = "homedecor_dvd_cabinet.obj",
tiles = {
"default_wood.png",
@@ -268,9 +268,9 @@ homedecor.register("pool_table", {
"homedecor_pool_table_baize.png",
"homedecor_pool_table_pockets.png",
"homedecor_pool_table_balls.png",
- "homedecor_generic_wood_luxury.png^[colorize:#000000:90"
+ homedecor.lux_wood,
},
- description = "Pool Table",
+ description = S("Pool Table"),
inventory_image = "homedecor_pool_table_inv.png",
groups = {snappy=3},
selection_box = pooltable_cbox,
@@ -290,12 +290,12 @@ local piano_cbox = {
homedecor.register("piano", {
mesh = "homedecor_piano.obj",
tiles = {
- "homedecor_generic_wood_luxury.png^[colorize:#000000:175",
+ { name = "homedecor_generic_wood_luxury.png", color = homedecor.color_black },
"homedecor_piano_keys.png",
"homedecor_generic_metal_brass.png",
},
inventory_image = "homedecor_piano_inv.png",
- description = "Piano",
+ description = S("Piano"),
groups = { snappy = 3 },
selection_box = piano_cbox,
collision_box = piano_cbox,
@@ -313,7 +313,7 @@ local tr_cbox = {
}
homedecor.register("trophy", {
- description = "Trophy",
+ description = S("Trophy"),
mesh = "homedecor_trophy.obj",
tiles = {
"default_wood.png",
@@ -331,12 +331,12 @@ local sb_cbox = {
}
homedecor.register("sportbench", {
- description = "Sport bench",
+ description = S("Sport bench"),
mesh = "homedecor_sport_bench.obj",
tiles = {
"homedecor_generic_metal_wrought_iron.png",
"homedecor_generic_metal_bright.png",
- "homedecor_generic_metal_black.png",
+ { name = "homedecor_generic_metal.png", color = homedecor.color_black },
"wool_black.png"
},
inventory_image = "homedecor_sport_bench_inv.png",
@@ -356,7 +356,7 @@ homedecor.register("skateboard", {
mesh = "homedecor_skateboard.obj",
tiles = { "homedecor_skateboard.png" },
inventory_image = "homedecor_skateboard_inv.png",
- description = "Skateboard",
+ description = S("Skateboard"),
groups = {snappy=3},
selection_box = skate_cbox,
walkable = false,
@@ -365,13 +365,13 @@ homedecor.register("skateboard", {
})
homedecor.register("tool_cabinet", {
- description = "Metal tool cabinet and work table",
+ description = S("Metal tool cabinet and work table"),
mesh = "homedecor_tool_cabinet.obj",
tiles = {
- "homedecor_generic_metal_black.png^[colorize:#ff0000:150",
+ { name = "homedecor_generic_metal.png", color = 0xffd00000 },
"homedecor_tool_cabinet_drawers.png",
- "homedecor_generic_metal_black.png^[colorize:#006000:150",
- "homedecor_generic_metal_black.png^[brighten",
+ { name = "homedecor_generic_metal.png", color = 0xff006000 },
+ { name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
"homedecor_generic_metal_bright.png",
"homedecor_tool_cabinet_misc.png",
},
@@ -400,7 +400,7 @@ for _, i in ipairs(n) do
mesh = "homedecor_picture_frame.obj",
tiles = {
"homedecor_picture_frame_image"..i..".png",
- "homedecor_generic_wood_luxury.png^[colorize:#000000:50",
+ homedecor.lux_wood,
"homedecor_picture_frame_back.png",
},
inventory_image = "homedecor_picture_frame"..i.."_inv.png",
@@ -421,7 +421,7 @@ local p_cbox = {
for i = 1,20 do
homedecor.register("painting_"..i, {
- description = "Decorative painting #"..i,
+ description = S("Decorative painting #@1", i),
mesh = "homedecor_painting.obj",
tiles = {
"default_wood.png",
@@ -437,7 +437,7 @@ end
homedecor.banister_materials = {
{ "wood",
- "wood",
+ S("wood"),
"default_wood.png",
"default_wood.png",
"group:wood",
@@ -446,7 +446,7 @@ homedecor.banister_materials = {
""
},
{ "white_dark",
- "dark topped",
+ S("dark topped"),
homedecor.white_wood,
homedecor.dark_wood,
"group:wood",
@@ -455,7 +455,7 @@ homedecor.banister_materials = {
"dye:white"
},
{ "brass",
- "brass",
+ S("brass"),
homedecor.white_wood,
"homedecor_generic_metal_brass.png",
"technic:brass_ingot",
@@ -464,7 +464,7 @@ homedecor.banister_materials = {
"dye:white"
},
{ "wrought_iron",
- "wrought iron",
+ S("wrought iron"),
"homedecor_generic_metal_wrought_iron.png",
"homedecor_generic_metal_wrought_iron.png",
"homedecor:pole_wrought_iron",
@@ -476,9 +476,11 @@ homedecor.banister_materials = {
for _, side in ipairs({"diagonal_left", "diagonal_right", "horizontal"}) do
- for i in ipairs(homedecor.banister_materials) do
+ local sidedesc = side:match("^diagonal") and S("diagonal") or S("horizontal")
+
+ for _, mat in ipairs(homedecor.banister_materials) do
- local name = homedecor.banister_materials[i][1]
+ local name, matdesc, tile1, tile2 = unpack(mat)
local nodename = "banister_"..name.."_"..side
local groups = { snappy = 3, not_in_creative_inventory = 1 }
@@ -498,11 +500,11 @@ for _, side in ipairs({"diagonal_left", "diagonal_right", "horizontal"}) do
end
homedecor.register(nodename, {
- description = S("Banister for Stairs ("..homedecor.banister_materials[i][2]..", "..side..")"),
+ description = S("Banister for Stairs (@1, @2)", matdesc, sidedesc),
mesh = "homedecor_banister_"..side..".obj",
tiles = {
- homedecor.banister_materials[i][3],
- homedecor.banister_materials[i][4]
+ tile1,
+ tile2,
},
inventory_image = "homedecor_banister_"..name.."_inv.png",
groups = groups,
@@ -571,7 +573,7 @@ homedecor.register("spiral_staircase", {
if #minetest.find_nodes_in_area(minp, maxp, "air") < 11 then
minetest.set_node(pos, {name = "air"})
- minetest.chat_send_player(placer:get_player_name(), "This object takes up a 2x3x2 block of space (the bottom step goes in the forward-right corner), and some of it is occupied!" )
+ minetest.chat_send_player(placer:get_player_name(), S("not enough space"))
return true
end
diff --git a/homedecor/models/forniture_armchair.obj b/homedecor/models/forniture_armchair.obj
index 6af52cd..b563691 100644
--- a/homedecor/models/forniture_armchair.obj
+++ b/homedecor/models/forniture_armchair.obj
@@ -1,142 +1,142 @@
-# Blender v2.73 (sub 0) OBJ File: 'forniture-armchair.blend'
+# Blender v2.72 (sub 0) OBJ File: 'forniture-armchair.blend'
# www.blender.org
o chair_Cylinder
-v 0.375000 -0.437500 -0.500000
-v 0.375000 0.039062 -0.500000
-v 0.375000 0.101562 -0.437500
-v 0.375000 0.101562 0.035156
-v 0.375000 0.437500 0.035156
-v 0.375000 0.500000 0.097656
-v -0.375000 0.500000 0.375000
-v 0.312500 -0.187500 -0.375000
-v -0.375000 0.500000 0.097656
-v -0.375000 0.437500 0.035156
-v -0.312500 -0.187500 -0.375000
-v -0.375000 0.101562 0.035156
-v -0.375000 0.101562 -0.437500
-v -0.375000 0.039062 -0.500000
-v 0.375000 0.500000 0.375000
-v -0.375000 -0.437500 -0.500000
-v -0.437500 -0.437500 -0.500000
-v -0.500000 -0.437500 -0.375000
-v -0.500000 0.437500 0.097656
-v -0.437500 0.039062 -0.500000
-v 0.437500 0.500000 0.437500
-v -0.437500 0.101562 -0.437500
-v 0.437500 0.500000 0.097656
-v -0.437500 0.101562 0.035156
-v 0.437500 0.437500 0.035156
-v -0.437500 0.437500 0.035156
-v 0.437500 0.101562 0.035156
-v -0.437500 0.500000 0.097656
-v 0.437500 0.101562 -0.437500
-v -0.437500 0.500000 0.437500
-v 0.437500 0.039062 -0.500000
-v 0.500000 0.437500 0.097656
-v 0.437500 -0.437500 -0.500000
-v -0.312500 -0.437500 -0.375000
-v 0.500000 0.437500 0.500000
-v 0.500000 -0.437500 0.500000
-v 0.312500 -0.437500 -0.375000
-v -0.500000 0.437500 0.500000
-v -0.500000 -0.437500 0.500000
-v -0.500000 0.039062 0.097656
-v 0.500000 0.039062 0.097656
-v -0.500000 0.039062 -0.437500
-v 0.500000 0.039062 -0.437500
-v -0.500000 -0.437500 -0.437500
+v 0.500000 -0.375000 -0.437500
+v 0.500000 -0.375000 0.039062
+v 0.437500 -0.375000 0.101562
+v -0.035156 -0.375000 0.101562
+v -0.035156 -0.375000 0.437500
+v -0.097656 -0.375000 0.500000
+v -0.375000 0.375000 0.500000
+v 0.375000 -0.312500 -0.187500
+v -0.097656 0.375000 0.500000
+v -0.035156 0.375000 0.437500
+v 0.375000 0.312500 -0.187500
+v -0.035156 0.375000 0.101562
+v 0.437500 0.375000 0.101562
+v 0.500000 0.375000 0.039062
+v -0.375000 -0.375000 0.500000
+v 0.500000 0.375000 -0.437500
+v 0.500000 0.437500 -0.437500
+v 0.375000 0.500000 -0.437500
+v -0.097656 0.500000 0.437500
+v 0.500000 0.437500 0.039062
+v -0.437500 -0.437500 0.500000
+v 0.437500 0.437500 0.101562
+v -0.097656 -0.437500 0.500000
+v -0.035156 0.437500 0.101562
+v -0.035156 -0.437500 0.437500
+v -0.035156 0.437500 0.437500
+v -0.035156 -0.437500 0.101562
+v -0.097656 0.437500 0.500000
+v 0.437500 -0.437500 0.101562
+v -0.437500 0.437500 0.500000
+v 0.500000 -0.437500 0.039062
+v -0.097656 -0.500000 0.437500
v 0.500000 -0.437500 -0.437500
-v 0.312500 0.437500 0.097656
-v 0.312500 0.039062 0.097656
-v 0.312500 0.039062 -0.437500
-v 0.312500 -0.437500 -0.437500
-v -0.312500 0.437500 0.097656
-v 0.500000 -0.437500 -0.375000
-v -0.312500 0.039062 0.097656
-v -0.312500 0.039062 -0.437500
-v -0.312500 -0.437500 -0.437500
-v 0.312500 -0.125000 0.312500
-v -0.312500 -0.125000 0.312500
-v 0.312500 0.437500 0.312500
-v -0.312500 0.437500 0.312500
-v 0.312500 -0.109375 -0.187500
-v -0.312500 -0.109375 -0.187500
-v 0.312500 0.156250 0.285156
-v -0.312500 0.156250 0.285156
-v 0.312500 -0.125000 -0.312500
-v -0.312500 -0.109375 0.250000
-v 0.312500 -0.062500 0.296875
-v -0.312500 0.375000 0.296875
-v 0.312500 -0.109375 0.250000
-v -0.312500 -0.125000 -0.312500
-v 0.312500 0.375000 0.296875
-v -0.312500 -0.062500 0.296875
-v 0.312500 -0.101562 0.031250
-v -0.312500 -0.101562 0.031250
-v -0.432138 -0.500000 0.343750
-v -0.432138 -0.437500 0.343750
-v -0.380362 -0.500000 0.343750
-v -0.380362 -0.437500 0.343750
-v -0.343750 -0.500000 0.380362
-v -0.343750 -0.437500 0.380362
-v -0.343750 -0.500000 0.432138
-v -0.343750 -0.437500 0.432138
-v -0.380362 -0.500000 0.468750
-v -0.380362 -0.437500 0.468750
-v -0.432138 -0.500000 0.468750
-v -0.432138 -0.437500 0.468750
-v -0.468750 -0.500000 0.432138
-v -0.468750 -0.437500 0.432138
-v -0.468750 -0.500000 0.380362
-v -0.468750 -0.437500 0.380362
-v 0.343750 -0.437500 0.380362
-v 0.343750 -0.500000 0.380362
-v 0.343750 -0.437500 0.432138
-v 0.343750 -0.500000 0.432138
-v 0.380362 -0.437500 0.468750
-v 0.380362 -0.500000 0.468750
-v 0.432138 -0.437500 0.468750
-v 0.432138 -0.500000 0.468750
-v 0.468750 -0.437500 0.432138
-v 0.468750 -0.500000 0.432138
-v 0.468750 -0.437500 0.380362
-v 0.468750 -0.500000 0.380362
-v 0.432138 -0.437500 0.343750
-v 0.432138 -0.500000 0.343750
-v 0.380362 -0.437500 0.343750
-v 0.380362 -0.500000 0.343750
-v -0.432138 -0.500000 -0.468750
-v -0.432138 -0.437500 -0.468750
-v -0.380362 -0.500000 -0.468750
-v -0.380362 -0.437500 -0.468750
-v -0.343750 -0.500000 -0.432138
-v -0.343750 -0.437500 -0.432138
-v -0.343750 -0.500000 -0.380362
-v -0.343750 -0.437500 -0.380362
-v -0.380362 -0.500000 -0.343750
-v -0.380362 -0.437500 -0.343750
-v -0.432138 -0.500000 -0.343750
-v -0.432138 -0.437500 -0.343750
-v -0.468750 -0.500000 -0.380362
-v -0.468750 -0.437500 -0.380362
-v -0.468750 -0.500000 -0.432138
-v -0.468750 -0.437500 -0.432138
-v 0.343750 -0.437500 -0.432138
-v 0.343750 -0.500000 -0.432138
-v 0.343750 -0.437500 -0.380362
-v 0.343750 -0.500000 -0.380362
-v 0.380362 -0.437500 -0.343750
-v 0.380362 -0.500000 -0.343750
-v 0.432138 -0.437500 -0.343750
-v 0.432138 -0.500000 -0.343750
-v 0.468750 -0.437500 -0.380362
-v 0.468750 -0.500000 -0.380362
-v 0.468750 -0.437500 -0.432138
-v 0.468750 -0.500000 -0.432138
-v 0.432138 -0.437500 -0.468750
-v 0.432138 -0.500000 -0.468750
-v 0.380362 -0.437500 -0.468750
-v 0.380362 -0.500000 -0.468750
+v 0.375000 0.312500 -0.437500
+v -0.500000 -0.500000 0.437500
+v -0.500000 -0.500000 -0.437500
+v 0.375000 -0.312500 -0.437500
+v -0.500000 0.500000 0.437500
+v -0.500000 0.500000 -0.437500
+v -0.097656 0.500000 0.039062
+v -0.097656 -0.500000 0.039062
+v 0.437500 0.500000 0.039062
+v 0.437500 -0.500000 0.039062
+v 0.437500 0.500000 -0.437500
+v 0.437500 -0.500000 -0.437500
+v -0.097656 -0.312500 0.437500
+v -0.097656 -0.312500 0.039062
+v 0.437500 -0.312500 0.039062
+v 0.437500 -0.312500 -0.437500
+v -0.097656 0.312500 0.437500
+v 0.375000 -0.500000 -0.437500
+v -0.097656 0.312500 0.039062
+v 0.437500 0.312500 0.039062
+v 0.437500 0.312500 -0.437500
+v -0.312500 -0.312500 -0.125000
+v -0.312500 0.312500 -0.125000
+v -0.312500 -0.312500 0.437500
+v -0.312500 0.312500 0.437500
+v 0.187500 -0.312500 -0.109375
+v 0.187500 0.312500 -0.109375
+v -0.285156 -0.312500 0.156250
+v -0.285156 0.312500 0.156250
+v 0.312500 -0.312500 -0.125000
+v -0.250000 0.312500 -0.109375
+v -0.296875 -0.312500 -0.062500
+v -0.296875 0.312500 0.375000
+v -0.250000 -0.312500 -0.109375
+v 0.312500 0.312500 -0.125000
+v -0.296875 -0.312500 0.375000
+v -0.296875 0.312500 -0.062500
+v -0.031250 -0.312500 -0.101562
+v -0.031250 0.312500 -0.101562
+v -0.343750 0.432138 -0.500000
+v -0.343750 0.432138 -0.437500
+v -0.343750 0.380361 -0.500000
+v -0.343750 0.380361 -0.437500
+v -0.380362 0.343750 -0.500000
+v -0.380362 0.343750 -0.437500
+v -0.432139 0.343750 -0.500000
+v -0.432139 0.343750 -0.437500
+v -0.468750 0.380361 -0.500000
+v -0.468750 0.380361 -0.437500
+v -0.468750 0.432138 -0.500000
+v -0.468750 0.432138 -0.437500
+v -0.432139 0.468750 -0.500000
+v -0.432139 0.468750 -0.437500
+v -0.380362 0.468750 -0.500000
+v -0.380362 0.468750 -0.437500
+v -0.380361 -0.343750 -0.437500
+v -0.380361 -0.343750 -0.500000
+v -0.432138 -0.343750 -0.437500
+v -0.432138 -0.343750 -0.500000
+v -0.468750 -0.380362 -0.437500
+v -0.468750 -0.380362 -0.500000
+v -0.468750 -0.432139 -0.437500
+v -0.468750 -0.432139 -0.500000
+v -0.432138 -0.468750 -0.437500
+v -0.432138 -0.468750 -0.500000
+v -0.380361 -0.468750 -0.437500
+v -0.380361 -0.468750 -0.500000
+v -0.343750 -0.432139 -0.437500
+v -0.343750 -0.432139 -0.500000
+v -0.343750 -0.380362 -0.437500
+v -0.343750 -0.380362 -0.500000
+v 0.468750 0.432139 -0.500000
+v 0.468750 0.432139 -0.437500
+v 0.468750 0.380362 -0.500000
+v 0.468750 0.380362 -0.437500
+v 0.432138 0.343750 -0.500000
+v 0.432138 0.343750 -0.437500
+v 0.380361 0.343750 -0.500000
+v 0.380361 0.343750 -0.437500
+v 0.343750 0.380362 -0.500000
+v 0.343750 0.380362 -0.437500
+v 0.343750 0.432139 -0.500000
+v 0.343750 0.432139 -0.437500
+v 0.380361 0.468750 -0.500000
+v 0.380361 0.468750 -0.437500
+v 0.432138 0.468750 -0.500000
+v 0.432138 0.468750 -0.437500
+v 0.432139 -0.343750 -0.437500
+v 0.432139 -0.343750 -0.500000
+v 0.380362 -0.343750 -0.437500
+v 0.380362 -0.343750 -0.500000
+v 0.343750 -0.380361 -0.437500
+v 0.343750 -0.380361 -0.500000
+v 0.343750 -0.432138 -0.437500
+v 0.343750 -0.432138 -0.500000
+v 0.380362 -0.468750 -0.437500
+v 0.380362 -0.468750 -0.500000
+v 0.432139 -0.468750 -0.437500
+v 0.432139 -0.468750 -0.500000
+v 0.468750 -0.432138 -0.437500
+v 0.468750 -0.432138 -0.500000
+v 0.468750 -0.380361 -0.437500
+v 0.468750 -0.380361 -0.500000
vt 0.062590 0.539162
vt 0.062590 0.601648
vt 0.000103 0.539162
@@ -367,52 +367,52 @@ vt 0.125000 0.312500
vt 0.125000 0.375000
vt 0.187500 0.312500
vt 0.187500 0.375000
-vn 0.341600 0.341600 -0.875600
-vn 0.341600 0.875600 -0.341600
-vn 0.875600 0.341600 -0.341600
-vn -0.341600 0.875600 -0.341600
-vn -0.341600 0.341600 -0.875600
-vn -0.875600 0.341600 -0.341600
-vn -0.300200 0.905400 0.300200
-vn -0.650700 0.391300 0.650700
-vn 0.300200 0.905400 0.300200
-vn 0.650700 0.391300 0.650700
-vn -0.987800 0.110000 -0.110000
-vn -0.717300 -0.630300 -0.297100
-vn -0.577400 -0.577400 0.577400
-vn 0.000000 0.000000 -1.000000
-vn 0.000000 0.382700 -0.923900
-vn 0.000000 0.990200 0.139900
-vn 0.000000 0.707100 -0.707100
-vn -0.729300 0.101700 -0.676600
-vn 0.729300 0.101700 -0.676600
-vn 0.526700 0.636900 -0.563000
-vn -0.526700 0.636900 -0.563000
-vn -0.110000 0.987800 -0.110000
-vn 0.110000 0.987800 -0.110000
-vn -0.574300 0.578900 -0.578900
-vn -0.297100 -0.630200 -0.717300
-vn 0.297100 -0.630200 -0.717300
-vn 0.717300 -0.630200 -0.297100
-vn 0.000000 0.898300 -0.439400
-vn 0.000000 0.996800 -0.079900
-vn 0.000000 -0.148700 -0.988900
-vn 0.987800 0.110000 -0.110000
-vn 0.574300 0.578900 -0.578900
-vn 0.717300 -0.630300 -0.297100
-vn -0.717300 -0.630200 -0.297100
-vn 0.577400 -0.577400 0.577400
-vn 0.000000 1.000000 0.000000
-vn -1.000000 0.000000 0.000000
+vn 0.875600 -0.341600 0.341600
+vn 0.341600 -0.341600 0.875600
+vn 0.341600 -0.875600 0.341600
+vn 0.341600 0.341600 0.875600
+vn 0.875600 0.341600 0.341600
+vn 0.341600 0.875600 0.341600
+vn -0.300200 0.300200 0.905400
+vn -0.650700 0.650700 0.391300
+vn -0.300200 -0.300200 0.905400
+vn -0.650700 -0.650700 0.391300
+vn 0.110000 0.987800 0.110000
+vn 0.297100 0.717300 -0.630300
+vn -0.577400 0.577400 -0.577400
vn 1.000000 0.000000 0.000000
-vn -0.707100 -0.707100 0.000000
-vn 0.707100 -0.707100 0.000000
-vn 0.000000 -1.000000 0.000000
-vn 0.707100 0.000000 -0.707100
+vn 0.923900 0.000000 0.382700
+vn -0.139900 -0.000000 0.990200
vn 0.707100 0.000000 0.707100
+vn 0.676600 0.729300 0.101700
+vn 0.676600 -0.729300 0.101700
+vn 0.563000 -0.526700 0.636900
+vn 0.563000 0.526700 0.636900
+vn 0.110000 0.110000 0.987800
+vn 0.110000 -0.110000 0.987800
+vn 0.578900 0.574300 0.578900
+vn 0.717300 0.297100 -0.630200
+vn 0.717300 -0.297100 -0.630200
+vn 0.297100 -0.717300 -0.630200
+vn 0.439400 0.000000 0.898300
+vn 0.079900 0.000000 0.996800
+vn 0.988900 0.000000 -0.148700
+vn 0.110000 -0.987800 0.110000
+vn 0.578900 -0.574300 0.578900
+vn 0.297100 -0.717300 -0.630300
+vn 0.297100 0.717300 -0.630200
+vn -0.577400 -0.577400 -0.577400
vn 0.000000 0.000000 1.000000
-vn -0.707100 0.000000 0.707100
-vn -0.707100 0.000000 -0.707100
+vn -0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 0.707100 -0.707100
+vn 0.000000 -0.707100 -0.707100
+vn 0.000000 0.000000 -1.000000
+vn 0.707100 -0.707100 0.000000
+vn -0.707100 -0.707100 0.000000
+vn -1.000000 0.000000 0.000000
+vn -0.707100 0.707100 0.000000
+vn 0.707100 0.707100 0.000000
g chair_Cylinder_colored
s 1
f 31/1/1 29/2/2 43/3/3
diff --git a/homedecor/models/homedecor_bed_extended.obj b/homedecor/models/homedecor_bed_extended.obj
index 4616b46..b8e49c4 100644
--- a/homedecor/models/homedecor_bed_extended.obj
+++ b/homedecor/models/homedecor_bed_extended.obj
@@ -1,158 +1,158 @@
-# Blender v2.73 (sub 0) OBJ File: 'bed-extended.blend'
+# Blender v2.72 (sub 0) OBJ File: 'bed-extended.blend'
# www.blender.org
o Cube
-v -0.500000 -0.375000 1.437500
-v -0.500000 -0.375000 -0.437500
-v 0.500000 -0.375000 -0.437500
-v 0.500000 -0.375000 1.437500
-v -0.500000 -0.125000 1.437500
-v -0.500000 -0.125000 -0.437500
-v 0.500000 -0.125000 -0.437500
-v 0.500000 -0.125000 1.437500
-v -0.437500 -0.125000 1.437500
-v -0.437500 -0.125000 -0.437500
-v 0.437500 -0.125000 -0.437500
-v 0.437500 -0.125000 1.437500
-v 0.375000 -0.500000 -0.437500
-v 0.375000 -0.500000 -0.500000
+v -1.437500 0.500000 -0.375000
+v 0.437500 0.500000 -0.375000
+v 0.437500 -0.500000 -0.375000
+v -1.437500 -0.500000 -0.375000
+v -1.437500 0.500000 -0.125000
+v 0.437500 0.500000 -0.125000
+v 0.437500 -0.500000 -0.125000
+v -1.437500 -0.500000 -0.125000
+v -1.437500 0.437500 -0.125000
+v 0.437500 0.437500 -0.125000
+v 0.437500 -0.437500 -0.125000
+v -1.437500 -0.437500 -0.125000
+v 0.437500 -0.375000 -0.500000
+v 0.500000 -0.375000 -0.500000
v 0.500000 -0.500000 -0.500000
-v 0.500000 -0.500000 -0.437500
-v 0.375000 0.500000 -0.437500
-v 0.375000 0.500000 -0.500000
-v 0.500000 0.500000 -0.500000
-v 0.500000 0.500000 -0.437500
-v -0.500000 -0.500000 -0.437500
-v -0.500000 -0.500000 -0.500000
-v -0.375000 -0.500000 -0.500000
-v -0.375000 -0.500000 -0.437500
-v -0.500000 0.500000 -0.437500
-v -0.500000 0.500000 -0.500000
-v -0.375000 0.500000 -0.500000
-v -0.375000 0.500000 -0.437500
-v -0.375000 -0.375000 -0.437500
-v -0.375000 -0.375000 -0.500000
-v 0.375000 -0.375000 -0.500000
-v 0.375000 -0.375000 -0.437500
-v -0.375000 -0.125000 -0.437500
-v -0.375000 -0.125000 -0.500000
-v 0.375000 -0.125000 -0.500000
-v 0.375000 -0.125000 -0.437500
-v -0.375000 0.000000 -0.437500
-v -0.375000 0.000000 -0.500000
-v 0.375000 0.000000 -0.500000
-v 0.375000 0.000000 -0.437500
-v -0.375000 0.125000 -0.437500
-v -0.375000 0.125000 -0.500000
-v 0.375000 0.125000 -0.500000
-v 0.375000 0.125000 -0.437500
-v 0.375000 -0.500000 1.437500
-v 0.375000 -0.500000 1.500000
-v 0.500000 -0.500000 1.500000
-v 0.500000 -0.500000 1.437500
-v 0.375000 0.500000 1.437500
-v 0.375000 0.500000 1.500000
-v 0.500000 0.500000 1.500000
-v 0.500000 0.500000 1.437500
-v -0.500000 -0.500000 1.437500
-v -0.500000 -0.500000 1.500000
-v -0.375000 -0.500000 1.500000
-v -0.375000 -0.500000 1.437500
-v -0.500000 0.500000 1.437500
-v -0.500000 0.500000 1.500000
-v -0.375000 0.500000 1.500000
-v -0.375000 0.500000 1.437500
-v -0.375000 -0.375000 1.437500
-v -0.375000 -0.375000 1.500000
-v 0.375000 -0.375000 1.500000
-v 0.375000 -0.375000 1.437500
-v -0.375000 -0.125000 1.437500
-v -0.375000 -0.125000 1.500000
-v 0.375000 -0.125000 1.500000
-v 0.375000 -0.125000 1.437500
-v -0.375000 -0.062500 1.437500
-v -0.375000 -0.062500 1.500000
-v 0.375000 -0.062500 1.500000
-v 0.375000 -0.062500 1.437500
-v -0.375000 0.187500 1.437500
-v -0.375000 0.187500 1.500000
-v 0.375000 0.187500 1.500000
-v 0.375000 0.187500 1.437500
-v -0.375000 0.250000 1.437500
-v -0.375000 0.250000 1.500000
-v 0.375000 0.250000 1.500000
-v 0.375000 0.250000 1.437500
-v -0.375000 0.437500 1.437500
-v -0.375000 0.437500 1.500000
-v 0.375000 0.437500 1.500000
-v 0.375000 0.437500 1.437500
-v -0.500000 -0.125000 0.500000
-v -0.500000 -0.375000 0.500000
-v 0.500000 -0.125000 0.500000
-v 0.500000 -0.375000 0.500000
-v -0.437500 -0.125000 0.500000
-v 0.437500 -0.125000 0.500000
-v -0.437500 -0.375000 0.500000
-v -0.437500 -0.375000 1.437500
-v -0.437500 -0.078125 1.437500
-v -0.437500 -0.078125 -0.437500
-v 0.437500 -0.078125 -0.437500
-v 0.437500 -0.078125 1.437500
-v -0.406250 -0.046875 1.437500
-v -0.406250 -0.046875 -0.437500
-v 0.406250 -0.046875 -0.437500
-v 0.406250 -0.046875 1.437500
-v -0.312500 -0.046875 1.437500
-v -0.312500 -0.046875 1.062500
-v 0.312500 -0.046875 1.062500
-v 0.312500 -0.046875 1.437500
-v -0.406250 -0.046875 0.500000
-v -0.437500 -0.078125 0.500000
-v 0.406250 -0.046875 0.500000
-v 0.437500 -0.078125 0.500000
-v -0.312500 -0.031250 1.437500
-v -0.312500 -0.031250 1.062500
-v 0.312500 -0.031250 1.062500
-v 0.312500 -0.031250 1.437500
-v -0.250000 0.031250 1.375000
-v -0.250000 0.031250 1.125000
-v 0.250000 0.031250 1.125000
-v 0.250000 0.031250 1.375000
-v 0.437500 -0.375000 1.437500
+v 0.437500 -0.500000 -0.500000
v 0.437500 -0.375000 0.500000
-v -0.437500 -0.375000 1.375000
-v 0.437500 -0.375000 1.375000
-v -0.437500 -0.375000 -0.375000
-v 0.437500 -0.375000 -0.375000
-v -0.437500 -0.312500 1.375000
-v 0.437500 -0.312500 1.375000
-v -0.437500 -0.312500 -0.375000
-v 0.437500 -0.312500 -0.375000
-v -0.437500 -0.125000 1.000000
-v 0.437500 -0.125000 1.000000
-v -0.437500 -0.078125 1.000000
-v 0.406250 -0.046875 1.000000
-v -0.406250 -0.046875 1.000000
-v 0.437500 -0.078125 1.000000
-v -0.437500 -0.312500 0.500000
-v 0.437500 -0.312500 0.500000
-v -0.500000 -0.375000 -0.437500
-v 0.500000 -0.375000 -0.437500
-v -0.500000 -0.375000 0.500000
v 0.500000 -0.375000 0.500000
-v -0.437500 -0.375000 0.500000
-v -0.437500 -0.375000 -0.437500
-v 0.437500 -0.375000 -0.437500
-v 0.437500 -0.375000 0.500000
-v -0.437500 -0.375000 -0.375000
+v 0.500000 -0.500000 0.500000
+v 0.437500 -0.500000 0.500000
+v 0.437500 0.500000 -0.500000
+v 0.500000 0.500000 -0.500000
+v 0.500000 0.375000 -0.500000
+v 0.437500 0.375000 -0.500000
+v 0.437500 0.500000 0.500000
+v 0.500000 0.500000 0.500000
+v 0.500000 0.375000 0.500000
+v 0.437500 0.375000 0.500000
+v 0.437500 0.375000 -0.375000
+v 0.500000 0.375000 -0.375000
+v 0.500000 -0.375000 -0.375000
v 0.437500 -0.375000 -0.375000
-v -0.375000 0.250000 -0.437500
-v -0.375000 0.250000 -0.500000
-v 0.375000 0.250000 -0.500000
-v 0.375000 0.250000 -0.437500
-v -0.375000 0.375000 -0.437500
-v -0.375000 0.375000 -0.500000
-v 0.375000 0.375000 -0.500000
-v 0.375000 0.375000 -0.437500
+v 0.437500 0.375000 -0.125000
+v 0.500000 0.375000 -0.125000
+v 0.500000 -0.375000 -0.125000
+v 0.437500 -0.375000 -0.125000
+v 0.437500 0.375000 0.000000
+v 0.500000 0.375000 0.000000
+v 0.500000 -0.375000 0.000000
+v 0.437500 -0.375000 0.000000
+v 0.437500 0.375000 0.125000
+v 0.500000 0.375000 0.125000
+v 0.500000 -0.375000 0.125000
+v 0.437500 -0.375000 0.125000
+v -1.437500 -0.375000 -0.500000
+v -1.500000 -0.375000 -0.500000
+v -1.500000 -0.500000 -0.500000
+v -1.437500 -0.500000 -0.500000
+v -1.437500 -0.375000 0.500000
+v -1.500000 -0.375000 0.500000
+v -1.500000 -0.500000 0.500000
+v -1.437500 -0.500000 0.500000
+v -1.437500 0.500000 -0.500000
+v -1.500000 0.500000 -0.500000
+v -1.500000 0.375000 -0.500000
+v -1.437500 0.375000 -0.500000
+v -1.437500 0.500000 0.500000
+v -1.500000 0.500000 0.500000
+v -1.500000 0.375000 0.500000
+v -1.437500 0.375000 0.500000
+v -1.437500 0.375000 -0.375000
+v -1.500000 0.375000 -0.375000
+v -1.500000 -0.375000 -0.375000
+v -1.437500 -0.375000 -0.375000
+v -1.437500 0.375000 -0.125000
+v -1.500000 0.375000 -0.125000
+v -1.500000 -0.375000 -0.125000
+v -1.437500 -0.375000 -0.125000
+v -1.437500 0.375000 -0.062500
+v -1.500000 0.375000 -0.062500
+v -1.500000 -0.375000 -0.062500
+v -1.437500 -0.375000 -0.062500
+v -1.437500 0.375000 0.187500
+v -1.500000 0.375000 0.187500
+v -1.500000 -0.375000 0.187500
+v -1.437500 -0.375000 0.187500
+v -1.437500 0.375000 0.250000
+v -1.500000 0.375000 0.250000
+v -1.500000 -0.375000 0.250000
+v -1.437500 -0.375000 0.250000
+v -1.437500 0.375000 0.437500
+v -1.500000 0.375000 0.437500
+v -1.500000 -0.375000 0.437500
+v -1.437500 -0.375000 0.437500
+v -0.500000 0.500000 -0.125000
+v -0.500000 0.500000 -0.375000
+v -0.500000 -0.500000 -0.125000
+v -0.500000 -0.500000 -0.375000
+v -0.500000 0.437500 -0.125000
+v -0.500000 -0.437500 -0.125000
+v -0.500000 0.437500 -0.375000
+v -1.437500 0.437500 -0.375000
+v -1.437500 0.437500 -0.078125
+v 0.437500 0.437500 -0.078125
+v 0.437500 -0.437500 -0.078125
+v -1.437500 -0.437500 -0.078125
+v -1.437500 0.406250 -0.046875
+v 0.437500 0.406250 -0.046875
+v 0.437500 -0.406250 -0.046875
+v -1.437500 -0.406250 -0.046875
+v -1.437500 0.312500 -0.046875
+v -1.062500 0.312500 -0.046875
+v -1.062500 -0.312500 -0.046875
+v -1.437500 -0.312500 -0.046875
+v -0.500000 0.406250 -0.046875
+v -0.500000 0.437500 -0.078125
+v -0.500000 -0.406250 -0.046875
+v -0.500000 -0.437500 -0.078125
+v -1.437500 0.312500 -0.031250
+v -1.062500 0.312500 -0.031250
+v -1.062500 -0.312500 -0.031250
+v -1.437500 -0.312500 -0.031250
+v -1.375000 0.250000 0.031250
+v -1.125000 0.250000 0.031250
+v -1.125000 -0.250000 0.031250
+v -1.375000 -0.250000 0.031250
+v -1.437500 -0.437500 -0.375000
+v -0.500000 -0.437500 -0.375000
+v -1.375000 0.437500 -0.375000
+v -1.375000 -0.437500 -0.375000
+v 0.375000 0.437500 -0.375000
+v 0.375000 -0.437500 -0.375000
+v -1.375000 0.437500 -0.312500
+v -1.375000 -0.437500 -0.312500
+v 0.375000 0.437500 -0.312500
+v 0.375000 -0.437500 -0.312500
+v -1.000000 0.437500 -0.125000
+v -1.000000 -0.437500 -0.125000
+v -1.000000 0.437500 -0.078125
+v -1.000000 -0.406250 -0.046875
+v -1.000000 0.406250 -0.046875
+v -1.000000 -0.437500 -0.078125
+v -0.500000 0.437500 -0.312500
+v -0.500000 -0.437500 -0.312500
+v 0.437500 0.500000 -0.375000
+v 0.437500 -0.500000 -0.375000
+v -0.500000 0.500000 -0.375000
+v -0.500000 -0.500000 -0.375000
+v -0.500000 0.437500 -0.375000
+v 0.437500 0.437500 -0.375000
+v 0.437500 -0.437500 -0.375000
+v -0.500000 -0.437500 -0.375000
+v 0.375000 0.437500 -0.375000
+v 0.375000 -0.437500 -0.375000
+v 0.437500 0.375000 0.250000
+v 0.500000 0.375000 0.250000
+v 0.500000 -0.375000 0.250000
+v 0.437500 -0.375000 0.250000
+v 0.437500 0.375000 0.375000
+v 0.500000 0.375000 0.375000
+v 0.500000 -0.375000 0.375000
+v 0.437500 -0.375000 0.375000
vt 1.000000 0.250000
vt 0.062500 0.250000
vt 0.062500 -0.000000
@@ -233,16 +233,16 @@ vt 0.750000 0.125000
vt 0.812500 0.062500
vt 0.812500 0.500000
vt 0.187500 0.500000
-vn -1.000000 0.000000 0.000000
-vn 1.000000 0.000000 0.000000
-vn 0.000000 1.000000 0.000000
+vn -0.000000 1.000000 0.000000
vn 0.000000 -1.000000 0.000000
-vn 0.000000 0.000000 -1.000000
vn 0.000000 0.000000 1.000000
-vn 0.707100 0.707100 0.000000
-vn -0.707100 0.707100 0.000000
-vn 0.000000 0.707100 -0.707100
-vn 0.000000 0.707100 0.707100
+vn 0.000000 0.000000 -1.000000
+vn 1.000000 0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 -0.707100 0.707100
+vn -0.000000 0.707100 0.707100
+vn 0.707100 0.000000 0.707100
+vn -0.707100 0.000000 0.707100
g Cube_Cube_frame-metal
s off
f 85/1/1 6/2/1 2/3/1 86/4/1
diff --git a/homedecor/models/homedecor_bed_kingsize.obj b/homedecor/models/homedecor_bed_kingsize.obj
index 9b5dad1..89a939d 100644
--- a/homedecor/models/homedecor_bed_kingsize.obj
+++ b/homedecor/models/homedecor_bed_kingsize.obj
@@ -1,260 +1,260 @@
-# Blender v2.73 (sub 0) OBJ File: 'bed-kingsize.blend'
+# Blender v2.72 (sub 0) OBJ File: 'bed-kingsize.blend'
# www.blender.org
o Cube
-v -0.500000 -0.375000 1.437500
-v 0.500000 -0.375000 -0.437500
-v 0.500000 -0.375000 1.437500
-v 0.500000 -0.125000 -0.437500
-v 0.500000 -0.125000 1.437500
-v 0.437500 -0.125000 -0.437500
-v 0.437500 -0.125000 1.437500
-v 0.375000 -0.500000 -0.437500
-v 0.375000 -0.500000 -0.500000
+v -1.437500 0.500000 -0.375000
+v 0.437500 -0.500000 -0.375000
+v -1.437500 -0.500000 -0.375000
+v 0.437500 -0.500000 -0.125000
+v -1.437500 -0.500000 -0.125000
+v 0.437500 -0.437500 -0.125000
+v -1.437500 -0.437500 -0.125000
+v 0.437500 -0.375000 -0.500000
+v 0.500000 -0.375000 -0.500000
v 0.500000 -0.500000 -0.500000
-v 0.500000 -0.500000 -0.437500
-v 0.375000 0.187500 -0.437500
-v 0.375000 0.187500 -0.500000
-v 0.500000 0.187500 -0.500000
-v 0.500000 0.187500 -0.437500
-v -0.500000 -0.375000 -0.437500
-v -0.500000 -0.375000 -0.500000
-v 0.375000 -0.375000 -0.500000
-v 0.375000 -0.375000 -0.437500
-v -0.500000 -0.125000 -0.437500
-v -0.500000 -0.125000 -0.500000
-v 0.375000 -0.125000 -0.500000
-v 0.375000 -0.125000 -0.437500
-v -0.500000 0.000000 -0.437500
-v -0.500000 0.000000 -0.500000
-v 0.375000 0.000000 -0.500000
-v 0.375000 0.000000 -0.437500
-v -0.500000 0.125000 -0.437500
-v -0.500000 0.125000 -0.500000
-v 0.375000 0.125000 -0.500000
-v 0.375000 0.125000 -0.437500
-v 0.375000 -0.500000 1.437500
-v 0.375000 -0.500000 1.500000
-v 0.500000 -0.500000 1.500000
-v 0.500000 -0.500000 1.437500
-v 0.375000 0.500000 1.437500
-v 0.375000 0.500000 1.500000
-v 0.500000 0.500000 1.500000
-v 0.500000 0.500000 1.437500
-v -0.500000 -0.375000 1.437500
-v -0.500000 -0.375000 1.500000
-v 0.375000 -0.375000 1.500000
-v 0.375000 -0.375000 1.437500
-v -0.500000 -0.125000 1.437500
-v -0.500000 -0.125000 1.500000
-v 0.375000 -0.125000 1.500000
-v 0.375000 -0.125000 1.437500
-v -0.500000 -0.062500 1.437500
-v -0.500000 -0.062500 1.500000
-v 0.375000 -0.062500 1.500000
-v 0.375000 -0.062500 1.437500
-v -0.500000 0.187500 1.437500
-v -0.500000 0.187500 1.500000
-v 0.375000 0.187500 1.500000
-v 0.375000 0.187500 1.437500
-v -0.500000 0.250000 1.437500
-v -0.500000 0.250000 1.500000
-v 0.375000 0.250000 1.500000
-v 0.375000 0.250000 1.437500
-v -0.500000 0.437500 1.437500
-v -0.500000 0.437500 1.500000
-v 0.375000 0.437500 1.500000
-v 0.375000 0.437500 1.437500
-v -0.500000 -0.375000 0.500000
-v 0.500000 -0.125000 0.500000
-v 0.500000 -0.375000 0.500000
-v 0.437500 -0.125000 0.500000
-v -0.437500 -0.375000 0.500000
-v -0.437500 -0.375000 1.437500
-v 0.437500 -0.078125 -0.437500
-v 0.437500 -0.078125 1.437500
-v -0.500000 -0.046875 1.437500
-v -0.500000 -0.046875 -0.437500
-v 0.406250 -0.046875 -0.437500
-v 0.406250 -0.046875 1.437500
-v -0.312500 -0.046875 1.437500
-v -0.312500 -0.046875 1.062500
-v 0.312500 -0.046875 1.062500
-v 0.312500 -0.046875 1.437500
-v -0.500000 -0.046875 0.500000
-v 0.406250 -0.046875 0.500000
-v 0.437500 -0.078125 0.500000
-v -0.312500 -0.031250 1.437500
-v -0.312500 -0.031250 1.062500
-v 0.312500 -0.031250 1.062500
-v 0.312500 -0.031250 1.437500
-v -0.250000 0.031250 1.375000
-v -0.250000 0.031250 1.125000
-v 0.250000 0.031250 1.125000
-v 0.250000 0.031250 1.375000
-v 0.437500 -0.375000 1.437500
-v 0.437500 -0.375000 0.500000
-v -0.437500 -0.375000 1.375000
-v 0.437500 -0.375000 1.375000
-v -0.437500 -0.375000 -0.375000
+v 0.437500 -0.500000 -0.500000
+v 0.437500 -0.375000 0.187500
+v 0.500000 -0.375000 0.187500
+v 0.500000 -0.500000 0.187500
+v 0.437500 -0.500000 0.187500
+v 0.437500 0.500000 -0.375000
+v 0.500000 0.500000 -0.375000
+v 0.500000 -0.375000 -0.375000
v 0.437500 -0.375000 -0.375000
-v -0.437500 -0.312500 1.375000
-v 0.437500 -0.312500 1.375000
-v -0.437500 -0.312500 -0.375000
-v 0.437500 -0.312500 -0.375000
-v 0.437500 -0.125000 1.000000
-v 0.406250 -0.046875 1.000000
-v -0.500000 -0.046875 1.000000
-v 0.437500 -0.078125 1.000000
-v -0.437500 -0.312500 0.500000
-v 0.437500 -0.312500 0.500000
-v -0.500000 -0.375000 -0.437500
-v 0.500000 -0.375000 -0.437500
-v -0.500000 -0.375000 0.500000
-v 0.500000 -0.375000 0.500000
-v -0.437500 -0.375000 0.500000
-v -0.437500 -0.375000 -0.437500
-v 0.437500 -0.375000 -0.437500
-v 0.437500 -0.375000 0.500000
-v -0.437500 -0.375000 -0.375000
-v 0.437500 -0.375000 -0.375000
-v -1.500000 -0.375000 1.437500
-v -1.500000 -0.375000 -0.437500
-v -0.500000 -0.375000 1.437500
-v -1.500000 -0.125000 1.437500
-v -1.500000 -0.125000 -0.437500
-v -1.437500 -0.125000 1.437500
-v -1.437500 -0.125000 -0.437500
-v -1.500000 -0.500000 -0.437500
+v 0.437500 0.500000 -0.125000
+v 0.500000 0.500000 -0.125000
+v 0.500000 -0.375000 -0.125000
+v 0.437500 -0.375000 -0.125000
+v 0.437500 0.500000 0.000000
+v 0.500000 0.500000 0.000000
+v 0.500000 -0.375000 0.000000
+v 0.437500 -0.375000 0.000000
+v 0.437500 0.500000 0.125000
+v 0.500000 0.500000 0.125000
+v 0.500000 -0.375000 0.125000
+v 0.437500 -0.375000 0.125000
+v -1.437500 -0.375000 -0.500000
+v -1.500000 -0.375000 -0.500000
v -1.500000 -0.500000 -0.500000
-v -1.375000 -0.500000 -0.500000
-v -1.375000 -0.500000 -0.437500
-v -1.500000 0.187500 -0.437500
-v -1.500000 0.187500 -0.500000
-v -1.375000 0.187500 -0.500000
-v -1.375000 0.187500 -0.437500
-v -1.375000 -0.375000 -0.437500
-v -1.375000 -0.375000 -0.500000
-v -0.500000 -0.375000 -0.500000
-v -0.500000 -0.375000 -0.437500
-v -1.375000 -0.125000 -0.437500
-v -1.375000 -0.125000 -0.500000
-v -0.500000 -0.125000 -0.500000
-v -0.500000 -0.125000 -0.437500
-v -1.375000 0.000000 -0.437500
-v -1.375000 0.000000 -0.500000
-v -0.500000 0.000000 -0.500000
-v -0.500000 0.000000 -0.437500
-v -1.375000 0.125000 -0.437500
-v -1.375000 0.125000 -0.500000
-v -0.500000 0.125000 -0.500000
-v -0.500000 0.125000 -0.437500
-v -1.500000 -0.500000 1.437500
-v -1.500000 -0.500000 1.500000
-v -1.375000 -0.500000 1.500000
-v -1.375000 -0.500000 1.437500
-v -1.500000 0.500000 1.437500
-v -1.500000 0.500000 1.500000
-v -1.375000 0.500000 1.500000
-v -1.375000 0.500000 1.437500
-v -1.375000 -0.375000 1.437500
-v -1.375000 -0.375000 1.500000
-v -0.500000 -0.375000 1.500000
-v -0.500000 -0.375000 1.437500
-v -1.375000 -0.125000 1.437500
-v -1.375000 -0.125000 1.500000
-v -0.500000 -0.125000 1.500000
-v -0.500000 -0.125000 1.437500
-v -1.375000 -0.062500 1.437500
-v -1.375000 -0.062500 1.500000
-v -0.500000 -0.062500 1.500000
-v -0.500000 -0.062500 1.437500
-v -1.375000 0.187500 1.437500
-v -1.375000 0.187500 1.500000
-v -0.500000 0.187500 1.500000
-v -0.500000 0.187500 1.437500
-v -1.375000 0.250000 1.437500
-v -1.375000 0.250000 1.500000
-v -0.500000 0.250000 1.500000
-v -0.500000 0.250000 1.437500
-v -1.375000 0.437500 1.437500
-v -1.375000 0.437500 1.500000
-v -0.500000 0.437500 1.500000
-v -0.500000 0.437500 1.437500
-v -1.500000 -0.125000 0.500000
-v -1.500000 -0.375000 0.500000
-v -0.500000 -0.375000 0.500000
-v -1.437500 -0.125000 0.500000
+v -1.437500 -0.500000 -0.500000
v -1.437500 -0.375000 0.500000
-v -1.437500 -0.375000 1.437500
-v -1.437500 -0.078125 1.437500
-v -1.437500 -0.078125 -0.437500
-v -1.406250 -0.046875 1.437500
-v -1.406250 -0.046875 -0.437500
-v -0.500000 -0.046875 -0.437500
-v -0.500000 -0.046875 1.437500
-v -1.312500 -0.046875 1.437500
-v -1.312500 -0.046875 1.062500
-v -0.687500 -0.046875 1.062500
-v -0.687500 -0.046875 1.437500
-v -1.406250 -0.046875 0.500000
-v -1.437500 -0.078125 0.500000
-v -0.500000 -0.046875 0.500000
-v -1.312500 -0.031250 1.437500
-v -1.312500 -0.031250 1.062500
-v -0.687500 -0.031250 1.062500
-v -0.687500 -0.031250 1.437500
-v -1.250000 0.031250 1.375000
-v -1.250000 0.031250 1.125000
-v -0.750000 0.031250 1.125000
-v -0.750000 0.031250 1.375000
-v -0.562500 -0.375000 1.437500
-v -0.562500 -0.375000 0.500000
-v -1.437500 -0.375000 1.375000
-v -0.562500 -0.375000 1.375000
-v -1.437500 -0.375000 -0.375000
-v -0.562500 -0.375000 -0.375000
-v -1.437500 -0.312500 1.375000
-v -0.562500 -0.312500 1.375000
-v -1.437500 -0.312500 -0.375000
-v -0.562500 -0.312500 -0.375000
-v -1.437500 -0.125000 1.000000
-v -1.437500 -0.078125 1.000000
-v -0.500000 -0.046875 1.000000
-v -1.406250 -0.046875 1.000000
-v -1.437500 -0.312500 0.500000
-v -0.562500 -0.312500 0.500000
-v -1.500000 -0.375000 -0.437500
-v -0.500000 -0.375000 -0.437500
v -1.500000 -0.375000 0.500000
-v -0.500000 -0.375000 0.500000
-v -1.437500 -0.375000 0.500000
-v -1.437500 -0.375000 -0.437500
-v -0.562500 -0.375000 -0.437500
-v -0.562500 -0.375000 0.500000
+v -1.500000 -0.500000 0.500000
+v -1.437500 -0.500000 0.500000
+v -1.437500 0.500000 -0.375000
+v -1.500000 0.500000 -0.375000
+v -1.500000 -0.375000 -0.375000
v -1.437500 -0.375000 -0.375000
-v -0.562500 -0.375000 -0.375000
-v -0.500000 -0.125000 -0.437500
-v -0.500000 -0.046875 1.437500
-v -0.500000 -0.125000 1.437500
-v -0.500000 -0.078125 1.437500
-v -0.500000 -0.046875 -0.437500
-v -0.500000 -0.078125 -0.437500
-v -0.562500 -0.500000 -0.375000
-v -0.562500 -0.500000 -0.437500
-v -0.437500 -0.500000 -0.437500
-v -0.437500 -0.500000 -0.375000
-v -0.562500 -0.375000 -0.375000
-v -0.562500 -0.375000 -0.437500
-v -0.437500 -0.375000 -0.437500
-v -0.437500 -0.375000 -0.375000
-v -0.562500 -0.500000 1.437500
-v -0.562500 -0.500000 1.375000
-v -0.437500 -0.500000 1.375000
-v -0.437500 -0.500000 1.437500
-v -0.562500 -0.375000 1.437500
-v -0.562500 -0.375000 1.375000
-v -0.437500 -0.375000 1.375000
-v -0.437500 -0.375000 1.437500
+v -1.437500 0.500000 -0.125000
+v -1.500000 0.500000 -0.125000
+v -1.500000 -0.375000 -0.125000
+v -1.437500 -0.375000 -0.125000
+v -1.437500 0.500000 -0.062500
+v -1.500000 0.500000 -0.062500
+v -1.500000 -0.375000 -0.062500
+v -1.437500 -0.375000 -0.062500
+v -1.437500 0.500000 0.187500
+v -1.500000 0.500000 0.187500
+v -1.500000 -0.375000 0.187500
+v -1.437500 -0.375000 0.187500
+v -1.437500 0.500000 0.250000
+v -1.500000 0.500000 0.250000
+v -1.500000 -0.375000 0.250000
+v -1.437500 -0.375000 0.250000
+v -1.437500 0.500000 0.437500
+v -1.500000 0.500000 0.437500
+v -1.500000 -0.375000 0.437500
+v -1.437500 -0.375000 0.437500
+v -0.500000 0.500000 -0.375000
+v -0.500000 -0.500000 -0.125000
+v -0.500000 -0.500000 -0.375000
+v -0.500000 -0.437500 -0.125000
+v -0.500000 0.437500 -0.375000
+v -1.437500 0.437500 -0.375000
+v 0.437500 -0.437500 -0.078125
+v -1.437500 -0.437500 -0.078125
+v -1.437500 0.500000 -0.046875
+v 0.437500 0.500000 -0.046875
+v 0.437500 -0.406250 -0.046875
+v -1.437500 -0.406250 -0.046875
+v -1.437500 0.312500 -0.046875
+v -1.062500 0.312500 -0.046875
+v -1.062500 -0.312500 -0.046875
+v -1.437500 -0.312500 -0.046875
+v -0.500000 0.500000 -0.046875
+v -0.500000 -0.406250 -0.046875
+v -0.500000 -0.437500 -0.078125
+v -1.437500 0.312500 -0.031250
+v -1.062500 0.312500 -0.031250
+v -1.062500 -0.312500 -0.031250
+v -1.437500 -0.312500 -0.031250
+v -1.375000 0.250000 0.031250
+v -1.125000 0.250000 0.031250
+v -1.125000 -0.250000 0.031250
+v -1.375000 -0.250000 0.031250
+v -1.437500 -0.437500 -0.375000
+v -0.500000 -0.437500 -0.375000
+v -1.375000 0.437500 -0.375000
+v -1.375000 -0.437500 -0.375000
+v 0.375000 0.437500 -0.375000
+v 0.375000 -0.437500 -0.375000
+v -1.375000 0.437500 -0.312500
+v -1.375000 -0.437500 -0.312500
+v 0.375000 0.437500 -0.312500
+v 0.375000 -0.437500 -0.312500
+v -1.000000 -0.437500 -0.125000
+v -1.000000 -0.406250 -0.046875
+v -1.000000 0.500000 -0.046875
+v -1.000000 -0.437500 -0.078125
+v -0.500000 0.437500 -0.312500
+v -0.500000 -0.437500 -0.312500
+v 0.437500 0.500000 -0.375000
+v 0.437500 -0.500000 -0.375000
+v -0.500000 0.500000 -0.375000
+v -0.500000 -0.500000 -0.375000
+v -0.500000 0.437500 -0.375000
+v 0.437500 0.437500 -0.375000
+v 0.437500 -0.437500 -0.375000
+v -0.500000 -0.437500 -0.375000
+v 0.375000 0.437500 -0.375000
+v 0.375000 -0.437500 -0.375000
+v -1.437500 1.500000 -0.375000
+v 0.437500 1.500000 -0.375000
+v -1.437500 0.500000 -0.375000
+v -1.437500 1.500000 -0.125000
+v 0.437500 1.500000 -0.125000
+v -1.437500 1.437500 -0.125000
+v 0.437500 1.437500 -0.125000
+v 0.437500 1.500000 -0.500000
+v 0.500000 1.500000 -0.500000
+v 0.500000 1.375000 -0.500000
+v 0.437500 1.375000 -0.500000
+v 0.437500 1.500000 0.187500
+v 0.500000 1.500000 0.187500
+v 0.500000 1.375000 0.187500
+v 0.437500 1.375000 0.187500
+v 0.437500 1.375000 -0.375000
+v 0.500000 1.375000 -0.375000
+v 0.500000 0.500000 -0.375000
+v 0.437500 0.500000 -0.375000
+v 0.437500 1.375000 -0.125000
+v 0.500000 1.375000 -0.125000
+v 0.500000 0.500000 -0.125000
+v 0.437500 0.500000 -0.125000
+v 0.437500 1.375000 0.000000
+v 0.500000 1.375000 0.000000
+v 0.500000 0.500000 0.000000
+v 0.437500 0.500000 0.000000
+v 0.437500 1.375000 0.125000
+v 0.500000 1.375000 0.125000
+v 0.500000 0.500000 0.125000
+v 0.437500 0.500000 0.125000
+v -1.437500 1.500000 -0.500000
+v -1.500000 1.500000 -0.500000
+v -1.500000 1.375000 -0.500000
+v -1.437500 1.375000 -0.500000
+v -1.437500 1.500000 0.500000
+v -1.500000 1.500000 0.500000
+v -1.500000 1.375000 0.500000
+v -1.437500 1.375000 0.500000
+v -1.437500 1.375000 -0.375000
+v -1.500000 1.375000 -0.375000
+v -1.500000 0.500000 -0.375000
+v -1.437500 0.500000 -0.375000
+v -1.437500 1.375000 -0.125000
+v -1.500000 1.375000 -0.125000
+v -1.500000 0.500000 -0.125000
+v -1.437500 0.500000 -0.125000
+v -1.437500 1.375000 -0.062500
+v -1.500000 1.375000 -0.062500
+v -1.500000 0.500000 -0.062500
+v -1.437500 0.500000 -0.062500
+v -1.437500 1.375000 0.187500
+v -1.500000 1.375000 0.187500
+v -1.500000 0.500000 0.187500
+v -1.437500 0.500000 0.187500
+v -1.437500 1.375000 0.250000
+v -1.500000 1.375000 0.250000
+v -1.500000 0.500000 0.250000
+v -1.437500 0.500000 0.250000
+v -1.437500 1.375000 0.437500
+v -1.500000 1.375000 0.437500
+v -1.500000 0.500000 0.437500
+v -1.437500 0.500000 0.437500
+v -0.500000 1.500000 -0.125000
+v -0.500000 1.500000 -0.375000
+v -0.500000 0.500000 -0.375000
+v -0.500000 1.437500 -0.125000
+v -0.500000 1.437500 -0.375000
+v -1.437500 1.437500 -0.375000
+v -1.437500 1.437500 -0.078125
+v 0.437500 1.437500 -0.078125
+v -1.437500 1.406250 -0.046875
+v 0.437500 1.406250 -0.046875
+v 0.437500 0.500000 -0.046875
+v -1.437500 0.500000 -0.046875
+v -1.437500 1.312500 -0.046875
+v -1.062500 1.312500 -0.046875
+v -1.062500 0.687500 -0.046875
+v -1.437500 0.687500 -0.046875
+v -0.500000 1.406250 -0.046875
+v -0.500000 1.437500 -0.078125
+v -0.500000 0.500000 -0.046875
+v -1.437500 1.312500 -0.031250
+v -1.062500 1.312500 -0.031250
+v -1.062500 0.687500 -0.031250
+v -1.437500 0.687500 -0.031250
+v -1.375000 1.250000 0.031250
+v -1.125000 1.250000 0.031250
+v -1.125000 0.750000 0.031250
+v -1.375000 0.750000 0.031250
+v -1.437500 0.562500 -0.375000
+v -0.500000 0.562500 -0.375000
+v -1.375000 1.437500 -0.375000
+v -1.375000 0.562500 -0.375000
+v 0.375000 1.437500 -0.375000
+v 0.375000 0.562500 -0.375000
+v -1.375000 1.437500 -0.312500
+v -1.375000 0.562500 -0.312500
+v 0.375000 1.437500 -0.312500
+v 0.375000 0.562500 -0.312500
+v -1.000000 1.437500 -0.125000
+v -1.000000 1.437500 -0.078125
+v -1.000000 0.500000 -0.046875
+v -1.000000 1.406250 -0.046875
+v -0.500000 1.437500 -0.312500
+v -0.500000 0.562500 -0.312500
+v 0.437500 1.500000 -0.375000
+v 0.437500 0.500000 -0.375000
+v -0.500000 1.500000 -0.375000
+v -0.500000 0.500000 -0.375000
+v -0.500000 1.437500 -0.375000
+v 0.437500 1.437500 -0.375000
+v 0.437500 0.562500 -0.375000
+v -0.500000 0.562500 -0.375000
+v 0.375000 1.437500 -0.375000
+v 0.375000 0.562500 -0.375000
+v 0.437500 0.500000 -0.125000
+v -1.437500 0.500000 -0.046875
+v -1.437500 0.500000 -0.125000
+v -1.437500 0.500000 -0.078125
+v 0.437500 0.500000 -0.046875
+v 0.437500 0.500000 -0.078125
+v 0.375000 0.562500 -0.500000
+v 0.437500 0.562500 -0.500000
+v 0.437500 0.437500 -0.500000
+v 0.375000 0.437500 -0.500000
+v 0.375000 0.562500 -0.375000
+v 0.437500 0.562500 -0.375000
+v 0.437500 0.437500 -0.375000
+v 0.375000 0.437500 -0.375000
+v -1.437500 0.562500 -0.500000
+v -1.375000 0.562500 -0.500000
+v -1.375000 0.437500 -0.500000
+v -1.437500 0.437500 -0.500000
+v -1.437500 0.562500 -0.375000
+v -1.375000 0.562500 -0.375000
+v -1.375000 0.437500 -0.375000
+v -1.437500 0.437500 -0.375000
vt 1.000000 0.250000
vt 0.062500 0.250000
vt 0.062500 -0.000000
@@ -361,16 +361,16 @@ vt 0.750000 0.125000
vt 0.812500 0.062500
vt 0.812500 0.500000
vt 0.187500 0.500000
-vn 1.000000 0.000000 0.000000
-vn 0.000000 1.000000 0.000000
vn 0.000000 -1.000000 0.000000
-vn 0.000000 0.000000 -1.000000
vn 0.000000 0.000000 1.000000
+vn 0.000000 0.000000 -1.000000
+vn 1.000000 0.000000 0.000000
vn -1.000000 0.000000 0.000000
-vn 0.707100 0.707100 0.000000
-vn -0.707100 0.707100 0.000000
-vn 0.000000 0.707100 -0.707100
+vn -0.000000 1.000000 0.000000
+vn 0.000000 -0.707100 0.707100
vn 0.000000 0.707100 0.707100
+vn 0.707100 0.000000 0.707100
+vn -0.707100 0.000000 0.707100
g Cube_Cube_frame-metal
s off
f 65/1/1 5/2/1 3/3/1 66/4/1
diff --git a/homedecor/models/homedecor_bed_regular.obj b/homedecor/models/homedecor_bed_regular.obj
index 3694fc9..cecbd96 100644
--- a/homedecor/models/homedecor_bed_regular.obj
+++ b/homedecor/models/homedecor_bed_regular.obj
@@ -1,150 +1,150 @@
-# Blender v2.73 (sub 0) OBJ File: 'bed.blend'
+# Blender v2.72 (sub 0) OBJ File: 'bed.blend'
# www.blender.org
o Cube
-v -0.500000 -0.375000 1.437500
-v -0.500000 -0.375000 -0.437500
-v 0.500000 -0.375000 -0.437500
-v 0.500000 -0.375000 1.437500
-v -0.500000 -0.125000 1.437500
-v -0.500000 -0.125000 -0.437500
-v 0.500000 -0.125000 -0.437500
-v 0.500000 -0.125000 1.437500
-v -0.437500 -0.125000 1.437500
-v -0.437500 -0.125000 -0.437500
-v 0.437500 -0.125000 -0.437500
-v 0.437500 -0.125000 1.437500
-v 0.375000 -0.500000 -0.437500
-v 0.375000 -0.500000 -0.500000
+v -1.437500 0.500000 -0.375000
+v 0.437500 0.500000 -0.375000
+v 0.437500 -0.500000 -0.375000
+v -1.437500 -0.500000 -0.375000
+v -1.437500 0.500000 -0.125000
+v 0.437500 0.500000 -0.125000
+v 0.437500 -0.500000 -0.125000
+v -1.437500 -0.500000 -0.125000
+v -1.437500 0.437500 -0.125000
+v 0.437500 0.437500 -0.125000
+v 0.437500 -0.437500 -0.125000
+v -1.437500 -0.437500 -0.125000
+v 0.437500 -0.375000 -0.500000
+v 0.500000 -0.375000 -0.500000
v 0.500000 -0.500000 -0.500000
-v 0.500000 -0.500000 -0.437500
-v 0.375000 0.187500 -0.437500
-v 0.375000 0.187500 -0.500000
-v 0.500000 0.187500 -0.500000
-v 0.500000 0.187500 -0.437500
-v -0.500000 -0.500000 -0.437500
-v -0.500000 -0.500000 -0.500000
-v -0.375000 -0.500000 -0.500000
-v -0.375000 -0.500000 -0.437500
-v -0.500000 0.187500 -0.437500
-v -0.500000 0.187500 -0.500000
-v -0.375000 0.187500 -0.500000
-v -0.375000 0.187500 -0.437500
-v -0.375000 -0.375000 -0.437500
-v -0.375000 -0.375000 -0.500000
-v 0.375000 -0.375000 -0.500000
-v 0.375000 -0.375000 -0.437500
-v -0.375000 -0.125000 -0.437500
-v -0.375000 -0.125000 -0.500000
-v 0.375000 -0.125000 -0.500000
-v 0.375000 -0.125000 -0.437500
-v -0.375000 0.000000 -0.437500
-v -0.375000 0.000000 -0.500000
-v 0.375000 0.000000 -0.500000
-v 0.375000 0.000000 -0.437500
-v -0.375000 0.125000 -0.437500
-v -0.375000 0.125000 -0.500000
-v 0.375000 0.125000 -0.500000
-v 0.375000 0.125000 -0.437500
-v 0.375000 -0.500000 1.437500
-v 0.375000 -0.500000 1.500000
-v 0.500000 -0.500000 1.500000
-v 0.500000 -0.500000 1.437500
-v 0.375000 0.500000 1.437500
-v 0.375000 0.500000 1.500000
-v 0.500000 0.500000 1.500000
-v 0.500000 0.500000 1.437500
-v -0.500000 -0.500000 1.437500
-v -0.500000 -0.500000 1.500000
-v -0.375000 -0.500000 1.500000
-v -0.375000 -0.500000 1.437500
-v -0.500000 0.500000 1.437500
-v -0.500000 0.500000 1.500000
-v -0.375000 0.500000 1.500000
-v -0.375000 0.500000 1.437500
-v -0.375000 -0.375000 1.437500
-v -0.375000 -0.375000 1.500000
-v 0.375000 -0.375000 1.500000
-v 0.375000 -0.375000 1.437500
-v -0.375000 -0.125000 1.437500
-v -0.375000 -0.125000 1.500000
-v 0.375000 -0.125000 1.500000
-v 0.375000 -0.125000 1.437500
-v -0.375000 -0.062500 1.437500
-v -0.375000 -0.062500 1.500000
-v 0.375000 -0.062500 1.500000
-v 0.375000 -0.062500 1.437500
-v -0.375000 0.187500 1.437500
-v -0.375000 0.187500 1.500000
-v 0.375000 0.187500 1.500000
-v 0.375000 0.187500 1.437500
-v -0.375000 0.250000 1.437500
-v -0.375000 0.250000 1.500000
-v 0.375000 0.250000 1.500000
-v 0.375000 0.250000 1.437500
-v -0.375000 0.437500 1.437500
-v -0.375000 0.437500 1.500000
-v 0.375000 0.437500 1.500000
-v 0.375000 0.437500 1.437500
-v -0.500000 -0.125000 0.500000
-v -0.500000 -0.375000 0.500000
-v 0.500000 -0.125000 0.500000
-v 0.500000 -0.375000 0.500000
-v -0.437500 -0.125000 0.500000
-v 0.437500 -0.125000 0.500000
-v -0.437500 -0.375000 0.500000
-v -0.437500 -0.375000 1.437500
-v -0.437500 -0.078125 1.437500
-v -0.437500 -0.078125 -0.437500
-v 0.437500 -0.078125 -0.437500
-v 0.437500 -0.078125 1.437500
-v -0.406250 -0.046875 1.437500
-v -0.406250 -0.046875 -0.437500
-v 0.406250 -0.046875 -0.437500
-v 0.406250 -0.046875 1.437500
-v -0.312500 -0.046875 1.437500
-v -0.312500 -0.046875 1.062500
-v 0.312500 -0.046875 1.062500
-v 0.312500 -0.046875 1.437500
-v -0.406250 -0.046875 0.500000
-v -0.437500 -0.078125 0.500000
-v 0.406250 -0.046875 0.500000
-v 0.437500 -0.078125 0.500000
-v -0.312500 -0.031250 1.437500
-v -0.312500 -0.031250 1.062500
-v 0.312500 -0.031250 1.062500
-v 0.312500 -0.031250 1.437500
-v -0.250000 0.031250 1.375000
-v -0.250000 0.031250 1.125000
-v 0.250000 0.031250 1.125000
-v 0.250000 0.031250 1.375000
-v 0.437500 -0.375000 1.437500
-v 0.437500 -0.375000 0.500000
-v -0.437500 -0.375000 1.375000
-v 0.437500 -0.375000 1.375000
-v -0.437500 -0.375000 -0.375000
-v 0.437500 -0.375000 -0.375000
-v -0.437500 -0.312500 1.375000
-v 0.437500 -0.312500 1.375000
-v -0.437500 -0.312500 -0.375000
-v 0.437500 -0.312500 -0.375000
-v -0.437500 -0.125000 1.000000
-v 0.437500 -0.125000 1.000000
-v -0.437500 -0.078125 1.000000
-v 0.406250 -0.046875 1.000000
-v -0.406250 -0.046875 1.000000
-v 0.437500 -0.078125 1.000000
-v -0.437500 -0.312500 0.500000
-v 0.437500 -0.312500 0.500000
-v -0.500000 -0.375000 -0.437500
-v 0.500000 -0.375000 -0.437500
-v -0.500000 -0.375000 0.500000
-v 0.500000 -0.375000 0.500000
-v -0.437500 -0.375000 0.500000
-v -0.437500 -0.375000 -0.437500
-v 0.437500 -0.375000 -0.437500
-v 0.437500 -0.375000 0.500000
-v -0.437500 -0.375000 -0.375000
+v 0.437500 -0.500000 -0.500000
+v 0.437500 -0.375000 0.187500
+v 0.500000 -0.375000 0.187500
+v 0.500000 -0.500000 0.187500
+v 0.437500 -0.500000 0.187500
+v 0.437500 0.500000 -0.500000
+v 0.500000 0.500000 -0.500000
+v 0.500000 0.375000 -0.500000
+v 0.437500 0.375000 -0.500000
+v 0.437500 0.500000 0.187500
+v 0.500000 0.500000 0.187500
+v 0.500000 0.375000 0.187500
+v 0.437500 0.375000 0.187500
+v 0.437500 0.375000 -0.375000
+v 0.500000 0.375000 -0.375000
+v 0.500000 -0.375000 -0.375000
v 0.437500 -0.375000 -0.375000
+v 0.437500 0.375000 -0.125000
+v 0.500000 0.375000 -0.125000
+v 0.500000 -0.375000 -0.125000
+v 0.437500 -0.375000 -0.125000
+v 0.437500 0.375000 0.000000
+v 0.500000 0.375000 0.000000
+v 0.500000 -0.375000 0.000000
+v 0.437500 -0.375000 0.000000
+v 0.437500 0.375000 0.125000
+v 0.500000 0.375000 0.125000
+v 0.500000 -0.375000 0.125000
+v 0.437500 -0.375000 0.125000
+v -1.437500 -0.375000 -0.500000
+v -1.500000 -0.375000 -0.500000
+v -1.500000 -0.500000 -0.500000
+v -1.437500 -0.500000 -0.500000
+v -1.437500 -0.375000 0.500000
+v -1.500000 -0.375000 0.500000
+v -1.500000 -0.500000 0.500000
+v -1.437500 -0.500000 0.500000
+v -1.437500 0.500000 -0.500000
+v -1.500000 0.500000 -0.500000
+v -1.500000 0.375000 -0.500000
+v -1.437500 0.375000 -0.500000
+v -1.437500 0.500000 0.500000
+v -1.500000 0.500000 0.500000
+v -1.500000 0.375000 0.500000
+v -1.437500 0.375000 0.500000
+v -1.437500 0.375000 -0.375000
+v -1.500000 0.375000 -0.375000
+v -1.500000 -0.375000 -0.375000
+v -1.437500 -0.375000 -0.375000
+v -1.437500 0.375000 -0.125000
+v -1.500000 0.375000 -0.125000
+v -1.500000 -0.375000 -0.125000
+v -1.437500 -0.375000 -0.125000
+v -1.437500 0.375000 -0.062500
+v -1.500000 0.375000 -0.062500
+v -1.500000 -0.375000 -0.062500
+v -1.437500 -0.375000 -0.062500
+v -1.437500 0.375000 0.187500
+v -1.500000 0.375000 0.187500
+v -1.500000 -0.375000 0.187500
+v -1.437500 -0.375000 0.187500
+v -1.437500 0.375000 0.250000
+v -1.500000 0.375000 0.250000
+v -1.500000 -0.375000 0.250000
+v -1.437500 -0.375000 0.250000
+v -1.437500 0.375000 0.437500
+v -1.500000 0.375000 0.437500
+v -1.500000 -0.375000 0.437500
+v -1.437500 -0.375000 0.437500
+v -0.500000 0.500000 -0.125000
+v -0.500000 0.500000 -0.375000
+v -0.500000 -0.500000 -0.125000
+v -0.500000 -0.500000 -0.375000
+v -0.500000 0.437500 -0.125000
+v -0.500000 -0.437500 -0.125000
+v -0.500000 0.437500 -0.375000
+v -1.437500 0.437500 -0.375000
+v -1.437500 0.437500 -0.078125
+v 0.437500 0.437500 -0.078125
+v 0.437500 -0.437500 -0.078125
+v -1.437500 -0.437500 -0.078125
+v -1.437500 0.406250 -0.046875
+v 0.437500 0.406250 -0.046875
+v 0.437500 -0.406250 -0.046875
+v -1.437500 -0.406250 -0.046875
+v -1.437500 0.312500 -0.046875
+v -1.062500 0.312500 -0.046875
+v -1.062500 -0.312500 -0.046875
+v -1.437500 -0.312500 -0.046875
+v -0.500000 0.406250 -0.046875
+v -0.500000 0.437500 -0.078125
+v -0.500000 -0.406250 -0.046875
+v -0.500000 -0.437500 -0.078125
+v -1.437500 0.312500 -0.031250
+v -1.062500 0.312500 -0.031250
+v -1.062500 -0.312500 -0.031250
+v -1.437500 -0.312500 -0.031250
+v -1.375000 0.250000 0.031250
+v -1.125000 0.250000 0.031250
+v -1.125000 -0.250000 0.031250
+v -1.375000 -0.250000 0.031250
+v -1.437500 -0.437500 -0.375000
+v -0.500000 -0.437500 -0.375000
+v -1.375000 0.437500 -0.375000
+v -1.375000 -0.437500 -0.375000
+v 0.375000 0.437500 -0.375000
+v 0.375000 -0.437500 -0.375000
+v -1.375000 0.437500 -0.312500
+v -1.375000 -0.437500 -0.312500
+v 0.375000 0.437500 -0.312500
+v 0.375000 -0.437500 -0.312500
+v -1.000000 0.437500 -0.125000
+v -1.000000 -0.437500 -0.125000
+v -1.000000 0.437500 -0.078125
+v -1.000000 -0.406250 -0.046875
+v -1.000000 0.406250 -0.046875
+v -1.000000 -0.437500 -0.078125
+v -0.500000 0.437500 -0.312500
+v -0.500000 -0.437500 -0.312500
+v 0.437500 0.500000 -0.375000
+v 0.437500 -0.500000 -0.375000
+v -0.500000 0.500000 -0.375000
+v -0.500000 -0.500000 -0.375000
+v -0.500000 0.437500 -0.375000
+v 0.437500 0.437500 -0.375000
+v 0.437500 -0.437500 -0.375000
+v -0.500000 -0.437500 -0.375000
+v 0.375000 0.437500 -0.375000
+v 0.375000 -0.437500 -0.375000
vt 1.000000 0.250000
vt 0.062500 0.250000
vt 0.062500 -0.000000
@@ -227,16 +227,16 @@ vt 0.750000 0.125000
vt 0.812500 0.062500
vt 0.812500 0.500000
vt 0.187500 0.500000
-vn -1.000000 0.000000 0.000000
-vn 1.000000 0.000000 0.000000
-vn 0.000000 1.000000 0.000000
+vn -0.000000 1.000000 0.000000
vn 0.000000 -1.000000 0.000000
-vn 0.000000 0.000000 -1.000000
vn 0.000000 0.000000 1.000000
-vn 0.707100 0.707100 0.000000
-vn -0.707100 0.707100 0.000000
-vn 0.000000 0.707100 -0.707100
-vn 0.000000 0.707100 0.707100
+vn 0.000000 0.000000 -1.000000
+vn 1.000000 0.000000 0.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 -0.707100 0.707100
+vn -0.000000 0.707100 0.707100
+vn 0.707100 0.000000 0.707100
+vn -0.707100 0.000000 0.707100
g Cube_Cube_frame-metal
s off
f 85/1/1 6/2/1 2/3/1 86/4/1
diff --git a/homedecor/models/homedecor_desk_lamp.obj b/homedecor/models/homedecor_desk_lamp.obj
index c1213ea..3cda1b4 100644
--- a/homedecor/models/homedecor_desk_lamp.obj
+++ b/homedecor/models/homedecor_desk_lamp.obj
@@ -1,1223 +1,2153 @@
-# Blender v2.72 (sub 0) OBJ File: ''
+# Blender v2.72 (sub 0) OBJ File: 'desk_lamp.blend'
# www.blender.org
-mtllib homedecor_desk_lamp.mtl
-o bulb
-v -0.157569 -0.085144 0.010337
-v -0.206730 -0.062515 0.010337
-v -0.191531 -0.048448 -0.039662
-v -0.146821 -0.075197 -0.025018
-v -0.225492 -0.011753 0.010337
-v -0.214743 -0.001806 -0.025018
-v -0.154835 -0.014486 -0.060373
-v -0.120873 -0.051182 -0.039662
-v -0.188796 0.022209 -0.039662
-v -0.120873 -0.051182 0.060337
-v -0.154835 -0.014486 0.081047
-v -0.191531 -0.048448 0.060337
-v -0.146821 -0.075197 0.045692
-v -0.188796 0.022209 0.060337
-v -0.214743 -0.001806 0.045692
-v -0.106806 -0.066382 0.010337
-v -0.202863 0.037408 0.010337
-vt 0.375348 0.375348
-vt 0.624652 0.375348
-vt 0.624652 0.624652
-vt 0.375348 0.624652
-g bulb_bulb_Material.001
-usemtl Material.001
+o Sphere.001
+v 0.000090 0.219622 -0.077676
+v 0.000090 0.237842 -0.033688
+v 0.044077 0.219622 -0.033688
+v 0.031194 0.206738 -0.077676
+v 0.000090 0.219622 0.010299
+v 0.031194 0.206738 0.010299
+v 0.062298 0.175634 -0.033688
+v 0.044077 0.175634 -0.077676
+v 0.044077 0.175634 0.010299
+v 0.044077 0.131647 -0.033688
+v 0.031194 0.144530 -0.077676
+v 0.031194 0.144530 0.010299
+v 0.000090 0.113426 -0.033688
+v 0.000090 0.131647 -0.077676
+v 0.000090 0.131647 0.010299
+v -0.043898 0.131647 -0.033689
+v -0.031014 0.144530 -0.077676
+v -0.031014 0.144530 0.010299
+v -0.062118 0.175634 -0.033689
+v -0.043898 0.175634 -0.077676
+v -0.043898 0.175634 0.010299
+v -0.043898 0.219622 -0.033689
+v -0.031014 0.206738 -0.077676
+v -0.031014 0.206738 0.010299
+v 0.000090 0.175634 -0.095896
+v 0.000090 0.175634 0.028519
+v 0.000088 -0.053313 -0.428234
+v 0.000087 -0.054882 -0.409010
+v 0.013760 -0.060531 -0.409425
+v 0.013762 -0.058960 -0.428663
+v 0.019424 -0.074168 -0.410428
+v 0.019426 -0.072594 -0.429702
+v 0.013761 -0.087804 -0.411433
+v 0.013762 -0.086228 -0.430742
+v 0.000087 -0.093453 -0.411851
+v 0.000088 -0.091876 -0.431173
+v -0.013587 -0.087804 -0.411436
+v -0.013585 -0.086229 -0.430743
+v -0.019251 -0.074168 -0.410432
+v -0.019249 -0.072594 -0.429705
+v -0.013587 -0.060531 -0.409427
+v -0.013586 -0.058960 -0.428665
+v 0.000089 -0.051743 -0.447457
+v 0.013763 -0.057389 -0.447903
+v 0.019427 -0.071021 -0.448977
+v 0.013764 -0.084652 -0.450051
+v 0.000090 -0.090299 -0.450494
+v -0.013584 -0.084653 -0.450051
+v -0.019248 -0.071021 -0.448977
+v -0.013584 -0.057390 -0.447903
+v 0.000084 -0.056107 -0.389955
+v 0.000081 -0.057294 -0.370919
+v 0.013755 -0.062952 -0.371186
+v 0.013758 -0.061760 -0.390299
+v 0.019419 -0.076610 -0.371834
+v 0.019422 -0.075408 -0.391132
+v 0.013755 -0.090268 -0.372483
+v 0.013758 -0.089056 -0.391967
+v 0.000082 -0.095926 -0.372753
+v 0.000084 -0.094710 -0.392314
+v -0.013592 -0.090269 -0.372487
+v -0.013589 -0.089056 -0.391971
+v -0.019256 -0.076610 -0.371839
+v -0.019253 -0.075408 -0.391136
+v -0.013592 -0.062952 -0.371190
+v -0.013590 -0.061760 -0.390301
+v 0.000087 -0.054882 -0.409010
+v 0.013760 -0.060531 -0.409425
+v 0.019424 -0.074168 -0.410428
+v 0.013761 -0.087804 -0.411433
+v 0.000087 -0.093453 -0.411851
+v -0.013587 -0.087804 -0.411436
+v -0.019251 -0.074168 -0.410432
+v -0.013587 -0.060531 -0.409427
+v 0.000078 -0.058004 -0.351961
+v 0.000075 -0.058403 -0.333057
+v 0.013749 -0.064067 -0.333093
+v 0.013752 -0.063665 -0.352123
+v 0.019413 -0.077740 -0.333189
+v 0.019416 -0.077333 -0.352517
+v 0.013749 -0.091414 -0.333286
+v 0.013752 -0.091001 -0.352913
+v 0.000075 -0.097077 -0.333328
+v 0.000079 -0.096663 -0.353078
+v -0.013598 -0.091414 -0.333291
+v -0.013595 -0.091002 -0.352917
+v -0.019262 -0.077740 -0.333194
+v -0.019259 -0.077333 -0.352522
+v -0.013598 -0.064067 -0.333099
+v -0.013595 -0.063666 -0.352127
+v 0.000081 -0.057294 -0.370919
+v 0.013755 -0.062952 -0.371186
+v 0.019419 -0.076610 -0.371834
+v 0.013755 -0.090268 -0.372483
+v 0.000082 -0.095926 -0.372753
+v -0.013592 -0.090269 -0.372487
+v -0.019256 -0.076610 -0.371839
+v -0.013592 -0.062952 -0.371190
+v 0.000072 -0.058466 -0.314198
+v 0.000069 -0.057764 -0.295446
+v 0.013743 -0.063422 -0.295182
+v 0.013746 -0.064129 -0.314099
+v 0.019406 -0.077081 -0.294549
+v 0.019410 -0.077800 -0.313864
+v 0.013743 -0.090740 -0.293921
+v 0.013746 -0.091472 -0.313633
+v 0.000069 -0.096398 -0.293661
+v 0.000072 -0.097135 -0.313539
+v -0.013605 -0.090740 -0.293925
+v -0.013602 -0.091472 -0.313637
+v -0.019269 -0.077081 -0.294556
+v -0.019265 -0.077800 -0.313872
+v -0.013605 -0.063422 -0.295187
+v -0.013601 -0.064129 -0.314104
+v 0.000075 -0.058403 -0.333057
+v 0.013749 -0.064067 -0.333093
+v 0.019413 -0.077740 -0.333189
+v 0.013749 -0.091414 -0.333286
+v 0.000075 -0.097077 -0.333328
+v -0.013598 -0.091414 -0.333291
+v -0.019262 -0.077740 -0.333194
+v -0.013598 -0.064067 -0.333099
+v 0.000066 -0.057059 -0.276696
+v 0.000063 -0.054957 -0.258207
+v 0.013737 -0.060585 -0.257571
+v 0.013740 -0.062707 -0.276267
+v 0.019400 -0.074173 -0.256038
+v 0.019403 -0.076341 -0.275237
+v 0.013736 -0.087761 -0.254506
+v 0.013739 -0.089976 -0.274209
+v 0.000063 -0.093389 -0.253875
+v 0.000066 -0.095624 -0.273785
+v -0.013611 -0.087761 -0.254510
+v -0.013608 -0.089976 -0.274213
+v -0.019275 -0.074173 -0.256043
+v -0.019272 -0.076341 -0.275244
+v -0.013611 -0.060585 -0.257574
+v -0.013608 -0.062707 -0.276271
+v 0.000069 -0.057764 -0.295446
+v 0.013743 -0.063422 -0.295182
+v 0.019406 -0.077081 -0.294549
+v 0.013743 -0.090740 -0.293921
+v 0.000069 -0.096398 -0.293661
+v -0.013605 -0.090740 -0.293925
+v -0.019269 -0.077081 -0.294556
+v -0.013605 -0.063422 -0.295187
+v 0.000060 -0.052882 -0.239714
+v 0.000058 -0.049564 -0.221554
+v 0.013732 -0.055124 -0.220469
+v 0.013734 -0.058483 -0.238870
+v 0.019395 -0.068545 -0.217853
+v 0.019397 -0.072004 -0.236838
+v 0.013731 -0.081966 -0.215239
+v 0.013733 -0.085526 -0.234806
+v 0.000057 -0.087526 -0.214157
+v 0.000060 -0.091127 -0.233967
+v -0.013617 -0.081966 -0.215242
+v -0.013614 -0.085526 -0.234810
+v -0.019280 -0.068545 -0.217858
+v -0.019278 -0.072004 -0.236843
+v -0.013616 -0.055124 -0.220473
+v -0.013613 -0.058483 -0.238874
+v 0.000063 -0.054957 -0.258207
+v 0.013737 -0.060585 -0.257571
+v 0.019400 -0.074173 -0.256038
+v 0.013736 -0.087761 -0.254506
+v 0.000063 -0.093389 -0.253875
+v -0.013611 -0.087761 -0.254510
+v -0.019275 -0.074173 -0.256043
+v -0.013611 -0.060585 -0.257574
+v 0.000056 -0.045791 -0.203518
+v 0.000054 -0.041164 -0.185804
+v 0.013728 -0.046594 -0.184194
+v 0.013729 -0.051295 -0.202180
+v 0.019391 -0.059704 -0.180307
+v 0.019393 -0.064583 -0.198953
+v 0.013727 -0.072814 -0.176422
+v 0.013729 -0.077870 -0.195727
+v 0.000053 -0.078244 -0.174813
+v 0.000055 -0.083374 -0.194392
+v -0.013621 -0.072814 -0.176424
+v -0.013619 -0.077870 -0.195730
+v -0.019284 -0.059704 -0.180311
+v -0.019282 -0.064582 -0.198957
+v -0.013620 -0.046594 -0.184196
+v -0.013618 -0.051295 -0.202183
+v 0.000058 -0.049564 -0.221554
+v 0.013732 -0.055124 -0.220469
+v 0.019395 -0.068545 -0.217853
+v 0.013731 -0.081966 -0.215239
+v 0.000057 -0.087526 -0.214157
+v -0.013617 -0.081966 -0.215242
+v -0.019280 -0.068545 -0.217858
+v -0.013616 -0.055124 -0.220473
+v 0.000053 -0.035381 -0.168523
+v 0.000052 -0.029340 -0.151380
+v 0.013725 -0.034556 -0.149171
+v 0.013726 -0.040714 -0.166613
+v 0.019389 -0.047148 -0.143840
+v 0.019390 -0.053588 -0.162005
+v 0.013724 -0.059740 -0.138508
+v 0.013725 -0.066462 -0.157398
+v 0.000050 -0.064955 -0.136301
+v 0.000051 -0.071794 -0.155490
+v -0.013623 -0.059739 -0.138510
+v -0.013622 -0.066461 -0.157399
+v -0.019286 -0.047147 -0.143841
+v -0.019285 -0.053587 -0.162008
+v -0.013622 -0.034556 -0.149172
+v -0.013621 -0.040713 -0.166615
+v 0.000054 -0.041164 -0.185804
+v 0.013728 -0.046594 -0.184194
+v 0.019391 -0.059704 -0.180307
+v 0.013727 -0.072814 -0.176422
+v 0.000053 -0.078244 -0.174813
+v -0.013621 -0.072814 -0.176424
+v -0.019284 -0.059704 -0.180311
+v -0.013620 -0.046594 -0.184196
+v 0.000052 -0.021284 -0.135257
+v 0.000052 -0.013301 -0.119098
+v 0.013726 -0.018187 -0.116232
+v 0.013726 -0.026346 -0.132714
+v 0.019389 -0.029982 -0.109315
+v 0.019389 -0.038565 -0.126577
+v 0.013724 -0.041776 -0.102395
+v 0.013724 -0.050784 -0.120439
+v 0.000051 -0.046661 -0.099531
+v 0.000050 -0.055844 -0.117898
+v -0.013623 -0.041775 -0.102395
+v -0.013623 -0.050782 -0.120439
+v -0.019286 -0.029980 -0.109314
+v -0.019286 -0.038563 -0.126577
+v -0.013622 -0.018186 -0.116232
+v -0.013622 -0.026345 -0.132715
+v 0.000052 -0.029340 -0.151380
+v 0.013725 -0.034556 -0.149171
+v 0.019389 -0.047148 -0.143840
+v 0.013724 -0.059740 -0.138508
+v 0.000050 -0.064955 -0.136301
+v -0.013623 -0.059739 -0.138510
+v -0.019286 -0.047147 -0.143841
+v -0.013622 -0.034556 -0.149172
+v 0.000054 -0.003263 -0.104318
+v 0.000055 0.007108 -0.089760
+v 0.013729 0.002677 -0.086231
+v 0.013727 -0.007935 -0.101117
+v 0.019392 -0.008016 -0.077709
+v 0.019390 -0.019212 -0.093383
+v 0.013728 -0.018709 -0.069187
+v 0.013726 -0.030488 -0.085648
+v 0.000054 -0.023137 -0.065656
+v 0.000052 -0.035158 -0.082444
+v -0.013620 -0.018706 -0.069186
+v -0.013621 -0.030486 -0.085648
+v -0.019283 -0.008013 -0.077707
+v -0.019285 -0.019209 -0.093380
+v -0.013619 0.002680 -0.086230
+v -0.013620 -0.007933 -0.101114
+v 0.000052 -0.013301 -0.119098
+v 0.013726 -0.018187 -0.116232
+v 0.019389 -0.029982 -0.109315
+v 0.013724 -0.041776 -0.102395
+v 0.000051 -0.046661 -0.099531
+v -0.013623 -0.041775 -0.102395
+v -0.019286 -0.029980 -0.109314
+v -0.013622 -0.018186 -0.116232
+v 0.000058 0.018728 -0.076297
+v 0.000061 0.031389 -0.063737
+v 0.013735 0.027519 -0.059602
+v 0.013731 0.014565 -0.072457
+v 0.019398 0.018180 -0.049614
+v 0.019395 0.004518 -0.063180
+v 0.013734 0.008842 -0.039625
+v 0.013731 -0.005528 -0.053904
+v 0.000061 0.004976 -0.035486
+v 0.000057 -0.009687 -0.050060
+v -0.013613 0.008846 -0.039622
+v -0.013617 -0.005524 -0.053901
+v -0.019277 0.018185 -0.049609
+v -0.019280 0.004523 -0.063176
+v -0.013613 0.027523 -0.059598
+v -0.013616 0.014568 -0.072453
+v 0.000055 0.007108 -0.089760
+v 0.013729 0.002677 -0.086231
+v 0.019392 -0.008016 -0.077709
+v 0.013728 -0.018709 -0.069187
+v 0.000054 -0.023137 -0.065656
+v -0.013620 -0.018706 -0.069186
+v -0.019283 -0.008013 -0.077707
+v -0.013619 0.002680 -0.086230
+v 0.000065 0.044496 -0.051682
+v 0.000069 0.059103 -0.041303
+v 0.013743 0.055860 -0.036660
+v 0.013738 0.040935 -0.047277
+v 0.019407 0.048034 -0.025448
+v 0.019402 0.032345 -0.036639
+v 0.013744 0.040211 -0.014233
+v 0.013738 0.023757 -0.025999
+v 0.000070 0.036973 -0.009585
+v 0.000065 0.020202 -0.021590
+v -0.013603 0.040217 -0.014228
+v -0.013609 0.023762 -0.025994
+v -0.019268 0.048042 -0.025441
+v -0.019273 0.032352 -0.036633
+v -0.013604 0.055865 -0.036656
+v -0.013609 0.040940 -0.047273
+v 0.000061 0.031389 -0.063737
+v 0.013735 0.027519 -0.059602
+v 0.019398 0.018180 -0.049614
+v 0.013734 0.008842 -0.039625
+v 0.000061 0.004976 -0.035486
+v -0.013613 0.008846 -0.039622
+v -0.019277 0.018185 -0.049609
+v -0.013613 0.027523 -0.059598
+v 0.000074 0.073657 -0.030846
+v 0.000080 0.089672 -0.022433
+v 0.013754 0.087076 -0.017399
+v 0.013748 0.070745 -0.025989
+v 0.019419 0.080817 -0.005243
+v 0.019413 0.063723 -0.014256
+v 0.013756 0.074562 0.006916
+v 0.013749 0.056703 -0.002522
+v 0.000083 0.071973 0.011955
+v 0.000076 0.053798 0.002341
+v -0.013591 0.074569 0.006922
+v -0.013598 0.056710 -0.002516
+v -0.019256 0.080828 -0.005235
+v -0.019262 0.063732 -0.014249
+v -0.013593 0.087084 -0.017394
+v -0.013599 0.070752 -0.025983
+v 0.000069 0.059103 -0.041303
+v 0.013743 0.055860 -0.036660
+v 0.019407 0.048034 -0.025448
+v 0.013744 0.040211 -0.014233
+v 0.000070 0.036973 -0.009585
+v -0.013603 0.040217 -0.014228
+v -0.019268 0.048042 -0.025441
+v -0.013604 0.055865 -0.036656
+v 0.136105 -0.070721 -0.500000
+v 0.136105 -0.070721 -0.446543
+v 0.133492 -0.097256 -0.446543
+v 0.133492 -0.097256 -0.500000
+v 0.125752 -0.122772 -0.446543
+v 0.125752 -0.122772 -0.500000
+v 0.113183 -0.146287 -0.446543
+v 0.113183 -0.146287 -0.500000
+v 0.096267 -0.166898 -0.446543
+v 0.096267 -0.166898 -0.500000
+v 0.075656 -0.183814 -0.446543
+v 0.075656 -0.183814 -0.500000
+v 0.052141 -0.196383 -0.446543
+v 0.052141 -0.196383 -0.500000
+v 0.026625 -0.204123 -0.446543
+v 0.026625 -0.204123 -0.500000
+v 0.000090 -0.206737 -0.446543
+v 0.000090 -0.206737 -0.500000
+v -0.026445 -0.204123 -0.446543
+v -0.026445 -0.204123 -0.500000
+v -0.051961 -0.196383 -0.446543
+v -0.051961 -0.196383 -0.500000
+v -0.075476 -0.183814 -0.446543
+v -0.075476 -0.183814 -0.500000
+v -0.096088 -0.166898 -0.446543
+v -0.096088 -0.166898 -0.500000
+v -0.113003 -0.146287 -0.446543
+v -0.113003 -0.146287 -0.500000
+v -0.125572 -0.122772 -0.446543
+v -0.125572 -0.122772 -0.500000
+v -0.133312 -0.097256 -0.446543
+v -0.133312 -0.097256 -0.500000
+v -0.135926 -0.070721 -0.446543
+v -0.135926 -0.070721 -0.500000
+v -0.133312 -0.044185 -0.446543
+v -0.133312 -0.044185 -0.500000
+v -0.125572 -0.018670 -0.446543
+v -0.125572 -0.018670 -0.500000
+v -0.113003 0.004845 -0.446543
+v -0.113003 0.004845 -0.500000
+v -0.096088 0.025457 -0.446543
+v -0.096088 0.025457 -0.500000
+v -0.075476 0.042372 -0.446543
+v -0.075476 0.042372 -0.500000
+v -0.051961 0.054941 -0.446543
+v -0.051961 0.054941 -0.500000
+v -0.026445 0.062681 -0.446543
+v -0.026445 0.062681 -0.500000
+v 0.000090 0.065295 -0.446543
+v 0.000090 0.065295 -0.500000
+v 0.026625 0.062681 -0.446543
+v 0.026625 0.062681 -0.500000
+v 0.052141 0.054941 -0.446543
+v 0.052141 0.054941 -0.500000
+v 0.075656 0.042372 -0.446543
+v 0.075656 0.042372 -0.500000
+v 0.096268 0.025457 -0.446543
+v 0.096268 0.025457 -0.500000
+v 0.113183 0.004845 -0.446543
+v 0.113183 0.004845 -0.500000
+v 0.125752 -0.018670 -0.446543
+v 0.125752 -0.018670 -0.500000
+v 0.133492 -0.044186 -0.446543
+v 0.133492 -0.044186 -0.500000
+v -0.001042 0.319468 -0.005959
+v -0.001015 0.286512 0.024001
+v 0.043535 0.280568 0.017516
+v 0.043629 0.313508 -0.012461
+v -0.000976 0.247764 0.047680
+v 0.040183 0.242273 0.041689
+v -0.000918 0.202905 0.054728
+v 0.030584 0.198702 0.050143
+v 0.081327 0.263519 -0.001007
+v 0.081523 0.296412 -0.031034
+v 0.075098 0.226521 0.024576
+v 0.057307 0.186646 0.037045
+v 0.106609 0.237959 -0.028748
+v 0.106873 0.270783 -0.058851
+v 0.098455 0.202907 -0.001054
+v 0.075184 0.168573 0.017429
+v 0.115530 0.207779 -0.061485
+v 0.115819 0.240522 -0.091676
+v 0.106698 0.175025 -0.031299
+v 0.081492 0.147233 -0.005719
+v 0.106734 0.177576 -0.094232
+v 0.106999 0.210236 -0.124512
+v 0.098571 0.147121 -0.061553
+v 0.075272 0.125876 -0.028875
+v 0.081559 0.151945 -0.122005
+v 0.081756 0.184537 -0.152360
+v 0.075312 0.123441 -0.087213
+v 0.057471 0.107752 -0.048514
+v 0.043837 0.134791 -0.140576
+v 0.043932 0.167335 -0.170982
+v 0.040462 0.107592 -0.104369
+v 0.030798 0.095622 -0.061645
+v -0.000687 0.128723 -0.147117
+v -0.000713 0.161251 -0.177540
+v -0.000673 0.101987 -0.110413
+v -0.000686 0.091332 -0.066271
+v -0.045237 0.134667 -0.140632
+v -0.045384 0.167211 -0.171038
+v -0.041832 0.107478 -0.104421
+v -0.032188 0.095534 -0.061685
+v -0.083029 0.151716 -0.122110
+v -0.083278 0.184307 -0.152465
+v -0.076747 0.123230 -0.087308
+v -0.058911 0.107590 -0.048588
+v -0.108311 0.177276 -0.094369
+v -0.108628 0.209936 -0.124649
+v -0.100104 0.146844 -0.061678
+v -0.076787 0.125664 -0.028972
+v -0.117232 0.207456 -0.061632
+v -0.117574 0.240197 -0.091824
+v -0.108347 0.174726 -0.031434
+v -0.083096 0.147004 -0.005824
+v -0.108436 0.237660 -0.028885
+v -0.108754 0.270483 -0.058987
+v -0.100220 0.202631 -0.001180
+v -0.076876 0.168361 0.017332
+v -0.083261 0.263290 -0.001111
+v -0.083510 0.296183 -0.031138
+v -0.076961 0.226310 0.024480
+v -0.059074 0.186484 0.036972
+v -0.045539 0.280444 0.017460
+v -0.045687 0.313384 -0.012517
+v -0.042111 0.242159 0.041637
+v -0.032401 0.198615 0.050103
+v -0.000664 0.042757 0.006103
+v 0.023062 0.045990 0.009588
+v 0.023068 0.038616 0.016388
+v -0.000658 0.035383 0.012902
+v -0.044542 0.055009 0.019429
+v -0.024404 0.045924 0.009558
+v -0.024398 0.038550 0.016358
+v -0.044537 0.047635 0.026228
+v -0.062769 0.084711 0.051656
+v -0.058014 0.068629 0.034212
+v -0.058008 0.061256 0.041010
+v -0.062763 0.077338 0.058456
+v 0.022901 0.123672 0.093832
+v -0.000839 0.126839 0.097287
+v -0.000833 0.119465 0.104087
+v 0.022907 0.116298 0.100631
+v -0.044666 0.114464 0.083907
+v -0.058081 0.100806 0.069106
+v -0.058075 0.093433 0.075906
+v -0.044660 0.107090 0.090705
+v 0.056512 0.100966 0.069178
+v 0.043040 0.114586 0.083962
+v 0.043046 0.107212 0.090760
+v 0.056518 0.093592 0.075978
+v -0.024565 0.123605 0.093801
+v -0.024559 0.116232 0.100602
+v 0.056578 0.068789 0.034284
+v 0.061266 0.084884 0.051734
+v 0.061272 0.077510 0.058534
+v 0.056584 0.061415 0.041083
+v 0.043163 0.055131 0.019484
+v 0.043169 0.047757 0.026283
+v -0.000881 0.179199 0.049006
+v 0.022859 0.176032 0.045550
+v 0.042997 0.166947 0.035680
+v 0.056469 0.153326 0.020897
+v 0.061223 0.137244 0.003452
+v 0.056536 0.121149 -0.013998
+v 0.043121 0.107491 -0.028798
+v 0.023020 0.098350 -0.038694
+v -0.000707 0.095117 -0.042179
+v -0.024446 0.098284 -0.038724
+v -0.044585 0.107369 -0.028854
+v -0.058057 0.120990 -0.014070
+v -0.062811 0.137072 0.003373
+v -0.058124 0.153167 0.020825
+v -0.044708 0.166825 0.035625
+v -0.024607 0.175966 0.045520
+v -0.000801 0.099029 0.099154
+v 0.016247 0.096754 0.096672
+v 0.030710 0.090230 0.089584
+v 0.040385 0.080448 0.078968
+v 0.043799 0.068899 0.066440
+v 0.040432 0.057341 0.053908
+v 0.030798 0.047533 0.043280
+v 0.016363 0.040968 0.036173
+v -0.000676 0.038646 0.033670
+v -0.017724 0.040920 0.036152
+v -0.032187 0.047445 0.043240
+v -0.041861 0.057226 0.053857
+v -0.045276 0.068775 0.066384
+v -0.041909 0.080334 0.078915
+v -0.032275 0.090142 0.089544
+v -0.017840 0.096707 0.096651
+v -0.000733 0.062325 0.072417
+v -0.000683 0.065729 -0.015081
+v 0.023044 0.068963 -0.011595
+v -0.044561 0.077982 -0.001755
+v -0.024422 0.068897 -0.011625
+v -0.062787 0.107684 0.030473
+v -0.058033 0.091602 0.013028
+v 0.022882 0.146644 0.072649
+v -0.000857 0.149812 0.076104
+v -0.044684 0.137437 0.062723
+v -0.058100 0.123779 0.047922
+v 0.056493 0.123939 0.047995
+v 0.043021 0.137559 0.062778
+v -0.024584 0.146578 0.072618
+v 0.056560 0.091762 0.013100
+v 0.061247 0.107857 0.030551
+v 0.043144 0.078104 -0.001699
+v 0.023026 0.090787 -0.031720
+v -0.000700 0.087554 -0.035205
+v -0.024440 0.090721 -0.031750
+v -0.044579 0.099806 -0.021879
+v -0.058051 0.113427 -0.007096
+v -0.062805 0.129509 0.010348
+v -0.000875 0.171636 0.055980
+v 0.022865 0.168469 0.052524
+v -0.058117 0.145604 0.027799
+v -0.044702 0.159261 0.042599
+v 0.043003 0.159383 0.042654
+v 0.056475 0.145763 0.027871
+v -0.024601 0.168403 0.052494
+v 0.061229 0.129681 0.010427
+v 0.056542 0.113586 -0.007024
+v 0.043127 0.099928 -0.021824
+vt 0.612863 0.559534
+vt 0.582763 0.590842
+vt 0.552360 0.560328
+vt 0.580814 0.528806
+vt 0.548902 0.620229
+vt 0.523169 0.589398
+vt 0.509109 0.644073
+vt 0.490506 0.617622
+vt 0.521393 0.533158
+vt 0.546394 0.500402
+vt 0.496104 0.564074
+vt 0.468980 0.595499
+vt 0.488288 0.510065
+vt 0.510043 0.475004
+vt 0.467122 0.542917
+vt 0.444858 0.576793
+vt 0.453219 0.491001
+vt 0.470846 0.453640
+vt 0.436285 0.525752
+vt 0.418702 0.561633
+vt 0.416363 0.476424
+vt 0.429276 0.437164
+vt 0.403912 0.512717
+vt 0.391038 0.550314
+vt 0.378286 0.466779
+vt 0.385951 0.426019
+vt 0.370532 0.503906
+vt 0.362549 0.542564
+vt 0.339815 0.461468
+vt 0.342111 0.421759
+vt 0.336694 0.499282
+vt 0.333482 0.538362
+vt 0.301364 0.461372
+vt 0.299287 0.421759
+vt 0.302934 0.498962
+vt 0.304293 0.537501
+vt 0.263566 0.465562
+vt 0.256887 0.426636
+vt 0.269580 0.501718
+vt 0.275548 0.540208
+vt 0.227115 0.474406
+vt 0.215455 0.436531
+vt 0.237218 0.509313
+vt 0.247664 0.545908
+vt 0.192101 0.487038
+vt 0.176473 0.452232
+vt 0.206329 0.520522
+vt 0.221071 0.555110
+vt 0.159285 0.504099
+vt 0.139953 0.471069
+vt 0.177325 0.535394
+vt 0.196207 0.567448
+vt 0.128647 0.524776
+vt 0.105627 0.493875
+vt 0.150441 0.553858
+vt 0.173337 0.583058
+vt 0.100328 0.549010
+vt 0.073767 0.520401
+vt 0.125780 0.575462
+vt 0.153035 0.601655
+vt 0.074254 0.577085
+vt 0.044382 0.550401
+vt 0.103933 0.601185
+vt 0.135234 0.623161
+vt 0.306410 0.632344
+vt 0.327663 0.629845
+vt 0.328392 0.637842
+vt 0.307720 0.641722
+vt 0.266491 0.628953
+vt 0.283941 0.628893
+vt 0.283181 0.636451
+vt 0.267001 0.635495
+vt 0.236564 0.637425
+vt 0.250809 0.631741
+vt 0.252431 0.637811
+vt 0.239440 0.642899
+vt 0.415839 0.677781
+vt 0.425631 0.698112
+vt 0.416491 0.702289
+vt 0.408258 0.681751
+vt 0.213178 0.657744
+vt 0.223936 0.646199
+vt 0.228199 0.651043
+vt 0.218462 0.661677
+vt 0.392533 0.649146
+vt 0.404901 0.661662
+vt 0.399098 0.666326
+vt 0.388129 0.654469
+vt 0.195253 0.689747
+vt 0.203789 0.672052
+vt 0.210291 0.675413
+vt 0.203173 0.693301
+vt 0.363318 0.633539
+vt 0.378638 0.639799
+vt 0.375531 0.645731
+vt 0.361404 0.639913
+vt 0.346505 0.629927
+vt 0.345923 0.637302
+vt 0.304115 0.632038
+vt 0.302247 0.641072
+vt 0.049510 0.609368
+vt 0.017048 0.583126
+vt 0.084631 0.631717
+vt 0.121700 0.647674
+vt 0.486359 0.654710
+vt 0.470910 0.633627
+vt 0.451672 0.613999
+vt 0.430452 0.597250
+vt 0.407380 0.584343
+vt 0.383417 0.573947
+vt 0.358094 0.566749
+vt 0.332012 0.562950
+vt 0.305613 0.561956
+vt 0.279569 0.563969
+vt 0.254303 0.568377
+vt 0.230539 0.576406
+vt 0.208157 0.586888
+vt 0.187945 0.600783
+vt 0.169137 0.616835
+vt 0.154275 0.636116
+vt 0.141817 0.655214
+vt 0.393757 0.704616
+vt 0.391855 0.687714
+vt 0.386409 0.674703
+vt 0.378567 0.664767
+vt 0.368921 0.657616
+vt 0.357863 0.653266
+vt 0.345399 0.652055
+vt 0.331959 0.654107
+vt 0.317177 0.661141
+vt 0.292638 0.658468
+vt 0.279336 0.651507
+vt 0.266951 0.649077
+vt 0.255680 0.650138
+vt 0.245480 0.654077
+vt 0.236619 0.660469
+vt 0.229469 0.669261
+vt 0.224522 0.680578
+vt 0.350360 0.690827
+vt 0.261504 0.684259
+vt 0.222762 0.695365
+vt 0.305896 0.602687
+vt 0.328488 0.602844
+vt 0.262806 0.605213
+vt 0.283578 0.602765
+vt 0.226004 0.618397
+vt 0.243599 0.610355
+vt 0.439100 0.660963
+vt 0.453555 0.680776
+vt 0.195633 0.642303
+vt 0.209825 0.628876
+vt 0.407650 0.629623
+vt 0.424034 0.643816
+vt 0.171694 0.675486
+vt 0.183128 0.658008
+vt 0.370743 0.610280
+vt 0.389864 0.618470
+vt 0.350224 0.605348
+vt 0.330939 0.573767
+vt 0.305697 0.572724
+vt 0.280834 0.574241
+vt 0.256836 0.578628
+vt 0.234193 0.585613
+vt 0.213232 0.595778
+vt 0.477960 0.661186
+vt 0.462463 0.640869
+vt 0.193943 0.608557
+vt 0.176606 0.623986
+vt 0.444294 0.622338
+vt 0.424147 0.606501
+vt 0.162096 0.641841
+vt 0.149624 0.660357
+vt 0.402520 0.593825
+vt 0.379745 0.584074
+vt 0.355783 0.577243
+vt 0.489911 0.359855
+vt 0.490256 0.259811
+vt 0.525061 0.259473
+vt 0.525729 0.360679
+vt 0.559886 0.259073
+vt 0.561881 0.360926
+vt 0.594443 0.258610
+vt 0.598541 0.360264
+vt 0.628250 0.258130
+vt 0.635968 0.357863
+vt 0.660348 0.257870
+vt 0.674534 0.351744
+vt 0.687995 0.258869
+vt 0.714161 0.335097
+vt 0.715235 0.256622
+vt 0.765281 0.313370
+vt 0.730820 0.257406
+vt 0.828047 0.257406
+vt 0.716320 0.258734
+vt 0.765690 0.201575
+vt 0.691974 0.258701
+vt 0.718676 0.176906
+vt 0.661866 0.258551
+vt 0.676202 0.165069
+vt 0.628878 0.258392
+vt 0.636400 0.159691
+vt 0.594521 0.258263
+vt 0.598248 0.157631
+vt 0.559599 0.258167
+vt 0.561159 0.157298
+vt 0.524558 0.258100
+vt 0.524780 0.157904
+vt 0.489663 0.258055
+vt 0.488887 0.159099
+vt 0.455118 0.258030
+vt 0.453320 0.160808
+vt 0.421132 0.258032
+vt 0.417933 0.163173
+vt 0.388005 0.258083
+vt 0.382558 0.166578
+vt 0.356226 0.258226
+vt 0.346945 0.171757
+vt 0.326618 0.258538
+vt 0.310686 0.180015
+vt 0.300611 0.259151
+vt 0.273076 0.193623
+vt 0.280610 0.259870
+vt 0.232698 0.217183
+vt 0.271082 0.260389
+vt 0.187274 0.258972
+vt 0.280227 0.260693
+vt 0.232252 0.301049
+vt 0.300167 0.260819
+vt 0.272697 0.325469
+vt 0.326371 0.260813
+vt 0.310640 0.339742
+vt 0.356237 0.260715
+vt 0.347238 0.348187
+vt 0.388264 0.260554
+vt 0.383150 0.353285
+vt 0.421586 0.260346
+vt 0.418760 0.356457
+vt 0.454295 0.358505
+vt 0.455690 0.260099
+vt 0.505694 0.922140
+vt 0.506211 0.922878
+vt 0.505675 0.923367
+vt 0.504958 0.922621
+vt 0.505373 0.924315
+vt 0.503814 0.923356
+vt 0.506357 0.926373
+vt 0.500767 0.925862
+vt 0.509094 0.926462
+vt 0.437217 0.972045
+vt 0.550560 0.903735
+vt 0.509618 0.923709
+vt 0.510748 0.918454
+vt 0.508057 0.922603
+vt 0.507553 0.920632
+vt 0.506409 0.921556
+vt 0.506942 0.922608
+vt 0.505137 0.921442
+vt 0.504641 0.921723
+vt 0.503681 0.921491
+vt 0.501262 0.920395
+vt 0.471663 0.871880
+vt 0.505299 0.917025
+vt 0.505744 0.919814
+vt 0.505500 0.920903
+vt 0.568497 0.789014
+vt 0.568751 0.789267
+vt 0.568557 0.789471
+vt 0.568278 0.789228
+vt 0.568455 0.789820
+vt 0.567945 0.789516
+vt 0.568847 0.790654
+vt 0.567052 0.790205
+vt 0.582368 0.802799
+vt 0.546429 0.802799
+vt 0.580157 0.767866
+vt 0.570365 0.789196
+vt 0.569681 0.787461
+vt 0.569362 0.788968
+vt 0.569007 0.788406
+vt 0.568711 0.788776
+vt 0.568986 0.789090
+vt 0.568261 0.788797
+vt 0.568075 0.788942
+vt 0.567758 0.788985
+vt 0.567195 0.788585
+vt 0.567276 0.787775
+vt 0.568104 0.787707
+vt 0.568403 0.788215
+vt 0.568374 0.788569
+vt 0.527267 0.784580
+vt 0.527609 0.784946
+vt 0.527381 0.785240
+vt 0.526933 0.784925
+vt 0.527318 0.785739
+vt 0.526483 0.785448
+vt 0.527949 0.786612
+vt 0.525412 0.786840
+vt 0.529214 0.786481
+vt 0.506722 0.817372
+vt 0.558510 0.766920
+vt 0.529316 0.785187
+vt 0.529682 0.782712
+vt 0.528521 0.784720
+vt 0.528217 0.783775
+vt 0.527640 0.784242
+vt 0.527966 0.784767
+vt 0.526872 0.784187
+vt 0.526555 0.784490
+vt 0.526012 0.784649
+vt 0.524717 0.784046
+vt 0.506722 0.764090
+vt 0.526969 0.781676
+vt 0.527332 0.783232
+vt 0.527145 0.783819
+vt 0.379140 0.792781
+vt 0.387106 0.786844
+vt 0.390599 0.785799
+vt 0.380895 0.794697
+vt 0.400082 0.781856
+vt 0.383786 0.799101
+vt 0.418118 0.771919
+vt 0.390365 0.811311
+vt 0.452298 0.759409
+vt 0.408333 0.843074
+vt 0.346090 0.758468
+vt 0.413137 0.771945
+vt 0.366479 0.776733
+vt 0.395552 0.780028
+vt 0.374170 0.786971
+vt 0.377386 0.790753
+vt 0.388712 0.784273
+vt 0.371134 0.798937
+vt 0.369386 0.799713
+vt 0.361351 0.803018
+vt 0.342433 0.815398
+vt 0.298296 0.844492
+vt 0.342839 0.817292
+vt 0.360511 0.804744
+vt 0.368383 0.799947
+vt 0.245655 0.800323
+vt 0.246501 0.799657
+vt 0.247312 0.800061
+vt 0.246377 0.801270
+vt 0.248466 0.800724
+vt 0.247387 0.802815
+vt 0.251347 0.800141
+vt 0.249974 0.806549
+vt 0.315762 0.756715
+vt 0.282443 0.850342
+vt 0.208088 0.757850
+vt 0.248264 0.794433
+vt 0.241127 0.793787
+vt 0.246387 0.797645
+vt 0.243880 0.797800
+vt 0.244922 0.799374
+vt 0.246219 0.798941
+vt 0.244811 0.800995
+vt 0.245096 0.801698
+vt 0.244944 0.802961
+vt 0.243178 0.806041
+vt 0.177796 0.851690
+vt 0.239523 0.800358
+vt 0.242784 0.800046
+vt 0.244009 0.800606
+vt 0.576909 0.952768
+vt 0.604690 0.950762
+vt 0.611228 0.948061
+vt 0.590665 0.955721
+vt 0.630339 0.941957
+vt 0.609809 0.957496
+vt 0.665117 0.938827
+vt 0.628788 0.964544
+vt 0.729555 0.935943
+vt 0.643433 0.989354
+vt 0.634873 0.900912
+vt 0.666069 0.946870
+vt 0.625066 0.928749
+vt 0.631880 0.948642
+vt 0.608003 0.940119
+vt 0.589890 0.946469
+vt 0.612449 0.949974
+vt 0.506346 0.960110
+vt 0.560178 0.965595
+vt 0.588158 0.964361
+vt 0.599784 0.957715
+vt 0.594610 0.948661
+vt 0.596754 0.940984
+vt 0.584627 0.940197
+vt 0.557704 0.943019
+vt 0.565840 0.868092
+vt 0.568715 0.866326
+vt 0.570600 0.867709
+vt 0.567715 0.869860
+vt 0.574434 0.868674
+vt 0.570702 0.872677
+vt 0.583804 0.865405
+vt 0.580031 0.881999
+vt 0.606209 0.843431
+vt 0.596729 0.917917
+vt 0.527625 0.818614
+vt 0.571460 0.854664
+vt 0.556572 0.855779
+vt 0.568348 0.860617
+vt 0.562024 0.862752
+vt 0.564255 0.865969
+vt 0.568016 0.864198
+vt 0.562119 0.870655
+vt 0.564085 0.871480
+vt 0.564110 0.873256
+vt 0.556083 0.876627
+vt 0.553147 0.875931
+vt 0.554934 0.868555
+vt 0.559281 0.867740
+vt 0.561407 0.868846
+vt 0.762954 0.828016
+vt 0.766131 0.826158
+vt 0.768100 0.828611
+vt 0.764608 0.831006
+vt 0.771649 0.830808
+vt 0.766740 0.835530
+vt 0.781773 0.830966
+vt 0.771270 0.846610
+vt 0.808007 0.802451
+vt 0.797615 0.913425
+vt 0.719210 0.756766
+vt 0.771713 0.813346
+vt 0.753882 0.811134
+vt 0.765494 0.820178
+vt 0.758953 0.820977
+vt 0.761230 0.825149
+vt 0.764665 0.823631
+vt 0.759980 0.829696
+vt 0.760890 0.832274
+vt 0.760197 0.836088
+vt 0.752755 0.841885
+vt 0.725802 0.846202
+vt 0.746421 0.826131
+vt 0.754432 0.825826
+vt 0.758000 0.827632
+vt 0.362981 0.912360
+vt 0.364638 0.914720
+vt 0.362745 0.916064
+vt 0.360791 0.913834
+vt 0.362208 0.918839
+vt 0.357774 0.916117
+vt 0.364421 0.925861
+vt 0.350379 0.922013
+vt 0.402209 0.964265
+vt 0.295821 0.964135
+vt 0.428032 0.862364
+vt 0.374069 0.917025
+vt 0.374608 0.903830
+vt 0.369388 0.913253
+vt 0.367879 0.908813
+vt 0.365077 0.910913
+vt 0.366580 0.913445
+vt 0.361429 0.910015
+vt 0.359270 0.910981
+vt 0.356178 0.911193
+vt 0.349385 0.907762
+vt 0.327421 0.862364
+vt 0.361978 0.899872
+vt 0.363824 0.906231
+vt 0.363254 0.908792
+vt 0.701060 0.846785
+vt 0.702219 0.846177
+vt 0.702977 0.846972
+vt 0.701727 0.847950
+vt 0.704339 0.847586
+vt 0.702694 0.849625
+vt 0.706710 0.847112
+vt 0.705224 0.853713
+vt 0.707602 0.843857
+vt 0.764368 0.924557
+vt 0.679504 0.757548
+vt 0.704655 0.842339
+vt 0.698392 0.839256
+vt 0.702260 0.843835
+vt 0.699809 0.843794
+vt 0.700491 0.845580
+vt 0.701913 0.845184
+vt 0.699721 0.847479
+vt 0.700331 0.848561
+vt 0.699962 0.850049
+vt 0.697055 0.853326
+vt 0.627841 0.881366
+vt 0.693918 0.845903
+vt 0.697783 0.845420
+vt 0.699122 0.846344
+vt 0.488323 0.821046
+vt 0.487797 0.821276
+vt 0.487584 0.820912
+vt 0.488103 0.820535
+vt 0.487172 0.820542
+vt 0.487801 0.819796
+vt 0.485951 0.820530
+vt 0.487151 0.818012
+vt 0.448821 0.839089
+vt 0.482174 0.790731
+vt 0.510569 0.846429
+vt 0.487112 0.823400
+vt 0.490036 0.824066
+vt 0.487882 0.822244
+vt 0.488902 0.822270
+vt 0.488538 0.821553
+vt 0.487921 0.821679
+vt 0.488801 0.820842
+vt 0.488739 0.820391
+vt 0.488884 0.819798
+vt 0.489637 0.819150
+vt 0.490955 0.819700
+vt 0.490686 0.821076
+vt 0.489559 0.821452
+vt 0.489037 0.821204
+vt 0.231857 0.926010
+vt 0.230277 0.927879
+vt 0.228565 0.927146
+vt 0.229720 0.924300
+vt 0.225567 0.927107
+vt 0.226507 0.921716
+vt 0.219161 0.929680
+vt 0.219251 0.915193
+vt 0.182338 0.974249
+vt 0.182338 0.879485
+vt 0.280113 0.975066
+vt 0.229382 0.937815
+vt 0.242990 0.937741
+vt 0.231141 0.931834
+vt 0.236336 0.930803
+vt 0.233751 0.927891
+vt 0.231336 0.929156
+vt 0.233658 0.924069
+vt 0.232313 0.922513
+vt 0.231281 0.920025
+vt 0.233212 0.914670
+vt 0.296246 0.862364
+vt 0.243543 0.924307
+vt 0.237739 0.925981
+vt 0.235264 0.925290
+vt 0.775451 0.950190
+vt 0.757930 0.958223
+vt 0.753460 0.962425
+vt 0.765662 0.953757
+vt 0.741312 0.969785
+vt 0.752408 0.959726
+vt 0.719693 0.980521
+vt 0.739356 0.965386
+vt 0.677540 0.990354
+vt 0.730056 0.968272
+vt 0.714215 0.967622
+vt 0.738313 0.964026
+vt 0.736699 0.957774
+vt 0.751708 0.958677
+vt 0.765993 0.954387
+vt 0.751880 0.956718
+vt 0.801538 0.936607
+vt 0.784447 0.940303
+vt 0.764785 0.949063
+vt 0.753071 0.955490
+vt 0.748306 0.960103
+vt 0.753507 0.961832
+vt 0.767262 0.957319
+vt 0.789319 0.951983
+vt 0.971782 0.524261
+vt 0.971782 0.652282
+vt 0.888879 0.586277
+vt 0.900963 0.543099
+vt 0.825267 0.693781
+vt 0.854139 0.602488
+vt 0.862161 0.568155
+vt 0.870119 0.542888
+vt 0.847306 0.582232
+vt 0.845252 0.560470
+vt 0.850411 0.540671
+vt 0.838161 0.573817
+vt 0.830826 0.557082
+vt 0.834105 0.538099
+vt 0.828470 0.570802
+vt 0.815678 0.556727
+vt 0.817385 0.535007
+vt 0.818103 0.572139
+vt 0.796115 0.560591
+vt 0.795967 0.530286
+vt 0.806847 0.579715
+vt 0.762341 0.575924
+vt 0.759323 0.519209
+vt 0.796813 0.601969
+vt 0.850323 0.429812
+vt 0.827177 0.589224
+vt 0.657516 0.465846
+vt 0.651869 0.660346
+vn -0.001400 0.672700 0.739900
+vn -0.001300 0.600700 0.799500
+vn 0.379500 0.549900 0.744000
+vn 0.381400 0.621600 0.684200
+vn -0.001100 0.353400 0.935500
+vn 0.353900 0.306000 0.883800
+vn -0.000600 -0.023700 0.999700
+vn 0.274500 -0.060500 0.959700
+vn 0.702600 0.404100 0.585700
+vn 0.706100 0.475100 0.525100
+vn 0.655000 0.170200 0.736200
+vn 0.508000 -0.165700 0.845200
+vn 0.918700 0.185600 0.348500
+vn 0.923300 0.255500 0.286700
+vn 0.856400 -0.033400 0.515200
+vn 0.664100 -0.323600 0.673900
+vn 0.995000 -0.072400 0.068600
+vn 1.000000 -0.003800 0.005400
+vn 0.927500 -0.273900 0.254300
+vn 0.719300 -0.510000 0.471700
+vn 0.919800 -0.330600 -0.211300
+vn 0.924400 -0.263300 -0.275900
+vn 0.857400 -0.514600 -0.006500
+vn 0.664900 -0.696600 0.269400
+vn 0.704600 -0.549700 -0.448700
+vn 0.708100 -0.483600 -0.514600
+vn 0.656800 -0.718800 -0.227800
+vn 0.509400 -0.854900 0.097900
+vn 0.382100 -0.696400 -0.607500
+vn 0.384000 -0.631000 -0.674100
+vn 0.356300 -0.855500 -0.375800
+vn 0.276400 -0.960900 -0.016800
+vn 0.001400 -0.748300 -0.663400
+vn 0.001400 -0.683100 -0.730300
+vn 0.001500 -0.903800 -0.427900
+vn 0.001400 -0.998400 -0.057200
+vn -0.379400 -0.697400 -0.608000
+vn -0.381400 -0.632000 -0.674600
+vn -0.353400 -0.856400 -0.376200
+vn -0.273700 -0.961600 -0.017200
+vn -0.702500 -0.551700 -0.449600
+vn -0.706100 -0.485500 -0.515500
+vn -0.654500 -0.720600 -0.228600
+vn -0.507200 -0.856300 0.097200
+vn -0.918600 -0.333200 -0.212400
+vn -0.923300 -0.265900 -0.277100
+vn -0.856000 -0.517000 -0.007600
+vn -0.663300 -0.698400 0.268600
+vn -0.994900 -0.075200 0.067400
+vn -1.000000 -0.006600 0.004200
+vn -0.927000 -0.276500 0.253200
+vn -0.718400 -0.512000 0.470800
+vn -0.919700 0.183000 0.347400
+vn -0.924400 0.252900 0.285500
+vn -0.857000 -0.035800 0.514100
+vn -0.664100 -0.325500 0.673100
+vn -0.704500 0.402100 0.584800
+vn -0.708100 0.473100 0.524200
+vn -0.656400 0.168300 0.735400
+vn -0.508600 -0.167200 0.844600
+vn -0.382000 0.548800 0.743600
+vn -0.384000 0.620500 0.683700
+vn -0.355800 0.305000 0.883400
+vn -0.275600 -0.061200 0.959300
+vn 0.001400 -0.677900 -0.735100
+vn 0.384000 -0.625800 -0.678900
+vn 0.343400 -0.889000 -0.302700
+vn 0.001500 -0.935600 -0.352900
+vn -0.706100 -0.480300 -0.520300
+vn -0.381400 -0.626800 -0.679400
+vn -0.340600 -0.890000 -0.303100
+vn -0.630800 -0.759100 -0.160900
+vn -1.000000 -0.001400 -0.000600
+vn -0.923300 -0.260700 -0.281900
+vn -0.824900 -0.562800 0.052100
+vn -0.893500 -0.331000 0.303500
+vn 0.381400 0.626800 0.679400
+vn -0.001400 0.677900 0.735100
+vn -0.001000 0.276000 0.961100
+vn 0.341100 0.230400 0.911300
+vn -0.708100 0.478300 0.519400
+vn -0.924400 0.258100 0.280700
+vn -0.825900 -0.099100 0.555000
+vn -0.632600 0.097700 0.768300
+vn 0.923300 0.260700 0.281900
+vn 0.706100 0.480300 0.520300
+vn 0.631300 0.099500 0.769100
+vn 0.825500 -0.096800 0.556000
+vn -0.384000 0.625800 0.678900
+vn -0.342900 0.229500 0.910900
+vn 0.924400 -0.258100 -0.280700
+vn 1.000000 0.001400 0.000600
+vn 0.894000 -0.328500 0.304600
+vn 0.826400 -0.560500 0.053200
+vn 0.708100 -0.478300 -0.519400
+vn 0.633100 -0.757300 -0.160100
+vn -0.000900 0.222200 0.975000
+vn 0.331100 0.177900 0.926600
+vn 0.612800 0.050800 0.788600
+vn 0.801200 -0.139600 0.581800
+vn 0.867700 -0.364600 0.337800
+vn 0.802100 -0.589700 0.093800
+vn 0.614500 -0.780700 -0.113200
+vn 0.333400 -0.908600 -0.251700
+vn 0.001500 -0.953800 -0.300400
+vn -0.330500 -0.909500 -0.252100
+vn -0.612200 -0.782400 -0.114000
+vn -0.800600 -0.591900 0.092700
+vn -0.867100 -0.367000 0.336700
+vn -0.801500 -0.141900 0.580800
+vn -0.613900 0.049100 0.787800
+vn -0.332800 0.177000 0.926200
+vn -0.000000 -0.399500 0.916700
+vn 0.154200 -0.420100 0.894300
+vn 0.285200 -0.479100 0.830100
+vn 0.372700 -0.567700 0.734000
+vn 0.403600 -0.672200 0.620600
+vn 0.373100 -0.776800 0.507200
+vn 0.286000 -0.865600 0.411000
+vn 0.155300 -0.925000 0.346700
+vn 0.001100 -0.946000 0.324000
+vn -0.153200 -0.925400 0.346500
+vn -0.284100 -0.866400 0.410700
+vn -0.371600 -0.777900 0.506700
+vn -0.402500 -0.673300 0.620100
+vn -0.372100 -0.568700 0.733500
+vn -0.284900 -0.480000 0.829700
+vn -0.154200 -0.420500 0.894000
+vn 0.000600 -0.735100 0.677900
+vn 0.706100 0.480300 0.520200
+vn 0.727900 0.000000 -0.685700
+vn 0.727900 0.000000 0.685700
+vn 0.713900 -0.142000 0.685700
+vn 0.713900 -0.142000 -0.685700
+vn 0.672500 -0.278500 0.685700
+vn 0.672500 -0.278500 -0.685700
+vn 0.605200 -0.404400 0.685700
+vn 0.605200 -0.404400 -0.685700
+vn 0.514700 -0.514700 0.685700
+vn 0.514700 -0.514700 -0.685700
+vn 0.404400 -0.605200 0.685700
+vn 0.404400 -0.605200 -0.685700
+vn 0.278500 -0.672500 0.685700
+vn 0.278500 -0.672500 -0.685700
+vn 0.142000 -0.713900 0.685700
+vn 0.142000 -0.713900 -0.685700
+vn 0.000000 -0.727900 0.685700
+vn 0.000000 -0.727900 -0.685700
+vn -0.142000 -0.713900 0.685700
+vn -0.142000 -0.713900 -0.685700
+vn -0.278500 -0.672500 0.685700
+vn -0.278500 -0.672500 -0.685700
+vn -0.404400 -0.605200 0.685700
+vn -0.404400 -0.605200 -0.685700
+vn -0.514700 -0.514700 0.685700
+vn -0.514700 -0.514700 -0.685700
+vn -0.605200 -0.404400 0.685700
+vn -0.605200 -0.404400 -0.685700
+vn -0.672500 -0.278500 0.685700
+vn -0.672500 -0.278500 -0.685700
+vn -0.713900 -0.142000 0.685700
+vn -0.713900 -0.142000 -0.685700
+vn -0.727900 0.000000 0.685700
+vn -0.727900 0.000000 -0.685700
+vn -0.713900 0.142000 0.685700
+vn -0.713900 0.142000 -0.685700
+vn -0.672500 0.278500 0.685700
+vn -0.672500 0.278500 -0.685700
+vn -0.605200 0.404400 0.685700
+vn -0.605200 0.404400 -0.685700
+vn -0.514700 0.514700 0.685700
+vn -0.514700 0.514700 -0.685700
+vn -0.404400 0.605200 0.685700
+vn -0.404400 0.605200 -0.685700
+vn -0.278500 0.672500 0.685700
+vn -0.278500 0.672500 -0.685700
+vn -0.142000 0.713900 0.685700
+vn -0.142000 0.713900 -0.685700
+vn 0.000000 0.727900 0.685700
+vn 0.000000 0.727900 -0.685700
+vn 0.142000 0.713900 0.685700
+vn 0.142000 0.713900 -0.685700
+vn 0.278500 0.672500 0.685700
+vn 0.278500 0.672500 -0.685700
+vn 0.404400 0.605200 0.685700
+vn 0.404400 0.605200 -0.685700
+vn 0.514700 0.514700 0.685700
+vn 0.514700 0.514700 -0.685700
+vn 0.605200 0.404400 0.685700
+vn 0.605200 0.404400 -0.685700
+vn 0.672500 0.278500 0.685700
+vn 0.672500 0.278500 -0.685700
+vn 0.713900 0.142000 -0.685700
+vn 0.713900 0.142000 0.685700
+vn 0.000000 0.996700 0.081400
+vn -0.000000 0.725300 0.688400
+vn 0.548400 0.499100 0.670900
+vn 0.707100 0.704800 0.057600
+vn 0.776300 -0.047800 0.628500
+vn 1.000000 0.000000 0.000100
+vn 0.549400 -0.595600 0.586000
+vn 0.707100 -0.704700 -0.057500
+vn -0.000000 -0.822700 0.568400
+vn 0.000000 -0.996700 -0.081300
+vn -0.549500 -0.595600 0.585900
+vn -0.707100 -0.704800 -0.057600
+vn -0.776400 -0.047800 0.628300
+vn -1.000000 0.000000 -0.000100
+vn -0.707100 0.704700 0.057500
+vn -0.548600 0.499100 0.670800
+vn 0.000000 0.824200 -0.566200
+vn 0.549200 0.597400 -0.584400
+vn 0.776400 0.050000 -0.628200
+vn 0.548800 -0.497000 -0.672100
+vn 0.000000 -0.723500 -0.690200
+vn -0.548800 -0.497000 -0.672100
+vn -0.776400 0.050000 -0.628300
+vn -0.549100 0.597400 -0.584400
+vn 0.000000 0.998000 0.063200
+vn -0.000100 0.740800 0.671700
+vn 0.548000 0.514600 0.659400
+vn 0.707200 0.705600 0.044700
+vn 0.776300 -0.032700 0.629500
+vn 1.000000 -0.000200 0.000100
+vn 0.549700 -0.581700 0.599500
+vn 0.707000 -0.705800 -0.044500
+vn -0.000100 -0.809600 0.587000
+vn 0.000000 -0.998000 -0.063100
+vn -0.549900 -0.581700 0.599300
+vn -0.707000 -0.705800 -0.044700
+vn -0.776500 -0.032700 0.629300
+vn -1.000000 -0.000200 -0.000100
+vn -0.707200 0.705600 0.044600
+vn -0.548200 0.514600 0.659300
+vn 0.000100 0.818000 -0.575200
+vn 0.548500 0.591600 -0.590800
+vn 0.776500 0.044500 -0.628600
+vn 0.549600 -0.503600 -0.666500
+vn 0.000100 -0.731000 -0.682300
+vn -0.549400 -0.503600 -0.666600
+vn -0.776300 0.044500 -0.628700
+vn -0.548400 0.591600 -0.590900
+vn -0.000000 0.999500 0.029200
+vn -0.000100 0.767600 0.640900
+vn 0.548100 0.541000 0.637900
+vn 0.708100 0.705800 0.020800
+vn 0.776300 -0.007000 0.630300
+vn 1.000000 -0.002000 0.000100
+vn 0.549700 -0.556800 0.622700
+vn 0.706100 -0.707800 -0.020600
+vn -0.000100 -0.785000 0.619500
+vn 0.000000 -0.999600 -0.029200
+vn -0.549900 -0.556800 0.622500
+vn -0.706100 -0.707800 -0.020800
+vn -0.776500 -0.007000 0.630100
+vn -1.000000 -0.002000 -0.000200
+vn -0.708100 0.705800 0.020500
+vn -0.548300 0.541000 0.637700
+vn 0.000100 0.802500 -0.596600
+vn 0.548500 0.575900 -0.606200
+vn 0.776500 0.028000 -0.629500
+vn 0.549600 -0.521000 -0.652900
+vn 0.000100 -0.748800 -0.662700
+vn -0.549500 -0.521100 -0.653100
+vn -0.776300 0.028000 -0.629700
+vn -0.548300 0.575900 -0.606300
+vn 0.000000 0.999800 -0.017000
+vn -0.000100 0.802100 0.597200
+vn 0.548400 0.575400 0.606800
+vn 0.709600 0.704500 -0.011900
+vn 0.776200 0.027400 0.629800
+vn 1.000000 -0.004900 0.000200
+vn 0.549400 -0.521700 0.652700
+vn 0.704700 -0.709400 0.012200
+vn -0.000100 -0.749400 0.662100
+vn 0.000000 -0.999800 0.017100
+vn -0.549600 -0.521700 0.652500
+vn -0.704700 -0.709400 0.012000
+vn -0.776500 0.027400 0.629500
+vn -1.000000 -0.004900 -0.000100
+vn -0.709600 0.704500 -0.012100
+vn -0.548500 0.575400 0.606600
+vn 0.000100 0.779700 -0.626200
+vn 0.548800 0.552500 -0.627300
+vn 0.776500 0.003700 -0.630100
+vn 0.549300 -0.545600 -0.632900
+vn 0.000100 -0.773200 -0.634200
+vn -0.549100 -0.545500 -0.633100
+vn -0.776300 0.003700 -0.630300
+vn -0.548600 0.552500 -0.627500
+vn 0.000000 0.997100 -0.075300
+vn -0.000100 0.842300 0.539000
+vn 0.548900 0.616400 0.564600
+vn 0.711800 0.700400 -0.052800
+vn 0.776300 0.070600 0.626400
+vn 0.999900 -0.009000 0.000800
+vn 0.548800 -0.475100 0.687800
+vn 0.702700 -0.709400 0.053700
+vn -0.000100 -0.701000 0.713100
+vn 0.000000 -0.997200 0.075300
+vn -0.549000 -0.475100 0.687600
+vn -0.702700 -0.709400 0.053400
+vn -0.776500 0.070600 0.626100
+vn -0.999900 -0.009000 0.000500
+vn -0.711800 0.700400 -0.053000
+vn -0.549000 0.616400 0.564500
+vn 0.000100 0.749200 -0.662300
+vn 0.549500 0.521500 -0.652700
+vn 0.776500 -0.027600 -0.629500
+vn 0.548600 -0.575800 -0.606200
+vn 0.000100 -0.802500 -0.596600
+vn -0.548400 -0.575800 -0.606400
+vn -0.776300 -0.027600 -0.629700
+vn -0.549300 0.521500 -0.652900
+vn 0.000000 0.989300 -0.145700
+vn -0.000000 0.879900 0.475100
+vn 0.548200 0.657100 0.517300
+vn 0.711400 0.695300 -0.102300
+vn 0.776300 0.118300 0.619100
+vn 0.999900 -0.008100 0.001300
+vn 0.549600 -0.422000 0.721000
+vn 0.703100 -0.703500 0.103900
+vn -0.000100 -0.646100 0.763200
+vn 0.000000 -0.989300 0.145900
+vn -0.549800 -0.422000 0.720900
+vn -0.703100 -0.703500 0.103600
+vn -0.776500 0.118300 0.618900
+vn -0.999900 -0.008100 0.001000
+vn -0.711300 0.695300 -0.102500
+vn -0.548300 0.657200 0.517200
+vn 0.000100 0.701000 -0.713100
+vn 0.549000 0.475100 -0.687600
+vn 0.776500 -0.070600 -0.626100
+vn 0.549000 -0.616300 -0.564500
+vn 0.000100 -0.842300 -0.539000
+vn -0.548800 -0.616400 -0.564700
+vn -0.776300 -0.070600 -0.626400
+vn -0.548800 0.475100 -0.687800
+vn 0.000000 0.973400 -0.228800
+vn -0.000000 0.917300 0.398200
+vn 0.547100 0.700100 0.458800
+vn 0.710100 0.685400 -0.161100
+vn 0.776400 0.173200 0.606000
+vn 1.000000 -0.005800 0.001500
+vn 0.550800 -0.357200 0.754300
+vn 0.704100 -0.691100 0.163000
+vn -0.000100 -0.577900 0.816100
+vn 0.000000 -0.973300 0.229600
+vn -0.550900 -0.357200 0.754200
+vn -0.704100 -0.691100 0.162800
+vn -0.776500 0.173200 0.605800
+vn -1.000000 -0.005800 0.001300
+vn -0.710100 0.685400 -0.161300
+vn -0.547100 0.700100 0.458700
+vn 0.000100 0.636300 -0.771400
+vn 0.548200 0.414200 -0.726500
+vn 0.776500 -0.123200 -0.618000
+vn 0.549800 -0.662200 -0.509100
+vn 0.000100 -0.885900 -0.463900
+vn -0.549700 -0.662200 -0.509200
+vn -0.776300 -0.123100 -0.618200
+vn -0.548000 0.414200 -0.726600
+vn 0.000000 0.945700 -0.324900
+vn 0.000000 0.951900 0.306300
+vn 0.545500 0.743300 0.387100
+vn 0.708000 0.667900 -0.229500
+vn 0.776500 0.235200 0.584600
+vn 1.000000 -0.002100 0.000900
+vn 0.552400 -0.279100 0.785500
+vn 0.705700 -0.669800 0.231000
+vn -0.000100 -0.493800 0.869600
+vn -0.000000 -0.945300 0.326100
+vn -0.552500 -0.279000 0.785400
+vn -0.705800 -0.669700 0.230900
+vn -0.776500 0.235200 0.584500
+vn -1.000000 -0.002000 0.000700
+vn -0.707900 0.667900 -0.229600
+vn -0.545500 0.743300 0.387000
+vn 0.000100 0.551300 -0.834300
+vn 0.547000 0.336400 -0.766500
+vn 0.776500 -0.185300 -0.602300
+vn 0.551000 -0.710900 -0.437100
+vn 0.000000 -0.929700 -0.368400
+vn -0.550900 -0.710900 -0.437100
+vn -0.776400 -0.185300 -0.602400
+vn -0.546900 0.336400 -0.766600
+vn 0.000000 0.895500 -0.445000
+vn 0.000000 0.982700 0.185000
+vn 0.545000 0.786300 0.290800
+vn 0.706700 0.633600 -0.314900
+vn 0.776600 0.307400 0.549900
+vn 1.000000 0.000000 0.000000
+vn 0.553000 -0.178000 0.814000
+vn 0.706600 -0.633500 0.315100
+vn 0.000000 -0.380800 0.924600
+vn -0.000100 -0.895300 0.445400
+vn -0.553000 -0.177900 0.813900
+vn -0.706700 -0.633400 0.315100
+vn -0.776500 0.307400 0.549900
+vn -1.000000 0.000100 0.000000
+vn -0.706600 0.633700 -0.314900
+vn -0.545000 0.786400 0.290800
+vn 0.000000 0.442100 -0.897000
+vn 0.545500 0.239000 -0.803300
+vn 0.776500 -0.256200 -0.575600
+vn 0.552500 -0.758400 -0.345800
+vn -0.000000 -0.968200 -0.250200
+vn -0.552500 -0.758300 -0.345900
+vn -0.776500 -0.256200 -0.575600
+vn -0.545400 0.239100 -0.803300
+vn 0.000000 0.820900 -0.571000
+vn 0.000100 0.999400 0.035100
+vn 0.546000 0.820300 0.170000
+vn 0.708300 0.579500 -0.403100
+vn 0.776500 0.384800 0.498900
+vn 1.000000 -0.002700 0.001700
+vn 0.552100 -0.055100 0.831900
+vn 0.705200 -0.582400 0.404400
+vn 0.000000 -0.238500 0.971100
+vn -0.000000 -0.821300 0.570400
+vn -0.552000 -0.055000 0.832000
+vn -0.705200 -0.582300 0.404500
+vn -0.776400 0.384900 0.498900
+vn -1.000000 -0.002500 0.001800
+vn -0.708300 0.579600 -0.403000
+vn -0.545900 0.820400 0.170000
+vn 0.000000 0.320600 -0.947200
+vn 0.545300 0.131700 -0.827800
+vn 0.776500 -0.329200 -0.537200
+vn 0.552600 -0.797000 -0.243600
+vn -0.000000 -0.992600 -0.121200
+vn -0.552700 -0.796900 -0.243600
+vn -0.776600 -0.329100 -0.537200
+vn -0.545300 0.131800 -0.827800
+vn 0.000000 0.731200 -0.682100
+vn 0.000100 0.992500 -0.122400
+vn 0.547300 0.835900 0.040000
+vn 0.711800 0.513500 -0.479100
+vn 0.776500 0.456300 0.434400
+vn 0.999900 -0.007000 0.006300
+vn 0.550800 0.074300 0.831300
+vn 0.702400 -0.520800 0.485100
+vn 0.000100 -0.084500 0.996400
+vn 0.000000 -0.731700 0.681700
+vn -0.550600 0.074400 0.831400
+vn -0.702500 -0.520600 0.485200
+vn -0.776300 0.456500 0.434600
+vn -0.999900 -0.006700 0.006500
+vn -0.711800 0.513700 -0.479000
+vn -0.547100 0.836100 0.040200
+vn -0.000000 0.195700 -0.980700
+vn 0.546600 0.022400 -0.837100
+vn 0.776400 -0.398500 -0.488200
+vn 0.551100 -0.823100 -0.136700
+vn -0.000100 -0.999900 0.009600
+vn -0.551300 -0.823000 -0.136600
+vn -0.776500 -0.398400 -0.488100
+vn -0.546800 0.022600 -0.837000
+vn 0.000000 0.629300 -0.777100
+vn 0.000200 0.962300 -0.272000
+vn 0.548400 0.831700 -0.086600
+vn 0.715000 0.439800 -0.543400
+vn 0.776600 0.515500 0.362000
+vn 0.999900 -0.009500 0.011400
+vn 0.549700 0.198400 0.811500
+vn 0.700100 -0.449400 0.554900
+vn 0.000200 0.066900 0.997700
+vn 0.000000 -0.629200 0.777200
+vn -0.549300 0.198600 0.811700
+vn -0.700100 -0.449100 0.555100
+vn -0.776300 0.515800 0.362300
+vn -0.999900 -0.009200 0.011700
+vn -0.715000 0.440100 -0.543200
+vn -0.548100 0.831900 -0.086400
+vn -0.000100 0.065800 -0.997800
+vn 0.548200 -0.088600 -0.831600
+vn 0.776300 -0.461700 -0.429000
+vn 0.549300 -0.835200 -0.025200
+vn -0.000100 -0.989800 0.142300
+vn -0.549600 -0.835000 -0.025100
+vn -0.776600 -0.461500 -0.428800
+vn -0.548400 -0.088400 -0.831500
+vn -0.000000 0.525600 -0.850700
+vn 0.000200 0.917300 -0.398100
+vn 0.548500 0.812600 -0.196900
+vn 0.715800 0.366600 -0.594300
+vn 0.776600 0.559300 0.289900
+vn 0.999800 -0.008900 0.013700
+vn 0.549700 0.305200 0.777600
+vn 0.699500 -0.374800 0.608400
+vn 0.000300 0.199800 0.979800
+vn 0.000000 -0.524000 0.851700
+vn -0.549200 0.305500 0.777800
+vn -0.699400 -0.374500 0.608700
+vn -0.776200 0.559700 0.290200
+vn -0.999800 -0.008400 0.014100
+vn -0.715900 0.367000 -0.594000
+vn -0.548100 0.812900 -0.196700
+vn -0.000200 -0.066200 -0.997800
+vn 0.549200 -0.198000 -0.811900
+vn 0.776300 -0.515800 -0.362300
+vn 0.548100 -0.831900 0.086800
+vn -0.000100 -0.962200 0.272500
+vn -0.548400 -0.831700 0.086900
+vn -0.776700 -0.515500 -0.362000
+vn -0.549600 -0.197800 -0.811700
+vn 0.000000 0.748600 -0.663000
+vn 0.000000 1.000000 0.000000
+vn 0.707100 0.707100 0.000000
+vn 0.529300 0.529300 -0.663000
+vn 0.000000 0.748600 0.663000
+vn 0.529300 0.529300 0.663000
+vn 0.748600 0.000000 -0.663000
+vn 0.748600 0.000000 0.663000
+vn 0.707100 -0.707100 0.000000
+vn 0.529300 -0.529300 -0.663000
+vn 0.529300 -0.529300 0.663000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -0.748600 -0.663000
+vn 0.000000 -0.748600 0.663000
+vn -0.707100 -0.707100 0.000000
+vn -0.529300 -0.529300 -0.663000
+vn -0.529300 -0.529300 0.663000
+vn -1.000000 0.000000 0.000000
+vn -0.748600 0.000000 -0.663000
+vn -0.748600 0.000000 0.663000
+vn -0.707100 0.707100 0.000000
+vn -0.529300 0.529300 -0.663000
+vn -0.529300 0.529300 0.663000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.000000 1.000000
+g Sphere.001_Sphere.001_lampshade
s 1
-f 1/1 2/2 3/3 4/4
-f 2/1 5/2 6/3 3/4
-f 4/1 3/2 7/3 8/4
-f 3/1 6/2 9/3 7/4
-f 10/1 11/2 12/3 13/4
-f 11/1 14/2 15/3 12/4
-f 16/1 1/2 4/3
-f 5/1 17/2 6/3
-f 16/1 4/2 8/3
-f 6/1 17/2 9/3
-f 16/1 10/2 13/3
-f 14/1 17/2 15/3
-f 13/1 1/2 16/3
-f 2/1 1/2 13/3 12/4
-f 12/1 15/2 5/3 2/4
-f 15/1 17/2 5/3
-o metal_bulb
-v -0.319468 -0.008127 0.010226
-v -0.286512 0.021833 0.010199
-v -0.280568 0.015348 -0.034351
-v -0.313508 -0.014629 -0.034445
-v -0.247764 0.045512 0.010160
-v -0.242273 0.039521 -0.030999
-v -0.202905 0.052560 0.010102
-v -0.198702 0.047975 -0.021400
-v -0.263519 -0.003175 -0.072143
-v -0.296412 -0.033202 -0.072339
-v -0.226521 0.022408 -0.065914
-v -0.186646 0.034877 -0.048123
-v -0.237959 -0.030916 -0.097425
-v -0.270783 -0.061019 -0.097689
-v -0.202907 -0.003222 -0.089271
-v -0.168573 0.015261 -0.066000
-v -0.207779 -0.063653 -0.106346
-v -0.240522 -0.093844 -0.106635
-v -0.175025 -0.033467 -0.097514
-v -0.147233 -0.007887 -0.072308
-v -0.177576 -0.096400 -0.097550
-v -0.210236 -0.126680 -0.097815
-v -0.147121 -0.063721 -0.089387
-v -0.125876 -0.031043 -0.066088
-v -0.151945 -0.124173 -0.072375
-v -0.184537 -0.154528 -0.072572
-v -0.123441 -0.089380 -0.066128
-v -0.107752 -0.050682 -0.048287
-v -0.134791 -0.142744 -0.034653
-v -0.167335 -0.173150 -0.034748
-v -0.107592 -0.106537 -0.031278
-v -0.095622 -0.063813 -0.021614
-v -0.128723 -0.149285 0.009871
-v -0.161251 -0.179708 0.009897
-v -0.101987 -0.112580 0.009857
-v -0.091332 -0.068438 0.009870
-v -0.134667 -0.142800 0.054421
-v -0.167211 -0.173206 0.054568
-v -0.107478 -0.106589 0.051016
-v -0.095534 -0.063853 0.041372
-v -0.151716 -0.124277 0.092213
-v -0.184307 -0.154633 0.092462
-v -0.123230 -0.089476 0.085931
-v -0.107590 -0.050755 0.068095
-v -0.177276 -0.096536 0.117495
-v -0.209936 -0.126816 0.117812
-v -0.146844 -0.063846 0.109288
-v -0.125664 -0.031139 0.085971
-v -0.207456 -0.063799 0.126416
-v -0.240197 -0.093991 0.126758
-v -0.174726 -0.033602 0.117531
-v -0.147004 -0.007991 0.092280
-v -0.237660 -0.031052 0.117620
-v -0.270483 -0.061155 0.117938
-v -0.202631 -0.003347 0.109404
-v -0.168361 0.015165 0.086060
-v -0.263290 -0.003278 0.092445
-v -0.296183 -0.033306 0.092694
-v -0.226310 0.022312 0.086145
-v -0.186484 0.034804 0.068258
-v -0.280444 0.015292 0.054723
-v -0.313384 -0.014685 0.054871
-v -0.242159 0.039469 0.051295
-v -0.198615 0.047935 0.041585
-v -0.042757 0.003935 0.009848
-v -0.045990 0.007420 -0.013878
-v -0.038616 0.014220 -0.013884
-v -0.035383 0.010734 0.009842
-v -0.055009 0.017261 0.053726
-v -0.045924 0.007390 0.033588
-v -0.038550 0.014190 0.033582
-v -0.047635 0.024060 0.053721
-v -0.084711 0.049488 0.071953
-v -0.068629 0.032044 0.067198
-v -0.061256 0.038843 0.067192
-v -0.077338 0.056288 0.071947
-v -0.123672 0.091664 -0.013717
-v -0.126839 0.095120 0.010023
-v -0.119465 0.101919 0.010017
-v -0.116298 0.098464 -0.013723
-v -0.114464 0.081739 0.053850
-v -0.100806 0.066939 0.067265
-v -0.093433 0.073738 0.067259
-v -0.107090 0.088538 0.053844
-v -0.100966 0.067011 -0.047328
-v -0.114586 0.081794 -0.033856
-v -0.107212 0.088593 -0.033862
-v -0.093592 0.073810 -0.047334
-v -0.123605 0.091634 0.033749
-v -0.116232 0.098434 0.033743
-v -0.068789 0.032116 -0.047394
-v -0.084884 0.049566 -0.052082
-v -0.077510 0.056366 -0.052088
-v -0.061415 0.038915 -0.047400
-v -0.055131 0.017316 -0.033979
-v -0.047757 0.024115 -0.033985
-v -0.179199 0.046838 0.010065
-v -0.176032 0.043382 -0.013675
-v -0.166947 0.033512 -0.033813
-v -0.153326 0.018729 -0.047285
-v -0.137244 0.001284 -0.052039
-v -0.121149 -0.016166 -0.047352
-v -0.107491 -0.030966 -0.033937
-v -0.098350 -0.040862 -0.013836
-v -0.095117 -0.044347 0.009891
-v -0.098284 -0.040892 0.033630
-v -0.107369 -0.031021 0.053769
-v -0.120990 -0.016238 0.067241
-v -0.137072 0.001206 0.071995
-v -0.153167 0.018657 0.067308
-v -0.166825 0.033457 0.053892
-v -0.175966 0.043352 0.033791
-v -0.099029 0.096986 0.009985
-v -0.096754 0.094505 -0.007063
-v -0.090230 0.087416 -0.021526
-v -0.080448 0.076800 -0.031201
-v -0.068899 0.064272 -0.034615
-v -0.057341 0.051740 -0.031248
-v -0.047533 0.041112 -0.021614
-v -0.040968 0.034005 -0.007179
-v -0.038646 0.031502 0.009860
-v -0.040920 0.033984 0.026908
-v -0.047445 0.041072 0.041371
-v -0.057226 0.051689 0.051045
-v -0.068775 0.064216 0.054460
-v -0.080334 0.076748 0.051093
-v -0.090142 0.087377 0.041459
-v -0.096707 0.094483 0.027024
-v -0.062325 0.070250 0.009917
-v -0.065729 -0.017249 0.009867
-v -0.068963 -0.013763 -0.013860
-v -0.077982 -0.003923 0.053745
-v -0.068897 -0.013793 0.033606
-v -0.107684 0.028305 0.071971
-v -0.091602 0.010860 0.067217
-v -0.146644 0.070481 -0.013698
-v -0.149812 0.073936 0.010041
-v -0.137437 0.060555 0.053868
-v -0.123779 0.045755 0.067284
-v -0.123939 0.045827 -0.047309
-v -0.137559 0.060610 -0.033837
-v -0.146578 0.070451 0.033768
-v -0.091762 0.010932 -0.047376
-v -0.107857 0.028383 -0.052063
-v -0.078104 -0.003867 -0.033960
-v -0.090787 -0.033888 -0.013842
-v -0.087554 -0.037373 0.009884
-v -0.090721 -0.033918 0.033624
-v -0.099806 -0.024047 0.053763
-v -0.113427 -0.009264 0.067235
-v -0.129509 0.008180 0.071989
-v -0.171636 0.053812 0.010059
-v -0.168469 0.050356 -0.013681
-v -0.145604 0.025631 0.067301
-v -0.159261 0.040431 0.053886
-v -0.159383 0.040486 -0.033819
-v -0.145763 0.025703 -0.047291
-v -0.168403 0.050326 0.033785
-v -0.129681 0.008259 -0.052045
-v -0.113586 -0.009192 -0.047358
-v -0.099928 -0.023992 -0.033943
-vt 0.007655 0.335684
-vt 0.088864 0.317550
-vt 0.116908 0.383352
-vt 0.045014 0.430784
-vt 0.149431 0.304465
-vt 0.169310 0.347402
-vt 0.195420 0.295389
-vt 0.207538 0.322304
-vt 0.168378 0.433745
-vt 0.118294 0.506560
-vt 0.202495 0.381547
-vt 0.228525 0.342495
-vt 0.234941 0.461062
-vt 0.215801 0.548975
-vt 0.247081 0.400958
-vt 0.255417 0.354292
-vt 0.307861 0.462461
-vt 0.323740 0.551944
-vt 0.295348 0.399423
-vt 0.285361 0.354455
-vt 0.375220 0.433589
-vt 0.426410 0.512010
-vt 0.340191 0.381959
-vt 0.313449 0.343049
-vt 0.427084 0.381076
-vt 0.508428 0.433617
-vt 0.373097 0.346286
-vt 0.334086 0.321151
-vt 0.455163 0.312779
-vt 0.542091 0.327329
-vt 0.392121 0.301698
-vt 0.345605 0.293668
-vt 0.451516 0.240164
-vt 0.542091 0.220170
-vt 0.392388 0.252805
-vt 0.345695 0.263443
-vt 0.425053 0.173305
-vt 0.495831 0.125079
-vt 0.372476 0.208436
-vt 0.334045 0.235260
-vt 0.372835 0.122674
-vt 0.424368 0.047947
-vt 0.337530 0.175120
-vt 0.311810 0.214099
-vt 0.304541 0.095984
-vt 0.322573 0.000101
-vt 0.292062 0.157691
-vt 0.283613 0.203892
-vt 0.230734 0.095653
-vt 0.209292 0.006915
-vt 0.244170 0.159255
-vt 0.253704 0.203883
-vt 0.163666 0.125603
-vt 0.113594 0.054409
-vt 0.199570 0.176878
-vt 0.226219 0.216305
-vt 0.114775 0.178767
-vt 0.035273 0.128658
-vt 0.166640 0.212635
-vt 0.205969 0.237982
-vt 0.087319 0.245782
-vt 0.000101 0.232502
-vt 0.150125 0.257229
-vt 0.194552 0.265466
-vt 0.286212 0.275766
-vt 0.286505 0.282321
-vt 0.283810 0.281816
-vt 0.283734 0.276327
-vt 0.279017 0.265280
-vt 0.283711 0.269791
-vt 0.281639 0.271211
-vt 0.277640 0.267418
-vt 0.266579 0.262961
-vt 0.273007 0.263022
-vt 0.272521 0.265505
-vt 0.267050 0.265496
-vt 0.256409 0.288660
-vt 0.253654 0.282755
-vt 0.256198 0.282176
-vt 0.258425 0.287240
-vt 0.256075 0.270212
-vt 0.260535 0.265413
-vt 0.262006 0.267589
-vt 0.258309 0.271652
-vt 0.266913 0.295729
-vt 0.260993 0.293116
-vt 0.262408 0.291037
-vt 0.267434 0.293170
-vt 0.253614 0.276227
-vt 0.256148 0.276688
-vt 0.279426 0.292926
-vt 0.273471 0.295552
-vt 0.272935 0.293026
-vt 0.277972 0.290788
-vt 0.283888 0.288305
-vt 0.281791 0.286878
-vt 0.216742 0.290668
-vt 0.225269 0.310030
-vt 0.240281 0.324688
-vt 0.259793 0.332794
-vt 0.281151 0.332900
-vt 0.300875 0.324522
-vt 0.315970 0.309294
-vt 0.323874 0.289466
-vt 0.324031 0.267839
-vt 0.315162 0.248142
-vt 0.300110 0.232690
-vt 0.279881 0.225136
-vt 0.258551 0.225929
-vt 0.239013 0.234383
-vt 0.223802 0.249425
-vt 0.216565 0.269459
-vt 0.260738 0.281262
-vt 0.262231 0.284613
-vt 0.264844 0.287195
-vt 0.268285 0.288610
-vt 0.272008 0.288514
-vt 0.275373 0.287005
-vt 0.277984 0.284376
-vt 0.279329 0.280905
-vt 0.279256 0.277201
-vt 0.277785 0.273845
-vt 0.275174 0.271261
-vt 0.271728 0.269965
-vt 0.268057 0.269971
-vt 0.264639 0.271401
-vt 0.262102 0.274115
-vt 0.260665 0.277542
-vt 0.270015 0.279236
-vt 0.297586 0.273355
-vt 0.297766 0.284407
-vt 0.285219 0.255745
-vt 0.293167 0.263274
-vt 0.264144 0.251590
-vt 0.275169 0.251317
-vt 0.247079 0.295039
-vt 0.242657 0.285120
-vt 0.246399 0.263951
-vt 0.254045 0.256020
-vt 0.264854 0.306854
-vt 0.254558 0.302882
-vt 0.242390 0.274150
-vt 0.286071 0.302647
-vt 0.275795 0.306598
-vt 0.293684 0.294701
-vt 0.315512 0.287747
-vt 0.315779 0.269492
-vt 0.308369 0.252844
-vt 0.295369 0.240070
-vt 0.278365 0.233438
-vt 0.260295 0.233775
-vt 0.225281 0.288844
-vt 0.231767 0.305545
-vt 0.243906 0.241337
-vt 0.231089 0.254123
-vt 0.244739 0.317727
-vt 0.261505 0.324167
-vt 0.224503 0.270863
-vt 0.279556 0.324657
-vt 0.296137 0.317398
-vt 0.309039 0.304700
-g metal_bulb_metal_bulb_Material.003
-usemtl Material.003
-s 1
-f 18/5 19/6 20/7 21/8
-f 19/6 22/9 23/10 20/7
-f 22/9 24/11 25/12 23/10
-f 21/8 20/7 26/13 27/14
-f 20/7 23/10 28/15 26/13
-f 23/10 25/12 29/16 28/15
-f 27/14 26/13 30/17 31/18
-f 26/13 28/15 32/19 30/17
-f 28/15 29/16 33/20 32/19
-f 31/18 30/17 34/21 35/22
-f 30/17 32/19 36/23 34/21
-f 32/19 33/20 37/24 36/23
-f 35/22 34/21 38/25 39/26
-f 34/21 36/23 40/27 38/25
-f 36/23 37/24 41/28 40/27
-f 39/26 38/25 42/29 43/30
-f 38/25 40/27 44/31 42/29
-f 40/27 41/28 45/32 44/31
-f 43/30 42/29 46/33 47/34
-f 42/29 44/31 48/35 46/33
-f 44/31 45/32 49/36 48/35
-f 47/34 46/33 50/37 51/38
-f 46/33 48/35 52/39 50/37
-f 48/35 49/36 53/40 52/39
-f 51/38 50/37 54/41 55/42
-f 50/37 52/39 56/43 54/41
-f 52/39 53/40 57/44 56/43
-f 55/42 54/41 58/45 59/46
-f 54/41 56/43 60/47 58/45
-f 56/43 57/44 61/48 60/47
-f 59/46 58/45 62/49 63/50
-f 58/45 60/47 64/51 62/49
-f 60/47 61/48 65/52 64/51
-f 63/50 62/49 66/53 67/54
-f 62/49 64/51 68/55 66/53
-f 64/51 65/52 69/56 68/55
-f 67/54 66/53 70/57 71/58
-f 66/53 68/55 72/59 70/57
-f 68/55 69/56 73/60 72/59
-f 71/58 70/57 74/61 75/62
-f 70/57 72/59 76/63 74/61
-f 72/59 73/60 77/64 76/63
-f 75/62 74/61 78/65 79/66
-f 74/61 76/63 80/67 78/65
-f 76/63 77/64 81/68 80/67
-f 82/69 83/70 84/71 85/72
-f 86/73 87/74 88/75 89/76
-f 90/77 91/78 92/79 93/80
-f 94/81 95/82 96/83 97/84
-f 98/85 99/86 100/87 101/88
-f 102/89 103/90 104/91 105/92
-f 95/82 106/93 107/94 96/83
-f 108/95 109/96 110/97 111/98
-f 83/70 112/99 113/100 84/71
-f 87/74 82/69 85/72 88/75
-f 91/78 86/73 89/76 92/79
-f 99/86 90/77 93/80 100/87
-f 103/90 94/81 97/84 104/91
-f 106/93 98/85 101/88 107/94
-f 19/6 18/5 79/66 78/65
-f 78/65 80/67 22/9 19/6
-f 80/67 81/68 24/11 22/9
-f 109/96 102/89 105/92 110/97
-f 112/99 108/95 111/98 113/100
-f 24/11 114/101 115/102 25/12
-f 25/12 115/102 116/103 29/16
-f 29/16 116/103 117/104 33/20
-f 33/20 117/104 118/105 37/24
-f 37/24 118/105 119/106 41/28
-f 41/28 119/106 120/107 45/32
-f 45/32 120/107 121/108 49/36
-f 49/36 121/108 122/109 53/40
-f 53/40 122/109 123/110 57/44
-f 57/44 123/110 124/111 61/48
-f 61/48 124/111 125/112 65/52
-f 65/52 125/112 126/113 69/56
-f 69/56 126/113 127/114 73/60
-f 73/60 127/114 128/115 77/64
-f 77/64 128/115 129/116 81/68
-f 81/68 129/116 114/101 24/11
-f 96/83 130/117 131/118 97/84
-f 97/84 131/118 132/119 104/91
-f 104/91 132/119 133/120 105/92
-f 105/92 133/120 134/121 110/97
-f 110/97 134/121 135/122 111/98
-f 111/98 135/122 136/123 113/100
-f 113/100 136/123 137/124 84/71
-f 84/71 137/124 138/125 85/72
-f 85/72 138/125 139/126 88/75
-f 88/75 139/126 140/127 89/76
-f 89/76 140/127 141/128 92/79
-f 92/79 141/128 142/129 93/80
-f 93/80 142/129 143/130 100/87
-f 100/87 143/130 144/131 101/88
-f 101/88 144/131 145/132 107/94
-f 130/117 146/133 131/118
-f 131/118 146/133 132/119
-f 132/119 146/133 133/120
-f 133/120 146/133 134/121
-f 134/121 146/133 135/122
-f 135/122 146/133 136/123
-f 136/123 146/133 137/124
-f 137/124 146/133 138/125
-f 138/125 146/133 139/126
-f 139/126 146/133 140/127
-f 140/127 146/133 141/128
-f 141/128 146/133 142/129
-f 142/129 146/133 143/130
-f 143/130 146/133 144/131
-f 144/131 146/133 145/132
-f 107/94 145/132 130/117 96/83
-f 145/132 146/133 130/117
-f 147/134 148/135 83/70 82/69
-f 149/136 150/137 87/74 86/73
-f 151/138 152/139 91/78 90/77
-f 153/140 154/141 95/82 94/81
-f 155/142 156/143 99/86 98/85
-f 157/144 158/145 103/90 102/89
-f 154/141 159/146 106/93 95/82
-f 160/147 161/148 109/96 108/95
-f 148/135 162/149 112/99 83/70
-f 150/137 147/134 82/69 87/74
-f 152/139 149/136 86/73 91/78
-f 156/143 151/138 90/77 99/86
-f 158/145 153/140 94/81 103/90
-f 159/146 155/142 98/85 106/93
-f 161/148 157/144 102/89 109/96
-f 162/149 160/147 108/95 112/99
-f 122/109 121/108 163/150 164/151
-f 124/111 123/110 165/152 166/153
-f 126/113 125/112 167/154 168/155
-f 115/102 114/101 169/156 170/157
-f 128/115 127/114 171/158 172/159
-f 117/104 116/103 173/160 174/161
-f 114/101 129/116 175/162 169/156
-f 119/106 118/105 176/163 177/164
-f 121/108 120/107 178/165 163/150
-f 123/110 122/109 164/151 165/152
-f 125/112 124/111 166/153 167/154
-f 127/114 126/113 168/155 171/158
-f 116/103 115/102 170/157 173/160
-f 129/116 128/115 172/159 175/162
-f 118/105 117/104 174/161 176/163
-f 120/107 119/106 177/164 178/165
-f 164/151 163/150 148/135 147/134
-f 166/153 165/152 150/137 149/136
-f 168/155 167/154 152/139 151/138
-f 170/157 169/156 154/141 153/140
-f 172/159 171/158 156/143 155/142
-f 174/161 173/160 158/145 157/144
-f 169/156 175/162 159/146 154/141
-f 177/164 176/163 161/148 160/147
-f 163/150 178/165 162/149 148/135
-f 165/152 164/151 147/134 150/137
-f 167/154 166/153 149/136 152/139
-f 171/158 168/155 151/138 156/143
-f 173/160 170/157 153/140 158/145
-f 175/162 172/159 155/142 159/146
-f 176/163 174/161 157/144 161/148
-f 178/165 177/164 160/147 162/149
-o tube
-v 0.053313 -0.430401 0.009096
-v 0.054882 -0.411177 0.009097
-v 0.060531 -0.411592 -0.004576
-v 0.058960 -0.430831 -0.004578
-v 0.074168 -0.412595 -0.010240
-v 0.072594 -0.431869 -0.010242
-v 0.087804 -0.413600 -0.004577
-v 0.086228 -0.432909 -0.004578
-v 0.093453 -0.414018 0.009097
-v 0.091876 -0.433340 0.009096
-v 0.087804 -0.413603 0.022771
-v 0.086229 -0.432910 0.022769
-v 0.074168 -0.412599 0.028435
-v 0.072594 -0.431872 0.028433
-v 0.058960 -0.430832 0.022770
-v 0.060531 -0.411595 0.022771
-v 0.051743 -0.449086 0.009095
-v 0.057389 -0.449531 -0.004579
-v 0.071021 -0.450605 -0.010243
-v 0.084652 -0.451679 -0.004580
-v 0.090299 -0.452123 0.009094
-v 0.084653 -0.451679 0.022768
-v 0.071021 -0.450605 0.028432
-v 0.057390 -0.449531 0.022768
-v 0.056107 -0.392122 0.009100
-v 0.057294 -0.373087 0.009103
-v 0.062952 -0.373353 -0.004571
-v 0.061760 -0.392466 -0.004574
-v 0.076610 -0.374001 -0.010235
-v 0.075408 -0.393299 -0.010238
-v 0.090268 -0.374650 -0.004571
-v 0.089056 -0.394134 -0.004574
-v 0.095926 -0.374920 0.009102
-v 0.094710 -0.394481 0.009100
-v 0.090269 -0.374654 0.022776
-v 0.089056 -0.394138 0.022773
-v 0.076610 -0.374006 0.028440
-v 0.075408 -0.393304 0.028437
-v 0.061760 -0.392469 0.022774
-v 0.062952 -0.373357 0.022776
-v 0.054882 -0.411177 0.009097
-v 0.060531 -0.411592 -0.004576
-v 0.074168 -0.412595 -0.010240
-v 0.087804 -0.413600 -0.004577
-v 0.093453 -0.413479 0.009097
-v 0.087804 -0.413064 0.022771
-v 0.074168 -0.412599 0.028435
-v 0.060531 -0.411595 0.022771
-v 0.058004 -0.354129 0.009106
-v 0.058403 -0.335224 0.009109
-v 0.064067 -0.335261 -0.004565
-v 0.063665 -0.354291 -0.004568
-v 0.077740 -0.335356 -0.010229
-v 0.077333 -0.354684 -0.010232
-v 0.091414 -0.335453 -0.004565
-v 0.091001 -0.355080 -0.004568
-v 0.097077 -0.335495 0.009109
-v 0.096663 -0.355245 0.009105
-v 0.091414 -0.335458 0.022782
-v 0.091002 -0.355084 0.022779
-v 0.077740 -0.335362 0.028446
-v 0.077333 -0.354690 0.028443
-v 0.063666 -0.354295 0.022779
-v 0.064067 -0.335266 0.022782
-v 0.057294 -0.373087 0.009103
-v 0.062952 -0.373353 -0.004571
-v 0.076610 -0.374001 -0.010235
-v 0.090268 -0.374650 -0.004571
-v 0.095926 -0.374920 0.009102
-v 0.090269 -0.374654 0.022776
-v 0.076610 -0.374006 0.028440
-v 0.062952 -0.373357 0.022776
-v 0.058466 -0.316365 0.009112
-v 0.057764 -0.297613 0.009115
-v 0.063422 -0.297349 -0.004559
-v 0.064129 -0.316266 -0.004562
-v 0.077081 -0.296717 -0.010222
-v 0.077800 -0.316032 -0.010226
-v 0.090740 -0.296088 -0.004559
-v 0.091472 -0.315800 -0.004562
-v 0.096398 -0.295828 0.009115
-v 0.097135 -0.315706 0.009112
-v 0.090740 -0.296092 0.022789
-v 0.091472 -0.315804 0.022786
-v 0.077081 -0.296724 0.028453
-v 0.077800 -0.316039 0.028449
-v 0.064129 -0.316271 0.022785
-v 0.063422 -0.297354 0.022789
-v 0.058403 -0.335224 0.009109
-v 0.064067 -0.335261 -0.004565
-v 0.077740 -0.335356 -0.010229
-v 0.091414 -0.335453 -0.004565
-v 0.097077 -0.335495 0.009109
-v 0.091414 -0.335458 0.022782
-v 0.077740 -0.335362 0.028446
-v 0.064067 -0.335266 0.022782
-v 0.057059 -0.278863 0.009118
-v 0.054957 -0.260374 0.009121
-v 0.060585 -0.259738 -0.004553
-v 0.062707 -0.278435 -0.004556
-v 0.074173 -0.258205 -0.010216
-v 0.076341 -0.277404 -0.010219
-v 0.087761 -0.256674 -0.004552
-v 0.089976 -0.276376 -0.004555
-v 0.093389 -0.256042 0.009121
-v 0.095624 -0.275952 0.009118
-v 0.087761 -0.256678 0.022795
-v 0.089976 -0.276380 0.022792
-v 0.074173 -0.258211 0.028459
-v 0.076341 -0.277411 0.028456
-v 0.062707 -0.278439 0.022792
-v 0.060585 -0.259742 0.022795
-v 0.057764 -0.297613 0.009115
-v 0.063422 -0.297349 -0.004559
-v 0.077081 -0.296717 -0.010222
-v 0.090740 -0.296088 -0.004559
-v 0.096398 -0.295828 0.009115
-v 0.090740 -0.296092 0.022789
-v 0.077081 -0.296724 0.028453
-v 0.063422 -0.297354 0.022789
-v 0.052882 -0.241882 0.009124
-v 0.049564 -0.223722 0.009126
-v 0.055124 -0.222637 -0.004548
-v 0.058483 -0.241038 -0.004550
-v 0.068545 -0.220021 -0.010211
-v 0.072004 -0.239006 -0.010213
-v 0.081966 -0.217407 -0.004547
-v 0.085526 -0.236974 -0.004549
-v 0.087526 -0.216325 0.009127
-v 0.091127 -0.236135 0.009124
-v 0.081966 -0.217410 0.022801
-v 0.085526 -0.236978 0.022798
-v 0.068545 -0.220026 0.028464
-v 0.072004 -0.239011 0.028462
-v 0.058483 -0.241042 0.022797
-v 0.055124 -0.222641 0.022800
-v 0.054957 -0.260374 0.009121
-v 0.060585 -0.259738 -0.004553
-v 0.074173 -0.258205 -0.010216
-v 0.087761 -0.256674 -0.004552
-v 0.093389 -0.256042 0.009121
-v 0.087761 -0.256678 0.022795
-v 0.074173 -0.258211 0.028459
-v 0.060585 -0.259742 0.022795
-v 0.045791 -0.205686 0.009128
-v 0.041164 -0.187972 0.009130
-v 0.046594 -0.186362 -0.004544
-v 0.051295 -0.204348 -0.004545
-v 0.059704 -0.182475 -0.010207
-v 0.064583 -0.201121 -0.010209
-v 0.072814 -0.178590 -0.004543
-v 0.077870 -0.197895 -0.004545
-v 0.078244 -0.176981 0.009131
-v 0.083374 -0.196560 0.009129
-v 0.072814 -0.178592 0.022805
-v 0.077870 -0.197898 0.022803
-v 0.059704 -0.182479 0.028468
-v 0.064582 -0.201125 0.028466
-v 0.051295 -0.204351 0.022802
-v 0.046594 -0.186364 0.022804
-v 0.049564 -0.223722 0.009126
-v 0.055124 -0.222637 -0.004548
-v 0.068545 -0.220021 -0.010211
-v 0.081966 -0.217407 -0.004547
-v 0.087526 -0.216325 0.009127
-v 0.081966 -0.217410 0.022801
-v 0.068545 -0.220026 0.028464
-v 0.055124 -0.222641 0.022800
-v 0.035381 -0.170691 0.009131
-v 0.029340 -0.153548 0.009132
-v 0.034556 -0.151339 -0.004541
-v 0.040714 -0.168781 -0.004542
-v 0.047148 -0.146008 -0.010205
-v 0.053588 -0.164173 -0.010206
-v 0.059740 -0.140676 -0.004540
-v 0.066462 -0.159566 -0.004541
-v 0.064955 -0.138469 0.009134
-v 0.071794 -0.157658 0.009133
-v 0.059739 -0.140678 0.022807
-v 0.066461 -0.159567 0.022806
-v 0.047147 -0.146009 0.028470
-v 0.053587 -0.164176 0.028469
-v 0.040713 -0.168783 0.022805
-v 0.034556 -0.151340 0.022806
-v 0.041164 -0.187972 0.009130
-v 0.046594 -0.186362 -0.004544
-v 0.059704 -0.182475 -0.010207
-v 0.072814 -0.178590 -0.004543
-v 0.078244 -0.176981 0.009131
-v 0.072814 -0.178592 0.022805
-v 0.059704 -0.182479 0.028468
-v 0.046594 -0.186364 0.022804
-v 0.021284 -0.137425 0.009132
-v 0.013301 -0.121266 0.009132
-v 0.018187 -0.118400 -0.004542
-v 0.026346 -0.134882 -0.004542
-v 0.029982 -0.111482 -0.010205
-v 0.038565 -0.128745 -0.010205
-v 0.041776 -0.104563 -0.004540
-v 0.050784 -0.122607 -0.004540
-v 0.046661 -0.101698 0.009133
-v 0.055844 -0.120065 0.009134
-v 0.041775 -0.104563 0.022807
-v 0.050782 -0.122607 0.022807
-v 0.029980 -0.111481 0.028470
-v 0.038563 -0.128745 0.028470
-v 0.026345 -0.134883 0.022806
-v 0.018186 -0.118400 0.022806
-v 0.029340 -0.153548 0.009132
-v 0.034556 -0.151339 -0.004541
-v 0.047148 -0.146008 -0.010205
-v 0.059740 -0.140676 -0.004540
-v 0.064955 -0.138469 0.009134
-v 0.059739 -0.140678 0.022807
-v 0.047147 -0.146009 0.028470
-v 0.034556 -0.151340 0.022806
-v 0.003263 -0.106486 0.009130
-v -0.007108 -0.091928 0.009129
-v -0.002677 -0.088399 -0.004545
-v 0.007935 -0.103284 -0.004543
-v 0.008016 -0.079877 -0.010208
-v 0.019212 -0.095550 -0.010206
-v 0.018709 -0.071355 -0.004544
-v 0.030488 -0.087816 -0.004542
-v 0.023137 -0.067824 0.009130
-v 0.035158 -0.084612 0.009132
-v 0.018706 -0.071353 0.022804
-v 0.030486 -0.087815 0.022805
-v 0.008013 -0.079874 0.028467
-v 0.019209 -0.095548 0.028469
-v 0.007933 -0.103282 0.022804
-v -0.002680 -0.088397 0.022803
-v 0.013301 -0.121266 0.009132
-v 0.018187 -0.118400 -0.004542
-v 0.029982 -0.111482 -0.010205
-v 0.041776 -0.104563 -0.004540
-v 0.046661 -0.101698 0.009133
-v 0.041775 -0.104563 0.022807
-v 0.029980 -0.111481 0.028470
-v 0.018186 -0.118400 0.022806
-v -0.018728 -0.078465 0.009126
-v -0.031389 -0.065905 0.009123
-v -0.027519 -0.061770 -0.004551
-v -0.014565 -0.074624 -0.004547
-v -0.018180 -0.051782 -0.010214
-v -0.004518 -0.065348 -0.010211
-v -0.008842 -0.041793 -0.004550
-v 0.005528 -0.056072 -0.004547
-v -0.004976 -0.037654 0.009123
-v 0.009687 -0.052228 0.009127
-v -0.008846 -0.041790 0.022797
-v 0.005524 -0.056069 0.022801
-v -0.018185 -0.051777 0.028461
-v -0.004523 -0.065344 0.028464
-v -0.014568 -0.074621 0.022800
-v -0.027523 -0.061766 0.022797
-v -0.007108 -0.091928 0.009129
-v -0.002677 -0.088399 -0.004545
-v 0.008016 -0.079877 -0.010208
-v 0.018709 -0.071355 -0.004544
-v 0.023137 -0.067824 0.009130
-v 0.018706 -0.071353 0.022804
-v 0.008013 -0.079874 0.028467
-v -0.002680 -0.088397 0.022803
-v -0.044496 -0.053850 0.009119
-v -0.059103 -0.043471 0.009115
-v -0.055860 -0.038828 -0.004559
-v -0.040935 -0.049445 -0.004554
-v -0.048034 -0.027616 -0.010223
-v -0.032345 -0.038807 -0.010218
-v -0.040211 -0.016401 -0.004560
-v -0.023757 -0.028167 -0.004554
-v -0.036973 -0.011753 0.009114
-v -0.020202 -0.023758 0.009119
-v -0.040217 -0.016396 0.022787
-v -0.023762 -0.028162 0.022793
-v -0.048042 -0.027609 0.028452
-v -0.032352 -0.038801 0.028457
-v -0.040940 -0.049441 0.022793
-v -0.055865 -0.038824 0.022788
-v -0.031389 -0.065905 0.009123
-v -0.027519 -0.061770 -0.004551
-v -0.018180 -0.051782 -0.010214
-v -0.008842 -0.041793 -0.004550
-v -0.004976 -0.037654 0.009123
-v -0.008846 -0.041790 0.022797
-v -0.018185 -0.051777 0.028461
-v -0.027523 -0.061766 0.022797
-v -0.073657 -0.033014 0.009110
-v -0.089672 -0.024601 0.009104
-v -0.087076 -0.019567 -0.004570
-v -0.070745 -0.028157 -0.004564
-v -0.080817 -0.007411 -0.010235
-v -0.063723 -0.016424 -0.010229
-v -0.074562 0.004748 -0.004572
-v -0.056703 -0.004690 -0.004565
-v -0.071973 0.009787 0.009101
-v -0.053798 0.000173 0.009108
-v -0.074569 0.004754 0.022775
-v -0.056710 -0.004684 0.022782
-v -0.080828 -0.007403 0.028440
-v -0.063732 -0.016417 0.028446
-v -0.070752 -0.028151 0.022783
-v -0.087084 -0.019562 0.022777
-v -0.059103 -0.043471 0.009115
-v -0.055860 -0.038828 -0.004559
-v -0.048034 -0.027616 -0.010223
-v -0.040211 -0.016401 -0.004560
-v -0.036973 -0.011753 0.009114
-v -0.040217 -0.016396 0.022787
-v -0.048042 -0.027609 0.028452
-v -0.055865 -0.038824 0.022788
-vt 0.000000 0.000000
-vt 1.000000 0.000000
-vt 1.000000 1.000000
-vt 0.000000 1.000000
-g tube_tube_Material.001
-usemtl Material.001
-s 1
-f 179/166 180/167 181/168 182/169
-f 182/166 181/167 183/168 184/169
-f 184/166 183/167 185/168 186/169
-f 186/166 185/167 187/168 188/169
-f 188/166 187/167 189/168 190/169
-f 190/166 189/167 191/168 192/169
-f 180/168 179/169 193/166 194/167
-f 192/166 191/167 194/168 193/169
-f 195/166 179/167 182/168 196/169
-f 196/166 182/167 184/168 197/169
-f 197/166 184/167 186/168 198/169
-f 198/166 186/167 188/168 199/169
-f 199/166 188/167 190/168 200/169
-f 200/166 190/167 192/168 201/169
-f 179/168 195/169 202/166 193/167
-f 201/166 192/167 193/168 202/169
-f 203/166 204/167 205/168 206/169
-f 206/166 205/167 207/168 208/169
-f 208/166 207/167 209/168 210/169
-f 210/166 209/167 211/168 212/169
-f 212/166 211/167 213/168 214/169
-f 214/166 213/167 215/168 216/169
-f 217/166 218/167 204/168 203/169
-f 216/166 215/167 218/168 217/169
-f 219/166 203/167 206/168 220/169
-f 220/166 206/167 208/168 221/169
-f 221/166 208/167 210/168 222/169
-f 222/166 210/167 212/168 223/169
-f 223/166 212/167 214/168 224/169
-f 224/166 214/167 216/168 225/169
-f 226/166 217/167 203/168 219/169
-f 225/166 216/167 217/168 226/169
-f 227/166 228/167 229/168 230/169
-f 230/166 229/167 231/168 232/169
-f 232/166 231/167 233/168 234/169
-f 234/166 233/167 235/168 236/169
-f 236/166 235/167 237/168 238/169
-f 238/166 237/167 239/168 240/169
-f 241/166 242/167 228/168 227/169
-f 240/166 239/167 242/168 241/169
-f 243/166 227/167 230/168 244/169
-f 244/166 230/167 232/168 245/169
-f 245/166 232/167 234/168 246/169
-f 246/166 234/167 236/168 247/169
-f 247/166 236/167 238/168 248/169
-f 248/166 238/167 240/168 249/169
-f 250/166 241/167 227/168 243/169
-f 249/166 240/167 241/168 250/169
-f 251/166 252/167 253/168 254/169
-f 254/166 253/167 255/168 256/169
-f 256/166 255/167 257/168 258/169
-f 258/166 257/167 259/168 260/169
-f 260/166 259/167 261/168 262/169
-f 262/166 261/167 263/168 264/169
-f 265/166 266/167 252/168 251/169
-f 264/166 263/167 266/168 265/169
-f 267/166 251/167 254/168 268/169
-f 268/166 254/167 256/168 269/169
-f 269/166 256/167 258/168 270/169
-f 270/166 258/167 260/168 271/169
-f 271/166 260/167 262/168 272/169
-f 272/166 262/167 264/168 273/169
-f 274/166 265/167 251/168 267/169
-f 273/166 264/167 265/168 274/169
-f 275/166 276/167 277/168 278/169
-f 278/166 277/167 279/168 280/169
-f 280/166 279/167 281/168 282/169
-f 282/166 281/167 283/168 284/169
-f 284/166 283/167 285/168 286/169
-f 286/166 285/167 287/168 288/169
-f 289/166 290/167 276/168 275/169
-f 288/166 287/167 290/168 289/169
-f 291/166 275/167 278/168 292/169
-f 292/166 278/167 280/168 293/169
-f 293/166 280/167 282/168 294/169
-f 294/166 282/167 284/168 295/169
-f 295/166 284/167 286/168 296/169
-f 296/166 286/167 288/168 297/169
-f 298/166 289/167 275/168 291/169
-f 297/166 288/167 289/168 298/169
-f 299/166 300/167 301/168 302/169
-f 302/166 301/167 303/168 304/169
-f 304/166 303/167 305/168 306/169
-f 306/166 305/167 307/168 308/169
-f 308/166 307/167 309/168 310/169
-f 310/166 309/167 311/168 312/169
-f 313/166 314/167 300/168 299/169
-f 312/166 311/167 314/168 313/169
-f 315/166 299/167 302/168 316/169
-f 316/166 302/167 304/168 317/169
-f 317/166 304/167 306/168 318/169
-f 318/166 306/167 308/168 319/169
-f 319/166 308/167 310/168 320/169
-f 320/166 310/167 312/168 321/169
-f 322/166 313/167 299/168 315/169
-f 321/166 312/167 313/168 322/169
-f 323/166 324/167 325/168 326/169
-f 326/166 325/167 327/168 328/169
-f 328/166 327/167 329/168 330/169
-f 330/166 329/167 331/168 332/169
-f 332/166 331/167 333/168 334/169
-f 334/166 333/167 335/168 336/169
-f 337/166 338/167 324/168 323/169
-f 336/166 335/167 338/168 337/169
-f 339/166 323/167 326/168 340/169
-f 340/166 326/167 328/168 341/169
-f 341/166 328/167 330/168 342/169
-f 342/166 330/167 332/168 343/169
-f 343/166 332/167 334/168 344/169
-f 344/166 334/167 336/168 345/169
-f 346/166 337/167 323/168 339/169
-f 345/166 336/167 337/168 346/169
-f 347/166 348/167 349/168 350/169
-f 350/166 349/167 351/168 352/169
-f 352/166 351/167 353/168 354/169
-f 354/166 353/167 355/168 356/169
-f 356/166 355/167 357/168 358/169
-f 358/166 357/167 359/168 360/169
-f 361/166 362/167 348/168 347/169
-f 360/166 359/167 362/168 361/169
-f 363/166 347/167 350/168 364/169
-f 364/166 350/167 352/168 365/169
-f 365/166 352/167 354/168 366/169
-f 366/166 354/167 356/168 367/169
-f 367/166 356/167 358/168 368/169
-f 368/166 358/167 360/168 369/169
-f 370/166 361/167 347/168 363/169
-f 369/166 360/167 361/168 370/169
-f 371/166 372/167 373/168 374/169
-f 374/166 373/167 375/168 376/169
-f 376/166 375/167 377/168 378/169
-f 378/166 377/167 379/168 380/169
-f 380/166 379/167 381/168 382/169
-f 382/166 381/167 383/168 384/169
-f 385/166 386/167 372/168 371/169
-f 384/166 383/167 386/168 385/169
-f 387/166 371/167 374/168 388/169
-f 388/166 374/167 376/168 389/169
-f 389/166 376/167 378/168 390/169
-f 390/166 378/167 380/168 391/169
-f 391/166 380/167 382/168 392/169
-f 392/166 382/167 384/168 393/169
-f 394/166 385/167 371/168 387/169
-f 393/166 384/167 385/168 394/169
-f 395/166 396/167 397/168 398/169
-f 398/166 397/167 399/168 400/169
-f 400/166 399/167 401/168 402/169
-f 402/166 401/167 403/168 404/169
-f 404/166 403/167 405/168 406/169
-f 406/166 405/167 407/168 408/169
-f 409/166 410/167 396/168 395/169
-f 408/166 407/167 410/168 409/169
-f 411/166 395/167 398/168 412/169
-f 412/166 398/167 400/168 413/169
-f 413/166 400/167 402/168 414/169
-f 414/166 402/167 404/168 415/169
-f 415/166 404/167 406/168 416/169
-f 416/166 406/167 408/168 417/169
-f 418/166 409/167 395/168 411/169
-f 417/166 408/167 409/168 418/169
-f 419/166 420/167 421/168 422/169
-f 422/166 421/167 423/168 424/169
-f 424/166 423/167 425/168 426/169
-f 426/166 425/167 427/168 428/169
-f 428/166 427/167 429/168 430/169
-f 430/166 429/167 431/168 432/169
-f 433/166 434/167 420/168 419/169
-f 432/166 431/167 434/168 433/169
-f 435/166 419/167 422/168 436/169
-f 436/166 422/167 424/168 437/169
-f 437/166 424/167 426/168 438/169
-f 438/166 426/167 428/168 439/169
-f 439/166 428/167 430/168 440/169
-f 440/166 430/167 432/168 441/169
-f 442/166 433/167 419/168 435/169
-f 441/166 432/167 433/168 442/169
-f 443/166 444/167 445/168 446/169
-f 446/166 445/167 447/168 448/169
-f 448/166 447/167 449/168 450/169
-f 450/166 449/167 451/168 452/169
-f 452/166 451/167 453/168 454/169
-f 454/166 453/167 455/168 456/169
-f 457/166 458/167 444/168 443/169
-f 456/166 455/167 458/168 457/169
-f 459/166 443/167 446/168 460/169
-f 460/166 446/167 448/168 461/169
-f 461/166 448/167 450/168 462/169
-f 462/166 450/167 452/168 463/169
-f 463/166 452/167 454/168 464/169
-f 464/166 454/167 456/168 465/169
-f 466/166 457/167 443/168 459/169
-f 465/166 456/167 457/168 466/169
-f 467/166 468/167 469/168 470/169
-f 470/166 469/167 471/168 472/169
-f 472/166 471/167 473/168 474/169
-f 474/166 473/167 475/168 476/169
-f 476/166 475/167 477/168 478/169
-f 478/166 477/167 479/168 480/169
-f 481/166 482/167 468/168 467/169
-f 480/166 479/167 482/168 481/169
-f 483/166 467/167 470/168 484/169
-f 484/166 470/167 472/168 485/169
-f 485/166 472/167 474/168 486/169
-f 486/166 474/167 476/168 487/169
-f 487/166 476/167 478/168 488/169
-f 488/166 478/167 480/168 489/169
-f 490/166 481/167 467/168 483/169
-f 489/166 480/167 481/168 490/169
-o metal_base
-v 0.070721 -0.502168 -0.126921
-v 0.070721 -0.448710 -0.126921
-v 0.097256 -0.448710 -0.124308
-v 0.097256 -0.502168 -0.124308
-v 0.122772 -0.448710 -0.116568
-v 0.122772 -0.502168 -0.116568
-v 0.146287 -0.448710 -0.103999
-v 0.146287 -0.502168 -0.103999
-v 0.166898 -0.448710 -0.087083
-v 0.166898 -0.502168 -0.087083
-v 0.183814 -0.448710 -0.066472
-v 0.183814 -0.502168 -0.066472
-v 0.196383 -0.448710 -0.042957
-v 0.196383 -0.502168 -0.042957
-v 0.204123 -0.448710 -0.017441
-v 0.204123 -0.502168 -0.017441
-v 0.206737 -0.448710 0.009094
-v 0.206737 -0.502168 0.009094
-v 0.204123 -0.448710 0.035629
-v 0.204123 -0.502168 0.035629
-v 0.196383 -0.448710 0.061145
-v 0.196383 -0.502168 0.061145
-v 0.183814 -0.448710 0.084660
-v 0.183814 -0.502168 0.084660
-v 0.166898 -0.448710 0.105272
-v 0.166898 -0.502168 0.105272
-v 0.146287 -0.448710 0.122187
-v 0.146287 -0.502168 0.122187
-v 0.122772 -0.448710 0.134756
-v 0.122772 -0.502168 0.134756
-v 0.097256 -0.448710 0.142496
-v 0.097256 -0.502168 0.142496
-v 0.070721 -0.448710 0.145110
-v 0.070721 -0.502168 0.145110
-v 0.044185 -0.448710 0.142496
-v 0.044185 -0.502168 0.142496
-v 0.018670 -0.448710 0.134756
-v 0.018670 -0.502168 0.134756
-v -0.004845 -0.448710 0.122187
-v -0.004845 -0.502168 0.122187
-v -0.025457 -0.448710 0.105272
-v -0.025457 -0.502168 0.105272
-v -0.042372 -0.448710 0.084660
-v -0.042372 -0.502168 0.084660
-v -0.054941 -0.448710 0.061145
-v -0.054941 -0.502168 0.061145
-v -0.062681 -0.448710 0.035629
-v -0.062681 -0.502168 0.035629
-v -0.065295 -0.448710 0.009094
-v -0.065295 -0.502168 0.009094
-v -0.062681 -0.448710 -0.017441
-v -0.062681 -0.502168 -0.017441
-v -0.054941 -0.448710 -0.042957
-v -0.054941 -0.502168 -0.042957
-v -0.042372 -0.448710 -0.066472
-v -0.042372 -0.502168 -0.066472
-v -0.025457 -0.448710 -0.087084
-v -0.025457 -0.502168 -0.087084
-v -0.004845 -0.448710 -0.103999
-v -0.004845 -0.502168 -0.103999
-v 0.018670 -0.448710 -0.116568
-v 0.018670 -0.502168 -0.116568
-v 0.044186 -0.502168 -0.124308
-v 0.044186 -0.448710 -0.124308
-vt 0.836800 0.450973
-vt 0.814919 0.378979
-vt 0.842632 0.366791
-vt 0.878227 0.433213
-vt 0.867543 0.349321
-vt 0.915371 0.407714
-vt 0.888734 0.327215
-vt 0.946865 0.375587
-vt 0.905470 0.301250
-vt 0.971685 0.338207
-vt 0.918014 0.273246
-vt 0.989234 0.297104
-vt 0.924683 0.243712
-vt 0.998847 0.253475
-vt 0.925318 0.213657
-vt 0.999899 0.208758
-vt 0.919929 0.184174
-vt 0.992156 0.164619
-vt 0.908721 0.156378
-vt 0.975800 0.122784
-vt 0.892159 0.131230
-vt 0.951406 0.084913
-vt 0.870890 0.109822
-vt 0.919916 0.052555
-vt 0.845738 0.093005
-vt 0.882557 0.027023
-vt 0.817688 0.081457
-vt 0.840809 0.009353
-vt 0.787837 0.075645
-vt 0.796320 0.000256
-vt 0.757352 0.075811
-vt 0.750845 0.000101
-vt 0.727426 0.081961
-vt 0.706173 0.008896
-vt 0.699225 0.093864
-vt 0.664054 0.026300
-vt 0.673852 0.111061
-vt 0.626136 0.051628
-vt 0.652289 0.132889
-vt 0.593893 0.083888
-vt 0.635370 0.158503
-vt 0.568575 0.121818
-vt 0.623745 0.186910
-vt 0.551156 0.163931
-vt 0.617853 0.217010
-vt 0.542292 0.208574
-vt 0.617907 0.247645
-vt 0.542292 0.254004
-vt 0.623887 0.277639
-vt 0.551102 0.298452
-vt 0.635551 0.305853
-vt 0.568304 0.340212
-vt 0.652086 0.331142
-vt 0.593133 0.377730
-vt 0.673224 0.352491
-vt 0.624739 0.409655
-vt 0.698142 0.369114
-vt 0.662002 0.434725
-vt 0.725878 0.380380
-vt 0.703516 0.451923
-vt 0.755381 0.385902
-vt 0.747668 0.460540
-vt 0.792697 0.460218
-vt 0.785455 0.385431
-g metal_base_metal_base_Material.002
-usemtl Material.002
-s 1
-f 491/170 492/171 493/172 494/173
-f 494/173 493/172 495/174 496/175
-f 496/175 495/174 497/176 498/177
-f 498/177 497/176 499/178 500/179
-f 500/179 499/178 501/180 502/181
-f 502/181 501/180 503/182 504/183
-f 504/183 503/182 505/184 506/185
-f 506/185 505/184 507/186 508/187
-f 508/187 507/186 509/188 510/189
-f 510/189 509/188 511/190 512/191
-f 512/191 511/190 513/192 514/193
-f 514/193 513/192 515/194 516/195
-f 516/195 515/194 517/196 518/197
-f 518/197 517/196 519/198 520/199
-f 520/199 519/198 521/200 522/201
-f 522/201 521/200 523/202 524/203
-f 524/203 523/202 525/204 526/205
-f 526/205 525/204 527/206 528/207
-f 528/207 527/206 529/208 530/209
-f 530/209 529/208 531/210 532/211
-f 532/211 531/210 533/212 534/213
-f 534/213 533/212 535/214 536/215
-f 536/215 535/214 537/216 538/217
-f 538/217 537/216 539/218 540/219
-f 540/219 539/218 541/220 542/221
-f 542/221 541/220 543/222 544/223
-f 544/223 543/222 545/224 546/225
-f 546/225 545/224 547/226 548/227
-f 548/227 547/226 549/228 550/229
-f 550/229 549/228 551/230 552/231
-f 492/171 491/170 553/232 554/233
-f 552/231 551/230 554/233 553/232
-f 541/220 539/218 537/216 535/214 533/212 531/210 529/208 527/206 525/204 523/202 521/200 519/198 517/196 515/194 513/192 511/190 509/188 507/186 505/184 503/182 501/180 499/178 497/176 495/174 493/172 492/171 554/233 551/230 549/228 547/226 545/224 543/222
+f 403/1/1 404/2/2 405/3/3 406/4/4
+f 404/2/2 407/5/5 408/6/6 405/3/3
+f 407/5/5 409/7/7 410/8/8 408/6/6
+f 406/4/4 405/3/3 411/9/9 412/10/10
+f 405/3/3 408/6/6 413/11/11 411/9/9
+f 408/6/6 410/8/8 414/12/12 413/11/11
+f 412/10/10 411/9/9 415/13/13 416/14/14
+f 411/9/9 413/11/11 417/15/15 415/13/13
+f 413/11/11 414/12/12 418/16/16 417/15/15
+f 416/14/14 415/13/13 419/17/17 420/18/18
+f 415/13/13 417/15/15 421/19/19 419/17/17
+f 417/15/15 418/16/16 422/20/20 421/19/19
+f 420/18/18 419/17/17 423/21/21 424/22/22
+f 419/17/17 421/19/19 425/23/23 423/21/21
+f 421/19/19 422/20/20 426/24/24 425/23/23
+f 424/22/22 423/21/21 427/25/25 428/26/26
+f 423/21/21 425/23/23 429/27/27 427/25/25
+f 425/23/23 426/24/24 430/28/28 429/27/27
+f 428/26/26 427/25/25 431/29/29 432/30/30
+f 427/25/25 429/27/27 433/31/31 431/29/29
+f 429/27/27 430/28/28 434/32/32 433/31/31
+f 432/30/30 431/29/29 435/33/33 436/34/34
+f 431/29/29 433/31/31 437/35/35 435/33/33
+f 433/31/31 434/32/32 438/36/36 437/35/35
+f 436/34/34 435/33/33 439/37/37 440/38/38
+f 435/33/33 437/35/35 441/39/39 439/37/37
+f 437/35/35 438/36/36 442/40/40 441/39/39
+f 440/38/38 439/37/37 443/41/41 444/42/42
+f 439/37/37 441/39/39 445/43/43 443/41/41
+f 441/39/39 442/40/40 446/44/44 445/43/43
+f 444/42/42 443/41/41 447/45/45 448/46/46
+f 443/41/41 445/43/43 449/47/47 447/45/45
+f 445/43/43 446/44/44 450/48/48 449/47/47
+f 448/46/46 447/45/45 451/49/49 452/50/50
+f 447/45/45 449/47/47 453/51/51 451/49/49
+f 449/47/47 450/48/48 454/52/52 453/51/51
+f 452/50/50 451/49/49 455/53/53 456/54/54
+f 451/49/49 453/51/51 457/55/55 455/53/53
+f 453/51/51 454/52/52 458/56/56 457/55/55
+f 456/54/54 455/53/53 459/57/57 460/58/58
+f 455/53/53 457/55/55 461/59/59 459/57/57
+f 457/55/55 458/56/56 462/60/60 461/59/59
+f 460/58/58 459/57/57 463/61/61 464/62/62
+f 459/57/57 461/59/59 465/63/63 463/61/61
+f 461/59/59 462/60/60 466/64/64 465/63/63
+f 467/65/65 468/66/66 469/67/67 470/68/68
+f 471/69/69 472/70/70 473/71/71 474/72/72
+f 475/73/73 476/74/74 477/75/75 478/76/76
+f 479/77/77 480/78/78 481/79/79 482/80/80
+f 483/81/81 484/82/82 485/83/83 486/84/84
+f 487/85/85 488/86/86 489/87/87 490/88/88
+f 480/89/78 491/90/89 492/91/90 481/92/79
+f 493/93/91 494/94/92 495/95/93 496/96/94
+f 468/66/66 497/97/95 498/98/96 469/67/67
+f 472/70/70 467/99/65 470/100/68 473/71/71
+f 476/74/74 471/69/69 474/72/72 477/75/75
+f 484/82/82 475/73/73 478/76/76 485/83/83
+f 488/86/86 479/77/77 482/80/80 489/87/87
+f 491/90/89 483/81/81 486/84/84 492/91/90
+f 464/62/62 463/61/61 404/101/2 403/102/1
+f 463/61/61 465/63/63 407/103/5 404/101/2
+f 465/63/63 466/64/64 409/104/7 407/103/5
+f 494/94/92 487/85/85 490/88/88 495/95/93
+f 497/97/95 493/93/91 496/96/94 498/98/96
+f 409/7/7 499/105/97 500/106/98 410/8/8
+f 410/8/8 500/106/98 501/107/99 414/12/12
+f 414/12/12 501/107/99 502/108/100 418/16/16
+f 418/16/16 502/108/100 503/109/101 422/20/20
+f 422/20/20 503/109/101 504/110/102 426/24/24
+f 426/24/24 504/110/102 505/111/103 430/28/28
+f 430/28/28 505/111/103 506/112/104 434/32/32
+f 434/32/32 506/112/104 507/113/105 438/36/36
+f 438/36/36 507/113/105 508/114/106 442/40/40
+f 442/40/40 508/114/106 509/115/107 446/44/44
+f 446/44/44 509/115/107 510/116/108 450/48/48
+f 450/48/48 510/116/108 511/117/109 454/52/52
+f 454/52/52 511/117/109 512/118/110 458/56/56
+f 458/56/56 512/118/110 513/119/111 462/60/60
+f 462/60/60 513/119/111 514/120/112 466/64/64
+f 466/64/64 514/120/112 499/121/97 409/104/7
+f 481/79/79 515/122/113 516/123/114 482/80/80
+f 482/80/80 516/123/114 517/124/115 489/87/87
+f 489/87/87 517/124/115 518/125/116 490/88/88
+f 490/88/88 518/125/116 519/126/117 495/95/93
+f 495/95/93 519/126/117 520/127/118 496/96/94
+f 496/96/94 520/127/118 521/128/119 498/98/96
+f 498/98/96 521/128/119 522/129/120 469/67/67
+f 469/67/67 522/129/120 523/130/121 470/68/68
+f 470/100/68 523/131/121 524/132/122 473/71/71
+f 473/71/71 524/132/122 525/133/123 474/72/72
+f 474/72/72 525/133/123 526/134/124 477/75/75
+f 477/75/75 526/134/124 527/135/125 478/76/76
+f 478/76/76 527/135/125 528/136/126 485/83/83
+f 485/83/83 528/136/126 529/137/127 486/84/84
+f 486/84/84 529/137/127 530/138/128 492/91/90
+f 515/122/113 531/139/129 516/123/114
+f 516/123/114 531/139/129 517/124/115
+f 517/124/115 531/139/129 518/125/116
+f 518/125/116 531/139/129 519/126/117
+f 519/126/117 531/139/129 520/127/118
+f 520/127/118 531/139/129 521/128/119
+f 521/128/119 531/139/129 522/129/120
+f 522/129/120 531/139/129 523/130/121
+f 523/131/121 531/140/129 524/132/122
+f 524/132/122 531/140/129 525/133/123
+f 525/133/123 531/140/129 526/134/124
+f 526/134/124 531/140/129 527/135/125
+f 527/135/125 531/140/129 528/136/126
+f 528/136/126 531/140/129 529/137/127
+f 529/137/127 531/140/129 530/138/128
+f 492/91/90 530/138/128 515/141/113 481/92/79
+f 530/138/128 531/140/129 515/141/113
+f 532/142/65 533/143/66 468/66/66 467/65/65
+f 534/144/69 535/145/70 472/70/70 471/69/69
+f 536/146/73 537/147/74 476/74/74 475/73/73
+f 538/148/77 539/149/78 480/78/78 479/77/77
+f 540/150/81 541/151/82 484/82/82 483/81/81
+f 542/152/85 543/153/130 488/86/86 487/85/85
+f 539/154/78 544/155/89 491/90/89 480/89/78
+f 545/156/91 546/157/92 494/94/92 493/93/91
+f 533/143/66 547/158/95 497/97/95 468/66/66
+f 535/145/70 532/142/65 467/99/65 472/70/70
+f 537/147/74 534/144/69 471/69/69 476/74/74
+f 541/151/82 536/146/73 475/73/73 484/82/82
+f 543/153/130 538/148/77 479/77/77 488/86/86
+f 544/155/89 540/150/81 483/81/81 491/90/89
+f 546/157/92 542/152/85 487/85/85 494/94/92
+f 547/158/95 545/156/91 493/93/91 497/97/95
+f 507/113/105 506/112/104 548/159/66 549/160/65
+f 509/115/107 508/114/106 550/161/70 551/162/69
+f 511/117/109 510/116/108 552/163/74 553/164/73
+f 500/106/98 499/105/97 554/165/78 555/166/77
+f 513/119/111 512/118/110 556/167/82 557/168/81
+f 502/108/100 501/107/99 558/169/86 559/170/85
+f 499/121/97 514/120/112 560/171/89 554/172/78
+f 504/110/102 503/109/101 561/173/92 562/174/91
+f 506/112/104 505/111/103 563/175/95 548/159/66
+f 508/114/106 507/113/105 549/160/65 550/161/70
+f 510/116/108 509/115/107 551/162/69 552/163/74
+f 512/118/110 511/117/109 553/164/73 556/167/82
+f 501/107/99 500/106/98 555/166/77 558/169/86
+f 514/120/112 513/119/111 557/168/81 560/171/89
+f 503/109/101 502/108/100 559/170/85 561/173/92
+f 505/111/103 504/110/102 562/174/91 563/175/95
+f 549/160/65 548/159/66 533/143/66 532/142/65
+f 551/162/69 550/161/70 535/145/70 534/144/69
+f 553/164/73 552/163/74 537/147/74 536/146/73
+f 555/166/77 554/165/78 539/149/78 538/148/77
+f 557/168/81 556/167/82 541/151/82 540/150/81
+f 559/170/85 558/169/86 543/153/130 542/152/85
+f 554/172/78 560/171/89 544/155/89 539/154/78
+f 562/174/91 561/173/92 546/157/92 545/156/91
+f 548/159/66 563/175/95 547/158/95 533/143/66
+f 550/161/70 549/160/65 532/142/65 535/145/70
+f 552/163/74 551/162/69 534/144/69 537/147/74
+f 556/167/82 553/164/73 536/146/73 541/151/82
+f 558/169/86 555/166/77 538/148/77 543/153/130
+f 560/171/89 557/168/81 540/150/81 544/155/89
+f 561/173/92 559/170/85 542/152/85 546/157/92
+f 563/175/95 562/174/91 545/156/91 547/158/95
+g Sphere.001_Sphere.001_base
+f 339/176/131 340/177/132 341/178/133 342/179/134
+f 342/179/134 341/178/133 343/180/135 344/181/136
+f 344/181/136 343/180/135 345/182/137 346/183/138
+f 346/183/138 345/182/137 347/184/139 348/185/140
+f 348/185/140 347/184/139 349/186/141 350/187/142
+f 350/187/142 349/186/141 351/188/143 352/189/144
+f 352/189/144 351/188/143 353/190/145 354/191/146
+f 354/191/146 353/190/145 355/192/147 356/193/148
+f 356/193/148 355/192/147 357/194/149 358/195/150
+f 358/195/150 357/194/149 359/196/151 360/197/152
+f 360/197/152 359/196/151 361/198/153 362/199/154
+f 362/199/154 361/198/153 363/200/155 364/201/156
+f 364/201/156 363/200/155 365/202/157 366/203/158
+f 366/203/158 365/202/157 367/204/159 368/205/160
+f 368/205/160 367/204/159 369/206/161 370/207/162
+f 370/207/162 369/206/161 371/208/163 372/209/164
+f 372/209/164 371/208/163 373/210/165 374/211/166
+f 374/211/166 373/210/165 375/212/167 376/213/168
+f 376/213/168 375/212/167 377/214/169 378/215/170
+f 378/215/170 377/214/169 379/216/171 380/217/172
+f 380/217/172 379/216/171 381/218/173 382/219/174
+f 382/219/174 381/218/173 383/220/175 384/221/176
+f 384/221/176 383/220/175 385/222/177 386/223/178
+f 386/223/178 385/222/177 387/224/179 388/225/180
+f 388/225/180 387/224/179 389/226/181 390/227/182
+f 390/227/182 389/226/181 391/228/183 392/229/184
+f 392/229/184 391/228/183 393/230/185 394/231/186
+f 394/231/186 393/230/185 395/232/187 396/233/188
+f 396/233/188 395/232/187 397/234/189 398/235/190
+f 398/235/190 397/234/189 399/236/191 400/237/192
+f 402/238/193 401/239/194 340/177/132 339/176/131
+f 400/237/192 399/236/191 401/239/194 402/238/193
+f 368/205/160 370/207/162 372/209/164 374/211/166 376/213/168 378/215/170 380/217/172 382/219/174 384/221/176 386/223/178 388/225/180 390/227/182 392/229/184 394/231/186 396/233/188 398/235/190 400/237/192 402/238/193 339/176/131 342/179/134 344/181/136 346/183/138 348/185/140 350/187/142 352/189/144 354/191/146 356/193/148 358/195/150 360/197/152 362/199/154 364/201/156 366/203/158
+f 347/184/139 345/182/137 343/180/135 341/178/133 340/177/132 401/239/194 399/236/191 397/234/189 395/232/187 393/230/185 391/228/183 389/226/181 387/224/179 385/222/177 383/220/175 381/218/173 379/216/171 377/214/169 375/212/167 373/210/165 371/208/163 369/206/161 367/204/159 365/202/157 363/200/155 361/198/153 359/196/151 357/194/149 355/192/147 353/190/145 351/188/143 349/186/141
+g Sphere.001_Sphere.001_neck
+f 27/240/195 28/241/196 29/242/197 30/243/198
+f 30/243/198 29/242/197 31/244/199 32/245/200
+f 32/245/200 31/244/199 33/246/201 34/247/202
+f 34/247/202 33/246/201 35/248/203 36/249/204
+f 36/250/204 35/248/203 37/251/205 38/252/206
+f 38/252/206 37/251/205 39/253/207 40/254/208
+f 42/255/209 41/256/210 28/241/196 27/240/195
+f 40/254/208 39/253/207 41/256/210 42/255/209
+f 43/257/211 27/240/195 30/243/198 44/258/212
+f 44/258/212 30/243/198 32/245/200 45/259/213
+f 45/259/213 32/245/200 34/247/202 46/260/214
+f 46/260/214 34/247/202 36/249/204 47/261/215
+f 47/261/215 36/250/204 38/252/206 48/262/216
+f 48/262/216 38/252/206 40/254/208 49/263/217
+f 50/264/218 42/255/209 27/240/195 43/257/211
+f 49/263/217 40/254/208 42/255/209 50/264/218
+f 51/265/219 52/266/220 53/267/221 54/268/222
+f 54/268/222 53/267/221 55/269/223 56/270/224
+f 56/270/224 55/269/223 57/271/225 58/272/226
+f 58/272/226 57/271/225 59/273/227 60/274/228
+f 60/275/228 59/273/227 61/276/229 62/277/230
+f 62/277/230 61/276/229 63/278/231 64/279/232
+f 66/280/233 65/281/234 52/266/220 51/265/219
+f 64/279/232 63/278/231 65/281/234 66/280/233
+f 67/282/235 51/265/219 54/268/222 68/283/236
+f 68/283/236 54/268/222 56/270/224 69/284/237
+f 69/284/237 56/270/224 58/272/226 70/285/238
+f 70/285/238 58/272/226 60/274/228 71/286/239
+f 71/286/239 60/275/228 62/277/230 72/287/240
+f 72/287/240 62/277/230 64/279/232 73/288/241
+f 74/289/242 66/280/233 51/265/219 67/282/235
+f 73/288/241 64/279/232 66/280/233 74/289/242
+f 75/290/243 76/291/244 77/292/245 78/293/246
+f 78/293/246 77/292/245 79/294/247 80/295/248
+f 80/295/248 79/294/247 81/296/249 82/297/250
+f 82/297/250 81/296/249 83/298/251 84/299/252
+f 84/300/252 83/298/251 85/301/253 86/302/254
+f 86/302/254 85/301/253 87/303/255 88/304/256
+f 90/305/257 89/306/258 76/291/244 75/290/243
+f 88/304/256 87/303/255 89/306/258 90/305/257
+f 91/307/259 75/290/243 78/293/246 92/308/260
+f 92/308/260 78/293/246 80/295/248 93/309/261
+f 93/309/261 80/295/248 82/297/250 94/310/262
+f 94/310/262 82/297/250 84/299/252 95/311/263
+f 95/311/263 84/300/252 86/302/254 96/312/264
+f 96/312/264 86/302/254 88/304/256 97/313/265
+f 98/314/266 90/305/257 75/290/243 91/307/259
+f 97/313/265 88/304/256 90/305/257 98/314/266
+f 99/315/267 100/316/268 101/317/269 102/318/270
+f 102/318/270 101/317/269 103/319/271 104/320/272
+f 104/320/272 103/319/271 105/321/273 106/322/274
+f 106/322/274 105/321/273 107/323/275 108/324/276
+f 108/325/276 107/323/275 109/326/277 110/327/278
+f 110/327/278 109/326/277 111/328/279 112/329/280
+f 114/330/281 113/331/282 100/316/268 99/315/267
+f 112/329/280 111/328/279 113/331/282 114/330/281
+f 115/332/283 99/315/267 102/318/270 116/333/284
+f 116/333/284 102/318/270 104/320/272 117/334/285
+f 117/334/285 104/320/272 106/322/274 118/335/286
+f 118/335/286 106/322/274 108/324/276 119/336/287
+f 119/336/287 108/325/276 110/327/278 120/337/288
+f 120/337/288 110/327/278 112/329/280 121/338/289
+f 122/339/290 114/330/281 99/315/267 115/332/283
+f 121/338/289 112/329/280 114/330/281 122/339/290
+f 123/340/291 124/341/292 125/342/293 126/343/294
+f 126/343/294 125/342/293 127/344/295 128/345/296
+f 128/345/296 127/344/295 129/346/297 130/347/298
+f 130/347/298 129/346/297 131/348/299 132/349/300
+f 132/350/300 131/348/299 133/351/301 134/352/302
+f 134/352/302 133/351/301 135/353/303 136/354/304
+f 138/355/305 137/356/306 124/341/292 123/340/291
+f 136/354/304 135/353/303 137/356/306 138/355/305
+f 139/357/307 123/340/291 126/343/294 140/358/308
+f 140/358/308 126/343/294 128/345/296 141/359/309
+f 141/359/309 128/345/296 130/347/298 142/360/310
+f 142/360/310 130/347/298 132/349/300 143/361/311
+f 143/361/311 132/350/300 134/352/302 144/362/312
+f 144/362/312 134/352/302 136/354/304 145/363/313
+f 146/364/314 138/355/305 123/340/291 139/357/307
+f 145/363/313 136/354/304 138/355/305 146/364/314
+f 147/365/315 148/366/316 149/367/317 150/368/318
+f 150/368/318 149/367/317 151/369/319 152/370/320
+f 152/370/320 151/369/319 153/371/321 154/372/322
+f 154/372/322 153/371/321 155/373/323 156/374/324
+f 156/375/324 155/373/323 157/376/325 158/377/326
+f 158/377/326 157/376/325 159/378/327 160/379/328
+f 162/380/329 161/381/330 148/366/316 147/365/315
+f 160/379/328 159/378/327 161/381/330 162/380/329
+f 163/382/331 147/365/315 150/368/318 164/383/332
+f 164/383/332 150/368/318 152/370/320 165/384/333
+f 165/384/333 152/370/320 154/372/322 166/385/334
+f 166/385/334 154/372/322 156/374/324 167/386/335
+f 167/386/335 156/375/324 158/377/326 168/387/336
+f 168/387/336 158/377/326 160/379/328 169/388/337
+f 170/389/338 162/380/329 147/365/315 163/382/331
+f 169/388/337 160/379/328 162/380/329 170/389/338
+f 171/390/339 172/391/340 173/392/341 174/393/342
+f 174/393/342 173/392/341 175/394/343 176/395/344
+f 176/395/344 175/394/343 177/396/345 178/397/346
+f 178/397/346 177/396/345 179/398/347 180/399/348
+f 180/400/348 179/398/347 181/401/349 182/402/350
+f 182/402/350 181/401/349 183/403/351 184/404/352
+f 186/405/353 185/406/354 172/391/340 171/390/339
+f 184/404/352 183/403/351 185/406/354 186/405/353
+f 187/407/355 171/390/339 174/393/342 188/408/356
+f 188/408/356 174/393/342 176/395/344 189/409/357
+f 189/409/357 176/395/344 178/397/346 190/410/358
+f 190/410/358 178/397/346 180/399/348 191/411/359
+f 191/411/359 180/400/348 182/402/350 192/412/360
+f 192/412/360 182/402/350 184/404/352 193/413/361
+f 194/414/362 186/405/353 171/390/339 187/407/355
+f 193/413/361 184/404/352 186/405/353 194/414/362
+f 195/415/363 196/416/364 197/417/365 198/418/366
+f 198/418/366 197/417/365 199/419/367 200/420/368
+f 200/420/368 199/419/367 201/421/369 202/422/370
+f 202/422/370 201/421/369 203/423/371 204/424/372
+f 204/425/372 203/423/371 205/426/373 206/427/374
+f 206/427/374 205/426/373 207/428/375 208/429/376
+f 210/430/377 209/431/378 196/416/364 195/415/363
+f 208/429/376 207/428/375 209/431/378 210/430/377
+f 211/432/379 195/415/363 198/418/366 212/433/380
+f 212/433/380 198/418/366 200/420/368 213/434/381
+f 213/434/381 200/420/368 202/422/370 214/435/382
+f 214/435/382 202/422/370 204/424/372 215/436/383
+f 215/436/383 204/425/372 206/427/374 216/437/384
+f 216/437/384 206/427/374 208/429/376 217/438/385
+f 218/439/386 210/430/377 195/415/363 211/432/379
+f 217/438/385 208/429/376 210/430/377 218/439/386
+f 219/440/387 220/441/388 221/442/389 222/443/390
+f 222/443/390 221/442/389 223/444/391 224/445/392
+f 224/445/392 223/444/391 225/446/393 226/447/394
+f 226/447/394 225/446/393 227/448/395 228/449/396
+f 228/450/396 227/448/395 229/451/397 230/452/398
+f 230/452/398 229/451/397 231/453/399 232/454/400
+f 234/455/401 233/456/402 220/441/388 219/440/387
+f 232/454/400 231/453/399 233/456/402 234/455/401
+f 235/457/403 219/440/387 222/443/390 236/458/404
+f 236/458/404 222/443/390 224/445/392 237/459/405
+f 237/459/405 224/445/392 226/447/394 238/460/406
+f 238/460/406 226/447/394 228/449/396 239/461/407
+f 239/461/407 228/450/396 230/452/398 240/462/408
+f 240/462/408 230/452/398 232/454/400 241/463/409
+f 242/464/410 234/455/401 219/440/387 235/457/403
+f 241/463/409 232/454/400 234/455/401 242/464/410
+f 243/465/411 244/466/412 245/467/413 246/468/414
+f 246/468/414 245/467/413 247/469/415 248/470/416
+f 248/470/416 247/469/415 249/471/417 250/472/418
+f 250/472/418 249/471/417 251/473/419 252/474/420
+f 252/475/420 251/473/419 253/476/421 254/477/422
+f 254/477/422 253/476/421 255/478/423 256/479/424
+f 258/480/425 257/481/426 244/466/412 243/465/411
+f 256/479/424 255/478/423 257/481/426 258/480/425
+f 259/482/427 243/465/411 246/468/414 260/483/428
+f 260/483/428 246/468/414 248/470/416 261/484/429
+f 261/484/429 248/470/416 250/472/418 262/485/430
+f 262/485/430 250/472/418 252/474/420 263/486/431
+f 263/486/431 252/475/420 254/477/422 264/487/432
+f 264/487/432 254/477/422 256/479/424 265/488/433
+f 266/489/434 258/480/425 243/465/411 259/482/427
+f 265/488/433 256/479/424 258/480/425 266/489/434
+f 267/490/435 268/491/436 269/492/437 270/493/438
+f 270/493/438 269/492/437 271/494/439 272/495/440
+f 272/495/440 271/494/439 273/496/441 274/497/442
+f 274/497/442 273/496/441 275/498/443 276/499/444
+f 276/500/444 275/498/443 277/501/445 278/502/446
+f 278/502/446 277/501/445 279/503/447 280/504/448
+f 282/505/449 281/506/450 268/491/436 267/490/435
+f 280/504/448 279/503/447 281/506/450 282/505/449
+f 283/507/451 267/490/435 270/493/438 284/508/452
+f 284/508/452 270/493/438 272/495/440 285/509/453
+f 285/509/453 272/495/440 274/497/442 286/510/454
+f 286/510/454 274/497/442 276/499/444 287/511/455
+f 287/511/455 276/500/444 278/502/446 288/512/456
+f 288/512/456 278/502/446 280/504/448 289/513/457
+f 290/514/458 282/505/449 267/490/435 283/507/451
+f 289/513/457 280/504/448 282/505/449 290/514/458
+f 291/515/459 292/516/460 293/517/461 294/518/462
+f 294/518/462 293/517/461 295/519/463 296/520/464
+f 296/520/464 295/519/463 297/521/465 298/522/466
+f 298/522/466 297/521/465 299/523/467 300/524/468
+f 300/525/468 299/523/467 301/526/469 302/527/470
+f 302/527/470 301/526/469 303/528/471 304/529/472
+f 306/530/473 305/531/474 292/516/460 291/515/459
+f 304/529/472 303/528/471 305/531/474 306/530/473
+f 307/532/475 291/515/459 294/518/462 308/533/476
+f 308/533/476 294/518/462 296/520/464 309/534/477
+f 309/534/477 296/520/464 298/522/466 310/535/478
+f 310/535/478 298/522/466 300/524/468 311/536/479
+f 311/536/479 300/525/468 302/527/470 312/537/480
+f 312/537/480 302/527/470 304/529/472 313/538/481
+f 314/539/482 306/530/473 291/515/459 307/532/475
+f 313/538/481 304/529/472 306/530/473 314/539/482
+f 315/540/483 316/541/484 317/542/485 318/543/486
+f 318/543/486 317/542/485 319/544/487 320/545/488
+f 320/545/488 319/544/487 321/546/489 322/547/490
+f 322/547/490 321/546/489 323/548/491 324/549/492
+f 324/549/492 323/548/491 325/550/493 326/551/494
+f 326/551/494 325/550/493 327/552/495 328/553/496
+f 330/554/497 329/555/498 316/541/484 315/540/483
+f 328/553/496 327/552/495 329/555/498 330/554/497
+f 331/556/499 315/540/483 318/543/486 332/557/500
+f 332/557/500 318/543/486 320/545/488 333/558/501
+f 333/558/501 320/545/488 322/547/490 334/559/502
+f 334/559/502 322/547/490 324/549/492 335/560/503
+f 335/560/503 324/549/492 326/551/494 336/561/504
+f 336/561/504 326/551/494 328/553/496 337/562/505
+f 338/563/506 330/554/497 315/540/483 331/556/499
+f 337/562/505 328/553/496 330/554/497 338/563/506
+f 196/416/364 209/431/378 207/428/375 205/426/373 203/423/371 201/421/369 199/419/367 197/417/365
+f 157/376/325 155/373/323 153/371/321 151/369/319 149/367/317 148/366/316 161/381/330 159/378/327
+f 43/257/211 44/258/212 45/259/213 46/260/214 47/261/215 48/262/216 49/263/217 50/264/218
+f 325/550/493 323/548/491 321/546/489 319/544/487 317/542/485 316/541/484 329/555/498 327/552/495
+f 77/292/245 76/291/244 89/306/258 87/303/255 85/301/253 83/298/251 81/296/249 79/294/247
+f 314/539/482 307/532/475 308/533/476 309/534/477 310/535/478 311/536/479 312/537/480 313/538/481
+f 238/460/406 239/461/407 240/462/408 241/463/409 242/464/410 235/457/403 236/458/404 237/459/405
+f 244/466/412 257/481/426 255/478/423 253/476/421 251/473/419 249/471/417 247/469/415 245/467/413
+f 338/563/506 331/556/499 332/557/500 333/558/501 334/559/502 335/560/503 336/561/504 337/562/505
+f 67/282/235 68/283/236 69/284/237 70/285/238 71/286/239 72/287/240 73/288/241 74/289/242
+f 229/451/397 227/448/395 225/446/393 223/444/391 221/442/389 220/441/388 233/456/402 231/453/399
+f 293/517/461 292/516/460 305/531/474 303/528/471 301/526/469 299/523/467 297/521/465 295/519/463
+f 289/513/457 290/514/458 283/507/451 284/508/452 285/509/453 286/510/454 287/511/455 288/512/456
+f 119/336/287 120/337/288 121/338/289 122/339/290 115/332/283 116/333/284 117/334/285 118/335/286
+f 107/323/275 105/321/273 103/319/271 101/317/269 100/316/268 113/331/282 111/328/279 109/326/277
+f 275/498/443 273/496/441 271/494/439 269/492/437 268/491/436 281/506/450 279/503/447 277/501/445
+f 124/341/292 137/356/306 135/353/303 133/351/301 131/348/299 129/346/297 127/344/295 125/342/293
+f 193/413/361 194/414/362 187/407/355 188/408/356 189/409/357 190/410/358 191/411/359 192/412/360
+f 52/266/220 65/281/234 63/278/231 61/276/229 59/273/227 57/271/225 55/269/223 53/267/221
+f 211/432/379 212/433/380 213/434/381 214/435/382 215/436/383 216/437/384 217/438/385 218/439/386
+f 166/385/334 167/386/335 168/387/336 169/388/337 170/389/338 163/382/331 164/383/332 165/384/333
+f 179/398/347 177/396/345 175/394/343 173/392/341 172/391/340 185/406/354 183/403/351 181/401/349
+f 91/307/259 92/308/260 93/309/261 94/310/262 95/311/263 96/312/264 97/313/265 98/314/266
+f 144/362/312 145/363/313 146/364/314 139/357/307 140/358/308 141/359/309 142/360/310 143/361/311
+f 262/485/430 263/486/431 264/487/432 265/488/433 266/489/434 259/482/427 260/483/428 261/484/429
+f 41/256/210 39/253/207 37/251/205 35/248/203 33/246/201 31/244/199 29/242/197 28/241/196
+g Sphere.001_Sphere.001_bulb
+f 1/564/507 2/565/508 3/566/509 4/567/510
+f 2/565/508 5/568/511 6/569/512 3/566/509
+f 4/567/510 3/566/509 7/570/392 8/571/513
+f 3/566/509 6/569/512 9/572/514 7/570/392
+f 8/571/513 7/570/392 10/573/515 11/574/516
+f 7/570/392 9/572/514 12/575/517 10/573/515
+f 11/574/516 10/573/515 13/576/518 14/577/519
+f 10/573/515 12/575/517 15/578/520 13/576/518
+f 14/577/519 13/576/518 16/579/521 17/580/522
+f 13/576/518 15/578/520 18/581/523 16/579/521
+f 17/580/522 16/579/521 19/582/524 20/583/525
+f 16/579/521 18/581/523 21/584/526 19/582/524
+f 20/583/525 19/582/524 22/585/527 23/586/528
+f 19/582/524 21/584/526 24/587/529 22/585/527
+f 25/588/530 1/564/507 4/567/510
+f 5/568/511 26/589/531 6/569/512
+f 25/588/530 4/567/510 8/571/513
+f 6/569/512 26/589/531 9/572/514
+f 25/588/530 8/571/513 11/574/516
+f 9/572/514 26/589/531 12/575/517
+f 25/588/530 11/574/516 14/577/519
+f 12/575/517 26/589/531 15/578/520
+f 25/588/530 14/577/519 17/580/522
+f 15/578/520 26/589/531 18/581/523
+f 25/588/530 17/580/522 20/583/525
+f 18/581/523 26/589/531 21/584/526
+f 25/588/530 20/583/525 23/586/528
+f 21/584/526 26/589/531 24/587/529
+f 23/586/528 1/590/507 25/588/530
+f 2/591/508 1/590/507 23/586/528 22/585/527
+f 22/585/527 24/587/529 5/568/511 2/591/508
+f 24/587/529 26/589/531 5/568/511
diff --git a/homedecor/models/homedecor_kitchen_chair.obj b/homedecor/models/homedecor_kitchen_chair.obj
index 09fca5f..52bd58b 100644
--- a/homedecor/models/homedecor_kitchen_chair.obj
+++ b/homedecor/models/homedecor_kitchen_chair.obj
@@ -1,85 +1,85 @@
-# Blender v2.73 (sub 0) OBJ File: 'kitchen-chair.blend'
+# Blender v2.72 (sub 0) OBJ File: 'kitchen-chair.blend'
# www.blender.org
o Cylinder
-v 0.312500 -0.125000 0.187500
-v -0.312500 -0.125000 0.187500
-v 0.312500 -0.500000 -0.312500
-v 0.312500 -0.500000 -0.187500
-v 0.187500 -0.500000 -0.187500
-v 0.187500 -0.500000 -0.312500
-v 0.312500 -0.125000 -0.312500
-v 0.312500 -0.125000 -0.187500
-v 0.187500 -0.125000 -0.187500
-v 0.187500 -0.125000 -0.312500
-v -0.187500 -0.500000 -0.312500
-v -0.187500 -0.500000 -0.187500
-v -0.312500 -0.500000 -0.187500
-v -0.187500 -0.125000 -0.312500
-v -0.187500 -0.125000 -0.187500
-v -0.312500 -0.125000 -0.187500
-v -0.312500 -0.125000 -0.312500
-v 0.312500 -0.062500 0.187500
-v 0.312500 -0.062500 -0.312500
-v -0.312500 -0.062500 -0.312500
-v 0.312500 0.000000 0.187500
-v -0.312500 0.000000 0.187500
-v 0.312500 0.000000 -0.312500
-v -0.312500 0.000000 -0.312500
-v 0.312500 0.500000 0.312500
-v 0.312500 0.500000 0.187500
-v 0.187500 0.500000 0.187500
-v 0.187500 0.500000 0.312500
-v -0.187500 0.500000 0.312500
-v -0.187500 0.500000 0.187500
-v -0.312500 0.500000 0.187500
-v -0.312500 0.500000 0.312500
-v -0.312500 -0.062500 0.187500
-v 0.187500 0.437500 0.257812
-v -0.187500 0.437500 0.257813
-v 0.187500 0.062500 0.257812
-v -0.187500 0.062500 0.257813
-v 0.187500 0.437500 0.242187
-v -0.187500 0.437500 0.242187
-v 0.187500 0.062500 0.242188
-v -0.187500 0.062500 0.242188
-v -0.187500 -0.500000 -0.312500
-v -0.187500 -0.500000 -0.187500
-v -0.312500 -0.500000 -0.187500
-v -0.312500 -0.500000 -0.312500
-v -0.187500 -0.125000 -0.312500
-v -0.312500 -0.125000 -0.187500
-v -0.312500 -0.125000 -0.312500
-v 0.312500 -0.500000 0.187500
-v 0.187500 -0.500000 0.312500
-v 0.187500 -0.500000 0.187500
-v 0.312500 0.500000 0.187500
-v 0.187500 0.500000 0.312500
-v 0.187500 0.500000 0.187500
-v -0.187500 0.500000 0.187500
-v -0.312500 -0.500000 0.187500
-v 0.312500 0.500000 0.312500
-v 0.312500 0.500000 0.187500
-v 0.187500 -0.500000 0.187500
-v 0.187500 -0.500000 0.312500
-v 0.312500 -0.500000 0.312500
-v 0.312500 -0.500000 0.187500
-v -0.312500 -0.500000 0.312500
-v -0.187500 -0.500000 0.312500
-v -0.187500 -0.500000 0.187500
-v 0.187500 0.500000 0.312500
-v -0.187500 0.500000 0.312500
-v -0.312500 0.500000 0.312500
-v -0.312500 0.500000 0.187500
-v -0.187500 -0.125000 0.187500
-v -0.187500 0.000000 0.187500
-v 0.187500 -0.125000 0.187500
-v 0.187500 0.000000 0.187500
-v -0.187500 -0.125000 0.312500
-v -0.187500 0.000000 0.312500
-v 0.187500 -0.125000 0.312500
-v 0.187500 -0.062500 0.312500
-v 0.187500 0.000000 0.312500
-v -0.187500 -0.062500 0.312500
+v -0.187500 -0.312500 -0.125000
+v -0.187500 0.312500 -0.125000
+v 0.312500 -0.312500 -0.500000
+v 0.187500 -0.312500 -0.500000
+v 0.187500 -0.187500 -0.500000
+v 0.312500 -0.187500 -0.500000
+v 0.312500 -0.312500 -0.125000
+v 0.187500 -0.312500 -0.125000
+v 0.187500 -0.187500 -0.125000
+v 0.312500 -0.187500 -0.125000
+v 0.312500 0.187500 -0.500000
+v 0.187500 0.187500 -0.500000
+v 0.187500 0.312500 -0.500000
+v 0.312500 0.187500 -0.125000
+v 0.187500 0.187500 -0.125000
+v 0.187500 0.312500 -0.125000
+v 0.312500 0.312500 -0.125000
+v -0.187500 -0.312500 -0.062500
+v 0.312500 -0.312500 -0.062500
+v 0.312500 0.312500 -0.062500
+v -0.187500 -0.312500 0.000000
+v -0.187500 0.312500 0.000000
+v 0.312500 -0.312500 0.000000
+v 0.312500 0.312500 0.000000
+v -0.312500 -0.312500 0.500000
+v -0.187500 -0.312500 0.500000
+v -0.187500 -0.187500 0.500000
+v -0.312500 -0.187500 0.500000
+v -0.312500 0.187500 0.500000
+v -0.187500 0.187500 0.500000
+v -0.187500 0.312500 0.500000
+v -0.312500 0.312500 0.500000
+v -0.187500 0.312500 -0.062500
+v -0.257812 -0.187500 0.437500
+v -0.257813 0.187500 0.437500
+v -0.257812 -0.187500 0.062500
+v -0.257813 0.187500 0.062500
+v -0.242187 -0.187500 0.437500
+v -0.242187 0.187500 0.437500
+v -0.242188 -0.187500 0.062500
+v -0.242188 0.187500 0.062500
+v 0.312500 0.187500 -0.500000
+v 0.187500 0.187500 -0.500000
+v 0.187500 0.312500 -0.500000
+v 0.312500 0.312500 -0.500000
+v 0.312500 0.187500 -0.125000
+v 0.187500 0.312500 -0.125000
+v 0.312500 0.312500 -0.125000
+v -0.187500 -0.312500 -0.500000
+v -0.312500 -0.187500 -0.500000
+v -0.187500 -0.187500 -0.500000
+v -0.187500 -0.312500 0.500000
+v -0.312500 -0.187500 0.500000
+v -0.187500 -0.187500 0.500000
+v -0.187500 0.187500 0.500000
+v -0.187500 0.312500 -0.500000
+v -0.312500 -0.312500 0.500000
+v -0.187500 -0.312500 0.500000
+v -0.187500 -0.187500 -0.500000
+v -0.312500 -0.187500 -0.500000
+v -0.312500 -0.312500 -0.500000
+v -0.187500 -0.312500 -0.500000
+v -0.312500 0.312500 -0.500000
+v -0.312500 0.187500 -0.500000
+v -0.187500 0.187500 -0.500000
+v -0.312500 -0.187500 0.500000
+v -0.312500 0.187500 0.500000
+v -0.312500 0.312500 0.500000
+v -0.187500 0.312500 0.500000
+v -0.187500 0.187500 -0.125000
+v -0.187500 0.187500 0.000000
+v -0.187500 -0.187500 -0.125000
+v -0.187500 -0.187500 0.000000
+v -0.312500 0.187500 -0.125000
+v -0.312500 0.187500 0.000000
+v -0.312500 -0.187500 -0.125000
+v -0.312500 -0.187500 -0.062500
+v -0.312500 -0.187500 0.000000
+v -0.312500 0.187500 -0.062500
vt 0.125000 0.375000
vt 0.625000 0.375000
vt 0.625000 0.437500
@@ -155,12 +155,12 @@ vt 0.750000 0.750000
vt 0.250000 0.750000
vt 0.312500 0.625000
vt 0.687500 0.625000
+vn 0.000000 -1.000000 0.000000
vn 1.000000 0.000000 0.000000
+vn -1.000000 -0.000000 0.000000
+vn -0.000000 1.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 0.000000 1.000000
-vn -1.000000 0.000000 0.000000
-vn 0.000000 -1.000000 0.000000
-vn 0.000000 1.000000 0.000000
g Cylinder_Cylinder_wood
s off
f 1/1/1 7/2/1 19/3/1 18/4/1
diff --git a/homedecor/models/homedecor_toilet_open.obj b/homedecor/models/homedecor_toilet_open.obj
index ec99db9..6fad0f9 100644
--- a/homedecor/models/homedecor_toilet_open.obj
+++ b/homedecor/models/homedecor_toilet_open.obj
@@ -1,4 +1,4 @@
-# Blender v2.73 (sub 0) OBJ File: 'toilet.blend'
+# Blender v2.72 (sub 0) OBJ File: 'toilet.blend'
# www.blender.org
o Cylinder
v -0.321018 -0.000000 -0.181555
@@ -297,10 +297,6 @@ v 0.159409 0.024998 0.233177
v 0.058534 0.024998 0.274477
v -0.058533 0.024998 0.274477
v -0.158176 0.024998 0.233177
-v 0.000001 -0.186241 -0.072908
-v 0.000001 -0.500000 -0.079917
-v 0.000001 0.394161 0.240021
-v 0.000001 0.397872 0.215146
v 0.321020 0.024999 -0.023415
v 0.272148 0.024999 0.122688
v 0.127875 0.024999 0.333889
@@ -363,7 +359,6 @@ v 0.390808 0.505413 0.245317
v 0.390808 0.505413 0.229707
v 0.397872 0.490455 0.245317
v 0.397872 0.490455 0.229707
-v 0.333523 0.484458 0.229707
v 0.187309 -0.500000 0.343750
v 0.236274 -0.066406 0.343750
v 0.194173 -0.500000 0.331862
@@ -431,9 +426,6 @@ v 0.226117 -0.032177 0.316182
v 0.078755 0.023276 0.222272
v -0.102187 0.037142 0.226624
v -0.102184 0.023276 0.222272
-vt 0.059782 0.588807
-vt 0.014347 0.454314
-vt 0.312793 0.397118
vt 0.125000 0.875000
vt 0.125000 0.937500
vt 0.062500 0.937500
@@ -466,11 +458,11 @@ vt 0.312500 0.937500
vt 0.312500 0.875000
vt 0.250000 0.937500
vt 0.250000 0.875000
-vt 0.625421 0.459078
-vt 0.577814 0.598166
-vt 0.312711 0.399776
vt 0.187500 0.875000
vt 0.187500 0.937500
+vt 0.143737 0.691744
+vt 0.059782 0.588807
+vt 0.014347 0.454314
vt 0.014347 0.308739
vt 0.059782 0.186747
vt 0.143736 0.103599
@@ -484,7 +476,9 @@ vt 0.565803 0.588807
vt 0.481849 0.691744
vt 0.372157 0.747454
vt 0.253428 0.747454
-vt 0.143737 0.691744
+vt 0.625421 0.308530
+vt 0.625421 0.459078
+vt 0.577814 0.598166
vt 0.489847 0.704620
vt 0.374913 0.762232
vt 0.250509 0.762232
@@ -498,7 +492,6 @@ vt 0.250509 0.058275
vt 0.374913 0.058275
vt 0.489847 0.095956
vt 0.577814 0.181944
-vt 0.625421 0.308530
vt 0.125000 0.625000
vt 0.187500 0.625000
vt 0.187500 0.562500
@@ -734,9 +727,9 @@ vt 0.625000 1.000000
vt 0.312500 1.000000
vt -0.000000 1.000000
vt 0.250000 1.000000
+vt 0.321968 0.043359
vt 0.453342 0.043359
vt 0.574716 0.083960
-vt 0.387654 0.310044
vt 0.667611 0.158980
vt 0.717886 0.256998
vt 0.717886 0.363091
@@ -750,7 +743,6 @@ vt 0.057422 0.363091
vt 0.057422 0.256998
vt 0.107697 0.158980
vt 0.200593 0.083960
-vt 0.321968 0.043359
vt 0.187500 1.000000
vt 0.318503 0.356727
vt 0.463285 0.308296
@@ -783,8 +775,8 @@ vt 0.874875 1.000000
vt 0.125125 1.000000
vt 1.000000 0.999915
vt 0.737842 0.999915
+vt 0.667776 0.685072
vt 0.566203 0.718246
-vt 0.511231 0.500340
vt 0.456260 0.718246
vt 0.354686 0.685072
vt 0.276945 0.623774
@@ -799,7 +791,6 @@ vt 0.745518 0.376907
vt 0.787591 0.456996
vt 0.787591 0.543684
vt 0.745518 0.623774
-vt 0.667776 0.685072
vt 0.937500 0.500000
vt 1.000000 0.500000
vt 0.625000 0.500000
@@ -826,20 +817,19 @@ vt 0.502105 0.751867
vt 0.502105 0.798250
vt -0.000000 0.375000
vt 0.062500 0.375000
-vt 0.187631 0.949175
-vt 0.126452 0.944859
+vt 0.114257 0.890752
vt 0.160779 0.894034
+vt 0.187631 0.949175
vt 0.153304 1.000000
vt 0.092124 0.995684
vt 0.065272 0.940543
-vt 0.114257 0.890752
vt 0.074372 0.802482
-vt 0.111548 0.784925
vt 0.091536 0.777070
+vt 0.111548 0.784925
+vt 0.167419 0.769792
+vt 0.164709 0.875618
vt 0.144697 0.883474
vt 0.127533 0.858062
-vt 0.164709 0.875618
-vt 0.167419 0.769792
vt 0.118434 0.720001
vt 0.375000 0.375000
vt 0.250000 0.375000
@@ -890,866 +880,366 @@ vt 0.564809 0.536357
vt 0.564809 0.582956
vt 0.498947 0.751867
vt 0.498947 0.798250
-vn -0.460200 0.254900 0.850400
-vn -0.523300 0.086100 0.847800
-vn 0.000000 0.008000 0.999900
-vn -0.876000 0.152300 -0.457700
-vn -0.777100 0.442000 -0.448000
-vn -0.331200 0.411000 0.849300
-vn -0.555200 0.706100 -0.439400
-vn -0.123800 0.516200 0.847500
-vn -0.205200 0.877700 -0.432900
-vn 0.123800 0.516200 0.847500
-vn 0.205200 0.877700 -0.432900
-vn 0.331200 0.411000 0.849300
-vn 0.555200 0.706100 -0.439400
-vn 0.460200 0.254900 0.850400
-vn 0.777100 0.442000 -0.448000
-vn 0.523300 0.086100 0.847800
-vn 0.876000 0.152300 -0.457700
-vn 0.538000 -0.099400 0.837000
-vn 0.871500 -0.150000 -0.466800
-vn 0.480800 -0.319800 0.816400
-vn 0.741400 -0.469000 -0.479800
-vn 0.310100 -0.526700 0.791500
-vn 0.459800 -0.728500 -0.507700
-vn 0.095800 -0.614600 0.783000
-vn 0.137500 -0.824900 -0.548200
-vn -0.095800 -0.614600 0.783000
-vn -0.137500 -0.824900 -0.548200
-vn -0.310100 -0.526700 0.791500
-vn -0.459800 -0.728500 -0.507700
-vn -0.480800 -0.319800 0.816400
-vn -0.741400 -0.469000 -0.479800
-vn 0.000000 -0.008000 -0.999900
-vn -0.871500 -0.150000 -0.466800
-vn -0.538000 -0.099400 0.837000
-vn 0.588400 0.153900 -0.793700
-vn 0.881700 0.088900 -0.463300
-vn 0.889000 0.000000 -0.457900
-vn 0.616300 0.000000 -0.787500
-vn -0.621300 -0.130700 -0.772600
-vn -0.630900 0.000000 -0.775900
-vn -0.234800 0.000000 -0.972100
-vn -0.230000 -0.143400 -0.962500
-vn 0.234800 0.000000 -0.972100
-vn 0.230000 -0.143400 -0.962500
-vn 0.630900 0.000000 -0.775900
-vn 0.621300 -0.130700 -0.772600
-vn -0.882800 0.089900 -0.461000
-vn -0.589500 0.155300 -0.792700
-vn -0.617100 0.000000 -0.786900
-vn -0.890500 0.000000 -0.455100
-vn 0.877100 0.000000 -0.480400
-vn 0.868700 -0.112500 -0.482300
-vn -0.868700 -0.112500 -0.482300
-vn -0.877100 0.000000 -0.480400
-vn -0.981700 -0.095500 -0.164600
-vn -0.987000 0.000000 -0.160700
-vn 0.981700 -0.095500 -0.164600
-vn 0.987000 0.000000 -0.160700
-vn 0.984200 -0.082400 0.156900
-vn 0.730400 0.672600 0.118900
-vn 0.890400 -0.088200 0.446500
-vn 0.658800 0.677300 0.327300
-vn 0.763500 -0.282400 0.580800
-vn 0.590900 0.715400 0.372800
-vn 0.400800 -0.408100 0.820200
-vn 0.395200 0.610200 0.686600
-vn -0.400800 -0.408100 0.820200
-vn -0.395200 0.610200 0.686600
-vn 0.201800 -0.507400 -0.837700
-vn -0.201800 -0.507400 -0.837700
-vn 0.788700 -0.433800 -0.435500
-vn 0.908700 -0.389100 -0.151000
-vn 0.696300 -0.708800 -0.112300
-vn 0.575900 -0.756300 -0.310300
-vn -0.890400 -0.088200 0.446500
-vn -0.984200 -0.082400 0.156900
-vn -0.923200 -0.354300 0.148500
-vn -0.829900 -0.349800 0.434600
-vn 0.652300 -0.428900 0.624900
-vn 0.829900 -0.349800 0.434600
-vn -0.552500 -0.478300 -0.682500
-vn -0.788700 -0.433800 -0.435500
-vn -0.763500 -0.282400 0.580800
-vn -0.652300 -0.428900 0.624900
-vn -0.260300 -0.671100 0.694100
-vn 0.552500 -0.478300 -0.682500
-vn -0.908700 -0.389100 -0.151000
-vn 0.923200 -0.354300 0.148500
-vn 0.260300 -0.671100 0.694100
-vn 0.878400 -0.461000 -0.126000
-vn 0.891000 -0.424900 0.159600
-vn 0.930000 0.329900 0.162100
-vn 0.922400 0.361300 -0.136400
-vn 0.385400 -0.797500 -0.464200
-vn 0.136700 -0.822100 -0.552600
-vn -0.696300 -0.708800 -0.112300
-vn -0.738100 -0.664200 0.118100
-vn -0.136700 -0.822100 -0.552600
-vn -0.385400 -0.797500 -0.464200
-vn -0.682600 -0.632100 0.366700
-vn -0.501000 -0.619600 0.604300
-vn -0.575900 -0.756300 -0.310300
-vn -0.186600 -0.618900 0.763000
-vn 0.186600 -0.618900 0.763000
-vn 0.501000 -0.619600 0.604300
-vn 0.682600 -0.632100 0.366700
-vn 0.738100 -0.664200 0.118100
-vn 0.830200 0.311300 0.462400
-vn 0.791700 0.429200 0.434800
-vn 0.872400 0.467300 0.143100
-vn 0.542000 -0.540100 -0.643800
-vn 0.767000 -0.501500 -0.400300
-vn 0.809800 0.403200 -0.426200
-vn 0.574200 0.448700 -0.684700
-vn -0.199300 -0.565900 -0.800000
-vn 0.199300 -0.565900 -0.800000
-vn 0.211300 0.481500 -0.850600
-vn -0.211300 0.481500 -0.850600
-vn -0.800000 -0.397200 0.449700
-vn -0.891000 -0.424900 0.159600
-vn -0.930000 0.329900 0.162100
-vn -0.830200 0.311300 0.462400
-vn -0.767000 -0.501500 -0.400300
-vn -0.542000 -0.540100 -0.643800
-vn -0.574200 0.448700 -0.684700
-vn -0.809800 0.403200 -0.426200
-vn -0.216500 -0.374000 0.901800
-vn -0.579500 -0.380400 0.720800
-vn -0.598400 0.305000 0.740800
-vn -0.222800 0.306000 0.925600
-vn 0.579500 -0.380400 0.720800
-vn 0.216500 -0.374000 0.901800
-vn 0.222800 0.306000 0.925600
-vn 0.598400 0.305000 0.740800
-vn 0.800000 -0.397200 0.449700
-vn -0.878400 -0.461000 -0.126000
-vn -0.922400 0.361300 -0.136400
-vn 0.574800 0.408700 0.708800
-vn 0.625300 0.153100 0.765200
-vn 0.867400 0.164800 0.469500
-vn 0.842700 0.521000 -0.135500
-vn 0.713900 0.583300 -0.387400
-vn 0.487100 0.641800 -0.592300
-vn 0.174600 0.678600 -0.713400
-vn -0.842700 0.521000 -0.135500
-vn -0.872400 0.467300 0.143100
-vn -0.174600 0.678600 -0.713400
-vn -0.487100 0.641800 -0.592300
-vn -0.791700 0.429200 0.434800
-vn -0.574800 0.408700 0.708800
-vn -0.713900 0.583300 -0.387400
-vn -0.214400 0.402100 0.890100
-vn 0.214400 0.402100 0.890100
-vn 0.232700 0.148500 0.961100
-vn 0.176800 -0.657900 0.732000
-vn 0.472100 -0.663300 0.580600
-vn 0.971100 0.185200 0.150600
-vn 0.962600 0.213700 -0.166500
-vn 0.844500 0.247300 -0.474900
-vn 0.598400 0.279100 -0.751000
-vn 0.220200 0.298900 -0.928500
-vn -0.220200 0.298900 -0.928500
-vn -0.971100 0.185200 0.150600
-vn -0.867400 0.164800 0.469500
-vn -0.598400 0.279100 -0.751000
-vn -0.844500 0.247300 -0.474900
-vn -0.625300 0.153100 0.765200
-vn -0.232700 0.148500 0.961100
-vn -0.962600 0.213700 -0.166500
-vn 0.651700 -0.669300 0.356900
-vn 0.730300 -0.672700 0.118900
-vn 0.730300 -0.672700 -0.118900
-vn 0.651700 -0.669300 -0.356900
-vn 0.472100 -0.663300 -0.580600
-vn 0.176800 -0.657900 -0.732000
-vn -0.730300 -0.672700 -0.118900
-vn -0.730300 -0.672700 0.118900
-vn -0.176800 -0.657900 -0.732000
-vn -0.472100 -0.663300 -0.580600
-vn -0.651700 -0.669300 0.356900
-vn -0.472100 -0.663300 0.580600
-vn -0.651700 -0.669300 -0.356900
-vn -0.176800 -0.657900 0.732000
-vn -0.830800 0.000000 -0.556600
-vn -0.498000 0.000000 -0.867200
-vn -0.324600 0.758400 -0.565100
-vn -0.534300 0.765700 -0.358000
-vn -0.148400 0.000000 0.988900
-vn 0.148400 0.000000 0.988900
-vn 0.109400 0.675200 0.729500
-vn -0.109400 0.675200 0.729500
-vn 0.989600 0.000000 0.144200
-vn 0.897700 0.000000 0.440600
-vn 0.597300 0.746500 0.293100
-vn 0.664400 0.741000 0.096800
-vn -0.152500 0.000000 -0.988300
-vn 0.149300 0.000000 -0.988800
-vn 0.100000 0.742300 -0.662500
-vn -0.102100 0.743100 -0.661300
-vn 0.670800 0.000000 0.741600
-vn 0.258500 0.000000 0.966000
-vn 0.164900 0.770200 0.616100
-vn 0.437700 0.757800 0.483900
-vn 0.497900 0.000000 -0.867200
-vn 0.832500 0.000000 -0.554000
-vn 0.536200 0.764900 -0.356800
-vn 0.323600 0.760000 -0.563600
-vn -0.258500 0.000000 0.966000
-vn -0.670800 0.000000 0.741600
-vn -0.437700 0.757800 0.483900
-vn -0.164900 0.770200 0.616100
-vn 0.985100 0.000000 -0.172300
-vn 0.653700 0.748000 -0.114300
-vn -0.897700 0.000000 0.440600
-vn -0.989600 0.000000 0.144200
-vn -0.664400 0.741000 0.096800
-vn -0.597300 0.746500 0.293100
-vn 0.483900 0.000000 0.875100
-vn 0.362000 0.663600 0.654700
-vn -0.985100 0.000000 -0.172300
-vn -0.653700 0.748000 -0.114300
-vn -0.176800 0.657900 -0.732000
-vn -0.472100 0.663300 -0.580600
-vn -0.622500 0.654500 0.429100
-vn -0.362000 0.663600 0.654700
-vn 0.651700 0.669300 -0.356900
-vn 0.472100 0.663300 -0.580600
-vn 0.622500 0.654500 0.429100
-vn 0.731000 0.670100 0.128700
-vn 0.176800 0.657900 -0.732000
-vn -0.731000 0.670100 0.128700
-vn 0.730300 0.672700 -0.118900
-vn -0.651700 0.669300 -0.356900
-vn -0.730300 0.672700 -0.118900
-vn -0.483900 0.000000 0.875100
-vn -0.590900 0.715400 0.372800
-vn -0.658800 0.677300 0.327300
-vn -0.730400 0.672600 0.118900
-vn 0.982500 0.093400 0.161000
-vn 0.873300 0.110700 0.474300
-vn 0.881500 0.000000 0.472100
-vn 0.987600 0.000000 0.157200
-vn 0.629400 0.129600 0.766200
-vn 0.639200 0.000000 0.769100
-vn 0.234500 0.143200 0.961500
-vn 0.239500 0.000000 0.970900
-vn -0.234500 0.143200 0.961500
-vn -0.239500 0.000000 0.970900
-vn -0.629400 0.129600 0.766200
-vn -0.639200 0.000000 0.769100
-vn -0.873300 0.110700 0.474300
-vn -0.881500 0.000000 0.472100
-vn -0.982500 0.093400 0.161000
-vn -0.987600 0.000000 0.157200
-vn -0.984800 0.080600 -0.153500
-vn -0.987600 0.000000 -0.157200
-vn 0.984800 0.080600 -0.153500
-vn 0.987600 0.000000 -0.157200
-vn 0.206000 0.506700 0.837100
-vn -0.206000 0.506700 0.837100
-vn -0.794900 0.428500 0.429600
-vn -0.701300 0.623100 0.346400
-vn -0.814900 0.569200 0.109100
-vn -0.911900 0.382600 0.148400
-vn 0.825000 0.337700 -0.453000
-vn 0.926100 0.347900 -0.145600
-vn -0.825200 0.338800 -0.451900
-vn -0.580300 0.361800 -0.729600
-vn 0.794900 0.428500 0.429600
-vn 0.560600 0.475500 0.677900
-vn 0.189000 0.193500 -0.962700
-vn 0.194800 0.374700 -0.906400
-vn 0.581000 0.359600 -0.730100
-vn -0.560600 0.475500 0.677900
-vn 0.911900 0.382600 0.148400
-vn -0.926100 0.347900 -0.145600
-vn -0.194200 0.375300 -0.906300
-vn -0.187400 0.194100 -0.962900
-vn -0.176300 0.721900 0.669200
-vn -0.486500 0.681300 0.546900
-vn 0.834900 0.530800 -0.145600
-vn 0.814900 0.569200 0.109100
-vn 0.486500 0.681300 0.546900
-vn 0.176300 0.721900 0.669200
-vn 0.536200 0.433500 -0.724300
-vn 0.753700 0.498500 -0.428400
-vn 0.701300 0.623100 0.346400
-vn -0.193400 0.358100 -0.913400
-vn 0.193400 0.358100 -0.913400
-vn -0.753700 0.498500 -0.428400
-vn -0.536200 0.433500 -0.724300
-vn -0.834900 0.530800 -0.145600
-vn 0.823400 0.000000 0.567500
-vn 0.984800 0.000000 0.173400
-vn -0.823400 0.000000 0.567500
-vn -0.984800 0.000000 0.173400
-vn 0.195200 0.000000 -0.980800
-vn -0.193100 0.000000 -0.981200
-vn 0.000000 -1.000000 0.000000
-vn 0.000100 1.000000 0.000000
-vn 0.000200 1.000000 0.000100
-vn -0.000100 1.000000 0.000000
-vn -0.000200 1.000000 0.000100
-vn -0.000000 1.000000 0.000000
-vn 0.707100 0.000000 0.707100
-vn -0.707100 0.000000 0.707100
-vn -0.577300 -0.577300 0.577300
-vn 0.577300 -0.577300 0.577300
-vn -0.707100 0.000000 -0.707100
-vn -0.577300 -0.577300 -0.577300
-vn 0.707100 0.000000 -0.707100
-vn 0.577300 -0.577300 -0.577300
-vn 0.203700 -0.948600 0.242200
-vn 0.203700 -0.948600 -0.242200
-vn 0.620100 -0.485900 -0.615900
-vn 0.620100 -0.485900 0.615900
-vn 0.577300 0.577300 -0.577300
-vn 0.577300 0.577300 0.577300
-vn -0.203700 -0.948600 -0.242200
-vn -0.620100 -0.485900 -0.615900
-vn -0.203700 -0.948600 0.242200
-vn -0.620100 -0.485900 0.615900
-vn -0.577300 0.577300 -0.577300
-vn -0.577300 0.577300 0.577300
-vn -0.610000 0.686200 -0.396200
-vn 0.610000 0.686200 -0.396200
-vn 0.610000 0.000000 -0.792400
-vn -0.610000 0.000000 -0.792400
-vn 0.610000 -0.686200 -0.396200
-vn -0.610000 -0.686200 -0.396200
-vn 0.610000 -0.686200 0.396200
-vn -0.610000 -0.686200 0.396200
-vn 0.610000 -0.000000 0.792400
-vn -0.610000 0.000000 0.792400
-vn 0.453400 0.242500 0.857700
-vn -0.453400 0.242400 0.857700
-vn -0.636200 0.209700 0.742500
-vn 0.636300 0.209900 0.742400
-vn -0.610000 0.686200 0.396200
-vn 0.610000 0.686200 0.396200
-vn -1.000000 -0.000100 -0.000200
-vn -0.707100 -0.000100 -0.707200
-vn 1.000000 0.000100 0.000200
-vn 0.707200 0.000100 -0.707100
-vn -0.706800 0.000000 -0.707400
-vn 0.707300 0.000000 -0.706900
-vn -0.706800 0.000000 -0.707500
-vn 0.828700 -0.559700 0.000000
-vn 0.656600 -0.443500 -0.610000
-vn 0.310900 -0.325100 -0.893100
-vn 0.487300 -0.509600 0.709100
-vn -0.899100 -0.437800 -0.000000
-vn -0.712400 -0.346900 -0.610000
-vn -0.055800 -0.790400 -0.610000
-vn -0.070400 -0.997500 0.000000
-vn 0.771100 0.239700 0.589800
-vn 0.771100 0.239700 -0.589800
-vn 0.245400 0.716700 -0.652800
-vn 0.245400 0.716700 0.652800
-vn 0.458500 -0.654300 0.601300
-vn 0.458500 -0.654300 -0.601300
-vn -0.145600 0.742600 -0.653600
-vn -0.187400 0.955400 0.228100
-vn -0.828700 0.559700 -0.000000
-vn -0.656600 0.443500 -0.610000
-vn 0.000000 0.000000 -1.000000
-vn -0.994000 0.109700 0.000000
-vn -0.738000 -0.674700 0.000000
-vn -0.369000 -0.674700 -0.639100
-vn -0.472300 0.048700 -0.880100
-vn 0.369000 -0.674700 -0.639100
-vn 0.522400 -0.057600 -0.850700
-vn 0.738000 -0.674700 0.000000
-vn 0.994700 -0.102500 0.000000
-vn 0.369000 -0.674700 0.639100
-vn 0.522400 -0.057600 0.850700
-vn -0.369000 -0.674700 0.639100
-vn -0.433600 -0.497900 0.751000
-vn -0.867200 -0.497900 0.000000
-vn -0.472300 0.048700 0.880100
-vn -0.792400 -0.610000 0.000000
-vn -0.396200 -0.610000 -0.686200
-vn 0.396200 -0.610000 -0.686200
-vn 0.792400 -0.610000 0.000000
-vn 0.396200 -0.610000 0.686200
-vn -0.396200 -0.610000 0.686200
-vn -0.433600 0.497900 -0.751000
-vn -0.867200 0.497900 0.000000
-vn -0.738000 0.674700 0.000000
-vn -0.369000 0.674700 -0.639100
-vn -0.433600 -0.497900 -0.751000
-vn 0.433600 -0.497900 -0.751000
-vn 0.867200 -0.497900 0.000000
-vn 0.433600 -0.497900 0.751000
-vn -0.994700 0.102500 0.000000
-vn -0.522400 0.057600 -0.850700
-vn 0.472300 -0.048700 -0.880100
-vn 0.994000 -0.109700 0.000000
-vn 0.472300 -0.048700 0.880100
-vn -0.522400 0.057600 0.850700
-vn 0.433600 0.497900 -0.751000
-vn 0.867200 0.497900 0.000000
-vn 0.433600 0.497900 0.751000
-vn -0.433600 0.497900 0.751000
-vn -1.000000 0.000000 0.000000
-vn -0.500000 0.000000 -0.866000
-vn 0.369000 0.674700 -0.639100
-vn 0.738000 0.674700 0.000000
-vn 0.369000 0.674700 0.639100
-vn -0.369000 0.674700 0.639100
-vn 0.500000 0.000000 -0.866000
-vn 1.000000 0.000000 -0.000000
-vn 0.500000 0.000000 0.866000
-vn -0.500000 0.000000 0.866000
-vn -0.785300 -0.117900 0.607700
-vn -0.785300 -0.117900 -0.607700
-vn -0.448400 -0.606900 -0.656100
-vn -0.448400 -0.606900 0.656100
-vn -0.108200 -0.746800 -0.656100
-vn -0.108200 -0.746800 0.656100
-vn 0.475200 -0.636200 -0.607700
-vn 0.475200 -0.636200 0.607700
-vn 0.785300 0.117900 -0.607700
-vn 0.785300 0.117900 0.607700
-vn 0.448400 0.606900 -0.656100
-vn 0.448400 0.606900 0.656100
-vn 0.108200 0.746800 -0.656100
-vn 0.108200 0.746800 0.656100
-vn -0.475200 0.636200 -0.607700
-vn -0.475200 0.636200 0.607700
g Cylinder_Cylinder_lid
s 1
-f 152/1/1 150/2/2 299/3/3
-f 149/4/4 150/5/2 152/6/1 151/7/5
-f 151/7/5 152/6/1 154/8/6 153/9/7
-f 153/10/7 154/11/6 156/12/8 155/13/9
-f 155/13/9 156/12/8 158/14/10 157/15/11
-f 157/15/11 158/14/10 160/16/12 159/17/13
-f 159/17/13 160/16/12 162/18/14 161/19/15
-f 161/19/15 162/18/14 164/20/16 163/21/17
-f 163/21/17 164/20/16 166/22/18 165/23/19
-f 165/23/19 166/22/18 168/24/20 167/25/21
-f 167/25/21 168/24/20 170/26/22 169/27/23
-f 169/27/23 170/26/22 172/28/24 171/29/25
-f 171/29/25 172/28/24 174/30/26 173/31/27
-f 173/31/27 174/30/26 176/32/28 175/33/29
-f 175/33/29 176/32/28 178/34/30 177/35/31
-f 149/36/4 151/37/5 300/38/32
-f 179/39/33 180/40/34 150/5/2 149/4/4
-f 177/35/31 178/34/30 180/40/34 179/39/33
-f 150/2/2 180/41/34 299/3/3
-f 180/41/34 178/42/30 299/3/3
-f 178/42/30 176/43/28 299/3/3
-f 176/43/28 174/44/26 299/3/3
-f 174/44/26 172/45/24 299/3/3
-f 172/45/24 170/46/22 299/3/3
-f 170/46/22 168/47/20 299/3/3
-f 168/47/20 166/48/18 299/3/3
-f 166/48/18 164/49/16 299/3/3
-f 164/49/16 162/50/14 299/3/3
-f 162/50/14 160/51/12 299/3/3
-f 160/51/12 158/52/10 299/3/3
-f 158/52/10 156/53/8 299/3/3
-f 156/53/8 154/54/6 299/3/3
-f 154/54/6 152/1/1 299/3/3
-f 151/37/5 153/55/7 300/38/32
-f 153/55/7 155/56/9 300/38/32
-f 155/56/9 157/57/11 300/38/32
-f 157/57/11 159/58/13 300/38/32
-f 159/58/13 161/59/15 300/38/32
-f 161/59/15 163/60/17 300/38/32
-f 163/60/17 165/61/19 300/38/32
-f 165/61/19 167/62/21 300/38/32
-f 167/62/21 169/63/23 300/38/32
-f 169/63/23 171/64/25 300/38/32
-f 171/64/25 173/65/27 300/38/32
-f 173/65/27 175/66/29 300/38/32
-f 175/66/29 177/67/31 300/38/32
-f 177/67/31 179/68/33 300/38/32
-f 179/68/33 149/36/4 300/38/32
+f 149/1 150/2 152/3 151/4
+f 151/4 152/3 154/5 153/6
+f 153/7 154/8 156/9 155/10
+f 155/10 156/9 158/11 157/12
+f 157/12 158/11 160/13 159/14
+f 159/14 160/13 162/15 161/16
+f 161/16 162/15 164/17 163/18
+f 163/18 164/17 166/19 165/20
+f 165/20 166/19 168/21 167/22
+f 167/22 168/21 170/23 169/24
+f 169/24 170/23 172/25 171/26
+f 171/26 172/25 174/27 173/28
+f 173/28 174/27 176/29 175/30
+f 175/30 176/29 178/31 177/32
+f 179/33 180/34 150/2 149/1
+f 177/32 178/31 180/34 179/33
+f 154/35 152/36 150/37 180/38 178/39 176/40 174/41 172/42 170/43 168/44 166/45 164/46 162/47 160/48 158/49 156/50
+f 179/51 149/52 151/53 153/54 155/55 157/56 159/57 161/58 163/59 165/60 167/61 169/62 171/63 173/64 175/65 177/66
g Cylinder_Cylinder_bowl
-f 256/69/35 257/70/36 258/71/37 296/72/38
-f 3/73/39 4/74/40 6/75/41 5/76/42
-f 5/76/42 6/75/41 8/77/43 7/78/44
-f 7/78/44 8/77/43 10/79/45 9/80/46
-f 251/81/47 253/82/48 293/83/49 252/84/50
-f 9/80/46 10/79/45 20/85/51 11/86/52
-f 2/87/53 22/88/54 4/74/40 3/73/39
-f 2/87/53 1/89/55 24/90/56 22/88/54
-f 12/91/57 11/86/52 20/85/51 18/92/58
-f 13/93/59 12/91/57 18/92/58 301/94/60
-f 15/95/61 13/93/59 301/94/60 302/96/62
-f 17/97/63 15/95/61 302/96/62 303/98/64
-f 19/99/65 17/97/63 303/98/64 304/100/66
-f 21/101/67 19/102/65 304/103/66 305/104/68
-f 5/76/42 7/78/44 33/105/69 32/106/70
-f 35/107/71 36/108/72 52/109/73 51/110/74
-f 25/111/75 27/112/76 44/113/77 43/114/78
-f 11/86/52 12/91/57 36/108/72 35/107/71
-f 15/95/61 17/97/63 39/115/79 38/72/80
-f 2/87/53 3/73/39 31/116/81 30/117/82
-f 21/101/67 23/118/83 42/84/84 41/83/85
-f 7/78/44 9/80/46 34/119/86 33/105/69
-f 27/112/76 1/89/55 29/120/87 44/113/77
-f 1/89/55 2/87/53 30/117/82 29/120/87
-f 12/91/57 13/93/59 37/71/88 36/108/72
-f 17/97/63 19/99/65 40/121/89 39/115/79
-f 3/73/39 5/76/42 32/106/70 31/116/81
-f 23/118/83 25/111/75 43/114/78 42/84/84
-f 9/80/46 11/86/52 35/107/71 34/119/86
-f 13/93/59 15/95/61 38/72/80 37/71/88
-f 19/102/65 21/101/67 41/83/85 40/122/89
-f 125/123/90 126/124/91 69/125/92 68/126/93
-f 33/105/69 34/119/86 50/127/94 49/128/95
-f 44/113/77 29/120/87 45/129/96 60/130/97
-f 31/116/81 32/106/70 48/131/98 47/132/99
-f 42/84/84 43/114/78 59/133/100 58/134/101
-f 29/120/87 30/117/82 46/135/102 45/129/96
-f 40/122/89 41/83/85 57/136/103 56/137/104
-f 38/72/80 39/115/79 55/138/105 54/139/106
-f 36/108/72 37/71/88 53/140/107 52/109/73
-f 34/119/86 35/107/71 51/110/74 50/127/94
-f 32/106/70 33/105/69 49/128/95 48/131/98
-f 43/114/78 44/113/77 60/130/97 59/133/100
-f 30/117/82 31/116/81 47/132/99 46/135/102
-f 41/83/85 42/84/84 58/134/101 57/136/103
-f 39/115/79 40/121/89 56/141/104 55/138/105
-f 37/71/88 38/72/80 54/139/106 53/140/107
-f 69/125/92 70/142/108 86/143/109 85/144/110
-f 127/145/111 128/146/112 67/147/113 66/148/114
-f 129/149/115 130/150/116 65/151/117 64/152/118
-f 131/153/119 132/154/120 76/155/121 75/156/122
-f 133/157/123 134/158/124 63/159/125 62/160/126
-f 135/161/127 136/162/128 74/163/129 73/164/130
-f 137/165/131 138/166/132 72/167/133 71/168/134
-f 126/124/91 139/169/135 70/142/108 69/125/92
-f 128/146/112 125/123/90 68/126/93 67/147/113
-f 130/150/116 127/145/111 66/148/114 65/151/117
-f 132/154/120 140/170/136 61/171/137 76/155/121
-f 134/158/124 129/149/115 64/152/118 63/159/125
-f 136/162/128 131/153/119 75/156/122 74/163/129
-f 140/170/136 133/157/123 62/160/126 61/171/137
-f 138/172/132 135/161/127 73/164/130 72/173/133
-f 139/169/135 137/165/131 71/168/134 70/142/108
-f 86/143/109 87/174/138 103/175/139 102/176/140
-f 67/147/113 68/126/93 84/177/141 83/178/142
-f 65/151/117 66/148/114 82/179/143 81/180/144
-f 76/155/121 61/171/137 77/181/145 92/182/146
-f 63/159/125 64/152/118 80/183/147 79/184/148
-f 74/163/129 75/156/122 91/185/149 90/186/150
-f 61/171/137 62/160/126 78/187/151 77/181/145
-f 72/173/133 73/164/130 89/188/152 88/189/153
-f 70/142/108 71/168/134 87/174/138 86/143/109
-f 68/126/93 69/125/92 85/144/110 84/177/141
-f 66/148/114 67/147/113 83/178/142 82/179/143
-f 64/152/118 65/151/117 81/180/144 80/183/147
-f 75/156/122 76/155/121 92/182/146 91/185/149
-f 62/160/126 63/159/125 79/184/148 78/187/151
-f 73/164/130 74/163/129 90/186/150 89/188/152
-f 71/168/134 72/167/133 88/190/153 87/174/138
-f 103/175/139 104/191/154 120/192/155 119/193/156
-f 84/177/141 85/144/110 101/194/157 100/195/158
-f 82/179/143 83/178/142 99/196/159 98/197/160
-f 80/183/147 81/180/144 97/198/161 96/199/162
-f 91/185/149 92/182/146 108/200/163 107/201/164
-f 78/187/151 79/184/148 95/202/165 94/203/166
-f 89/188/152 90/186/150 106/204/167 105/205/168
-f 87/174/138 88/190/153 104/191/154 103/175/139
-f 85/144/110 86/143/109 102/176/140 101/194/157
-f 83/178/142 84/177/141 100/195/158 99/196/159
-f 81/180/144 82/179/143 98/197/160 97/198/161
-f 92/182/146 77/181/145 93/206/169 108/200/163
-f 79/184/148 80/183/147 96/199/162 95/202/165
-f 90/186/150 91/185/149 107/201/164 106/204/167
-f 77/181/145 78/187/151 94/203/166 93/206/169
-f 88/189/153 89/188/152 105/205/168 104/207/154
-f 101/194/157 102/176/140 118/208/170 117/209/171
-f 99/196/159 100/195/158 116/210/172 115/211/173
-f 97/198/161 98/197/160 114/212/174 113/213/175
-f 108/200/163 93/206/169 109/214/176 124/215/177
-f 95/202/165 96/199/162 112/216/178 111/217/179
-f 106/204/167 107/201/164 123/218/180 122/219/181
-f 93/206/169 94/203/166 110/220/182 109/214/176
-f 104/207/154 105/205/168 121/221/183 120/222/155
-f 102/176/140 103/175/139 119/193/156 118/208/170
-f 100/195/158 101/194/157 117/209/171 116/210/172
-f 98/197/160 99/196/159 115/211/173 114/212/174
-f 96/199/162 97/198/161 113/213/175 112/216/178
-f 107/201/164 108/200/163 124/215/177 123/218/180
-f 94/203/166 95/202/165 111/217/179 110/220/182
-f 105/205/168 106/204/167 122/219/181 121/221/183
-f 54/139/106 55/138/105 137/165/131 139/169/135
-f 56/137/104 57/136/103 135/161/127 138/172/132
-f 45/129/96 46/135/102 133/157/123 140/170/136
-f 58/134/101 59/133/100 131/153/119 136/162/128
-f 47/132/99 48/131/98 129/149/115 134/158/124
-f 60/130/97 45/129/96 140/170/136 132/154/120
-f 49/128/95 50/127/94 127/145/111 130/150/116
-f 51/110/74 52/109/73 125/123/90 128/146/112
-f 53/140/107 54/139/106 139/169/135 126/124/91
-f 55/138/105 56/141/104 138/166/132 137/165/131
-f 57/136/103 58/134/101 136/162/128 135/161/127
-f 46/135/102 47/132/99 134/158/124 133/157/123
-f 59/133/100 60/130/97 132/154/120 131/153/119
-f 48/131/98 49/128/95 130/150/116 129/149/115
-f 50/127/94 51/110/74 128/146/112 127/145/111
-f 52/109/73 53/140/107 126/124/91 125/123/90
-f 194/223/184 195/224/185 227/13/186 226/15/187
-f 183/28/188 182/26/189 212/225/190 213/226/191
-f 185/227/192 186/228/193 218/31/194 217/33/195
-f 196/229/196 197/230/197 229/7/198 228/9/199
-f 187/231/200 188/232/201 220/27/202 219/29/203
-f 198/233/204 199/234/205 231/39/206 230/4/207
-f 189/235/208 190/236/209 222/23/210 221/25/211
-f 200/237/212 185/227/192 217/33/195 232/35/213
-f 191/238/214 192/239/215 224/19/216 223/21/217
-f 182/26/189 181/24/218 211/240/219 212/225/190
-f 193/241/220 194/223/184 226/15/187 225/17/221
-f 212/242/190 211/243/219 227/244/186 228/245/199
-f 204/246/222 203/247/223 219/248/203 220/249/202
-f 215/250/224 214/251/225 230/252/207 231/253/206
-f 207/254/226 206/255/227 222/256/210 223/257/217
-f 210/258/228 209/259/229 225/260/221 226/261/187
-f 213/262/191 212/242/190 228/245/199 229/263/198
-f 205/264/230 204/246/222 220/249/202 221/265/211
-f 216/266/231 215/250/224 231/253/206 232/267/213
-f 208/268/232 207/254/226 223/257/217 224/269/216
-f 211/243/219 210/258/228 226/261/187 227/244/186
-f 203/247/223 202/270/233 218/271/194 219/248/203
-f 214/251/225 213/262/191 229/263/198 230/252/207
-f 206/255/227 205/264/230 221/265/211 222/256/210
-f 201/272/234 216/266/231 232/267/213 217/273/195
-f 202/270/233 201/272/234 217/273/195 218/271/194
-f 209/259/229 208/268/232 224/269/216 225/260/221
-f 192/239/215 193/241/220 225/17/221 224/19/216
-f 4/6/40 22/5/54 202/274/233 203/275/223
-f 190/236/209 191/238/214 223/21/217 222/23/210
-f 18/18/58 20/16/51 207/276/226 208/277/232
-f 199/234/205 200/237/212 232/35/213 231/39/206
-f 188/232/201 189/235/208 221/25/211 220/27/202
-f 20/16/51 10/14/45 206/278/227 207/276/226
-f 184/30/235 183/28/188 213/226/191 214/279/225
-f 197/230/197 198/233/204 230/4/207 229/7/198
-f 186/228/193 187/231/200 219/29/203 218/31/194
-f 23/118/83 21/101/67 305/104/68 306/280/236
-f 25/111/75 23/118/83 306/280/236 307/281/237
-f 195/224/185 196/282/196 228/10/199 227/13/186
-f 27/112/76 25/111/75 307/281/237 308/283/238
-f 1/89/55 27/112/76 308/283/238 24/90/56
-f 233/284/239 235/285/240 236/119/241 234/107/242
-f 235/285/240 237/286/243 238/105/244 236/119/241
-f 237/286/243 239/287/245 240/106/246 238/105/244
-f 239/287/245 241/288/247 242/116/248 240/106/246
-f 241/288/247 243/289/249 244/117/250 242/116/248
-f 243/289/249 245/290/251 246/120/252 244/117/250
-f 245/290/251 247/291/253 248/113/254 246/120/252
-f 247/291/253 249/292/255 250/114/256 248/113/254
-f 249/292/255 251/81/47 252/84/50 250/114/256
-f 259/293/257 233/284/239 234/107/242 260/108/258
-f 257/70/36 259/293/257 260/108/258 258/71/37
-f 239/287/245 264/76/259 265/73/260 241/288/247
-f 267/89/261 283/90/262 284/283/263 268/112/264
-f 257/70/36 275/93/265 276/91/266 259/293/257
-f 245/290/251 267/89/261 268/112/264 247/291/253
-f 251/81/47 270/118/267 271/101/268 253/82/48
-f 235/285/240 262/80/269 263/78/270 237/286/243
-f 255/294/271 273/97/272 274/95/273 256/69/35
-f 241/288/247 265/73/260 266/87/274 243/289/249
-f 259/293/257 276/91/266 261/86/275 233/284/239
-f 233/284/239 261/86/275 262/80/269 235/285/240
-f 247/291/253 268/112/264 269/111/276 249/292/255
-f 253/82/48 271/101/268 272/102/277 254/295/278
-f 237/286/243 263/78/270 264/76/259 239/287/245
-f 256/69/35 274/95/273 275/93/265 257/70/36
-f 243/289/249 266/87/274 267/89/261 245/290/251
-f 249/292/255 269/111/276 270/118/267 251/81/47
-f 254/296/278 272/99/277 273/97/272 255/294/271
-f 265/73/260 281/74/279 282/88/280 266/87/274
-f 276/91/266 292/92/281 277/85/282 261/86/275
-f 263/78/270 279/77/283 280/75/284 264/76/259
-f 274/95/273 290/96/285 291/94/286 275/93/265
-f 261/86/275 277/85/282 278/79/287 262/80/269
-f 272/99/277 288/100/288 289/98/289 273/97/272
-f 270/118/267 286/280/290 287/104/291 271/101/268
-f 268/112/264 284/283/263 285/281/292 269/111/276
-f 266/87/274 282/88/280 283/90/262 267/89/261
-f 264/76/259 280/75/284 281/74/279 265/73/260
-f 275/93/265 291/94/286 292/92/281 276/91/266
-f 262/80/269 278/79/287 279/77/283 263/78/270
-f 273/97/272 289/98/289 290/96/285 274/95/273
-f 271/101/268 287/104/291 288/103/288 272/102/277
-f 269/111/276 285/281/292 286/280/290 270/118/267
-f 8/12/43 6/11/41 204/297/222 205/298/230
-f 16/22/293 14/20/294 209/299/229 210/300/228
-f 26/32/295 184/30/235 214/279/225 215/301/224
-f 6/8/41 4/6/40 203/275/223 204/302/222
-f 28/34/296 26/32/295 215/301/224 216/303/231
-f 181/24/218 16/22/293 210/300/228 211/240/219
-f 10/14/45 8/12/43 205/298/230 206/278/227
-f 255/294/271 256/69/35 296/72/38 295/115/297
-f 254/296/278 255/294/271 295/115/297 294/121/298
-f 253/82/48 254/295/278 294/122/298 293/83/49
-f 109/304/176 110/305/182 298/306/299
-f 110/305/182 111/307/179 298/306/299
-f 111/307/179 112/308/178 298/306/299
-f 112/308/178 113/309/175 298/306/299
-f 113/309/175 114/310/174 298/306/299
-f 114/310/174 115/311/173 298/306/299
-f 115/311/173 116/312/172 298/306/299
-f 116/312/172 117/313/171 298/306/299
-f 117/313/171 118/314/170 298/306/299
-f 118/314/170 119/315/156 298/306/299
-f 119/315/156 120/316/155 298/306/299
-f 120/316/155 121/317/183 298/306/299
-f 121/317/183 122/318/181 298/306/299
-f 122/318/181 123/319/180 298/306/299
-f 123/319/180 124/320/177 298/306/299
-f 124/320/177 109/304/176 298/306/299
-f 24/40/56 28/34/296 216/303/231 201/321/234
-f 22/5/54 24/40/56 201/321/234 202/274/233
-f 14/20/294 18/18/58 208/277/232 209/299/229
-f 16/258/300 302/322/62 301/323/60 14/259/301
-f 307/324/237 26/250/302 28/266/303 308/325/238
-f 26/250/302 307/324/237 184/251/304
-f 16/258/300 181/243/304 302/322/62
-f 307/324/237 306/326/236 184/251/304
-f 302/322/62 181/243/304 303/327/64
-f 181/243/304 182/242/304 303/327/64
-f 184/251/304 306/326/236 183/262/304
-f 306/326/236 305/328/68 183/262/304
-f 303/327/64 182/242/304 304/329/66
-f 304/329/66 182/242/304 183/262/304 305/328/68
+f 256/67 257/68 258/69 296/70
+f 3/71 4/72 6/73 5/74
+f 5/74 6/73 8/75 7/76
+f 7/76 8/75 10/77 9/78
+f 251/79 253/80 293/81 252/82
+f 9/78 10/77 20/83 11/84
+f 2/85 22/86 4/72 3/71
+f 2/85 1/87 24/88 22/86
+f 12/89 11/84 20/83 18/90
+f 13/91 12/89 18/90 297/92
+f 15/93 13/91 297/92 298/94
+f 17/95 15/93 298/94 299/96
+f 19/97 17/95 299/96 300/98
+f 21/99 19/100 300/101 301/102
+f 5/74 7/76 33/103 32/104
+f 35/105 36/106 52/107 51/108
+f 25/109 27/110 44/111 43/112
+f 11/84 12/89 36/106 35/105
+f 15/93 17/95 39/113 38/70
+f 2/85 3/71 31/114 30/115
+f 21/99 23/116 42/82 41/81
+f 7/76 9/78 34/117 33/103
+f 27/110 1/87 29/118 44/111
+f 1/87 2/85 30/115 29/118
+f 12/89 13/91 37/69 36/106
+f 17/95 19/97 40/119 39/113
+f 3/71 5/74 32/104 31/114
+f 23/116 25/109 43/112 42/82
+f 9/78 11/84 35/105 34/117
+f 13/91 15/93 38/70 37/69
+f 19/100 21/99 41/81 40/120
+f 125/121 126/122 69/123 68/124
+f 33/103 34/117 50/125 49/126
+f 44/111 29/118 45/127 60/128
+f 31/114 32/104 48/129 47/130
+f 42/82 43/112 59/131 58/132
+f 29/118 30/115 46/133 45/127
+f 40/120 41/81 57/134 56/135
+f 38/70 39/113 55/136 54/137
+f 36/106 37/69 53/138 52/107
+f 34/117 35/105 51/108 50/125
+f 32/104 33/103 49/126 48/129
+f 43/112 44/111 60/128 59/131
+f 30/115 31/114 47/130 46/133
+f 41/81 42/82 58/132 57/134
+f 39/113 40/119 56/139 55/136
+f 37/69 38/70 54/137 53/138
+f 69/123 70/140 86/141 85/142
+f 127/143 128/144 67/145 66/146
+f 129/147 130/148 65/149 64/150
+f 131/151 132/152 76/153 75/154
+f 133/155 134/156 63/157 62/158
+f 135/159 136/160 74/161 73/162
+f 137/163 138/164 72/165 71/166
+f 126/122 139/167 70/140 69/123
+f 128/144 125/121 68/124 67/145
+f 130/148 127/143 66/146 65/149
+f 132/152 140/168 61/169 76/153
+f 134/156 129/147 64/150 63/157
+f 136/160 131/151 75/154 74/161
+f 140/168 133/155 62/158 61/169
+f 138/170 135/159 73/162 72/171
+f 139/167 137/163 71/166 70/140
+f 86/141 87/172 103/173 102/174
+f 67/145 68/124 84/175 83/176
+f 65/149 66/146 82/177 81/178
+f 76/153 61/169 77/179 92/180
+f 63/157 64/150 80/181 79/182
+f 74/161 75/154 91/183 90/184
+f 61/169 62/158 78/185 77/179
+f 72/171 73/162 89/186 88/187
+f 70/140 71/166 87/172 86/141
+f 68/124 69/123 85/142 84/175
+f 66/146 67/145 83/176 82/177
+f 64/150 65/149 81/178 80/181
+f 75/154 76/153 92/180 91/183
+f 62/158 63/157 79/182 78/185
+f 73/162 74/161 90/184 89/186
+f 71/166 72/165 88/188 87/172
+f 103/173 104/189 120/190 119/191
+f 84/175 85/142 101/192 100/193
+f 82/177 83/176 99/194 98/195
+f 80/181 81/178 97/196 96/197
+f 91/183 92/180 108/198 107/199
+f 78/185 79/182 95/200 94/201
+f 89/186 90/184 106/202 105/203
+f 87/172 88/188 104/189 103/173
+f 85/142 86/141 102/174 101/192
+f 83/176 84/175 100/193 99/194
+f 81/178 82/177 98/195 97/196
+f 92/180 77/179 93/204 108/198
+f 79/182 80/181 96/197 95/200
+f 90/184 91/183 107/199 106/202
+f 77/179 78/185 94/201 93/204
+f 88/187 89/186 105/203 104/205
+f 101/192 102/174 118/206 117/207
+f 99/194 100/193 116/208 115/209
+f 97/196 98/195 114/210 113/211
+f 108/198 93/204 109/212 124/213
+f 95/200 96/197 112/214 111/215
+f 106/202 107/199 123/216 122/217
+f 93/204 94/201 110/218 109/212
+f 104/205 105/203 121/219 120/220
+f 102/174 103/173 119/191 118/206
+f 100/193 101/192 117/207 116/208
+f 98/195 99/194 115/209 114/210
+f 96/197 97/196 113/211 112/214
+f 107/199 108/198 124/213 123/216
+f 94/201 95/200 111/215 110/218
+f 105/203 106/202 122/217 121/219
+f 54/137 55/136 137/163 139/167
+f 56/135 57/134 135/159 138/170
+f 45/127 46/133 133/155 140/168
+f 58/132 59/131 131/151 136/160
+f 47/130 48/129 129/147 134/156
+f 60/128 45/127 140/168 132/152
+f 49/126 50/125 127/143 130/148
+f 51/108 52/107 125/121 128/144
+f 53/138 54/137 139/167 126/122
+f 55/136 56/139 138/164 137/163
+f 57/134 58/132 136/160 135/159
+f 46/133 47/130 134/156 133/155
+f 59/131 60/128 132/152 131/151
+f 48/129 49/126 130/148 129/147
+f 50/125 51/108 128/144 127/143
+f 52/107 53/138 126/122 125/121
+f 194/221 195/222 227/10 226/12
+f 183/25 182/23 212/223 213/224
+f 185/225 186/226 218/28 217/30
+f 196/227 197/228 229/4 228/6
+f 187/229 188/230 220/24 219/26
+f 198/231 199/232 231/33 230/1
+f 189/233 190/234 222/20 221/22
+f 200/235 185/225 217/30 232/32
+f 191/236 192/237 224/16 223/18
+f 182/23 181/21 211/238 212/223
+f 193/239 194/221 226/12 225/14
+f 212/240 211/241 227/242 228/243
+f 204/244 203/245 219/246 220/247
+f 215/248 214/249 230/250 231/251
+f 207/252 206/253 222/254 223/255
+f 210/256 209/257 225/258 226/259
+f 213/260 212/240 228/243 229/261
+f 205/262 204/244 220/247 221/263
+f 216/264 215/248 231/251 232/265
+f 208/266 207/252 223/255 224/267
+f 211/241 210/256 226/259 227/242
+f 203/245 202/268 218/269 219/246
+f 214/249 213/260 229/261 230/250
+f 206/253 205/262 221/263 222/254
+f 201/270 216/264 232/265 217/271
+f 202/268 201/270 217/271 218/269
+f 209/257 208/266 224/267 225/258
+f 192/237 193/239 225/14 224/16
+f 4/3 22/2 202/272 203/273
+f 190/234 191/236 223/18 222/20
+f 18/15 20/13 207/274 208/275
+f 199/232 200/235 232/32 231/33
+f 188/230 189/233 221/22 220/24
+f 20/13 10/11 206/276 207/274
+f 184/27 183/25 213/224 214/277
+f 197/228 198/231 230/1 229/4
+f 186/226 187/229 219/26 218/28
+f 23/116 21/99 301/102 302/278
+f 25/109 23/116 302/278 303/279
+f 195/222 196/280 228/7 227/10
+f 27/110 25/109 303/279 304/281
+f 1/87 27/110 304/281 24/88
+f 233/282 235/283 236/117 234/105
+f 235/283 237/284 238/103 236/117
+f 237/284 239/285 240/104 238/103
+f 239/285 241/286 242/114 240/104
+f 241/286 243/287 244/115 242/114
+f 243/287 245/288 246/118 244/115
+f 245/288 247/289 248/111 246/118
+f 247/289 249/290 250/112 248/111
+f 249/290 251/79 252/82 250/112
+f 259/291 233/282 234/105 260/106
+f 257/68 259/291 260/106 258/69
+f 239/285 264/74 265/71 241/286
+f 267/87 283/88 284/281 268/110
+f 257/68 275/91 276/89 259/291
+f 245/288 267/87 268/110 247/289
+f 251/79 270/116 271/99 253/80
+f 235/283 262/78 263/76 237/284
+f 255/292 273/95 274/93 256/67
+f 241/286 265/71 266/85 243/287
+f 259/291 276/89 261/84 233/282
+f 233/282 261/84 262/78 235/283
+f 247/289 268/110 269/109 249/290
+f 253/80 271/99 272/100 254/293
+f 237/284 263/76 264/74 239/285
+f 256/67 274/93 275/91 257/68
+f 243/287 266/85 267/87 245/288
+f 249/290 269/109 270/116 251/79
+f 254/294 272/97 273/95 255/292
+f 265/71 281/72 282/86 266/85
+f 276/89 292/90 277/83 261/84
+f 263/76 279/75 280/73 264/74
+f 274/93 290/94 291/92 275/91
+f 261/84 277/83 278/77 262/78
+f 272/97 288/98 289/96 273/95
+f 270/116 286/278 287/102 271/99
+f 268/110 284/281 285/279 269/109
+f 266/85 282/86 283/88 267/87
+f 264/74 280/73 281/72 265/71
+f 275/91 291/92 292/90 276/89
+f 262/78 278/77 279/75 263/76
+f 273/95 289/96 290/94 274/93
+f 271/99 287/102 288/101 272/100
+f 269/109 285/279 286/278 270/116
+f 8/9 6/8 204/295 205/296
+f 16/19 14/17 209/297 210/298
+f 26/29 184/27 214/277 215/299
+f 6/5 4/3 203/273 204/300
+f 28/31 26/29 215/299 216/301
+f 181/21 16/19 210/298 211/238
+f 10/11 8/9 205/296 206/276
+f 255/292 256/67 296/70 295/113
+f 254/294 255/292 295/113 294/119
+f 253/80 254/293 294/120 293/81
+f 124/302 109/303 110/304 111/305 112/306 113/307 114/308 115/309 116/310 117/311 118/312 119/313 120/314 121/315 122/316 123/317
+f 24/34 28/31 216/301 201/318
+f 22/2 24/34 201/318 202/272
+f 14/17 18/15 208/275 209/297
+f 16/256 298/319 297/320 14/257
+f 303/321 26/248 28/264 304/322
+f 26/248 303/321 184/249
+f 16/256 181/241 298/319
+f 303/321 302/323 184/249
+f 298/319 181/241 299/324
+f 181/241 182/240 299/324
+f 184/249 302/323 183/260
+f 302/323 301/325 183/260
+f 299/324 182/240 300/326
+f 300/326 182/240 183/260 301/325
g Cylinder_Cylinder_tank
-f 145/330/305 146/331/306 142/332/307 141/333/308
-f 146/334/306 147/335/309 143/336/310 142/337/307
-f 147/330/309 148/331/311 144/332/312 143/333/310
-f 148/338/311 145/339/305 141/340/308 144/341/312
-f 141/163/308 142/142/307 143/208/310 144/219/312
-f 145/339/313 148/338/314 312/342/315 309/343/316
-f 309/343/316 312/342/315 316/344/317 313/302/318
-f 148/331/314 147/330/319 311/345/320 312/346/315
-f 147/335/319 146/334/321 310/347/322 311/348/320
-f 146/331/321 145/330/313 309/345/316 310/346/322
-f 316/208/317 315/219/323 314/163/324 313/142/318
-f 312/346/315 311/345/320 315/349/323 316/350/317
-f 311/348/320 310/347/322 314/351/324 315/352/323
-f 310/346/322 309/345/316 313/349/318 314/350/324
+f 145/327 146/328 142/329 141/330
+f 146/331 147/332 143/333 142/334
+f 147/327 148/328 144/329 143/330
+f 148/335 145/336 141/337 144/338
+f 141/161 142/140 143/206 144/217
+f 145/336 148/335 308/339 305/340
+f 305/340 308/339 312/341 309/300
+f 148/328 147/327 307/342 308/343
+f 147/332 146/331 306/344 307/345
+f 146/328 145/327 305/342 306/343
+f 312/206 311/217 310/161 309/140
+f 308/343 307/342 311/346 312/347
+f 307/345 306/344 310/348 311/349
+f 306/343 305/342 309/346 310/347
g Cylinder_Cylinder_water
-f 277/353/299 297/354/299 292/355/299
-f 292/355/299 297/354/299 291/356/299
-f 291/356/299 297/354/299 290/357/299
-f 290/357/299 297/354/299 289/358/299
-f 289/358/299 297/354/299 288/359/299
-f 288/359/299 297/354/299 287/360/299
-f 287/360/299 297/354/299 286/361/299
-f 286/361/299 297/354/299 285/362/299
-f 285/362/299 297/354/299 284/363/299
-f 284/363/299 297/354/299 283/364/299
-f 283/364/299 297/354/299 282/365/299
-f 282/365/299 297/354/299 281/366/299
-f 281/366/299 297/354/299 280/367/299
-f 280/367/299 297/354/299 279/368/299
-f 279/368/299 297/354/299 278/369/299
-f 278/369/299 297/354/299 277/353/299
+f 278/350 277/351 292/352 291/353 290/354 289/355 288/356 287/357 286/358 285/359 284/360 283/361 282/362 281/363 280/364 279/365
g Cylinder_Cylinder_metal-parts
-f 317/370/325 318/221/326 320/222/327 319/371/328
-f 319/372/328 320/220/327 322/214/329 321/373/330
-f 321/373/330 322/214/329 324/215/331 323/374/332
-f 323/374/332 324/215/331 326/218/333 325/375/334
-f 326/94/335 343/70/336 342/284/337 337/85/338
-f 327/376/339 328/219/340 318/221/326 317/370/325
-f 325/375/334 326/218/333 328/219/340 327/376/339
-f 317/377/325 319/378/328 321/379/330 323/380/332 325/381/334 327/382/339
-f 429/380/341 430/383/342 335/384/337
-f 336/385/343 334/386/335 333/387/338
-f 329/107/344 430/110/342 332/109/345 330/108/346
-f 430/383/342 429/380/341 332/388/345
-f 334/71/335 331/140/336 335/110/337 333/107/338
-f 344/389/341 342/390/337 343/391/336
-f 428/392/342 344/389/341 338/393/347
-f 351/229/348 352/230/349 345/7/350 346/9/351
-f 347/99/352 348/97/353 350/98/354 349/100/355
-f 353/394/356 354/395/357 360/138/358 359/141/359
-f 349/100/355 350/98/354 352/230/349 351/229/348
-f 361/166/360 362/165/361 354/395/357 353/394/356
-f 359/141/359 360/138/358 356/115/362 355/121/363
-f 357/296/364 358/294/365 348/97/353 347/99/352
-f 355/121/363 356/115/362 358/294/365 357/296/364
-f 346/9/351 345/7/350 362/275/361 361/302/360
-f 350/396/354 363/397/366 352/398/349
-f 348/399/353 363/397/366 350/396/354
-f 358/400/365 363/397/366 348/399/353
-f 358/400/365 356/401/362 363/397/366
-f 352/398/349 363/397/366 345/402/350
-f 363/397/366 356/401/362 345/402/350
-f 360/403/358 345/402/350 356/401/362
-f 345/402/350 360/403/358 362/404/361
-f 360/403/358 354/405/357 362/404/361
-f 353/406/356 359/407/359 361/408/360
-f 361/408/360 359/407/359 346/409/351
-f 359/407/359 355/410/363 346/409/351
-f 382/179/367 365/177/368 367/195/369 389/197/370
-f 389/197/370 367/195/369 369/210/371 390/212/372
-f 390/411/372 369/412/371 371/123/373 391/145/374
-f 391/145/374 371/123/373 373/126/375 392/148/376
-f 365/177/368 375/413/377 376/414/378 381/144/379
-f 393/415/380 375/413/377 365/177/368 382/179/367
-f 392/148/376 373/126/375 375/413/377 393/415/380
-f 364/416/381 366/417/382 368/418/383 370/419/384 372/420/385 374/421/386
-f 398/176/387 399/143/388 405/174/389 404/175/390
-f 367/195/369 365/177/368 381/144/379 380/194/391
-f 369/210/371 367/195/369 380/194/391 379/209/392
-f 371/123/373 369/412/371 379/422/392 378/124/393
-f 373/126/375 371/123/373 378/124/393 377/125/394
-f 375/413/377 373/126/375 377/125/394 376/414/378
-f 364/187/381 388/183/395 383/199/396 366/203/382
-f 366/203/382 383/199/396 384/216/397 368/220/383
-f 368/423/383 384/424/397 385/149/398 370/157/384
-f 370/157/384 385/149/398 386/152/399 372/160/385
-f 374/425/386 387/426/400 388/183/395 364/187/381
-f 372/160/385 386/152/399 387/426/400 374/425/386
-f 387/426/400 393/415/380 382/179/367 388/183/395
-f 385/149/398 391/145/374 392/148/376 386/152/399
-f 384/424/397 390/411/372 391/145/374 385/149/398
-f 383/199/396 389/197/370 390/212/372 384/216/397
-f 388/183/395 382/179/367 389/197/370 383/199/396
-f 380/194/391 381/144/379 399/143/388 398/176/387
-f 386/152/399 392/148/376 393/415/380 387/426/400
-f 379/209/392 380/194/391 398/176/387 397/208/401
-f 378/124/393 379/422/392 397/427/401 396/169/402
-f 377/125/394 378/124/393 396/169/402 395/142/403
-f 376/414/378 377/125/394 395/142/403 394/428/404
-f 381/144/379 376/414/378 394/428/404 399/143/388
-f 404/175/390 405/174/389 411/190/405 410/191/406
-f 397/208/401 398/176/387 404/175/390 403/193/407
-f 396/169/402 397/427/401 403/395/407 402/165/408
-f 395/142/403 396/169/402 402/165/408 401/168/409
-f 394/428/404 395/142/403 401/168/409 400/429/410
-f 399/143/388 394/428/404 400/429/410 405/174/389
-f 403/193/407 404/175/390 410/191/406 409/192/411
-f 402/165/408 403/395/407 409/394/411 408/166/412
-f 401/168/409 402/165/408 408/166/412 407/167/413
-f 400/429/410 401/168/409 407/167/413 406/430/414
-f 405/174/389 400/429/410 406/430/414 411/190/405
-f 412/224/415 413/282/416 415/10/417 414/13/418
-f 414/13/418 415/10/417 417/297/419 416/298/420
-f 416/431/420 417/432/419 419/137/421 418/136/422
-f 418/136/422 419/137/421 421/371/423 420/370/424
-f 420/370/424 421/371/423 423/122/425 422/83/426
-f 422/83/426 423/122/425 425/102/427 424/101/428
-f 415/433/417 413/434/416 427/435/429 425/436/427 423/437/425 421/438/423 419/439/421 417/440/419
-f 426/104/430 427/103/429 413/282/416 412/224/415
-f 424/101/428 425/102/427 427/103/429 426/104/430
-f 412/441/415 414/442/418 416/443/420 418/444/422 420/445/424 422/446/426 424/447/428 426/448/430
-f 322/449/329 320/450/327 318/451/326 328/452/340 326/453/333 324/454/331
-f 344/389/341 428/392/342 342/390/337
-f 340/85/344 428/284/342 338/293/347 339/92/346
-f 429/380/341 335/384/337 331/381/336
-f 324/454/343 326/453/335 337/455/338
-f 340/456/344 339/457/346 324/454/343
-f 324/454/343 337/455/338 340/456/344
-f 329/458/344 330/459/346 336/385/343
-f 336/385/343 333/387/338 329/458/344
+f 313/366 314/219 316/220 315/367
+f 315/368 316/218 318/212 317/369
+f 317/369 318/212 320/213 319/370
+f 319/370 320/213 322/216 321/371
+f 322/92 339/68 338/282 333/83
+f 323/372 324/217 314/219 313/366
+f 321/371 322/216 324/217 323/372
+f 313/373 315/374 317/375 319/376 321/377 323/378
+f 424/376 425/379 331/380
+f 332/381 330/382 329/383
+f 325/105 425/108 328/107 326/106
+f 425/379 424/376 328/384
+f 330/69 327/138 331/108 329/105
+f 340/385 338/386 339/387
+f 423/388 340/385 334/389
+f 347/227 348/228 341/4 342/6
+f 343/97 344/95 346/96 345/98
+f 349/390 350/391 356/136 355/139
+f 345/98 346/96 348/228 347/227
+f 357/164 358/163 350/391 349/390
+f 355/139 356/136 352/113 351/119
+f 353/294 354/292 344/95 343/97
+f 351/119 352/113 354/292 353/294
+f 342/6 341/4 358/273 357/300
+f 341/392 348/393 346/394 344/395 354/396 352/397 356/398 350/399 358/400
+f 342/401 357/402 349/403 355/404 351/405
+f 377/177 360/175 362/193 384/195
+f 384/195 362/193 364/208 385/210
+f 385/406 364/407 366/121 386/143
+f 386/143 366/121 368/124 387/146
+f 360/175 370/408 371/409 376/142
+f 388/410 370/408 360/175 377/177
+f 387/146 368/124 370/408 388/410
+f 359/411 361/412 363/413 365/414 367/415 369/416
+f 393/174 394/141 400/172 399/173
+f 362/193 360/175 376/142 375/192
+f 364/208 362/193 375/192 374/207
+f 366/121 364/407 374/417 373/122
+f 368/124 366/121 373/122 372/123
+f 370/408 368/124 372/123 371/409
+f 359/185 383/181 378/197 361/201
+f 361/201 378/197 379/214 363/218
+f 363/418 379/419 380/147 365/155
+f 365/155 380/147 381/150 367/158
+f 369/420 382/421 383/181 359/185
+f 367/158 381/150 382/421 369/420
+f 382/421 388/410 377/177 383/181
+f 380/147 386/143 387/146 381/150
+f 379/419 385/406 386/143 380/147
+f 378/197 384/195 385/210 379/214
+f 383/181 377/177 384/195 378/197
+f 375/192 376/142 394/141 393/174
+f 381/150 387/146 388/410 382/421
+f 374/207 375/192 393/174 392/206
+f 373/122 374/417 392/422 391/167
+f 372/123 373/122 391/167 390/140
+f 371/409 372/123 390/140 389/423
+f 376/142 371/409 389/423 394/141
+f 399/173 400/172 406/188 405/189
+f 392/206 393/174 399/173 398/191
+f 391/167 392/422 398/391 397/163
+f 390/140 391/167 397/163 396/166
+f 389/423 390/140 396/166 395/424
+f 394/141 389/423 395/424 400/172
+f 398/191 399/173 405/189 404/190
+f 397/163 398/391 404/390 403/164
+f 396/166 397/163 403/164 402/165
+f 395/424 396/166 402/165 401/425
+f 400/172 395/424 401/425 406/188
+f 407/222 408/280 410/7 409/10
+f 409/10 410/7 412/295 411/296
+f 411/426 412/427 414/135 413/134
+f 413/134 414/135 416/367 415/366
+f 415/366 416/367 418/120 417/81
+f 417/81 418/120 420/100 419/99
+f 410/428 408/429 422/430 420/431 418/432 416/433 414/434 412/435
+f 421/102 422/101 408/280 407/222
+f 419/99 420/100 422/101 421/102
+f 407/436 409/437 411/438 413/439 415/440 417/441 419/442 421/443
+f 318/444 316/445 314/446 324/447 322/448 320/449
+f 340/385 423/388 338/386
+f 336/83 423/282 334/291 335/90
+f 424/376 331/380 327/377
+f 320/449 322/448 333/450
+f 336/451 335/452 320/449
+f 320/449 333/450 336/451
+f 325/453 326/454 332/381
+f 332/381 329/383 325/453
diff --git a/homedecor/models/homedecor_window_shutter.obj b/homedecor/models/homedecor_window_shutter.obj
index c2292c8..4080c6c 100644
--- a/homedecor/models/homedecor_window_shutter.obj
+++ b/homedecor/models/homedecor_window_shutter.obj
@@ -1,42 +1,42 @@
-# Blender v2.73 (sub 0) OBJ File: 'shutter.blend'
+# Blender v2.72 (sub 0) OBJ File: 'shutter.blend'
# www.blender.org
o Plane
v 0.437500 -0.453125 -0.031250
v -0.437500 -0.453125 -0.031250
v -0.437500 -0.453125 0.031250
v 0.437500 -0.453125 0.031250
-v 0.437500 -0.460698 0.344815
-v -0.437500 -0.460698 0.344815
-v 0.437500 -0.476874 0.405185
-v -0.437500 -0.476874 0.405185
-v 0.437500 -0.460698 -0.405185
-v -0.437500 -0.460698 -0.405185
-v 0.437500 -0.476874 -0.344815
-v -0.437500 -0.476874 -0.344815
-v 0.437500 -0.460698 -0.311435
-v -0.437500 -0.460698 -0.311435
-v 0.437500 -0.476874 -0.251065
-v -0.437500 -0.476874 -0.251065
-v 0.437500 -0.460698 0.251065
-v -0.437500 -0.460698 0.251065
-v 0.437500 -0.476874 0.311435
-v -0.437500 -0.476874 0.311435
-v 0.437500 -0.460698 0.157315
-v -0.437500 -0.460698 0.157315
-v 0.437500 -0.476874 0.217685
-v -0.437500 -0.476874 0.217685
-v 0.437500 -0.460698 -0.217685
-v -0.437500 -0.460698 -0.217685
-v 0.437500 -0.476874 -0.157315
-v -0.437500 -0.476874 -0.157315
-v 0.437500 -0.460698 -0.123935
-v -0.437500 -0.460698 -0.123935
-v 0.437500 -0.476874 -0.063565
-v -0.437500 -0.476874 -0.063565
-v 0.437500 -0.460698 0.063565
-v -0.437500 -0.460698 0.063565
-v 0.437500 -0.476874 0.123935
-v -0.437500 -0.476874 0.123935
+v 0.437500 -0.461698 0.344815
+v -0.437500 -0.461698 0.344815
+v 0.437500 -0.477874 0.405185
+v -0.437500 -0.477874 0.405185
+v 0.437500 -0.461698 -0.405185
+v -0.437500 -0.461698 -0.405185
+v 0.437500 -0.477874 -0.344815
+v -0.437500 -0.477874 -0.344815
+v 0.437500 -0.461698 -0.311435
+v -0.437500 -0.461698 -0.311435
+v 0.437500 -0.477874 -0.251065
+v -0.437500 -0.477874 -0.251065
+v 0.437500 -0.461698 0.251065
+v -0.437500 -0.461698 0.251065
+v 0.437500 -0.477874 0.311435
+v -0.437500 -0.477874 0.311435
+v 0.437500 -0.461698 0.157315
+v -0.437500 -0.461698 0.157315
+v 0.437500 -0.477874 0.217685
+v -0.437500 -0.477874 0.217685
+v 0.437500 -0.461698 -0.217685
+v -0.437500 -0.461698 -0.217685
+v 0.437500 -0.477874 -0.157315
+v -0.437500 -0.477874 -0.157315
+v 0.437500 -0.461698 -0.123935
+v -0.437500 -0.461698 -0.123935
+v 0.437500 -0.477874 -0.063565
+v -0.437500 -0.477874 -0.063565
+v 0.437500 -0.461698 0.063565
+v -0.437500 -0.461698 0.063565
+v 0.437500 -0.477874 0.123935
+v -0.437500 -0.477874 0.123935
v 0.437500 -0.484375 0.031250
v -0.437500 -0.484375 0.031250
v -0.437500 -0.484375 -0.031250
@@ -167,57 +167,41 @@ vt 0.945313 0.062500
vt 0.992188 0.062500
vt 0.992187 0.937500
vt 0.945313 0.937500
-vn -0.000000 -0.965900 -0.258800
-vn 0.000000 -1.000000 0.000000
-vn 0.000000 0.000000 1.000000
-vn -0.000000 -0.000000 -1.000000
-vn -0.000000 1.000000 -0.000000
-vn -1.000000 0.000000 0.000000
-vn 0.124000 0.992300 -0.000000
-vn 0.000000 0.992300 0.124000
-vn 0.000000 0.992300 -0.124000
-vn -0.124000 0.992300 -0.000000
-vn 1.000000 -0.000000 -0.000000
-vn -0.000000 -0.992300 0.124000
-vn 0.124000 -0.992300 0.000000
-vn -0.124000 -0.992300 0.000000
-vn -0.000000 -0.992300 -0.124000
-vn 0.000000 0.965900 0.258800
g Plane_Plane_Material
s off
-f 7/1/1 8/2/1 6/3/1 5/4/1
-f 11/5/1 12/6/1 10/7/1 9/8/1
-f 15/9/1 16/10/1 14/11/1 13/12/1
-f 19/13/1 20/14/1 18/15/1 17/16/1
-f 23/17/1 24/18/1 22/19/1 21/20/1
-f 27/21/1 28/22/1 26/23/1 25/24/1
-f 31/25/1 32/26/1 30/27/1 29/28/1
-f 35/29/1 36/30/1 34/31/1 33/32/1
-f 37/33/2 38/34/2 39/35/2 40/36/2
-f 3/37/3 38/38/3 37/39/3 4/40/3
-f 1/41/4 40/42/4 39/43/4 2/44/4
-f 3/34/5 4/33/5 1/45/5 2/46/5
-f 41/47/4 42/48/4 43/49/4 44/50/4
-f 46/51/3 53/52/3 51/53/3 47/54/3
-f 41/55/6 44/50/6 47/54/6 51/56/6
-f 41/50/7 51/54/7 55/57/7 56/58/7
-f 41/50/8 56/58/8 54/59/8 42/49/8
-f 51/54/9 53/51/9 52/60/9 55/57/9
-f 52/60/10 53/51/10 42/49/10 54/59/10
-f 42/61/11 53/62/11 46/51/11 43/49/11
-f 44/50/12 43/49/12 49/59/12 50/58/12
-f 48/57/13 47/54/13 44/50/13 50/58/13
-f 43/49/14 46/51/14 45/60/14 49/59/14
-f 45/60/15 46/51/15 47/54/15 48/57/15
-f 50/63/3 49/64/3 54/65/3 56/66/3
-f 45/67/4 48/68/4 55/69/4 52/70/4
-f 48/71/11 50/72/11 56/73/11 55/74/11
-f 54/75/6 49/76/6 45/77/6 52/78/6
-f 59/1/16 57/4/16 58/3/16 60/2/16
-f 63/5/16 61/8/16 62/7/16 64/6/16
-f 67/9/16 65/12/16 66/11/16 68/10/16
-f 71/13/16 69/16/16 70/15/16 72/14/16
-f 75/17/16 73/20/16 74/19/16 76/18/16
-f 79/21/16 77/24/16 78/23/16 80/22/16
-f 83/25/16 81/28/16 82/27/16 84/26/16
-f 87/29/16 85/32/16 86/31/16 88/30/16
+f 7/1 8/2 6/3 5/4
+f 11/5 12/6 10/7 9/8
+f 15/9 16/10 14/11 13/12
+f 19/13 20/14 18/15 17/16
+f 23/17 24/18 22/19 21/20
+f 27/21 28/22 26/23 25/24
+f 31/25 32/26 30/27 29/28
+f 35/29 36/30 34/31 33/32
+f 37/33 38/34 39/35 40/36
+f 3/37 38/38 37/39 4/40
+f 1/41 40/42 39/43 2/44
+f 3/34 4/33 1/45 2/46
+f 41/47 42/48 43/49 44/50
+f 46/51 53/52 51/53 47/54
+f 41/55 44/50 47/54 51/56
+f 41/50 51/54 55/57 56/58
+f 41/50 56/58 54/59 42/49
+f 51/54 53/51 52/60 55/57
+f 52/60 53/51 42/49 54/59
+f 42/61 53/62 46/51 43/49
+f 44/50 43/49 49/59 50/58
+f 48/57 47/54 44/50 50/58
+f 43/49 46/51 45/60 49/59
+f 45/60 46/51 47/54 48/57
+f 50/63 49/64 54/65 56/66
+f 45/67 48/68 55/69 52/70
+f 48/71 50/72 56/73 55/74
+f 54/75 49/76 45/77 52/78
+f 59/1 57/4 58/3 60/2
+f 63/5 61/8 62/7 64/6
+f 67/9 65/12 66/11 68/10
+f 71/13 69/16 70/15 72/14
+f 75/17 73/20 74/19 76/18
+f 79/21 77/24 78/23 80/22
+f 83/25 81/28 82/27 84/26
+f 87/29 85/32 86/31 88/30
diff --git a/homedecor/office.lua b/homedecor/office.lua
index 24fe30e..b28c3a3 100644
--- a/homedecor/office.lua
+++ b/homedecor/office.lua
@@ -1,7 +1,8 @@
-local S = homedecor.gettext
+
+local S = homedecor_i18n.gettext
homedecor.register("filing_cabinet", {
- description = S("Filing Cabinet"),
+ description = S("Filing cabinet"),
mesh = "homedecor_filing_cabinet.obj",
tiles = {
homedecor.plain_wood,
@@ -27,7 +28,7 @@ homedecor.register("desk", {
tiles = {
homedecor.plain_wood,
"homedecor_desk_drawers.png",
- "homedecor_generic_metal_black.png",
+ { name = "homedecor_generic_metal.png", color = homedecor.color_black }
},
inventory_image = "homedecor_desk_inv.png",
selection_box = desk_cbox,
@@ -52,13 +53,13 @@ homedecor.register("desk_globe", {
mesh = "homedecor_desk_globe.obj",
tiles = {
"homedecor_generic_wood_red.png",
- "homedecor_generic_metal_black.png^[brighten",
+ { name = "homedecor_generic_metal.png", color = homedecor.color_med_grey },
"homedecor_earth.png"
},
inventory_image = "homedecor_desk_globe_inv.png",
selection_box = globe_cbox,
collision_box = globe_cbox,
- groups = {choppy=2},
+ groups = {choppy=2, oddly_breakable_by_hand=2},
walkable = false,
sounds = default.node_sound_wood_defaults(),
})
diff --git a/homedecor/roofing.lua b/homedecor/roofing.lua
index df06bd9..1299fcb 100644
--- a/homedecor/roofing.lua
+++ b/homedecor/roofing.lua
@@ -1,4 +1,7 @@
-local S = homedecor.gettext
+
+local S = homedecor_i18n.gettext
+
+local function N_(x) return x end
minetest.register_node("homedecor:skylight", {
description = S("Glass Skylight"),
@@ -25,9 +28,9 @@ minetest.register_node("homedecor:skylight_frosted", {
selection_box = homedecor.nodebox.slab_y(0.1),
})
-for _, s in pairs({"asphalt", "terracotta", "wood"}) do
+for _, s in pairs({ N_("asphalt"), N_("terracotta"), N_("wood") }) do
minetest.register_node("homedecor:shingles_"..s, {
- description = S("Shingles ("..s..")"),
+ description = S("Shingles (@1)", S(s)),
drawtype = "raillike",
tiles = { "homedecor_shingles_"..s..".png" },
wield_image = "homedecor_shingles_"..s..".png",
@@ -81,7 +84,7 @@ homedecor.register_outer_corner = function(modname, subname, groups, slope_image
end
minetest.register_node(modname..":shingle_outer_corner_" .. subname, {
- description = S(description.. " (outer corner)"),
+ description = S("@1 (outer corner)", description),
drawtype = "mesh",
mesh = "homedecor_slope_outer_corner.obj",
tiles = tiles,
@@ -103,7 +106,7 @@ homedecor.register_inner_corner = function(modname, subname, groups, slope_image
end
minetest.register_node(modname..":shingle_inner_corner_" .. subname, {
- description = S(description.. " (inner corner)"),
+ description = S("@1 (inner corner)", description),
drawtype = "mesh",
mesh = "homedecor_slope_inner_corner.obj",
tiles = tiles,
@@ -124,7 +127,7 @@ homedecor.register_slope = function(modname, subname, recipeitem, groups, slope_
end
minetest.register_node(modname..":shingle_side_" .. subname, {
- description = S(description),
+ description = description,
drawtype = "mesh",
mesh = "homedecor_slope.obj",
tiles = tiles,
@@ -259,19 +262,19 @@ end
homedecor.register_roof("homedecor", "wood",
{ snappy = 3 },
{ "homedecor_shingles_wood.png" },
- "Wood Shingles"
+ S("Wood Shingles")
)
homedecor.register_roof("homedecor", "asphalt",
{ snappy = 3 },
{ "homedecor_shingles_asphalt.png" },
- "Asphalt Shingles"
+ S("Asphalt Shingles")
)
homedecor.register_roof("homedecor", "terracotta",
{ snappy = 3 },
{ "homedecor_shingles_terracotta.png" },
- "Terracotta Shingles"
+ S("Terracotta Shingles")
)
-- register just the slopes
@@ -280,33 +283,33 @@ homedecor.register_slope("homedecor", "wood",
"homedecor:shingles_wood",
{ snappy = 3 },
{ "homedecor_shingles_wood.png" },
- "Wood Shingles"
+ S("Wood Shingles")
)
homedecor.register_slope("homedecor", "asphalt",
"homedecor:shingles_asphalt",
{ snappy = 3 },
{ "homedecor_shingles_asphalt.png" },
- "Asphalt Shingles"
+ S("Asphalt Shingles")
)
homedecor.register_slope("homedecor", "terracotta",
"homedecor:shingles_terracotta",
{ snappy = 3 },
{ "homedecor_shingles_terracotta.png" },
- "Terracotta Shingles"
+ S("Terracotta Shingles")
)
homedecor.register_slope("homedecor", "glass",
"homedecor:shingles_glass",
{ snappy = 3 },
{ "homedecor_shingles_glass.png", "homedecor_shingles_wood.png" },
- "Glass Shingles"
+ S("Glass Shingles")
)
homedecor.register("chimney", {
- description = "Chimney",
+ description = S("Chimney"),
mesh = "homedecor_chimney.obj",
tiles = {
"homedecor_chimney_tb.png",
diff --git a/homedecor/shutters.lua b/homedecor/shutters.lua
index 05a359f..733632b 100644
--- a/homedecor/shutters.lua
+++ b/homedecor/shutters.lua
@@ -1,19 +1,18 @@
-- Various kinds of window shutters
-local S = homedecor.gettext
+local S = homedecor_i18n.gettext
local shutters = {
- {"oak", "Unpainted oak", "#bf8a51:200" },
- {"mahogany", "Mahogany", "#822606:200" },
- {"red", "Red", "#d00000:150" },
- {"yellow", "Yellow", "#ffff00:150" },
- {"forest_green", "Forest green", "#006000:150" },
- {"light_blue", "Light blue", "#1963c7:150" },
- {"violet", "Violet", "#6000ff:150" },
- {"black", "Black", "#000000:200" },
- {"dark_grey", "Dark grey", "#202020:200" },
- {"grey", "Grey", "#c0c0c0:150" },
- {"white", "White", "#ffffff:150" },
+ "mahogany",
+ "red",
+ "yellow",
+ "forest_green",
+ "light_blue",
+ "violet",
+ "black",
+ "dark_grey",
+ "grey",
+ "white",
}
local shutter_cbox = {
@@ -23,30 +22,85 @@ local shutter_cbox = {
wall_side = { -0.5, -0.5, -0.5, -0.4375, 0.5, 0.5 }
}
-for i in ipairs(shutters) do
- local name = shutters[i][1]
- local desc = shutters[i][2]
- local hue = shutters[i][3]
-
- local tile = "homedecor_window_shutter.png^[colorize:"..hue
- local inv = "homedecor_window_shutter_inv.png^[colorize:"..hue
-
- homedecor.register("shutter_"..name, {
- mesh = "homedecor_window_shutter.obj",
- tiles = { tile },
- description = S("Wooden Shutter ("..desc..")"),
- inventory_image = inv,
- wield_image = inv,
- paramtype2 = "wallmounted",
- groups = { snappy = 3 },
- sounds = default.node_sound_wood_defaults(),
- selection_box = shutter_cbox,
- node_box = shutter_cbox,
- -- collision_box doesn't accept type="wallmounted", but node_box
- -- does. Said nodeboxes create a custom collision box but are
- -- invisible themselves because drawtype="mesh".
- })
-end
+local inv = "homedecor_window_shutter_inv.png^[colorize:#a87034:150"
+
+homedecor.register("shutter", {
+ mesh = "homedecor_window_shutter.obj",
+ tiles = {
+ { name = "homedecor_window_shutter.png", color = 0xffa87034 }
+ },
+ description = S("Wooden Shutter"),
+ inventory_image = inv,
+ wield_image = inv,
+ paramtype2 = "wallmounted",
+ groups = { snappy = 3 },
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = shutter_cbox,
+ node_box = shutter_cbox,
+ after_place_node = homedecor.fix_rotation,
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "homedecor:shutter_colored", "wallmounted")
+ end
+})
+
+homedecor.register("shutter_colored", {
+ mesh = "homedecor_window_shutter.obj",
+ tiles = { "homedecor_window_shutter.png" },
+ description = S("Wooden Shutter"),
+ inventory_image = "homedecor_window_shutter_inv.png",
+ wield_image = "homedecor_window_shutter_inv.png",
+ paramtype2 = "colorwallmounted",
+ palette = "unifieddyes_palette_colorwallmounted.png",
+ groups = { snappy = 3 , not_in_creative_inventory = 1},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = shutter_cbox,
+ node_box = shutter_cbox,
+ after_place_node = homedecor.fix_rotation,
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "homedecor:shutter_colored", "wallmounted")
+ end,
+ drop = "homedecor:shutter"
+})
minetest.register_alias("homedecor:shutter_purple", "homedecor:shutter_violet")
+minetest.register_alias("homedecor:shutter_oak", "homedecor:shutter")
+
+-- convert to param2 coloring
+
+homedecor.old_shutter_nodes = {}
+
+for _, color in ipairs(shutters) do
+ table.insert(homedecor.old_shutter_nodes, "homedecor:shutter_"..color)
+end
+
+minetest.register_lbm({
+ name = "homedecor:convert_shutters",
+ label = "Convert shutter static nodes to use param2 color",
+ run_at_every_load = true,
+ nodenames = homedecor.old_shutter_nodes,
+ action = function(pos, node)
+ local name = node.name
+ local color = string.sub(name, string.find(name, "_") + 1)
+
+ if color == "mahogany" then
+ color = "dark_red"
+ elseif color == "forest_green" then
+ color = "dark_green"
+ elseif color == "light_blue" then
+ color = "medium_cyan"
+ elseif color == "red" then
+ color = "medium_red"
+ end
+
+ local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
+ local param2 = paletteidx + node.param2
+ minetest.set_node(pos, { name = "homedecor:shutter_colored", param2 = param2 })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..color)
+ end
+})
diff --git a/homedecor/tables.lua b/homedecor/tables.lua
index 9910cec..d0aa812 100644
--- a/homedecor/tables.lua
+++ b/homedecor/tables.lua
@@ -1,10 +1,19 @@
--- Various kinds of tables
-local S = homedecor.gettext
+local S = homedecor_i18n.gettext
+
+-- Various kinds of tables
local materials = {
- {"glass","Glass"},
- {"wood","Wood"}
+ { "glass",
+ S("Small square glass table"),
+ S("Small round glass table"),
+ S("Large glass table piece"),
+ },
+ { "wood",
+ S("Small square wooden table"),
+ S("Small round wooden table"),
+ S("Large wooden table piece"),
+ }
}
local tables_cbox = {
@@ -12,10 +21,9 @@ local tables_cbox = {
fixed = { -0.5, -0.5, -0.5, 0.5, -0.4375, 0.5 },
}
-for i in ipairs(materials) do
- local m = materials[i][1]
- local d = materials[i][2]
- local s = nil
+for i, mat in ipairs(materials) do
+ local m, small_s, small_r, large = unpack(mat)
+ local s
if m == "glass" then
s = default.node_sound_glass_defaults()
@@ -26,7 +34,7 @@ for i in ipairs(materials) do
-- small square tables
homedecor.register(m.."_table_small_square", {
- description = S(d.." Table (Small, Square)"),
+ description = small_s,
mesh = "homedecor_table_small_square.obj",
tiles = { 'homedecor_'..m..'_table_small_square.png' },
wield_image = 'homedecor_'..m..'_table_small_square_inv.png',
@@ -41,7 +49,7 @@ for i in ipairs(materials) do
-- small round tables
homedecor.register(m..'_table_small_round', {
- description = S(d.." Table (Small, Round)"),
+ description = small_r,
mesh = "homedecor_table_small_round.obj",
tiles = { "homedecor_"..m.."_table_small_round.png" },
wield_image = 'homedecor_'..m..'_table_small_round_inv.png',
@@ -56,7 +64,7 @@ for i in ipairs(materials) do
-- Large square table pieces
homedecor.register(m..'_table_large', {
- description = S(d.." Table Piece (large)"),
+ description = large,
tiles = {
'homedecor_'..m..'_table_large_tb.png',
'homedecor_'..m..'_table_large_tb.png',
@@ -154,15 +162,20 @@ homedecor.register("utility_table_top", {
-- Various kinds of table legs
-local materials = {"brass", "wrought_iron"}
+-- local above
+materials = {
+ { "brass", S("brass") },
+ { "wrought_iron", S("wrought iron") },
+}
for _, t in ipairs(materials) do
-homedecor.register("table_legs_"..t, {
- description = S("Table Legs ("..t..")"),
+local name, desc = unpack(t)
+homedecor.register("table_legs_"..name, {
+ description = S("Table Legs (@1)", desc),
drawtype = "plantlike",
- tiles = {"homedecor_table_legs_"..t..".png"},
- inventory_image = "homedecor_table_legs_"..t..".png",
- wield_image = "homedecor_table_legs_"..t..".png",
+ tiles = {"homedecor_table_legs_"..name..".png"},
+ inventory_image = "homedecor_table_legs_"..name..".png",
+ wield_image = "homedecor_table_legs_"..name..".png",
walkable = false,
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
diff --git a/homedecor/textures/homedecor_armchair_inv.png b/homedecor/textures/homedecor_armchair_inv.png
new file mode 100644
index 0000000..41eb85d
--- /dev/null
+++ b/homedecor/textures/homedecor_armchair_inv.png
Binary files differ
diff --git a/homedecor/textures/homedecor_bed_inv.png b/homedecor/textures/homedecor_bed_inv.png
index c670b45..c89575c 100644
--- a/homedecor/textures/homedecor_bed_inv.png
+++ b/homedecor/textures/homedecor_bed_inv.png
Binary files differ
diff --git a/homedecor/textures/homedecor_bed_kingsize_inv.png b/homedecor/textures/homedecor_bed_kingsize_inv.png
index 5f8c93e..c454e77 100644
--- a/homedecor/textures/homedecor_bed_kingsize_inv.png
+++ b/homedecor/textures/homedecor_bed_kingsize_inv.png
Binary files differ
diff --git a/homedecor/textures/homedecor_chair_padded_inv.png b/homedecor/textures/homedecor_chair_padded_inv.png
new file mode 100644
index 0000000..1d59dd5
--- /dev/null
+++ b/homedecor/textures/homedecor_chair_padded_inv.png
Binary files differ
diff --git a/homedecor/textures/homedecor_chair_wood_inv.png b/homedecor/textures/homedecor_chair_wood_inv.png
new file mode 100644
index 0000000..12c216a
--- /dev/null
+++ b/homedecor/textures/homedecor_chair_wood_inv.png
Binary files differ
diff --git a/homedecor/textures/homedecor_curtain.png b/homedecor/textures/homedecor_curtain.png
index 97ef90d..4274d2b 100644
--- a/homedecor/textures/homedecor_curtain.png
+++ b/homedecor/textures/homedecor_curtain.png
Binary files differ
diff --git a/homedecor/textures/homedecor_curtain_open.png b/homedecor/textures/homedecor_curtain_open.png
index 8a71ae2..e593d06 100644
--- a/homedecor/textures/homedecor_curtain_open.png
+++ b/homedecor/textures/homedecor_curtain_open.png
Binary files differ
diff --git a/homedecor/textures/homedecor_desk_lamp_inv.png b/homedecor/textures/homedecor_desk_lamp_inv.png
new file mode 100644
index 0000000..1806758
--- /dev/null
+++ b/homedecor/textures/homedecor_desk_lamp_inv.png
Binary files differ
diff --git a/homedecor/textures/homedecor_generic_metal.png b/homedecor/textures/homedecor_generic_metal.png
new file mode 100644
index 0000000..3a7c063
--- /dev/null
+++ b/homedecor/textures/homedecor_generic_metal.png
Binary files differ
diff --git a/homedecor/textures/homedecor_generic_plastic.png b/homedecor/textures/homedecor_generic_plastic.png
new file mode 100644
index 0000000..44cdc6a
--- /dev/null
+++ b/homedecor/textures/homedecor_generic_plastic.png
Binary files differ
diff --git a/homedecor/textures/homedecor_generic_wood_luxury.png b/homedecor/textures/homedecor_generic_wood_luxury.png
index a03d17c..3387c3b 100644
--- a/homedecor/textures/homedecor_generic_wood_luxury.png
+++ b/homedecor/textures/homedecor_generic_wood_luxury.png
Binary files differ
diff --git a/homedecor/textures/homedecor_generic_wood_plain.png b/homedecor/textures/homedecor_generic_wood_plain.png
index 4df1e39..04d3a91 100644
--- a/homedecor/textures/homedecor_generic_wood_plain.png
+++ b/homedecor/textures/homedecor_generic_wood_plain.png
Binary files differ
diff --git a/homedecor/textures/homedecor_glowlight_bottom.png b/homedecor/textures/homedecor_glowlight_bottom.png
new file mode 100644
index 0000000..37a6b4d
--- /dev/null
+++ b/homedecor/textures/homedecor_glowlight_bottom.png
Binary files differ
diff --git a/homedecor/textures/homedecor_glowlight_cube_sides.png b/homedecor/textures/homedecor_glowlight_cube_sides.png
new file mode 100644
index 0000000..06182d0
--- /dev/null
+++ b/homedecor/textures/homedecor_glowlight_cube_sides.png
Binary files differ
diff --git a/homedecor/textures/homedecor_glowlight_cube_sides_ceiling.png b/homedecor/textures/homedecor_glowlight_cube_sides_ceiling.png
new file mode 100644
index 0000000..0f2fb3d
--- /dev/null
+++ b/homedecor/textures/homedecor_glowlight_cube_sides_ceiling.png
Binary files differ
diff --git a/homedecor/textures/homedecor_glowlight_cube_tb.png b/homedecor/textures/homedecor_glowlight_cube_tb.png
new file mode 100644
index 0000000..d5f0615
--- /dev/null
+++ b/homedecor/textures/homedecor_glowlight_cube_tb.png
Binary files differ
diff --git a/homedecor/textures/homedecor_glowlight_thick_sides.png b/homedecor/textures/homedecor_glowlight_thick_sides.png
new file mode 100644
index 0000000..81a9518
--- /dev/null
+++ b/homedecor/textures/homedecor_glowlight_thick_sides.png
Binary files differ
diff --git a/homedecor/textures/homedecor_glowlight_thin_sides.png b/homedecor/textures/homedecor_glowlight_thin_sides.png
new file mode 100644
index 0000000..8c1dd69
--- /dev/null
+++ b/homedecor/textures/homedecor_glowlight_thin_sides.png
Binary files differ
diff --git a/homedecor/textures/homedecor_glowlight_top.png b/homedecor/textures/homedecor_glowlight_top.png
new file mode 100644
index 0000000..3a06edb
--- /dev/null
+++ b/homedecor/textures/homedecor_glowlight_top.png
Binary files differ
diff --git a/homedecor/textures/homedecor_marble.png b/homedecor/textures/homedecor_marble.png
index 9aca475..b8b6dd3 100644
--- a/homedecor/textures/homedecor_marble.png
+++ b/homedecor/textures/homedecor_marble.png
Binary files differ
diff --git a/homedecor/textures/homedecor_table_standing_lamp_lightbulb.png b/homedecor/textures/homedecor_table_standing_lamp_lightbulb.png
index 077dd46..cd93c8f 100644
--- a/homedecor/textures/homedecor_table_standing_lamp_lightbulb.png
+++ b/homedecor/textures/homedecor_table_standing_lamp_lightbulb.png
Binary files differ
diff --git a/homedecor/textures/homedecor_window_shutter.png b/homedecor/textures/homedecor_window_shutter.png
index 4335eab..47cdf7b 100644
--- a/homedecor/textures/homedecor_window_shutter.png
+++ b/homedecor/textures/homedecor_window_shutter.png
Binary files differ
diff --git a/homedecor/textures/homedecor_window_shutter_inv.png b/homedecor/textures/homedecor_window_shutter_inv.png
index c3f54aa..fd77e81 100644
--- a/homedecor/textures/homedecor_window_shutter_inv.png
+++ b/homedecor/textures/homedecor_window_shutter_inv.png
Binary files differ
diff --git a/homedecor/tools/updatepo.sh b/homedecor/tools/updatepo.sh
new file mode 100755
index 0000000..b0f82e5
--- /dev/null
+++ b/homedecor/tools/updatepo.sh
@@ -0,0 +1,20 @@
+#! /bin/bash
+
+# To create a new translation:
+# msginit --locale=ll_CC -o locale/ll_CC.po -i locale/template.pot
+
+cd "$(dirname "${BASH_SOURCE[0]}")/..";
+
+# Extract translatable strings.
+xgettext --from-code=UTF-8 \
+ --keyword=S \
+ --keyword=NS:1,2 \
+ --keyword=N_ \
+ -o locale/template.pot \
+ $(find .. -name '*.lua')
+
+# Update translations.
+find locale -name '*.po' | while read -r file; do
+ echo $file
+ msgmerge --update $file locale/template.pot;
+done
diff --git a/homedecor/trash_cans.lua b/homedecor/trash_cans.lua
index 70c45d8..5405700 100644
--- a/homedecor/trash_cans.lua
+++ b/homedecor/trash_cans.lua
@@ -1,4 +1,3 @@
-local S = homedecor.gettext
local tg_cbox = {
type = "fixed",
@@ -11,7 +10,7 @@ homedecor.register("trash_can_green", {
tiles = { "homedecor_pool_table_baize.png" },
inventory_image = "homedecor_trash_can_green_inv.png",
description = "Trash Can (green)",
- groups = {snappy=3},
+ groups = {snappy=3},
selection_box = tg_cbox,
collision_box = tg_cbox,
on_punch = function(pos, node, puncher, pointed_thing)
diff --git a/homedecor/wardrobe.lua b/homedecor/wardrobe.lua
index c7dde42..986eed5 100644
--- a/homedecor/wardrobe.lua
+++ b/homedecor/wardrobe.lua
@@ -1,4 +1,3 @@
-local S = homedecor.gettext
local wd_cbox = {
type = "fixed",
@@ -43,7 +42,6 @@ homedecor.register("wardrobe", {
"listring[]")
end,
on_receive_fields = function(pos, formname, fields, sender)
- local meta = minetest.get_meta(pos)
local skins = {"male1", "male2", "male3", "male4", "male5"}
local playerName = sender:get_player_name()
local armor_mod = minetest.get_modpath("3d_armor")
diff --git a/homedecor/window_treatments.lua b/homedecor/window_treatments.lua
index 1b7f915..27be83d 100644
--- a/homedecor/window_treatments.lua
+++ b/homedecor/window_treatments.lua
@@ -1,7 +1,10 @@
-local S = homedecor.gettext
+
+local S = homedecor_i18n.gettext
+
+local function N_(x) return x end
homedecor.register("window_quartered", {
- description = "Window (quartered)",
+ description = S("Window (quartered)"),
tiles = {
"homedecor_window_sides.png",
"homedecor_window_sides.png",
@@ -32,7 +35,7 @@ homedecor.register("window_quartered", {
})
homedecor.register("window_plain", {
- description = "Window (plain)",
+ description = S("Window (plain)"),
tiles = {
"homedecor_window_sides.png",
"homedecor_window_sides.png",
@@ -66,7 +69,7 @@ local wb1_cbox = {
}
homedecor.register("blinds_thick", {
- description = "Window Blinds (thick)",
+ description = S("Window Blinds (thick)"),
mesh = "homedecor_windowblind_thick.obj",
inventory_image = "homedecor_windowblind_thick_inv.png",
tiles = {
@@ -85,7 +88,7 @@ local wb2_cbox = {
}
homedecor.register("blinds_thin", {
- description = "Window Blinds (thin)",
+ description = S("Window Blinds (thin)"),
mesh = "homedecor_windowblind_thin.obj",
inventory_image = "homedecor_windowblind_thin_inv.png",
tiles = {
@@ -98,82 +101,82 @@ homedecor.register("blinds_thin", {
selection_box = wb2_cbox
})
-local curtaincolors = {
- { "red", "#ad2323e0:175" },
- { "green", "#27a927e0:175" },
- { "blue", "#2626c6e0:175" },
- { "white", "#ffffffe0:175" },
- { "pink", "#ff8fb7e0:175" },
- { "violet", "#7f29d7e0:175" },
-}
-
-for c in ipairs(curtaincolors) do
- local color = curtaincolors[c][1]
- local hue = curtaincolors[c][2]
- local color_d = S(curtaincolors[c][1])
-
- homedecor.register("curtain_"..color, {
- description = S("Curtains (%s)"):format(color_d),
- tiles = { "homedecor_curtain.png^[colorize:"..hue },
- inventory_image = "homedecor_curtain.png^[colorize:"..hue,
- wield_image = "homedecor_curtain.png^[colorize:"..hue,
- drawtype = 'signlike',
- use_texture_alpha = true,
- walkable = false,
- groups = { snappy = 3 },
- sounds = default.node_sound_leaves_defaults(),
- paramtype2 = 'wallmounted',
- selection_box = { type = "wallmounted" },
- -- Open the curtains
- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+minetest.register_node("homedecor:curtain_closed", {
+ description = S("Curtains"),
+ tiles = { "homedecor_curtain.png" },
+ inventory_image = "homedecor_curtain.png",
+ drawtype = 'signlike',
+ use_texture_alpha = true,
+ walkable = false,
+ groups = { snappy = 3 },
+ sounds = default.node_sound_leaves_defaults(),
+ paramtype = "light",
+ paramtype2 = "colorwallmounted",
+ palette = "unifieddyes_palette_colorwallmounted.png",
+ selection_box = { type = "wallmounted" },
+ after_dig_node = unifieddyes.after_dig_node,
+ after_place_node = homedecor.fix_rotation,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local itemname = itemstack:get_name()
+ if string.find(itemname, "dye:") or string.find(itemname, "unifieddyes:") then
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "homedecor:curtain_closed", "wallmounted")
+ else
local topnode = minetest.get_node({x=pos.x, y=pos.y+1.0, z=pos.z})
if string.find(topnode.name, "homedecor:curtainrod") then
+ -- Open the curtains
local fdir = node.param2
- minetest.set_node(pos, { name = "homedecor:curtain_open_"..color, param2 = fdir })
+ minetest.set_node(pos, { name = "homedecor:curtain_open", param2 = fdir })
end
return itemstack
end
- })
+ end
+})
- homedecor.register("curtain_open_"..color, {
- description = S("Curtains (%s)"):format(color_d),
- tiles = { "homedecor_curtain_open.png^[colorize:"..hue },
- inventory_image = "homedecor_curtain_open.png^[colorize:"..hue,
- wield_image = "homedecor_curtain_open.png^[colorize:"..hue,
- drawtype = 'signlike',
- use_texture_alpha = true,
- walkable = false,
- groups = { snappy = 3 },
- sounds = default.node_sound_leaves_defaults(),
- paramtype2 = 'wallmounted',
- selection_box = { type = "wallmounted" },
- -- Close the curtains
- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+minetest.register_node("homedecor:curtain_open", {
+ description = S("Curtains"),
+ tiles = { "homedecor_curtain_open.png" },
+ inventory_image = "homedecor_curtain_open.png",
+ drawtype = 'signlike',
+ use_texture_alpha = true,
+ walkable = false,
+ groups = { snappy = 3 },
+ sounds = default.node_sound_leaves_defaults(),
+ paramtype = "light",
+ paramtype2 = "colorwallmounted",
+ palette = "unifieddyes_palette_colorwallmounted.png",
+ selection_box = { type = "wallmounted" },
+ after_dig_node = unifieddyes.after_dig_node,
+ after_place_node = homedecor.fix_rotation,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local itemname = itemstack:get_name()
+ if string.find(itemname, "dye:") or string.find(itemname, "unifieddyes:") then
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "homedecor:curtain_open", "wallmounted")
+ else
local topnode = minetest.get_node({x=pos.x, y=pos.y+1.0, z=pos.z})
if string.find(topnode.name, "homedecor:curtainrod") then
+ -- Close the curtains
local fdir = node.param2
- minetest.set_node(pos, { name = "homedecor:curtain_"..color, param2 = fdir })
+ minetest.set_node(pos, { name = "homedecor:curtain_closed", param2 = fdir })
end
return itemstack
end
- })
-
-end
+ end
+})
local mats = {
- { "brass", "Brass", "homedecor_generic_metal_brass.png" },
- { "wrought_iron", "Wrought iron", "homedecor_generic_metal_wrought_iron.png" },
- { "wood", "Wooden", "default_wood.png" }
+ { "brass", S("brass"), "homedecor_generic_metal_brass.png" },
+ { "wrought_iron", S("wrought iron"), "homedecor_generic_metal_wrought_iron.png" },
+ { "wood", S("wood"), "default_wood.png" }
}
-for i in ipairs(mats) do
- local material = mats[i][1]
- local mat_name = mats[i][2]
- local texture = mats[i][3]
+for _, m in ipairs(mats) do
+ local material, mat_name, texture = unpack(m)
homedecor.register("curtainrod_"..material, {
tiles = { texture },
inventory_image = "homedecor_curtainrod_"..material.."_inv.png",
- description = "Curtain Rod ("..mat_name..")",
+ description = S("Curtain Rod (@1)", mat_name),
groups = { snappy = 3 },
node_box = {
type = "fixed",
@@ -187,7 +190,7 @@ for i in ipairs(mats) do
end
homedecor.register("window_flowerbox", {
- description = "Window flowerbow",
+ description = S("Window flowerbox"),
tiles = {
"homedecor_flowerbox_top.png",
"homedecor_flowerbox_bottom.png",
@@ -207,7 +210,7 @@ homedecor.register("window_flowerbox", {
})
homedecor.register("stained_glass", {
- description = "Stained Glass",
+ description = S("Stained Glass"),
tiles = {"homedecor_stained_glass.png"},
inventory_image = "homedecor_stained_glass.png",
groups = {snappy=3},
@@ -219,3 +222,55 @@ homedecor.register("stained_glass", {
fixed = { {-0.5, -0.5, 0.46875, 0.5, 0.5, 0.5} }
}
})
+
+-- Convert old curtain nodes to param2-colorization
+
+local curtaincolors = {
+ { N_("red"), "ad2323" },
+ { N_("green"), "27a927" },
+ { N_("blue"), "2626c6" },
+ { N_("white"), "ffffff" },
+ { N_("pink"), "ff8fb7" },
+ { N_("violet"), "7f29d7" },
+}
+
+homedecor.old_static_curtain_nodes = {}
+
+for _, i in ipairs(curtaincolors) do
+ local color,hue = unpack(i)
+ table.insert(homedecor.old_static_curtain_nodes, "homedecor:curtain_"..color)
+ table.insert(homedecor.old_static_curtain_nodes, "homedecor:curtain_open_"..color)
+end
+
+minetest.register_lbm({
+ name = "homedecor:convert_curtains",
+ label = "Convert static curtain nodes to use param2 color",
+ run_at_every_load = true,
+ nodenames = homedecor.old_static_curtain_nodes,
+ action = function(pos, node)
+ local name = node.name
+ local color = string.sub(name, 19)
+ local openclose = "closed"
+
+ if string.find(color, "open") then
+ color = string.sub(color, 6)
+ openclose = "open"
+ end
+
+ local metadye = "medium_"..color
+ if color == "pink" then
+ metadye = "light_red"
+ end
+ if color == "white" then
+ metadye = "white"
+ end
+
+ local newnode = "homedecor:curtain_"..openclose
+ local paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..metadye, "wallmounted")
+ local newparam2 = paletteidx + (node.param2 % 8)
+
+ minetest.set_node(pos, { name = newnode, param2 = newparam2 })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..metadye)
+ end
+})
diff --git a/homedecor_3d_extras/init.lua b/homedecor_3d_extras/init.lua
index 0b18d92..498e09c 100644
--- a/homedecor_3d_extras/init.lua
+++ b/homedecor_3d_extras/init.lua
@@ -27,7 +27,7 @@ if minetest.get_modpath("vessels")
paramtype2 = "facedir",
use_texture_alpha = true
})
-
+
local sbox = {
type = "fixed",
fixed = { -0.15, -0.5, -0.15, 0.15, -0.1, 0.15 }
@@ -89,4 +89,3 @@ if minetest.get_modpath("moreblocks") then
}
})
end
-
diff --git a/homedecor_i18n/depends.txt b/homedecor_i18n/depends.txt
new file mode 100644
index 0000000..77e8d97
--- /dev/null
+++ b/homedecor_i18n/depends.txt
@@ -0,0 +1 @@
+intllib?
diff --git a/homedecor_i18n/init.lua b/homedecor_i18n/init.lua
new file mode 100644
index 0000000..1256ff1
--- /dev/null
+++ b/homedecor_i18n/init.lua
@@ -0,0 +1,7 @@
+
+-- This file intentionally left blank.
+
+homedecor_i18n = { }
+
+local MP = minetest.get_modpath(minetest.get_current_modname())
+homedecor_i18n.gettext, homedecor_i18n.ngettext = dofile(MP.."/intllib.lua")
diff --git a/homedecor_i18n/intllib.lua b/homedecor_i18n/intllib.lua
new file mode 100644
index 0000000..6669d72
--- /dev/null
+++ b/homedecor_i18n/intllib.lua
@@ -0,0 +1,45 @@
+
+-- Fallback functions for when `intllib` is not installed.
+-- Code released under Unlicense <http://unlicense.org>.
+
+-- Get the latest version of this file at:
+-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
+
+local function format(str, ...)
+ local args = { ... }
+ local function repl(escape, open, num, close)
+ if escape == "" then
+ local replacement = tostring(args[tonumber(num)])
+ if open == "" then
+ replacement = replacement..close
+ end
+ return replacement
+ else
+ return "@"..open..num..close
+ end
+ end
+ return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
+end
+
+local gettext, ngettext
+if minetest.get_modpath("intllib") then
+ if intllib.make_gettext_pair then
+ -- New method using gettext.
+ gettext, ngettext = intllib.make_gettext_pair()
+ else
+ -- Old method using text files.
+ gettext = intllib.Getter()
+ end
+end
+
+-- Fill in missing functions.
+
+gettext = gettext or function(msgid, ...)
+ return format(msgid, ...)
+end
+
+ngettext = ngettext or function(msgid, msgid_plural, n, ...)
+ return format(n==1 and msgid or msgid_plural, ...)
+end
+
+return gettext, ngettext
diff --git a/homedecor_i18n/locale/de.po b/homedecor_i18n/locale/de.po
new file mode 100644
index 0000000..ad927d0
--- /dev/null
+++ b/homedecor_i18n/locale/de.po
@@ -0,0 +1,1773 @@
+# German translations for PACKAGE package.
+# Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-01-30 21:31-0300\n"
+"PO-Revision-Date: 2017-01-25 00:03-0300\n"
+"Last-Translator: Xanthin <Xanthin@users.noreply.github.com>\n"
+"Language-Team: German\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../building_blocks/init.lua
+msgid "Adobe"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Roof block"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Streak Free Glass"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grate"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Fireplace"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Wood Framed Glass"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Terrycloth towel"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tarmac Spread"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Chess board tiling"
+msgstr ""
+
+#. Translators: "Brobble" is a portmanteau of "Brick" and "Cobble".
+#. Translate however you see fit.
+#: ../building_blocks/init.lua
+msgid "Brobble Spread"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Gravel Spread"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Hardwood"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Marble stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Marble slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Hardwood stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Hardwood slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grass stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+#, fuzzy
+msgid "Grass slab"
+msgstr "Messingstange"
+
+#: ../building_blocks/init.lua
+msgid "Tar stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grate Stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grate Slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Adobe stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Adobe slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Roofing stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Roofing slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Fake Grass"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Small bundle of sticks"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar base"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Marble"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar Knife"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Granite"
+msgstr ""
+
+#: ../inbox/init.lua
+msgid "Mailbox"
+msgstr ""
+
+#: ../inbox/init.lua
+msgid "@1's Mailbox"
+msgstr ""
+
+#: ../lavalamp/init.lua
+#, fuzzy
+msgid "Lava Lamp"
+msgstr "Tischlampe"
+
+#: ../lavalamp/init.lua
+msgid "Lava Lamp (off)"
+msgstr ""
+
+#: ../computer/miscitems.lua ../homedecor/crafts.lua
+#, fuzzy
+msgid "Plastic sheet"
+msgstr "Kunststoffplatte"
+
+#: ../computer/miscitems.lua
+#, fuzzy
+msgid "Unprocessed Plastic base"
+msgstr "Unverarbeitetes Plastik"
+
+#: ../computer/computers.lua
+msgid "Monitor and keyboard"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "WIFI Router"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "Computer Tower"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "Printer-Scanner Combo"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "Rack Server"
+msgstr ""
+
+#: ../computer/computers.lua
+#, fuzzy
+msgid "Not enough vertical space to place a server!"
+msgstr ""
+"Es gibt nicht genug Raum ueber dieser Stelle um den Kuehlschrank zu "
+"platzieren!"
+
+#: ../computer/tetris.lua
+msgid "New Game"
+msgstr ""
+
+#: ../computer/tetris.lua
+msgid "Tetris Arcade"
+msgstr ""
+
+#: ../computer/tetris.lua
+msgid "No room for place the Arcade!"
+msgstr ""
+
+#: ../chains/init.lua
+#, fuzzy
+msgid "Hanging chain (wrought iron)"
+msgstr "Schmiedeeiserne Stange"
+
+#: ../chains/init.lua
+msgid "Hanging chain (brass)"
+msgstr ""
+
+#: ../chains/init.lua
+msgid "Hanging chain (ceiling mount, wrought iron)"
+msgstr ""
+
+#: ../chains/init.lua
+msgid "Hanging chain (ceiling mount, brass)"
+msgstr ""
+
+#: ../chains/init.lua
+#, fuzzy
+msgid "Chandelier (wrought iron)"
+msgstr "Schmiedeeiserne Stange"
+
+#: ../chains/init.lua
+msgid "Chandelier (brass)"
+msgstr ""
+
+#: ../itemframes/init.lua
+msgid "Item frame"
+msgstr ""
+
+#: ../itemframes/init.lua
+#, fuzzy
+msgid "Item frame (owned by @1)"
+msgstr "%s (gehoert %s)"
+
+#: ../itemframes/init.lua
+msgid "Pedestal"
+msgstr ""
+
+#: ../itemframes/init.lua
+#, fuzzy
+msgid "Pedestal (owned by @1)"
+msgstr "%s (gehoert %s)"
+
+#: ../plasmascreen/init.lua
+msgid "Plasma Screen TV Stand"
+msgstr ""
+
+#: ../plasmascreen/init.lua
+msgid "Plasma TV"
+msgstr ""
+
+#: ../plasmascreen/init.lua
+msgid "Plasma TV (off)"
+msgstr ""
+
+#: ../lrfurn/longsofas.lua
+msgid "Long Sofa"
+msgstr ""
+
+#: ../lrfurn/longsofas.lua ../lrfurn/sofas.lua
+msgid "No room to place the sofa!"
+msgstr ""
+
+#: ../lrfurn/longsofas.lua ../lrfurn/armchairs.lua ../lrfurn/sofas.lua
+#: ../lrfurn/endtable.lua ../lrfurn/coffeetable.lua ../homedecor/init.lua
+#, fuzzy
+msgid "Loaded!"
+msgstr "Geladen!"
+
+#: ../lrfurn/armchairs.lua
+#, fuzzy
+msgid "Armchair"
+msgstr "Sessel (%s)"
+
+#: ../lrfurn/sofas.lua
+msgid "Sofa"
+msgstr ""
+
+#: ../lrfurn/endtable.lua
+#, fuzzy
+msgid "End Table"
+msgstr "Tisch"
+
+#: ../lrfurn/coffeetable.lua
+#, fuzzy
+msgid "Coffee Table"
+msgstr "Tisch"
+
+#: ../lrfurn/coffeetable.lua
+msgid "No room to place the coffee table!"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Fake fire"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Ice fire"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Fancy Fire"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Glowing Embers"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Flint and steel"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/furniture.lua
+#, fuzzy
+msgid "black"
+msgstr "schwarz"
+
+#: ../homedecor/bedroom.lua ../homedecor/books.lua
+msgid "brown"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/books.lua ../homedecor/furniture.lua
+#, fuzzy
+msgid "blue"
+msgstr "blau"
+
+#: ../homedecor/bedroom.lua
+msgid "cyan"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua
+#, fuzzy
+msgid "dark grey"
+msgstr "dunkelgruen"
+
+#: ../homedecor/bedroom.lua ../homedecor/furniture.lua
+#, fuzzy
+msgid "dark green"
+msgstr "dunkelgruen"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/exterior.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/books.lua
+#, fuzzy
+msgid "green"
+msgstr "gruen"
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua ../homedecor/books.lua
+msgid "grey"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "magenta"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "orange"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "pink"
+msgstr "rosa"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/shutters.lua
+#: ../homedecor/exterior.lua ../homedecor/books.lua ../homedecor/furniture.lua
+#, fuzzy
+msgid "red"
+msgstr "rot"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/shutters.lua ../homedecor/books.lua
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "violet"
+msgstr "violett"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/shutters.lua
+#, fuzzy
+msgid "white"
+msgstr "weiss"
+
+#: ../homedecor/bedroom.lua ../homedecor/lighting.lua ../homedecor/shutters.lua
+#: ../homedecor/exterior.lua
+msgid "yellow"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "Bed (@1)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "Bed (@1, king sized)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua
+msgid "mahogany"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "oak"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+#, fuzzy
+msgid "Nightstand with One Drawer (@1)"
+msgstr "Eichenachttisch mit einer Schublade"
+
+#: ../homedecor/bedroom.lua
+#, fuzzy
+msgid "One-drawer Nightstand"
+msgstr "Nachttisch mit einer Schublade"
+
+#: ../homedecor/bedroom.lua
+#, fuzzy
+msgid "Nightstand with Two Drawers (@1)"
+msgstr "Eichenachttisch mit zwei Schubladen"
+
+#: ../homedecor/bedroom.lua
+#, fuzzy
+msgid "Two-drawer Nightstand"
+msgstr "Nachttisch mit zwei Schubladen"
+
+#: ../homedecor/kitchen_furniture.lua ../homedecor/kitchen_appliances.lua
+msgid "granite"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua ../homedecor/kitchen_appliances.lua
+msgid "marble"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua ../homedecor/kitchen_appliances.lua
+msgid "steel"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua
+#, fuzzy
+msgid "Kitchen Cabinet"
+msgstr "Kuechenschrank"
+
+#: ../homedecor/kitchen_furniture.lua
+#, fuzzy
+msgid "Kitchen Cabinet (@1 top)"
+msgstr "Kuechenschrank"
+
+#: ../homedecor/kitchen_furniture.lua
+#, fuzzy
+msgid "Half-height Kitchen Cabinet (on ceiling)"
+msgstr "Halbhoher Kuechenschrank (haengend)"
+
+#: ../homedecor/kitchen_furniture.lua
+#, fuzzy
+msgid "Kitchen Cabinet with sink"
+msgstr "Unterschrank mit Spuele"
+
+#: ../homedecor/kitchen_furniture.lua
+#, fuzzy
+msgid "Under-sink cabinet"
+msgstr "Unterschrank"
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Paper towels"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua
+#, fuzzy
+msgid "Bars"
+msgstr "Gitterstaebe"
+
+#: ../homedecor/furniture_medieval.lua
+#, fuzzy
+msgid "Binding Bars"
+msgstr "Eckverbindung fuer Gitterstaebe"
+
+#: ../homedecor/furniture_medieval.lua
+#, fuzzy
+msgid "Chains"
+msgstr "Ketten"
+
+#: ../homedecor/furniture_medieval.lua
+#, fuzzy
+msgid "Wall Torch"
+msgstr "Wandfackel"
+
+#: ../homedecor/furniture_medieval.lua
+#, fuzzy
+msgid "Wall Lamp"
+msgstr "Tischlampe"
+
+#: ../homedecor/kitchen_appliances.lua
+#, fuzzy
+msgid "Refrigerator (stainless steel)"
+msgstr "Kuehlschrank"
+
+#: ../homedecor/kitchen_appliances.lua
+#, fuzzy
+msgid "Refrigerator"
+msgstr "Kuehlschrank"
+
+#: ../homedecor/kitchen_appliances.lua
+#, fuzzy
+msgid "Oven"
+msgstr "Herd"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Oven (stainless steel)"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+#, fuzzy
+msgid "Microwave Oven"
+msgstr "Mikrowelle"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Coffee Maker"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Toaster"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Dishwasher"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua ../homedecor/roofing.lua
+#: ../homedecor/window_treatments.lua ../homedecor/exterior.lua
+#: ../homedecor/misc-nodes.lua
+msgid "wood"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Dishwasher (@1)"
+msgstr ""
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Glass Skylight"
+msgstr "Glasdachfenster"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Glass Skylight Frosted"
+msgstr "Milchglasdachfenster"
+
+#: ../homedecor/roofing.lua
+msgid "asphalt"
+msgstr ""
+
+#: ../homedecor/roofing.lua ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "terracotta"
+msgstr "Terrakottaschindeln"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Shingles (@1)"
+msgstr "Holzschindeln"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "@1 (outer corner)"
+msgstr "Holzschindeln (Aussenecke)"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "@1 (inner corner)"
+msgstr "Holzschindeln (Innenecke)"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Wood Shingles"
+msgstr "Holzschindeln"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Asphalt Shingles"
+msgstr "Asphaltschindeln"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Terracotta Shingles"
+msgstr "Terrakottaschindeln"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Glass Shingles"
+msgstr "Asphaltschindeln"
+
+#: ../homedecor/roofing.lua
+msgid "Chimney"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+msgid "Window (quartered)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+msgid "Window (plain)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+#, fuzzy
+msgid "Window Blinds (thick)"
+msgstr "Weisse Gluehlampe (dick)"
+
+#: ../homedecor/window_treatments.lua
+#, fuzzy
+msgid "Window Blinds (thin)"
+msgstr "Weisse Gluehlampe (duenn)"
+
+#: ../homedecor/window_treatments.lua
+#, fuzzy
+msgid "Curtains"
+msgstr "Vorhaenge (%s)"
+
+#: ../homedecor/window_treatments.lua ../homedecor/fences.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/tables.lua
+msgid "brass"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua ../homedecor/fences.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/tables.lua
+#, fuzzy
+msgid "wrought iron"
+msgstr "Schmiedeeiserne Stange"
+
+#: ../homedecor/window_treatments.lua
+#, fuzzy
+msgid "Curtain Rod (@1)"
+msgstr "Vorhaenge (%s)"
+
+#: ../homedecor/window_treatments.lua
+msgid "Window flowerbox"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+msgid "Stained Glass"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Uncooked Terracotta Base"
+msgstr "Ungebrannte Terrakotta"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Terracotta Roof Tile"
+msgstr "Terrakottadachziegel"
+
+#: ../homedecor/crafts.lua
+msgid "Oil extract"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Unprocessed paraffin"
+msgstr "Unverarbeitetes Plastik"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Plastic strips"
+msgstr "Kunststoffplatte"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Small Wooden Drawer"
+msgstr "Kleiner Holzschubkasten"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Simple Integrated Circuit"
+msgstr "Einfacher integrierter Schaltkreis"
+
+#: ../homedecor/crafts.lua
+msgid "Heating element"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Motor"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Power Crystal"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Blank Canvas"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "VCR"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "DVD Player"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Spool of copper wire"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Spool of steel wire"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Speaker driver"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Fan blades"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Copper Strip"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Steel Strip"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Steel chainlink"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Brass chainlink"
+msgstr "Messingzaun/Gelaender"
+
+#: ../homedecor/crafts.lua
+msgid "Soda Can"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Gold Coin (for soda vending machine)"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Silicon lump"
+msgstr "Silikonklumpen"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Brass Ingot"
+msgstr "Messingbarren"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Small Flower Pot"
+msgstr "Schwarzer Plastikblumentopf"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Large Stereo Speaker"
+msgstr "Grosser Lautsprecher"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Large Stereo Speaker, open front"
+msgstr "Grosser Lautsprecher"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Small Surround Speaker"
+msgstr "Kleiner Lautsprecher"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Stereo Receiver"
+msgstr "Stereoanlage"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Projection Screen Material"
+msgstr "Projektorleinwand"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Small CRT Television"
+msgstr "Kleiner Roehrenfernseher"
+
+#: ../homedecor/electronics.lua
+msgid "DVD and VCR"
+msgstr ""
+
+#: ../homedecor/electronics.lua
+msgid "Telephone"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Thick Glowlight"
+msgstr "Weisse Gluehlampe (duenn)"
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Thin Glowlight"
+msgstr "Weisse Gluehlampe (duenn)"
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Small Glowlight Cube"
+msgstr "Gelbe Gluehlampe (kleiner Wuerfel)"
+
+#: ../homedecor/lighting.lua
+msgid "Plasma Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Plasma Ball"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Thick Candle"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Thin Candle"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Candlestick (wrought iron)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Candlestick (brass)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Wall sconce"
+msgstr "Wandfackel"
+
+#: ../homedecor/lighting.lua
+msgid "Oil lamp (hurricane)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Oil Lamp (tabletop)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Ground Lantern"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Hanging Lantern"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Lattice lantern (large)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Lattice lantern (small)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Table Lamp"
+msgstr "Tischlampe"
+
+#: ../homedecor/lighting.lua
+msgid "Standing Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Desk Lamp (@1)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Ceiling Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Ceiling Lamp (off)"
+msgstr ""
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Fence/railing (@1)"
+msgstr "Messingzaun/Gelaender"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Fence/railing with sign (@1)"
+msgstr "Messingzaun/Gelaender mit Schild"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Unpainted Picket Fence"
+msgstr "Unlackierter Lattenenzaun"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Unpainted Picket Fence Corner"
+msgstr "Unlackierte Lattenenzaunecke"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "White Picket Fence"
+msgstr "Weisser Lattenzaun"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "White Picket Fence Corner"
+msgstr "Weisse Lattenzaunecke"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Wooden Privacy Fence"
+msgstr "Sichtschutzzaun aus Holz"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Wooden Privacy Fence Corner"
+msgstr "Sichtschutzzaunecke aus Holz"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Barbed Wire Fence"
+msgstr "Stacheldrahtzaun"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Barbed Wire Fence Corner"
+msgstr "Stacheldrahtzaunecke"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Chainlink Fence"
+msgstr "Maschendrahtzaun"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Chainlink Fence Corner"
+msgstr "Maschendrahtzaunecke"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Wrought Iron fence (type 2)"
+msgstr "Schmiedeeiserner Zaun/Gelaender"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Wrought Iron fence (type 2) Corner"
+msgstr "Schmiedeeiserner Zaun/Gelaender"
+
+#: ../homedecor/shutters.lua
+msgid "unpainted oak"
+msgstr ""
+
+#: ../homedecor/shutters.lua
+msgid "forest green"
+msgstr ""
+
+#: ../homedecor/shutters.lua
+#, fuzzy
+msgid "light blue"
+msgstr "rechts"
+
+#: ../homedecor/shutters.lua
+#, fuzzy
+msgid "Wooden Shutter (@1)"
+msgstr "Holzjalousie (rot)"
+
+#: ../homedecor/exterior.lua
+msgid "Barbecue"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Garden Bench (style 1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Garden Bench (style 2)"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+#, fuzzy
+msgid "Deck Chair"
+msgstr "Stuhl"
+
+#: ../homedecor/exterior.lua
+msgid "Doghouse"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Simple Bench"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Garden stone path"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+#, fuzzy
+msgid "white wood"
+msgstr "weiss"
+
+#: ../homedecor/exterior.lua
+msgid "wood, with vegetation"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "white wood, with vegetation"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Garden Lattice (@1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Tree's swing"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Water well"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Shrubbery (@1)"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+#, fuzzy
+msgid "Toilet"
+msgstr "Toilette"
+
+#: ../homedecor/bathroom_sanitation.lua
+#, fuzzy
+msgid "Toilet paper"
+msgstr "Toilette"
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom Sink"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom taps/faucet"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom taps/faucet (brass)"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+#, fuzzy
+msgid "Shower Tray"
+msgstr "Duschtasse"
+
+#: ../homedecor/bathroom_sanitation.lua
+#, fuzzy
+msgid "Shower Head"
+msgstr "Duschbrause"
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom sundries set"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+#, fuzzy
+msgid "Air Conditioner"
+msgstr "Klimaanlage"
+
+#: ../homedecor/climate-control.lua
+msgid "Desk Fan"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+msgid "Ceiling Fan"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+msgid "Space heater"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+msgid "Radiator heater"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Mahogany Closet Door (@1 opening)"
+msgstr "Wandschranktuer aus Mahagoni"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Oak Closet Door (@1 opening)"
+msgstr "Wandschranktuer aus Eiche"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Fancy Wood/Glass Door (@1 opening)"
+msgstr "Schicke Holz/Glastuer"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Glass Office Door (@1 opening)"
+msgstr "Glasbuerotuer"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Glass and Wood, Oak-colored (@1 opening)"
+msgstr "Glas-Holz-Tuer, eichefarben"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Glass and Wood, Mahogany-colored (@1 opening)"
+msgstr "Glas-Holz-Tuer, mahagonifarben"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Glass and Wood, White (@1 opening)"
+msgstr "Glas-Holz-Tuer, weiss"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Plain Wooden Door (@1 opening)"
+msgstr "Einfache Holztuer"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "White Bedroom Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Wrought Iron Gate/Door (@1 opening)"
+msgstr "Schmiedeeiserner Zaun/Gelaender"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Wooden door with glass insert (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Wooden door with glass insert, type 2 (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "left"
+msgstr "links"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "right"
+msgstr "rechts"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Unpainted Picket Fence Gate"
+msgstr "Unlackiertes Lattenzauntor"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "White Picket Fence Gate"
+msgstr "Weisses Lattenzauntor"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Barbed Wire Fence Gate"
+msgstr "Stacheldrahtzauntor"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Chainlink Fence Gate"
+msgstr "Maschendrahtzauntor"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese wall (top)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese wall"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese wall (bottom)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese tatami"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese-style door"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Textured Ceiling Paint"
+msgstr "Deckenfarbe (Raufaser)"
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Drop-Ceiling Tile"
+msgstr "Deckenplatte"
+
+#: ../homedecor/misc-nodes.lua
+msgid "small"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "large"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "persian"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Rug (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Flower Pot (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Rose"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Tulip"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Yellow Dandelion"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "White Dandelion"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Blue Geranium"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Viola"
+msgstr "violett"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Cactus"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Bonsai"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Potted flower (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Brass Pole"
+msgstr "Messingstange"
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Wrought Iron Pole"
+msgstr "Schmiedeeiserne Stange"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Fishtank"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Fishtank (lighted)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Cardboard box (big)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Cardboard box"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "DVD/CD cabinet"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Pool Table"
+msgstr "Tisch"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Piano"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Trophy"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Sport bench"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Skateboard"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Metal tool cabinet and work table"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Picture Frame"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Decorative painting #@1"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "dark topped"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "diagonal"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "horizontal"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Banister for Stairs (@1, @2)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "not enough space"
+msgstr ""
+
+#: ../homedecor/tables.lua
+msgid "Small square glass table"
+msgstr ""
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Small round glass table"
+msgstr "Kleiner Lautsprecher"
+
+#: ../homedecor/tables.lua
+msgid "Large glass table piece"
+msgstr ""
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Small square wooden table"
+msgstr "Kleiner Holzschubkasten"
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Small round wooden table"
+msgstr "Kleiner Lautsprecher"
+
+#: ../homedecor/tables.lua
+msgid "Large wooden table piece"
+msgstr ""
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Utility Table"
+msgstr "Arbeitsplatte"
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Table Legs (@1)"
+msgstr "Messingtischbeine"
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Legs for Utility Table"
+msgstr "Tischbeine fuer Arbeitsplatte"
+
+#: ../homedecor/books.lua
+msgid "Writable Book (@1)"
+msgstr ""
+
+#: ../homedecor/books.lua
+msgid "@1 has written in a book (title: \"@2\"): \"@3\" at location @4"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "Table"
+msgstr "Tisch"
+
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "Mahogany Table"
+msgstr "Wandschranktuer aus Mahagoni"
+
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "White Table"
+msgstr "Arbeitsplatte"
+
+#: ../homedecor/furniture.lua
+msgid "plain"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "Kitchen chair (@1)"
+msgstr "Kuechenschrank"
+
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "Armchair (@1)"
+msgstr "Sessel (%s)"
+
+#: ../homedecor/furniture.lua
+msgid "Bookshelf (open-frame)"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+msgid "Wall Shelf"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua
+#, fuzzy
+msgid "@1 moves stuff in @2 at @3"
+msgstr "%s bewegt etwas im Nachttisch"
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 moves @2 to @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 takes @2 from @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua
+#, fuzzy
+msgid "@1 (owned by @2)"
+msgstr "%s (gehoert %s)"
+
+#: ../homedecor/handlers/inventory.lua
+#, fuzzy
+msgid "@1 tried to access a @2 belonging to @3 at @4"
+msgstr "%s versuchte Zugang zu %s von %s zu bekommen bei %s"
+
+#: ../homedecor/handlers/inventory.lua
+#, fuzzy
+msgid "@1 (Locked)"
+msgstr "%s (verschlossen)"
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "Furnace"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (empty)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (active)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua
+#, fuzzy
+msgid "@1 (active: @2%)"
+msgstr "%s ist aktiv: %d%%"
+
+#: ../homedecor/handlers/furnaces.lua
+#, fuzzy
+msgid "@1 (out of fuel)"
+msgstr ": kein Brennmaterial vorhanden"
+
+#: ../homedecor/handlers/furnaces.lua
+#, fuzzy
+msgid "@1 (output bins are full)"
+msgstr ": Produktfelder sind voll"
+
+#: ../homedecor/office.lua
+#, fuzzy
+msgid "Filing cabinet"
+msgstr "Unterschrank"
+
+#: ../homedecor/bathroom_furniture.lua
+#, fuzzy
+msgid "white/grey"
+msgstr "weiss"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/dark grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/black"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "black/dark grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+#, fuzzy
+msgid "white/red"
+msgstr "weiss"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/green"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+#, fuzzy
+msgid "white/blue"
+msgstr "weiss"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/yellow"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+#, fuzzy
+msgid "white/tan"
+msgstr "weiss"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "Bathroom/kitchen tiles (@1)"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "Towel rod with towel"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+#, fuzzy
+msgid "Medicine cabinet"
+msgstr "Unterschrank"
+
+#, fuzzy
+#~ msgid "dark_grey"
+#~ msgstr "dunkelgruen"
+
+#, fuzzy
+#~ msgid "dark_green"
+#~ msgstr "dunkelgruen"
+
+#~ msgid "%s moves stuff in kitchen cabinet at %s "
+#~ msgstr "%s bewegt etwas im Kuechenschrank bei %s"
+
+#~ msgid "%s moves stuff to kitchen cabinet at %s "
+#~ msgstr "%s legt etwas in den Kuechenschrank bei %s"
+
+#~ msgid "%s takes stuff from kitchen cabinet at %s "
+#~ msgstr "%s nimmt etwas aus dem Kuechenschrank bei %s"
+
+#~ msgid "Not enough space above that spot to place a door! "
+#~ msgstr ""
+#~ "Es gibt nicht genug Raum ueber dieser Stelle um die Tuer zu platzieren!"
+
+#~ msgid "Bucket of white paint "
+#~ msgstr "Eimer mit weisser Farbe"
+
+#~ msgid "Legs for Small Utility table "
+#~ msgstr "Tischbeine fuer kleinen Arbeitsplatte"
+
+#~ msgid "Titanium Dioxide "
+#~ msgstr "Titandioxid"
+
+#~ msgid "Wrought Iron Fence/railing with sign "
+#~ msgstr "Schmiedeeiserner Zaun/Gelaender mit Schild"
+
+#~ msgid "want to simply place the wielded item like usual. "
+#~ msgstr "Moechte einfach den getragenen Gegenstand wie gewohnt platzieren."
+
+#~ msgid "Red "
+#~ msgstr "rot"
+
+#~ msgid "Pink "
+#~ msgstr "rosa"
+
+#~ msgid "Blue "
+#~ msgstr "blau"
+
+#~ msgid "Sink "
+#~ msgstr "Waschbecken"
+
+#~ msgid "Taps "
+#~ msgstr "Wasserhahn"
+
+#~ msgid "Asphalt Shingles (outer corner) "
+#~ msgstr "Asphaltschindeln (Aussenecke)"
+
+#~ msgid "Asphalt Shingles (inner corner) "
+#~ msgstr "Asphaltschindeln (Innenecke)"
+
+#~ msgid "Wrought Iron Table Legs "
+#~ msgstr "Schmiedeeiserne Tischbeine"
+
+#~ msgid "Glass Table (Small, Round) "
+#~ msgstr "Glastischplatte (klein, rund)"
+
+#~ msgid "Glass Table (Small, Square) "
+#~ msgstr "Glastischplatte (klein, quadratisch)"
+
+#~ msgid "Glass Table Piece (large) "
+#~ msgstr "Glastischplatte (gross)"
+
+#~ msgid "Green Plastic Flower Pot "
+#~ msgstr "Gruener Plastikblumentopf"
+
+#~ msgid "Large Area Rug "
+#~ msgstr "Grosser Teppich"
+
+#~ msgid "Small Throw Rug "
+#~ msgstr "Kleiner Teppich"
+
+#~ msgid "Terracotta Flower Pot "
+#~ msgstr "Terrakottablumentopf"
+
+#~ msgid "Terracotta Shingles (outer corner) "
+#~ msgstr "Terrakottaschindeln (Aussenecke)"
+
+#~ msgid "Terracotta Shingles (inner corner) "
+#~ msgstr "Terrakottaschindeln (Innenecke)"
+
+#~ msgid "Utility table mk2 "
+#~ msgstr "Arbeitsplatte Modell 2"
+
+#~ msgid "Wooden Shutter (Black) "
+#~ msgstr "Holzjalousie (schwarz)"
+
+#~ msgid "Wooden Shutter (Dark grey) "
+#~ msgstr "Holzjalousie (dunkelgrau)"
+
+#~ msgid "Wooden Shutter (Forest green) "
+#~ msgstr "Holzjalousie (waldgruen)"
+
+#~ msgid "Wooden Shutter (Grey) "
+#~ msgstr "Holzjalousie (grau)"
+
+#~ msgid "Wooden Shutter (Light blue) "
+#~ msgstr "Holzjalousie (hellblau)"
+
+#~ msgid "Wooden Shutter (Violet) "
+#~ msgstr "Holzjalousie (violett)"
+
+#~ msgid "Wooden Shutter (Mahogany) "
+#~ msgstr "Holzjalousie (mahagoni)"
+
+#~ msgid "Wooden Shutter (Unpainted oak) "
+#~ msgstr "Holzjalousie (eiche)"
+
+#~ msgid "Wooden Shutter (White) "
+#~ msgstr "Holzjalousie (weiss)"
+
+#~ msgid "Wooden Shutter (Yellow) "
+#~ msgstr "Holzjalousie (gelb)"
+
+#~ msgid "Wood Table Piece (large)"
+#~ msgstr "Holztischplatte (gross)"
+
+#~ msgid "Wood Table (Small, Round) "
+#~ msgstr "Holztischplatte (klein, rund)"
+
+#~ msgid "Wood Table (Small, Square) "
+#~ msgstr "Holztischplatte (klein, quadratisch)"
+
+#~ msgid "someone "
+#~ msgstr "jemand"
+
+#~ msgid "Sorry, %s owns that spot. "
+#~ msgstr "Tut mir leid, %s gehoert diese Stelle."
+
+#~ msgid "White Glowlight (small cube) "
+#~ msgstr "Weisse Gluehlampe (kleiner Wuerfel)"
+
+#~ msgid "White Glowlight (small cube, on ceiling) "
+#~ msgstr "Weisse Gluehlampe (kleiner Wuerfel, an der Decke)"
+
+#~ msgid "White Glowlight (thick, on wall) "
+#~ msgstr "Weisse Gluehlampe (dick, an der Wand)"
+
+#~ msgid "White Glowlight (thin, on wall) "
+#~ msgstr "Weisse Gluehlampe (duenn, an der Wand)"
+
+#~ msgid "Yellow Glowlight (small cube, on ceiling) "
+#~ msgstr "Gelbe Gluehlampe (kleiner Wuerfel, an der Decke)"
+
+#~ msgid "Yellow Glowlight (thick) "
+#~ msgstr "Gelbe Gluehlampe (dick)"
+
+#~ msgid "Yellow Glowlight (thick, on wall) "
+#~ msgstr "Gelbe Gluehlampe (dick, an der Wand)"
+
+#~ msgid "Yellow Glowlight (thin) "
+#~ msgstr "Gelbe Gluehlampe (duenn)"
+
+#~ msgid "Yellow Glowlight (thin, on wall) "
+#~ msgstr "Gelbe Gluehlampe (duenn, an der Wand)"
+
+#~ msgid "Locked Fridge "
+#~ msgstr "Verschlossener Kuehlschrank"
+
+#~ msgid "Locked Cabinet "
+#~ msgstr "Verschlossener Schrank"
+
+#~ msgid "Locked Nightstand "
+#~ msgstr "Verschlossener Nachttisch"
+
+#~ msgid "Locked Oven "
+#~ msgstr "Verschlossener Herd"
+
+#~ msgid "Locked Oven (active) "
+#~ msgstr "Verschlossener Herd (aktiv)"
+
+#~ msgid "Locked Microwave Oven "
+#~ msgstr "Verschlossene Mikrowelle"
+
+#~ msgid "Locked Microwave Oven (active) "
+#~ msgstr "Verschlossene Mikrowelle (aktiv)"
+
+#~ msgid "Mahogany Nightstand with One Drawer "
+#~ msgstr "Mahagoninachttisch mit einer Schublade"
+
+#~ msgid "Mahogany Nightstand with Two Drawers "
+#~ msgstr "Mahagoninachttisch mit zwei Schubladen"
+
+#~ msgid "%s moves stuff to nightstand at %s "
+#~ msgstr "%s legt etwas in den Nachttisch"
+
+#~ msgid "%s takes stuff from nightstand at %s "
+#~ msgstr "%s nimmt etwas aus dem Nachttisch"
+
+#~ msgid "%s is empty "
+#~ msgstr "%s ist leer"
+
+#~ msgid "%s moves stuff in refrigerator at %s "
+#~ msgstr "%s bewegt etwas im Kuehlschrank bei %s"
+
+#~ msgid "%s moves stuff to refrigerator at %s "
+#~ msgstr "%s legt etwas in den Kuehlschrank bei %s"
+
+#~ msgid "%s takes stuff from refrigerator at %s "
+#~ msgstr "%s nimmt etwas aus dem Kuehlschrank bei %s"
diff --git a/homedecor_i18n/locale/es.po b/homedecor_i18n/locale/es.po
new file mode 100644
index 0000000..5c52b50
--- /dev/null
+++ b/homedecor_i18n/locale/es.po
@@ -0,0 +1,1420 @@
+# Spanish translations for PACKAGE package.
+# Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-01-30 21:31-0300\n"
+"PO-Revision-Date: 2017-01-24 20:24-0300\n"
+"Last-Translator: Diego Martínez <kaeza@users.noreply.github.com>\n"
+"Language-Team: Spanish\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../building_blocks/init.lua
+msgid "Adobe"
+msgstr "Adobe"
+
+#: ../building_blocks/init.lua
+msgid "Roof block"
+msgstr "Bloque de techo"
+
+#: ../building_blocks/init.lua
+msgid "Streak Free Glass"
+msgstr "Vídrio sin rayas"
+
+#: ../building_blocks/init.lua
+msgid "Grate"
+msgstr "Reja"
+
+#: ../building_blocks/init.lua
+msgid "Fireplace"
+msgstr "Chimenea"
+
+#: ../building_blocks/init.lua
+msgid "Wood Framed Glass"
+msgstr "Vídrio enmarcado en madera"
+
+#: ../building_blocks/init.lua
+msgid "Terrycloth towel"
+msgstr "Toalla"
+
+#: ../building_blocks/init.lua
+msgid "Tarmac Spread"
+msgstr "Mezcla de asfalto"
+
+#: ../building_blocks/init.lua
+msgid "Chess board tiling"
+msgstr "Azulejos de ajedrez"
+
+#. Translators: "Brobble" is a portmanteau of "Brick" and "Cobble".
+#. Translate however you see fit.
+#: ../building_blocks/init.lua
+msgid "Brobble Spread"
+msgstr "Mezcla de Ladroquines"
+
+#: ../building_blocks/init.lua
+msgid "Gravel Spread"
+msgstr "Mezcla de gravilla"
+
+#: ../building_blocks/init.lua
+msgid "Hardwood"
+msgstr "Madera dura"
+
+#: ../building_blocks/init.lua
+msgid "Marble stair"
+msgstr "Escaleras de mármol"
+
+#: ../building_blocks/init.lua
+msgid "Marble slab"
+msgstr "Losa de mármol"
+
+#: ../building_blocks/init.lua
+msgid "Hardwood stair"
+msgstr "Escaleras de madera dura"
+
+#: ../building_blocks/init.lua
+msgid "Hardwood slab"
+msgstr "Losa de madera dura"
+
+#: ../building_blocks/init.lua
+msgid "Grass stair"
+msgstr "Escaleras de hierba"
+
+#: ../building_blocks/init.lua
+msgid "Grass slab"
+msgstr "Losa de hierba"
+
+#: ../building_blocks/init.lua
+msgid "Tar stair"
+msgstr "Escaleras de alquitrán"
+
+#: ../building_blocks/init.lua
+msgid "Tar slab"
+msgstr "Losa de alquitrán"
+
+#: ../building_blocks/init.lua
+msgid "Grate Stair"
+msgstr "Escaleras de rejas"
+
+#: ../building_blocks/init.lua
+msgid "Grate Slab"
+msgstr "Losa de rejas"
+
+#: ../building_blocks/init.lua
+msgid "Adobe stair"
+msgstr "Escaleras de adobe"
+
+#: ../building_blocks/init.lua
+msgid "Adobe slab"
+msgstr "Losa de adobe"
+
+#: ../building_blocks/init.lua
+msgid "Roofing stair"
+msgstr "Escaleras de techo"
+
+#: ../building_blocks/init.lua
+msgid "Roofing slab"
+msgstr "Losa de techo"
+
+#: ../building_blocks/init.lua
+msgid "Fake Grass"
+msgstr "Hierba falsa"
+
+#: ../building_blocks/init.lua
+msgid "Small bundle of sticks"
+msgstr "Manojo de palitos"
+
+#: ../building_blocks/init.lua
+msgid "Tar base"
+msgstr "Base de alquitrán"
+
+#: ../building_blocks/init.lua
+msgid "Tar"
+msgstr "Alquitrán"
+
+#: ../building_blocks/init.lua
+msgid "Marble"
+msgstr "Mármol"
+
+#: ../building_blocks/init.lua
+msgid "Tar Knife"
+msgstr "Cuchillo de alquitrán"
+
+#: ../building_blocks/init.lua
+msgid "Granite"
+msgstr "Granito"
+
+#: ../inbox/init.lua
+msgid "Mailbox"
+msgstr "Buzón"
+
+#: ../inbox/init.lua
+msgid "@1's Mailbox"
+msgstr "Buzón de @1"
+
+#: ../lavalamp/init.lua
+msgid "Lava Lamp"
+msgstr "Lámpara de lava"
+
+#: ../lavalamp/init.lua
+msgid "Lava Lamp (off)"
+msgstr "Lámpara de lava (apagada)"
+
+#: ../computer/miscitems.lua ../homedecor/crafts.lua
+msgid "Plastic sheet"
+msgstr "Placa de plástico"
+
+#: ../computer/miscitems.lua
+msgid "Unprocessed Plastic base"
+msgstr "Base de plástico sin procesar"
+
+#: ../computer/computers.lua
+msgid "Monitor and keyboard"
+msgstr "Monitor y teclado"
+
+#: ../computer/computers.lua
+msgid "WIFI Router"
+msgstr "Enrutador WIFI"
+
+#: ../computer/computers.lua
+msgid "Computer Tower"
+msgstr "Torre de ordenador"
+
+#: ../computer/computers.lua
+msgid "Printer-Scanner Combo"
+msgstr "Impresora y escáner combinados"
+
+#: ../computer/computers.lua
+msgid "Rack Server"
+msgstr "Servidor en rack"
+
+#: ../computer/computers.lua
+msgid "Not enough vertical space to place a server!"
+msgstr "¡No hay suficiente espacio para colocar un servidor!"
+
+#: ../computer/tetris.lua
+msgid "New Game"
+msgstr "Juego Nuevo"
+
+#: ../computer/tetris.lua
+msgid "Tetris Arcade"
+msgstr "Arcade Tetris"
+
+#: ../computer/tetris.lua
+msgid "No room for place the Arcade!"
+msgstr "¡No hay lugar para colocar el arcade!"
+
+#: ../chains/init.lua
+msgid "Hanging chain (wrought iron)"
+msgstr "Cadena colgante (hierro forjado)"
+
+#: ../chains/init.lua
+msgid "Hanging chain (brass)"
+msgstr "Cadena colgante (latón)"
+
+#: ../chains/init.lua
+msgid "Hanging chain (ceiling mount, wrought iron)"
+msgstr "Cadena colgante (montada en techo, hierro forjado)"
+
+#: ../chains/init.lua
+msgid "Hanging chain (ceiling mount, brass)"
+msgstr "Cadena colgante (montada en techo, latón)"
+
+#: ../chains/init.lua
+msgid "Chandelier (wrought iron)"
+msgstr "Candelabro (hierro forjado)"
+
+#: ../chains/init.lua
+msgid "Chandelier (brass)"
+msgstr "Candelabro (latón)"
+
+#: ../itemframes/init.lua
+msgid "Item frame"
+msgstr "Marco para objetos"
+
+#: ../itemframes/init.lua
+msgid "Item frame (owned by @1)"
+msgstr "Marco para objetos (propiedad de @1)"
+
+#: ../itemframes/init.lua
+msgid "Pedestal"
+msgstr "Pedestal"
+
+#: ../itemframes/init.lua
+msgid "Pedestal (owned by @1)"
+msgstr "Pedestal (propiedad de @1)"
+
+#: ../plasmascreen/init.lua
+msgid "Plasma Screen TV Stand"
+msgstr "Mesa para televisión de pantalla de plasma"
+
+#: ../plasmascreen/init.lua
+msgid "Plasma TV"
+msgstr "Televisión de plasma"
+
+#: ../plasmascreen/init.lua
+msgid "Plasma TV (off)"
+msgstr "Televisión de plasma (apagada)"
+
+#: ../lrfurn/longsofas.lua
+msgid "Long Sofa"
+msgstr "Sofá largo"
+
+#: ../lrfurn/longsofas.lua ../lrfurn/sofas.lua
+msgid "No room to place the sofa!"
+msgstr "¡No hay lugar para colocar el sofá!"
+
+#: ../lrfurn/longsofas.lua ../lrfurn/armchairs.lua ../lrfurn/sofas.lua
+#: ../lrfurn/endtable.lua ../lrfurn/coffeetable.lua ../homedecor/init.lua
+msgid "Loaded!"
+msgstr "¡Cargado!"
+
+#: ../lrfurn/armchairs.lua
+msgid "Armchair"
+msgstr "Sillón"
+
+#: ../lrfurn/sofas.lua
+msgid "Sofa"
+msgstr "Sofá"
+
+#: ../lrfurn/endtable.lua
+msgid "End Table"
+msgstr "Mesa final"
+
+#: ../lrfurn/coffeetable.lua
+msgid "Coffee Table"
+msgstr "Mesa de café"
+
+#: ../lrfurn/coffeetable.lua
+msgid "No room to place the coffee table!"
+msgstr "¡No hay lugar para colocar la mesa de café!"
+
+#: ../fake_fire/init.lua
+msgid "Fake fire"
+msgstr "Fuego falso"
+
+#: ../fake_fire/init.lua
+msgid "Ice fire"
+msgstr "Fuego de hielo"
+
+#: ../fake_fire/init.lua
+msgid "Fancy Fire"
+msgstr "Fuego fantasía"
+
+#: ../fake_fire/init.lua
+msgid "Glowing Embers"
+msgstr "Brasas ardientes"
+
+#: ../fake_fire/init.lua
+msgid "Flint and steel"
+msgstr "Pedernal y acero"
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/furniture.lua
+msgid "black"
+msgstr "negra"
+
+#: ../homedecor/bedroom.lua ../homedecor/books.lua
+msgid "brown"
+msgstr "marrón"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/books.lua ../homedecor/furniture.lua
+msgid "blue"
+msgstr "azul"
+
+#: ../homedecor/bedroom.lua
+msgid "cyan"
+msgstr "cian"
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua
+msgid "dark grey"
+msgstr "gris oscuro"
+
+#: ../homedecor/bedroom.lua ../homedecor/furniture.lua
+msgid "dark green"
+msgstr "verde oscuro"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/exterior.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/books.lua
+msgid "green"
+msgstr "verde"
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua ../homedecor/books.lua
+msgid "grey"
+msgstr "gris"
+
+#: ../homedecor/bedroom.lua
+msgid "magenta"
+msgstr "magenta"
+
+#: ../homedecor/bedroom.lua
+msgid "orange"
+msgstr "naranja"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/furniture.lua
+msgid "pink"
+msgstr "rosa"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/shutters.lua
+#: ../homedecor/exterior.lua ../homedecor/books.lua ../homedecor/furniture.lua
+msgid "red"
+msgstr "roja"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/shutters.lua ../homedecor/books.lua
+#: ../homedecor/furniture.lua
+msgid "violet"
+msgstr "violeta"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/shutters.lua
+msgid "white"
+msgstr "blanca"
+
+#: ../homedecor/bedroom.lua ../homedecor/lighting.lua ../homedecor/shutters.lua
+#: ../homedecor/exterior.lua
+msgid "yellow"
+msgstr "amarilla"
+
+#: ../homedecor/bedroom.lua
+msgid "Bed (@1)"
+msgstr "Cama (@1)"
+
+#: ../homedecor/bedroom.lua
+msgid "Bed (@1, king sized)"
+msgstr "Cama (@1, tamaño rey)"
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua
+msgid "mahogany"
+msgstr "caoba"
+
+#: ../homedecor/bedroom.lua
+msgid "oak"
+msgstr "roble"
+
+#: ../homedecor/bedroom.lua
+msgid "Nightstand with One Drawer (@1)"
+msgstr "Mesa de luz con un cajón (@1)"
+
+#: ../homedecor/bedroom.lua
+msgid "One-drawer Nightstand"
+msgstr "Mesa de luz con un cajón"
+
+#: ../homedecor/bedroom.lua
+msgid "Nightstand with Two Drawers (@1)"
+msgstr "Mesa de luz con dos cajones (@1)"
+
+#: ../homedecor/bedroom.lua
+msgid "Two-drawer Nightstand"
+msgstr "Mesa de luz con dos cajones"
+
+#: ../homedecor/kitchen_furniture.lua ../homedecor/kitchen_appliances.lua
+msgid "granite"
+msgstr "granito"
+
+#: ../homedecor/kitchen_furniture.lua ../homedecor/kitchen_appliances.lua
+msgid "marble"
+msgstr "mármol"
+
+#: ../homedecor/kitchen_furniture.lua ../homedecor/kitchen_appliances.lua
+msgid "steel"
+msgstr "acero"
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Kitchen Cabinet"
+msgstr "Gabinete de cocina"
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Kitchen Cabinet (@1 top)"
+msgstr "Gabinete de cocina (mesada de @1)"
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Half-height Kitchen Cabinet (on ceiling)"
+msgstr "Gabinete de cocina de media altura (en techo)"
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Kitchen Cabinet with sink"
+msgstr "Gabinete de cocina con lavabo"
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Under-sink cabinet"
+msgstr "Gabinete bajo lavabo"
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Paper towels"
+msgstr "Toallas de papel"
+
+#: ../homedecor/furniture_medieval.lua
+msgid "Bars"
+msgstr "Barrotes"
+
+#: ../homedecor/furniture_medieval.lua
+msgid "Binding Bars"
+msgstr "Barrotes de contención"
+
+#: ../homedecor/furniture_medieval.lua
+msgid "Chains"
+msgstr "Cadenas"
+
+#: ../homedecor/furniture_medieval.lua
+msgid "Wall Torch"
+msgstr "Antorcha de pared"
+
+#: ../homedecor/furniture_medieval.lua
+msgid "Wall Lamp"
+msgstr "Lámpara de pared"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Refrigerator (stainless steel)"
+msgstr "Refrigerador (acero inoxidable)"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Refrigerator"
+msgstr "Refrigerador"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Oven"
+msgstr "Horno"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Oven (stainless steel)"
+msgstr "Horno (acero inoxidable)"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Microwave Oven"
+msgstr "Horno microondas"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Coffee Maker"
+msgstr "Cafetera"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Toaster"
+msgstr "Tostador"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Dishwasher"
+msgstr "Lavavajillas"
+
+#: ../homedecor/kitchen_appliances.lua ../homedecor/roofing.lua
+#: ../homedecor/window_treatments.lua ../homedecor/exterior.lua
+#: ../homedecor/misc-nodes.lua
+msgid "wood"
+msgstr "madera"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Dishwasher (@1)"
+msgstr "Lavavajillas (@1)"
+
+#: ../homedecor/roofing.lua
+msgid "Glass Skylight"
+msgstr "Claraboya de cristal"
+
+#: ../homedecor/roofing.lua
+msgid "Glass Skylight Frosted"
+msgstr "Claraboya de cristal esmerilado"
+
+#: ../homedecor/roofing.lua
+msgid "asphalt"
+msgstr "asfalto"
+
+#: ../homedecor/roofing.lua ../homedecor/misc-nodes.lua
+msgid "terracotta"
+msgstr "terracota"
+
+#: ../homedecor/roofing.lua
+msgid "Shingles (@1)"
+msgstr "Tejas (@1)"
+
+#: ../homedecor/roofing.lua
+msgid "@1 (outer corner)"
+msgstr "@1 (esquina exterior)"
+
+#: ../homedecor/roofing.lua
+msgid "@1 (inner corner)"
+msgstr "@1 (esquina interior)"
+
+#: ../homedecor/roofing.lua
+msgid "Wood Shingles"
+msgstr "Tejado de madera"
+
+#: ../homedecor/roofing.lua
+msgid "Asphalt Shingles"
+msgstr "Tejado de asfalto"
+
+#: ../homedecor/roofing.lua
+msgid "Terracotta Shingles"
+msgstr "Tejado de terracota"
+
+#: ../homedecor/roofing.lua
+msgid "Glass Shingles"
+msgstr "Claraboya de cristal"
+
+#: ../homedecor/roofing.lua
+msgid "Chimney"
+msgstr "Chimenea"
+
+#: ../homedecor/window_treatments.lua
+msgid "Window (quartered)"
+msgstr "Ventana (cuarteada)"
+
+#: ../homedecor/window_treatments.lua
+msgid "Window (plain)"
+msgstr "Ventana (lisa)"
+
+#: ../homedecor/window_treatments.lua
+msgid "Window Blinds (thick)"
+msgstr "Persianas (gruesas)"
+
+#: ../homedecor/window_treatments.lua
+msgid "Window Blinds (thin)"
+msgstr "Persianas (finas)"
+
+#: ../homedecor/window_treatments.lua
+msgid "Curtains"
+msgstr "Cortinas (@1)"
+
+#: ../homedecor/window_treatments.lua ../homedecor/fences.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/tables.lua
+msgid "brass"
+msgstr "latón"
+
+#: ../homedecor/window_treatments.lua ../homedecor/fences.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/tables.lua
+msgid "wrought iron"
+msgstr "hierro forjado"
+
+#: ../homedecor/window_treatments.lua
+msgid "Curtain Rod (@1)"
+msgstr "Palo de cortinas (@1)"
+
+#: ../homedecor/window_treatments.lua
+msgid "Window flowerbox"
+msgstr "Caja de flores de ventana"
+
+#: ../homedecor/window_treatments.lua
+msgid "Stained Glass"
+msgstr "Vídrio coloreado"
+
+#: ../homedecor/crafts.lua
+msgid "Uncooked Terracotta Base"
+msgstr "Base de terracota sin cocer"
+
+#: ../homedecor/crafts.lua
+msgid "Terracotta Roof Tile"
+msgstr "Tejado de terracota"
+
+#: ../homedecor/crafts.lua
+msgid "Oil extract"
+msgstr "Extracto de aceite"
+
+#: ../homedecor/crafts.lua
+msgid "Unprocessed paraffin"
+msgstr "Parafina sin procesar"
+
+#: ../homedecor/crafts.lua
+msgid "Plastic strips"
+msgstr "Tiras de plástico"
+
+#: ../homedecor/crafts.lua
+msgid "Small Wooden Drawer"
+msgstr "Cajón de madera pequeño"
+
+#: ../homedecor/crafts.lua
+msgid "Simple Integrated Circuit"
+msgstr "Circuito integrado simple"
+
+#: ../homedecor/crafts.lua
+msgid "Heating element"
+msgstr "Elemento de calefacción"
+
+#: ../homedecor/crafts.lua
+msgid "Motor"
+msgstr "Motor"
+
+#: ../homedecor/crafts.lua
+msgid "Power Crystal"
+msgstr "Cristal de poder"
+
+#: ../homedecor/crafts.lua
+msgid "Blank Canvas"
+msgstr "Lienzo en blanco"
+
+#: ../homedecor/crafts.lua
+msgid "VCR"
+msgstr "Grabadora de vídeo"
+
+#: ../homedecor/crafts.lua
+msgid "DVD Player"
+msgstr "Reproductor de DVD"
+
+#: ../homedecor/crafts.lua
+msgid "Spool of copper wire"
+msgstr "Bobina de alambre de cobre"
+
+#: ../homedecor/crafts.lua
+msgid "Spool of steel wire"
+msgstr "Bobina de alambre de acero"
+
+#: ../homedecor/crafts.lua
+msgid "Speaker driver"
+msgstr "Conductor de altavoz"
+
+#: ../homedecor/crafts.lua
+msgid "Fan blades"
+msgstr "Aspas de ventilador"
+
+#: ../homedecor/crafts.lua
+msgid "Copper Strip"
+msgstr "Tira de cobre"
+
+#: ../homedecor/crafts.lua
+msgid "Steel Strip"
+msgstr "Tira de acero"
+
+#: ../homedecor/crafts.lua
+msgid "Steel chainlink"
+msgstr "Cadenas de acero"
+
+#: ../homedecor/crafts.lua
+msgid "Brass chainlink"
+msgstr "Cadenas de latón"
+
+#: ../homedecor/crafts.lua
+msgid "Soda Can"
+msgstr "Lata de refresco"
+
+#: ../homedecor/crafts.lua
+msgid "Gold Coin (for soda vending machine)"
+msgstr "Moneda de oro (para la máquina expendedora)"
+
+#: ../homedecor/crafts.lua
+msgid "Silicon lump"
+msgstr "Bulto de silicio"
+
+#: ../homedecor/crafts.lua
+msgid "Brass Ingot"
+msgstr "Lingote de latón"
+
+#: ../homedecor/crafts.lua
+msgid "Small Flower Pot"
+msgstr "Maceta pequeña"
+
+#: ../homedecor/electronics.lua
+msgid "Large Stereo Speaker"
+msgstr "Altavoz estéreo grande"
+
+#: ../homedecor/electronics.lua
+msgid "Large Stereo Speaker, open front"
+msgstr "Altavoz estéreo grande con frente abierto"
+
+#: ../homedecor/electronics.lua
+msgid "Small Surround Speaker"
+msgstr "Altavoz envolvente pequeño"
+
+#: ../homedecor/electronics.lua
+msgid "Stereo Receiver"
+msgstr "Receptor estéreo"
+
+#: ../homedecor/electronics.lua
+msgid "Projection Screen Material"
+msgstr "Material para pantalla de proyección"
+
+#: ../homedecor/electronics.lua
+msgid "Small CRT Television"
+msgstr "Televisión CRT pequeña"
+
+#: ../homedecor/electronics.lua
+msgid "DVD and VCR"
+msgstr "DVD y reproductor de vídeo"
+
+#: ../homedecor/electronics.lua
+msgid "Telephone"
+msgstr "Teléfono"
+
+#: ../homedecor/lighting.lua
+msgid "Thick Glowlight"
+msgstr "Luz brillante gruesa (@1)"
+
+#: ../homedecor/lighting.lua
+msgid "Thin Glowlight"
+msgstr "Luz brillante fina (@1)"
+
+#: ../homedecor/lighting.lua
+msgid "Small Glowlight Cube"
+msgstr "Cubo pequeño de luz brillante (@1)"
+
+#: ../homedecor/lighting.lua
+msgid "Plasma Lamp"
+msgstr "Lámpara de plasma"
+
+#: ../homedecor/lighting.lua
+msgid "Plasma Ball"
+msgstr "Bola de plasma"
+
+#: ../homedecor/lighting.lua
+msgid "Thick Candle"
+msgstr "Vela gruesa"
+
+#: ../homedecor/lighting.lua
+msgid "Thin Candle"
+msgstr "Vela fina"
+
+#: ../homedecor/lighting.lua
+msgid "Candlestick (wrought iron)"
+msgstr "Candelero (hierro forjado)"
+
+#: ../homedecor/lighting.lua
+msgid "Candlestick (brass)"
+msgstr "Candelero (latón)"
+
+#: ../homedecor/lighting.lua
+msgid "Wall sconce"
+msgstr "Candelabro de pared"
+
+#: ../homedecor/lighting.lua
+msgid "Oil lamp (hurricane)"
+msgstr "Lámpara de aceite (huracán)"
+
+#: ../homedecor/lighting.lua
+msgid "Oil Lamp (tabletop)"
+msgstr "Lámpara de aceite de mesa"
+
+#: ../homedecor/lighting.lua
+msgid "Ground Lantern"
+msgstr "Linterna de piso"
+
+#: ../homedecor/lighting.lua
+msgid "Hanging Lantern"
+msgstr "Linterna colgante"
+
+#: ../homedecor/lighting.lua
+msgid "Lattice lantern (large)"
+msgstr "Linterna enrejada (grande)"
+
+#: ../homedecor/lighting.lua
+msgid "Lattice lantern (small)"
+msgstr "Linterna enrejada (pequeña)"
+
+#: ../homedecor/lighting.lua
+msgid "Table Lamp"
+msgstr "Lámpara de mesa (@1)"
+
+#: ../homedecor/lighting.lua
+msgid "Standing Lamp"
+msgstr "Lámpara de pié"
+
+#: ../homedecor/lighting.lua
+msgid "Desk Lamp (@1)"
+msgstr "Lámpara de escritorio (@1)"
+
+#: ../homedecor/lighting.lua
+msgid "Ceiling Lamp"
+msgstr "Lámpara de techo"
+
+#: ../homedecor/lighting.lua
+msgid "Ceiling Lamp (off)"
+msgstr "Lámpara de techo (apagada)"
+
+#: ../homedecor/fences.lua
+msgid "Fence/railing (@1)"
+msgstr "Cerca/barandilla (@1)"
+
+#: ../homedecor/fences.lua
+msgid "Fence/railing with sign (@1)"
+msgstr "Cerca/barandilla con letrero (@1)"
+
+#: ../homedecor/fences.lua
+msgid "Unpainted Picket Fence"
+msgstr "Cerca de piquete sin pintar"
+
+#: ../homedecor/fences.lua
+msgid "Unpainted Picket Fence Corner"
+msgstr "Esquina de cerca de piquete sin pintar"
+
+#: ../homedecor/fences.lua
+msgid "White Picket Fence"
+msgstr "Cerca de piquete blanca"
+
+#: ../homedecor/fences.lua
+msgid "White Picket Fence Corner"
+msgstr "Esquina de cerca de piquete blanca"
+
+#: ../homedecor/fences.lua
+msgid "Wooden Privacy Fence"
+msgstr "Cerca de privacidad de madera"
+
+#: ../homedecor/fences.lua
+msgid "Wooden Privacy Fence Corner"
+msgstr "Esquina de cerca de privacidad de madera"
+
+#: ../homedecor/fences.lua
+msgid "Barbed Wire Fence"
+msgstr "Cerca de alambre de espino"
+
+#: ../homedecor/fences.lua
+msgid "Barbed Wire Fence Corner"
+msgstr "Esquina de cerca de alambre de espino"
+
+#: ../homedecor/fences.lua
+msgid "Chainlink Fence"
+msgstr "Cerca de eslabón de cadena"
+
+#: ../homedecor/fences.lua
+msgid "Chainlink Fence Corner"
+msgstr "Esquina de cerca de eslabón de cadena"
+
+#: ../homedecor/fences.lua
+msgid "Wrought Iron fence (type 2)"
+msgstr "Cerca de hierro forjado (tipo 2)"
+
+#: ../homedecor/fences.lua
+msgid "Wrought Iron fence (type 2) Corner"
+msgstr "Esquina de cerca de hierro forjado (tipo 2)"
+
+#: ../homedecor/shutters.lua
+msgid "unpainted oak"
+msgstr "roble sin pintar"
+
+#: ../homedecor/shutters.lua
+msgid "forest green"
+msgstr "verde bosque"
+
+#: ../homedecor/shutters.lua
+msgid "light blue"
+msgstr "azul claro"
+
+#: ../homedecor/shutters.lua
+msgid "Wooden Shutter (@1)"
+msgstr "Postigo de madera (@1)"
+
+#: ../homedecor/exterior.lua
+msgid "Barbecue"
+msgstr "Barbacoa"
+
+#: ../homedecor/exterior.lua
+msgid "Garden Bench (style 1)"
+msgstr "Banco de jardín (estilo 1)"
+
+#: ../homedecor/exterior.lua
+msgid "Garden Bench (style 2)"
+msgstr "Banco de jardín (estilo 2)"
+
+#: ../homedecor/exterior.lua
+msgid "Deck Chair"
+msgstr "Tumbona"
+
+#: ../homedecor/exterior.lua
+msgid "Doghouse"
+msgstr "Casa de perros"
+
+#: ../homedecor/exterior.lua
+msgid "Simple Bench"
+msgstr "Banco simple"
+
+#: ../homedecor/exterior.lua
+msgid "Garden stone path"
+msgstr "Camino de piedra de jardín"
+
+#: ../homedecor/exterior.lua
+msgid "white wood"
+msgstr "madera blanca"
+
+#: ../homedecor/exterior.lua
+msgid "wood, with vegetation"
+msgstr "madera, con vegetación"
+
+#: ../homedecor/exterior.lua
+msgid "white wood, with vegetation"
+msgstr "madera blanca, con vegetación"
+
+#: ../homedecor/exterior.lua
+msgid "Garden Lattice (@1)"
+msgstr "Enrejado de jardín (@1)"
+
+#: ../homedecor/exterior.lua
+msgid "Tree's swing"
+msgstr "Columpio"
+
+#: ../homedecor/exterior.lua
+msgid "Water well"
+msgstr "Pozo de agua"
+
+#: ../homedecor/exterior.lua
+msgid "Shrubbery (@1)"
+msgstr "Arbustos (@1)"
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Toilet"
+msgstr "Inodoro"
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Toilet paper"
+msgstr "Papel higiénico"
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom Sink"
+msgstr "Lavabo de baño"
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom taps/faucet"
+msgstr "Grifo de baño"
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom taps/faucet (brass)"
+msgstr "Grifo de baño (latón)"
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Shower Tray"
+msgstr "Plato de ducha"
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Shower Head"
+msgstr "Ducha"
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom sundries set"
+msgstr "Artículos de baño"
+
+#: ../homedecor/climate-control.lua
+msgid "Air Conditioner"
+msgstr "Acondicionador de aire"
+
+#: ../homedecor/climate-control.lua
+msgid "Desk Fan"
+msgstr "Ventilador de escritorio"
+
+#: ../homedecor/climate-control.lua
+msgid "Ceiling Fan"
+msgstr "Ventilador de techo"
+
+#: ../homedecor/climate-control.lua
+msgid "Space heater"
+msgstr "Calentador de espacios"
+
+#: ../homedecor/climate-control.lua
+msgid "Radiator heater"
+msgstr "Radiador"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Mahogany Closet Door (@1 opening)"
+msgstr "Puerta de armario de caoba (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Oak Closet Door (@1 opening)"
+msgstr "Puerta de armario de roble (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Fancy Wood/Glass Door (@1 opening)"
+msgstr "Puerta de madera/cristal de lujo (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Glass Office Door (@1 opening)"
+msgstr "Vídrio de cristal de oficina (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Glass and Wood, Oak-colored (@1 opening)"
+msgstr "Vídrio y madera, color roble (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Glass and Wood, Mahogany-colored (@1 opening)"
+msgstr "Vídrio y madera, color caoba (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Glass and Wood, White (@1 opening)"
+msgstr "Vídrio y madera, blanca (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Plain Wooden Door (@1 opening)"
+msgstr "Puerta de madera lisa (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "White Bedroom Door (@1 opening)"
+msgstr "Puerta de habitación blanca (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Wrought Iron Gate/Door (@1 opening)"
+msgstr "Portón de hierro forjado (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Wooden door with glass insert (@1 opening)"
+msgstr "Puerta de madera con inserto de vídrio (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Wooden door with glass insert, type 2 (@1 opening)"
+msgstr "Puerta de madera con inserto de vídrio, tipo 2 (abre a la @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "left"
+msgstr "izquierda"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "right"
+msgstr "derecha"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Unpainted Picket Fence Gate"
+msgstr "Cerca de piquete sin pintar"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "White Picket Fence Gate"
+msgstr "Cerca de piquete blanca"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Barbed Wire Fence Gate"
+msgstr "Cerca de alambre de espino"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Chainlink Fence Gate"
+msgstr "Cerca de eslabón de cadena"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese wall (top)"
+msgstr "Pared japonesa (parte más alta)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese wall"
+msgstr "Pared japonesa"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese wall (bottom)"
+msgstr "Pared japonesa (parte más baja)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese tatami"
+msgstr "Tatami"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese-style door"
+msgstr "Puerta estilo japonés"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Textured Ceiling Paint"
+msgstr "Pintura de techo con textura"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Drop-Ceiling Tile"
+msgstr "Azulejo de techo"
+
+#: ../homedecor/misc-nodes.lua
+msgid "small"
+msgstr "pequeño"
+
+#: ../homedecor/misc-nodes.lua
+msgid "large"
+msgstr "grande"
+
+#: ../homedecor/misc-nodes.lua
+msgid "persian"
+msgstr "persa"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Rug (@1)"
+msgstr "Tapete (@1)"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Flower Pot (@1)"
+msgstr "Maceta (@1)"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Rose"
+msgstr "Rosa"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Tulip"
+msgstr "Tulipán"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Yellow Dandelion"
+msgstr "Diente de león amarillo"
+
+#: ../homedecor/misc-nodes.lua
+msgid "White Dandelion"
+msgstr "Diente de león blanco"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Blue Geranium"
+msgstr "Geranio azul"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Viola"
+msgstr "Viola"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Cactus"
+msgstr "Cacto"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Bonsai"
+msgstr "Bonsai"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Potted flower (@1)"
+msgstr "Flor en maceta (@1)"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Brass Pole"
+msgstr "Poste de latón"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Wrought Iron Pole"
+msgstr "Poste de hierro forjado"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Fishtank"
+msgstr "Estanque para peces"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Fishtank (lighted)"
+msgstr "Estanque para peces (iliminado)"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Cardboard box (big)"
+msgstr "Caja de cartón (grande)"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Cardboard box"
+msgstr "Caja de cartón"
+
+#: ../homedecor/misc-nodes.lua
+msgid "DVD/CD cabinet"
+msgstr "Gabinete de CDs/DVDs"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Pool Table"
+msgstr "Mesa de pool"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Piano"
+msgstr "Piano"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Trophy"
+msgstr "Trofeo"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Sport bench"
+msgstr "Banco deportivo"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Skateboard"
+msgstr "Patineta"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Metal tool cabinet and work table"
+msgstr "Mesa de trabajo y gabinete en hierro"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Picture Frame"
+msgstr "Marco de fotografía"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Decorative painting #@1"
+msgstr "Pintura decorativa nº@1"
+
+#: ../homedecor/misc-nodes.lua
+msgid "dark topped"
+msgstr "mesada oscura"
+
+#: ../homedecor/misc-nodes.lua
+msgid "diagonal"
+msgstr "diagonal"
+
+#: ../homedecor/misc-nodes.lua
+msgid "horizontal"
+msgstr "horizontal"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Banister for Stairs (@1, @2)"
+msgstr "Barandilla para escaleras (@1, @2)"
+
+#: ../homedecor/misc-nodes.lua
+msgid "not enough space"
+msgstr "no hay suficiente espacio"
+
+#: ../homedecor/tables.lua
+msgid "Small square glass table"
+msgstr "Mesa cuadrada pequeña de vídrio"
+
+#: ../homedecor/tables.lua
+msgid "Small round glass table"
+msgstr "Mesa redonda pequeña de vídrio"
+
+#: ../homedecor/tables.lua
+msgid "Large glass table piece"
+msgstr "Mesa grande de vídrio"
+
+#: ../homedecor/tables.lua
+msgid "Small square wooden table"
+msgstr "Mesa cuadrada pequeña de madera"
+
+#: ../homedecor/tables.lua
+msgid "Small round wooden table"
+msgstr "Mesa redonda pequeña de madera"
+
+#: ../homedecor/tables.lua
+msgid "Large wooden table piece"
+msgstr "Mesa grande de madera"
+
+#: ../homedecor/tables.lua
+msgid "Utility Table"
+msgstr "Mesa utilitaria"
+
+#: ../homedecor/tables.lua
+msgid "Table Legs (@1)"
+msgstr "Patas de mesa (@1)"
+
+#: ../homedecor/tables.lua
+msgid "Legs for Utility Table"
+msgstr "Patas para mesa utilitaria"
+
+#: ../homedecor/books.lua
+msgid "Writable Book (@1)"
+msgstr "Libro (@1)"
+
+#: ../homedecor/books.lua
+msgid "@1 has written in a book (title: \"@2\"): \"@3\" at location @4"
+msgstr "@1 ha escrito en un libro (título: \"@2\"): \"@3\" en la ubicación @4"
+
+#: ../homedecor/furniture.lua
+msgid "Table"
+msgstr "Mesa"
+
+#: ../homedecor/furniture.lua
+msgid "Mahogany Table"
+msgstr "Mesa de caoba"
+
+#: ../homedecor/furniture.lua
+msgid "White Table"
+msgstr "Mesa blanca"
+
+#: ../homedecor/furniture.lua
+msgid "plain"
+msgstr "liso"
+
+#: ../homedecor/furniture.lua
+msgid "Kitchen chair (@1)"
+msgstr "Silla de cocina (@1)"
+
+#: ../homedecor/furniture.lua
+msgid "Armchair (@1)"
+msgstr "Sillón (@1)"
+
+#: ../homedecor/furniture.lua
+msgid "Bookshelf (open-frame)"
+msgstr "Estante para libros (abierto)"
+
+#: ../homedecor/furniture.lua
+msgid "Wall Shelf"
+msgstr "Estante"
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 moves stuff in @2 at @3"
+msgstr "@1 mueve cosas en @2 en @3"
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 moves @2 to @3 at @4"
+msgstr "@1 mueve @2 a @3 en @4"
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 takes @2 from @3 at @4"
+msgstr "@1 toma @2 desde @3 en @4"
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 (owned by @2)"
+msgstr "@1 (propiedad de @2)"
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 tried to access a @2 belonging to @3 at @4"
+msgstr "@1 intentó acceder a @2 perteneciente a @3 en @4"
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 (Locked)"
+msgstr "@1 (Cerrado)"
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "Furnace"
+msgstr "Horno"
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (empty)"
+msgstr "@1 (vacía)"
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (active)"
+msgstr "@1 (activo)"
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (active: @2%)"
+msgstr "@1 (activo: @2%)"
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (out of fuel)"
+msgstr "@1 (sin combustible)"
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (output bins are full)"
+msgstr "@1 (output bins are full)"
+
+#: ../homedecor/office.lua
+msgid "Filing cabinet"
+msgstr "Archivador"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/grey"
+msgstr "blanco/gris"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/dark grey"
+msgstr "blanco/gris oscuro"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/black"
+msgstr "blanco/negro"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "black/dark grey"
+msgstr "negro/gris oscuro"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/red"
+msgstr "blanco/rojo"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/green"
+msgstr "blanco/verde"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/blue"
+msgstr "blanco/azul"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/yellow"
+msgstr "blanco/amarillo"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/tan"
+msgstr "blanco/marrón"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "Bathroom/kitchen tiles (@1)"
+msgstr "Azulejo de baño/cocina (@1)"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "Towel rod with towel"
+msgstr "Toallero con toalla"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "Medicine cabinet"
+msgstr "Gabinete de medicinas"
diff --git a/homedecor_i18n/locale/fr.po b/homedecor_i18n/locale/fr.po
new file mode 100644
index 0000000..30a7809
--- /dev/null
+++ b/homedecor_i18n/locale/fr.po
@@ -0,0 +1,1719 @@
+# French translations for PACKAGE package.
+# Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-01-30 21:31-0300\n"
+"PO-Revision-Date: 2017-01-25 00:03-0300\n"
+"Last-Translator: Calinou <Calinou@users.noreply.github.com>\n"
+"Language-Team: French\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: ../building_blocks/init.lua
+msgid "Adobe"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Roof block"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Streak Free Glass"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grate"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Fireplace"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Wood Framed Glass"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Terrycloth towel"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tarmac Spread"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Chess board tiling"
+msgstr ""
+
+#. Translators: "Brobble" is a portmanteau of "Brick" and "Cobble".
+#. Translate however you see fit.
+#: ../building_blocks/init.lua
+msgid "Brobble Spread"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Gravel Spread"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Hardwood"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Marble stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Marble slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Hardwood stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Hardwood slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grass stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+#, fuzzy
+msgid "Grass slab"
+msgstr "Barre en laiton"
+
+#: ../building_blocks/init.lua
+msgid "Tar stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grate Stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grate Slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Adobe stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Adobe slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Roofing stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Roofing slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Fake Grass"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Small bundle of sticks"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar base"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Marble"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar Knife"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Granite"
+msgstr ""
+
+#: ../inbox/init.lua
+msgid "Mailbox"
+msgstr ""
+
+#: ../inbox/init.lua
+msgid "@1's Mailbox"
+msgstr ""
+
+#: ../lavalamp/init.lua
+msgid "Lava Lamp"
+msgstr ""
+
+#: ../lavalamp/init.lua
+msgid "Lava Lamp (off)"
+msgstr ""
+
+#: ../computer/miscitems.lua ../homedecor/crafts.lua
+#, fuzzy
+msgid "Plastic sheet"
+msgstr "Bout de plastique"
+
+#: ../computer/miscitems.lua
+#, fuzzy
+msgid "Unprocessed Plastic base"
+msgstr "Base de plastique non transformée"
+
+#: ../computer/computers.lua
+msgid "Monitor and keyboard"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "WIFI Router"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "Computer Tower"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "Printer-Scanner Combo"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "Rack Server"
+msgstr ""
+
+#: ../computer/computers.lua
+#, fuzzy
+msgid "Not enough vertical space to place a server!"
+msgstr "Pas assez d'espace vertical pour placer une porte !"
+
+#: ../computer/tetris.lua
+msgid "New Game"
+msgstr ""
+
+#: ../computer/tetris.lua
+msgid "Tetris Arcade"
+msgstr ""
+
+#: ../computer/tetris.lua
+msgid "No room for place the Arcade!"
+msgstr ""
+
+#: ../chains/init.lua
+#, fuzzy
+msgid "Hanging chain (wrought iron)"
+msgstr "Barre de fer forgé"
+
+#: ../chains/init.lua
+msgid "Hanging chain (brass)"
+msgstr ""
+
+#: ../chains/init.lua
+msgid "Hanging chain (ceiling mount, wrought iron)"
+msgstr ""
+
+#: ../chains/init.lua
+msgid "Hanging chain (ceiling mount, brass)"
+msgstr ""
+
+#: ../chains/init.lua
+#, fuzzy
+msgid "Chandelier (wrought iron)"
+msgstr "Barre de fer forgé"
+
+#: ../chains/init.lua
+msgid "Chandelier (brass)"
+msgstr ""
+
+#: ../itemframes/init.lua
+msgid "Item frame"
+msgstr ""
+
+#: ../itemframes/init.lua
+#, fuzzy
+msgid "Item frame (owned by @1)"
+msgstr "%s (propriété de %s)"
+
+#: ../itemframes/init.lua
+msgid "Pedestal"
+msgstr ""
+
+#: ../itemframes/init.lua
+#, fuzzy
+msgid "Pedestal (owned by @1)"
+msgstr "%s (propriété de %s)"
+
+#: ../plasmascreen/init.lua
+msgid "Plasma Screen TV Stand"
+msgstr ""
+
+#: ../plasmascreen/init.lua
+msgid "Plasma TV"
+msgstr ""
+
+#: ../plasmascreen/init.lua
+msgid "Plasma TV (off)"
+msgstr ""
+
+#: ../lrfurn/longsofas.lua
+msgid "Long Sofa"
+msgstr ""
+
+#: ../lrfurn/longsofas.lua ../lrfurn/sofas.lua
+msgid "No room to place the sofa!"
+msgstr ""
+
+#: ../lrfurn/longsofas.lua ../lrfurn/armchairs.lua ../lrfurn/sofas.lua
+#: ../lrfurn/endtable.lua ../lrfurn/coffeetable.lua ../homedecor/init.lua
+#, fuzzy
+msgid "Loaded!"
+msgstr "Chargé !"
+
+#: ../lrfurn/armchairs.lua
+msgid "Armchair"
+msgstr ""
+
+#: ../lrfurn/sofas.lua
+msgid "Sofa"
+msgstr ""
+
+#: ../lrfurn/endtable.lua
+#, fuzzy
+msgid "End Table"
+msgstr "Porte en bois d'acajou"
+
+#: ../lrfurn/coffeetable.lua
+#, fuzzy
+msgid "Coffee Table"
+msgstr "Table basse"
+
+#: ../lrfurn/coffeetable.lua
+msgid "No room to place the coffee table!"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Fake fire"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Ice fire"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Fancy Fire"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Glowing Embers"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Flint and steel"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/furniture.lua
+msgid "black"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/books.lua
+msgid "brown"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/books.lua ../homedecor/furniture.lua
+#, fuzzy
+msgid "blue"
+msgstr "bleues"
+
+#: ../homedecor/bedroom.lua
+msgid "cyan"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua
+msgid "dark grey"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/furniture.lua
+#, fuzzy
+msgid "dark green"
+msgstr "vertes"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/exterior.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/books.lua
+#, fuzzy
+msgid "green"
+msgstr "vertes"
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua ../homedecor/books.lua
+msgid "grey"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "magenta"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "orange"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "pink"
+msgstr "roses"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/shutters.lua
+#: ../homedecor/exterior.lua ../homedecor/books.lua ../homedecor/furniture.lua
+#, fuzzy
+msgid "red"
+msgstr "rouges"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/shutters.lua ../homedecor/books.lua
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "violet"
+msgstr "violettes"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/shutters.lua
+#, fuzzy
+msgid "white"
+msgstr "blanches"
+
+#: ../homedecor/bedroom.lua ../homedecor/lighting.lua ../homedecor/shutters.lua
+#: ../homedecor/exterior.lua
+msgid "yellow"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "Bed (@1)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "Bed (@1, king sized)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua
+msgid "mahogany"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "oak"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+#, fuzzy
+msgid "Nightstand with One Drawer (@1)"
+msgstr "Table de chevet en chêne avec un tiroir"
+
+#: ../homedecor/bedroom.lua
+#, fuzzy
+msgid "One-drawer Nightstand"
+msgstr "Table de chevet avec un tiroir"
+
+#: ../homedecor/bedroom.lua
+#, fuzzy
+msgid "Nightstand with Two Drawers (@1)"
+msgstr "Table de chevet en chêne avec deux tiroirs"
+
+#: ../homedecor/bedroom.lua
+#, fuzzy
+msgid "Two-drawer Nightstand"
+msgstr "Table de chevet avec deux tiroirs"
+
+#: ../homedecor/kitchen_furniture.lua ../homedecor/kitchen_appliances.lua
+msgid "granite"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua ../homedecor/kitchen_appliances.lua
+msgid "marble"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua ../homedecor/kitchen_appliances.lua
+msgid "steel"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua
+#, fuzzy
+msgid "Kitchen Cabinet"
+msgstr "Meuble de cuisine"
+
+#: ../homedecor/kitchen_furniture.lua
+#, fuzzy
+msgid "Kitchen Cabinet (@1 top)"
+msgstr "Meuble de cuisine"
+
+#: ../homedecor/kitchen_furniture.lua
+#, fuzzy
+msgid "Half-height Kitchen Cabinet (on ceiling)"
+msgstr "Meuble de cuisine réduit en hauteur (sur le plafond)"
+
+#: ../homedecor/kitchen_furniture.lua
+#, fuzzy
+msgid "Kitchen Cabinet with sink"
+msgstr "Meuble de cuisine avec lavabo"
+
+#: ../homedecor/kitchen_furniture.lua
+#, fuzzy
+msgid "Under-sink cabinet"
+msgstr "Meuble sous évier"
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Paper towels"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua
+msgid "Bars"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua
+msgid "Binding Bars"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua
+msgid "Chains"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua
+msgid "Wall Torch"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua
+msgid "Wall Lamp"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+#, fuzzy
+msgid "Refrigerator (stainless steel)"
+msgstr "Réfrégirateur"
+
+#: ../homedecor/kitchen_appliances.lua
+#, fuzzy
+msgid "Refrigerator"
+msgstr "Réfrégirateur"
+
+#: ../homedecor/kitchen_appliances.lua
+#, fuzzy
+msgid "Oven"
+msgstr "Four"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Oven (stainless steel)"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Microwave Oven"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Coffee Maker"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Toaster"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Dishwasher"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua ../homedecor/roofing.lua
+#: ../homedecor/window_treatments.lua ../homedecor/exterior.lua
+#: ../homedecor/misc-nodes.lua
+msgid "wood"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Dishwasher (@1)"
+msgstr ""
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Glass Skylight"
+msgstr "Verre"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Glass Skylight Frosted"
+msgstr "Verre"
+
+#: ../homedecor/roofing.lua
+msgid "asphalt"
+msgstr ""
+
+#: ../homedecor/roofing.lua ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "terracotta"
+msgstr "Tuile en terre cuite"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Shingles (@1)"
+msgstr "Bardeaux de bois"
+
+#: ../homedecor/roofing.lua
+msgid "@1 (outer corner)"
+msgstr ""
+
+#: ../homedecor/roofing.lua
+msgid "@1 (inner corner)"
+msgstr ""
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Wood Shingles"
+msgstr "Bardeaux de bois"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Asphalt Shingles"
+msgstr "Bardeaux d'asphalte"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Terracotta Shingles"
+msgstr "Tuile en terre cuite"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Glass Shingles"
+msgstr "Bardeaux d'asphalte"
+
+#: ../homedecor/roofing.lua
+msgid "Chimney"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+msgid "Window (quartered)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+msgid "Window (plain)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+#, fuzzy
+msgid "Window Blinds (thick)"
+msgstr "Lampe blanche (épaisse)"
+
+#: ../homedecor/window_treatments.lua
+#, fuzzy
+msgid "Window Blinds (thin)"
+msgstr "Lampe blanche (fine)"
+
+#: ../homedecor/window_treatments.lua
+#, fuzzy
+msgid "Curtains"
+msgstr "Volets (%s)"
+
+#: ../homedecor/window_treatments.lua ../homedecor/fences.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/tables.lua
+msgid "brass"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua ../homedecor/fences.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/tables.lua
+#, fuzzy
+msgid "wrought iron"
+msgstr "Barre de fer forgé"
+
+#: ../homedecor/window_treatments.lua
+#, fuzzy
+msgid "Curtain Rod (@1)"
+msgstr "Volets (%s)"
+
+#: ../homedecor/window_treatments.lua
+msgid "Window flowerbox"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+msgid "Stained Glass"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Uncooked Terracotta Base"
+msgstr "Base de terre non cuite"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Terracotta Roof Tile"
+msgstr "Tuile de toit en terre cuite"
+
+#: ../homedecor/crafts.lua
+msgid "Oil extract"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Unprocessed paraffin"
+msgstr "Base de plastique non transformée"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Plastic strips"
+msgstr "Bout de plastique"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Small Wooden Drawer"
+msgstr "Petit tiroir en bois"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Simple Integrated Circuit"
+msgstr "Circuit intégré simple"
+
+#: ../homedecor/crafts.lua
+msgid "Heating element"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Motor"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Power Crystal"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Blank Canvas"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "VCR"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "DVD Player"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Spool of copper wire"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Spool of steel wire"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Speaker driver"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Fan blades"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Copper Strip"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Steel Strip"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Steel chainlink"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Brass chainlink"
+msgstr "Barrière en laiton"
+
+#: ../homedecor/crafts.lua
+msgid "Soda Can"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Gold Coin (for soda vending machine)"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Silicon lump"
+msgstr "Silicone"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Brass Ingot"
+msgstr "Lingot de laiton"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Small Flower Pot"
+msgstr "Pot de fleur en plastique noir"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Large Stereo Speaker"
+msgstr "Grand haut-parleur stéréo"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Large Stereo Speaker, open front"
+msgstr "Grand haut-parleur stéréo"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Small Surround Speaker"
+msgstr "Petit haut-parleur surround"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Stereo Receiver"
+msgstr "Récepteur stéréo"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Projection Screen Material"
+msgstr "Matériel pour projecteur"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Small CRT Television"
+msgstr "Petite télévision à tube cathodique"
+
+#: ../homedecor/electronics.lua
+msgid "DVD and VCR"
+msgstr ""
+
+#: ../homedecor/electronics.lua
+msgid "Telephone"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Thick Glowlight"
+msgstr "Lampe blanche (fine)"
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Thin Glowlight"
+msgstr "Lampe blanche (fine)"
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Small Glowlight Cube"
+msgstr "Lampe jaune (petit cube)"
+
+#: ../homedecor/lighting.lua
+msgid "Plasma Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Plasma Ball"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Thick Candle"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Thin Candle"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Candlestick (wrought iron)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Candlestick (brass)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Wall sconce"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Oil lamp (hurricane)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Oil Lamp (tabletop)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Ground Lantern"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Hanging Lantern"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Lattice lantern (large)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Lattice lantern (small)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Table Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Standing Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Desk Lamp (@1)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Ceiling Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Ceiling Lamp (off)"
+msgstr ""
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Fence/railing (@1)"
+msgstr "Barrière en laiton"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Fence/railing with sign (@1)"
+msgstr "Barrière en laiton avec pancarte"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Unpainted Picket Fence"
+msgstr "Barrière en piquets non peinte"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Unpainted Picket Fence Corner"
+msgstr "Barrière en piquets non peinte"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "White Picket Fence"
+msgstr "Barrière en piquets blanche"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "White Picket Fence Corner"
+msgstr "Barrière en piquets blanche"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Wooden Privacy Fence"
+msgstr "Barrière en bois"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Wooden Privacy Fence Corner"
+msgstr "Barrière en bois"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Barbed Wire Fence"
+msgstr "Barrière en fil barbelé"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Barbed Wire Fence Corner"
+msgstr "Barrière en fil barbelé"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Chainlink Fence"
+msgstr "Grillage"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Chainlink Fence Corner"
+msgstr "Grillage"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Wrought Iron fence (type 2)"
+msgstr "Barrière en fer forgé"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Wrought Iron fence (type 2) Corner"
+msgstr "Barrière en fer forgé"
+
+#: ../homedecor/shutters.lua
+msgid "unpainted oak"
+msgstr ""
+
+#: ../homedecor/shutters.lua
+msgid "forest green"
+msgstr ""
+
+#: ../homedecor/shutters.lua
+#, fuzzy
+msgid "light blue"
+msgstr "droite"
+
+#: ../homedecor/shutters.lua
+#, fuzzy
+msgid "Wooden Shutter (@1)"
+msgstr "Volet en bois (rouge)"
+
+#: ../homedecor/exterior.lua
+msgid "Barbecue"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Garden Bench (style 1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Garden Bench (style 2)"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Deck Chair"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Doghouse"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Simple Bench"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Garden stone path"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+#, fuzzy
+msgid "white wood"
+msgstr "blanches"
+
+#: ../homedecor/exterior.lua
+msgid "wood, with vegetation"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "white wood, with vegetation"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Garden Lattice (@1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Tree's swing"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Water well"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Shrubbery (@1)"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Toilet"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Toilet paper"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom Sink"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom taps/faucet"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom taps/faucet (brass)"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Shower Tray"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Shower Head"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom sundries set"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+msgid "Air Conditioner"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+msgid "Desk Fan"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+msgid "Ceiling Fan"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+msgid "Space heater"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+msgid "Radiator heater"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Mahogany Closet Door (@1 opening)"
+msgstr "Porte en bois d'acajou"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Oak Closet Door (@1 opening)"
+msgstr "Porte en bois de chêne"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Fancy Wood/Glass Door (@1 opening)"
+msgstr "Porte artistique en bois et verre"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Glass Office Door (@1 opening)"
+msgstr "Porte en verre"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Glass and Wood, Oak-colored (@1 opening)"
+msgstr "Porte couleur chêne en bois et verre"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Glass and Wood, Mahogany-colored (@1 opening)"
+msgstr "Porte couleur acajou en bois et verre"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Glass and Wood, White (@1 opening)"
+msgstr "Porte blanche en bois et verre"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Plain Wooden Door (@1 opening)"
+msgstr "Porte en bois simple"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "White Bedroom Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Wrought Iron Gate/Door (@1 opening)"
+msgstr "Barrière en fer forgé"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Wooden door with glass insert (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Wooden door with glass insert, type 2 (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "left"
+msgstr "gauche"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "right"
+msgstr "droite"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Unpainted Picket Fence Gate"
+msgstr "Porte de barrière en piquets non peinte"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "White Picket Fence Gate"
+msgstr "Porte de barrière en piquets blanche"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Barbed Wire Fence Gate"
+msgstr "Porte de barrière en fil barbelé"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Chainlink Fence Gate"
+msgstr "Porte de grillage"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese wall (top)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese wall"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese wall (bottom)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese tatami"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese-style door"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Textured Ceiling Paint"
+msgstr "Papier peint avec motif pour plafond"
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Drop-Ceiling Tile"
+msgstr "Dalle suspendue au plafond"
+
+#: ../homedecor/misc-nodes.lua
+msgid "small"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "large"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "persian"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Rug (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Flower Pot (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Rose"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Tulip"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Yellow Dandelion"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "White Dandelion"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Blue Geranium"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Viola"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Cactus"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Bonsai"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Potted flower (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Brass Pole"
+msgstr "Barre en laiton"
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Wrought Iron Pole"
+msgstr "Barre de fer forgé"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Fishtank"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Fishtank (lighted)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Cardboard box (big)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Cardboard box"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "DVD/CD cabinet"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Pool Table"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Piano"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Trophy"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Sport bench"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Skateboard"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Metal tool cabinet and work table"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Picture Frame"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Decorative painting #@1"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "dark topped"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "diagonal"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "horizontal"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Banister for Stairs (@1, @2)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "not enough space"
+msgstr ""
+
+#: ../homedecor/tables.lua
+msgid "Small square glass table"
+msgstr ""
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Small round glass table"
+msgstr "Petit haut-parleur surround"
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Large glass table piece"
+msgstr "Grand bout de verre de table"
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Small square wooden table"
+msgstr "Petit tiroir en bois"
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Small round wooden table"
+msgstr "Petit haut-parleur surround"
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Large wooden table piece"
+msgstr "Bout de dessus de table"
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Utility Table"
+msgstr "Table basse"
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Table Legs (@1)"
+msgstr "Pieds de table en laiton"
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Legs for Utility Table"
+msgstr "Pieds pour table basse"
+
+#: ../homedecor/books.lua
+msgid "Writable Book (@1)"
+msgstr ""
+
+#: ../homedecor/books.lua
+msgid "@1 has written in a book (title: \"@2\"): \"@3\" at location @4"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+msgid "Table"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "Mahogany Table"
+msgstr "Porte en bois d'acajou"
+
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "White Table"
+msgstr "Table basse"
+
+#: ../homedecor/furniture.lua
+msgid "plain"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "Kitchen chair (@1)"
+msgstr "Meuble de cuisine"
+
+#: ../homedecor/furniture.lua
+msgid "Armchair (@1)"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+msgid "Bookshelf (open-frame)"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+msgid "Wall Shelf"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua
+#, fuzzy
+msgid "@1 moves stuff in @2 at @3"
+msgstr "%s déplace des objets dans une table de chevet à %s"
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 moves @2 to @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 takes @2 from @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua
+#, fuzzy
+msgid "@1 (owned by @2)"
+msgstr "%s (propriété de %s)"
+
+#: ../homedecor/handlers/inventory.lua
+#, fuzzy
+msgid "@1 tried to access a @2 belonging to @3 at @4"
+msgstr "%s a essayé d'accéder à %s qui est propriété de %s à %s"
+
+#: ../homedecor/handlers/inventory.lua
+#, fuzzy
+msgid "@1 (Locked)"
+msgstr "%s (verrouillé)"
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "Furnace"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (empty)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (active)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (active: @2%)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua
+#, fuzzy
+msgid "@1 (out of fuel)"
+msgstr "Four sans carburant"
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (output bins are full)"
+msgstr ""
+
+#: ../homedecor/office.lua
+#, fuzzy
+msgid "Filing cabinet"
+msgstr "Meuble sous évier"
+
+#: ../homedecor/bathroom_furniture.lua
+#, fuzzy
+msgid "white/grey"
+msgstr "blanches"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/dark grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/black"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "black/dark grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+#, fuzzy
+msgid "white/red"
+msgstr "blanches"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/green"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+#, fuzzy
+msgid "white/blue"
+msgstr "blanches"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/yellow"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+#, fuzzy
+msgid "white/tan"
+msgstr "blanches"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "Bathroom/kitchen tiles (@1)"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "Towel rod with towel"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+#, fuzzy
+msgid "Medicine cabinet"
+msgstr "Meuble sous évier"
+
+#, fuzzy
+#~ msgid "dark_grey"
+#~ msgstr "vertes"
+
+#, fuzzy
+#~ msgid "dark_green"
+#~ msgstr "vertes"
+
+#~ msgid "%s moves stuff in kitchen cabinet at %s "
+#~ msgstr "%s déplace des objets dans un meuble de cuisine à %s"
+
+#~ msgid "%s moves stuff to kitchen cabinet at %s "
+#~ msgstr "%s édplace des objets vers un meuble de cuisine à %s"
+
+#~ msgid "%s takes stuff from kitchen cabinet at %s "
+#~ msgstr "%s prend des objets d'un meuble de cuisine à %s"
+
+#~ msgid "(Top Half, %s-opening) "
+#~ msgstr "(partie supérieur, charnière à %s)"
+
+#~ msgid "(%s-opening) "
+#~ msgstr "(charnière à %s)"
+
+#~ msgid "Bucket of white paint "
+#~ msgstr "Seau de peinture blanche"
+
+#~ msgid "Legs for Small Utility table "
+#~ msgstr "Pieds pour table basse"
+
+#~ msgid "Titanium Dioxide "
+#~ msgstr "Dioxide de titane"
+
+#~ msgid "Chainlink Fence Gate (open) "
+#~ msgstr "Porte de grillage (ouverte)"
+
+#~ msgid "Wrought Iron Fence/railing with sign "
+#~ msgstr "Barrière en fer forgé avec pancarte"
+
+#~ msgid "want to simply place the wielded item like usual. "
+#~ msgstr "veut simplement placer l'objet comme d'habitude."
+
+#~ msgid "Glass Table (Small, Round) "
+#~ msgstr "Table en verre (petite, ronde)"
+
+#~ msgid "Glass Table (Small, Square) "
+#~ msgstr "Table en verre (petite, carrée)"
+
+#~ msgid "Green Plastic Flower Pot "
+#~ msgstr "Pot de fleur en plastique vert"
+
+#~ msgid "Large Area Rug "
+#~ msgstr "Grande couverture"
+
+#~ msgid "Small Throw Rug "
+#~ msgstr "Petite couverture"
+
+#~ msgid "Terracotta Flower Pot "
+#~ msgstr "Pot de fleur en terre cuite"
+
+#~ msgid "Utility table mk2 "
+#~ msgstr "Table basse MK2"
+
+#~ msgid "Wooden Shutter (Black) "
+#~ msgstr "Volet en bois (noir)"
+
+#~ msgid "Wooden Shutter (Dark Grey) "
+#~ msgstr "Volet en bois (gris foncé)"
+
+#~ msgid "Wooden Shutter (Forest Green) "
+#~ msgstr "Volet en bois (vert foncé)"
+
+#~ msgid "Wooden Shutter (Grey) "
+#~ msgstr "Volet en bois (gris)"
+
+#~ msgid "Wooden Shutter (Light Blue) "
+#~ msgstr "Volet en bois (bleu clair)"
+
+#~ msgid "Wooden Shutter (Purple) "
+#~ msgstr "Volet en bois (violet)"
+
+#~ msgid "Wooden Shutter (Unpainted Mahogany) "
+#~ msgstr "Volet en bois (acajou non peint)"
+
+#~ msgid "Wooden Shutter (Unpainted Oak) "
+#~ msgstr "Volet en bois (chêne non peint)"
+
+#~ msgid "Wooden Shutter (White) "
+#~ msgstr "Volet en bois (blanc)"
+
+#~ msgid "Wooden Shutter (Yellow) "
+#~ msgstr "Volet en bois (jaune)"
+
+#~ msgid "Wooden Tabletop (Small, Round) "
+#~ msgstr "Dessus de table (petit, rond)"
+
+#~ msgid "Wooden Tabletop (Small, Square) "
+#~ msgstr "Dessus de table (petit, carré)"
+
+#~ msgid "someone "
+#~ msgstr "quelqu'un"
+
+#~ msgid "Sorry, %s owns that spot. "
+#~ msgstr "Désolé, %s est propriétaire de cette zone."
+
+#~ msgid "White Glowlight (small cube) "
+#~ msgstr "Lampe blanche (petit cube)"
+
+#~ msgid "White Glowlight (small cube, on ceiling) "
+#~ msgstr "Lampe blanche (petit cube, sur le plafond)"
+
+#~ msgid "White Glowlight (thick, on wall) "
+#~ msgstr "Lampe blanche (épaisse, sur le mur)"
+
+#~ msgid "White Glowlight (thin, on wall) "
+#~ msgstr "Lampe blanche (fine, sur le mur)"
+
+#~ msgid "Yellow Glowlight (small cube, on ceiling) "
+#~ msgstr "Lampe jaune (petit cube, sur le plafond)"
+
+#~ msgid "Yellow Glowlight (thick) "
+#~ msgstr "Lampe jaune (épaisse)"
+
+#~ msgid "Yellow Glowlight (thick, on wall) "
+#~ msgstr "Lampe jaune (épaisse, sur le mur)"
+
+#~ msgid "Yellow Glowlight (thin) "
+#~ msgstr "Lampe jaune (fine)"
+
+#~ msgid "Yellow Glowlight (thin, on wall) "
+#~ msgstr "Lampe jaune (fine, sur le mur)"
+
+#~ msgid "Locked Cabinet "
+#~ msgstr "Meuble verrouillé"
+
+#~ msgid "Locked Nightstand "
+#~ msgstr "Table de chevet verrouillée"
+
+#~ msgid "Locked Fridge "
+#~ msgstr "Réfrégirateur verrouillé"
+
+#~ msgid "Locked Oven "
+#~ msgstr "Four verrouillé"
+
+#~ msgid "Mahogany Nightstand with One Drawer "
+#~ msgstr "Table de chevet en acajou avec un tiroir"
+
+#~ msgid "Mahogany Nightstand with Two Drawers "
+#~ msgstr "Table de chevet en acajou avec deux tiroirs"
+
+#~ msgid "%s moves stuff to nightstand at %s "
+#~ msgstr "%s déplace des objets vers une table de chevet à %s"
+
+#~ msgid "%s takes stuff from nightstand at %s "
+#~ msgstr "%s prend des objets d'une table de chevet à %s"
+
+#~ msgid "Oven active: %d%% "
+#~ msgstr "Four actif : %d%%"
+
+#~ msgid "Oven is empty "
+#~ msgstr "Four vide"
+
+#~ msgid "%s moves stuff in refrigerator at %s "
+#~ msgstr "%s déplace des objets dans un réfrégirateur à %s"
+
+#~ msgid "%s moves stuff to refrigerator at %s "
+#~ msgstr "%s déplace des objets vers un réfrégirateur à %s"
+
+#~ msgid "%s takes stuff from refrigerator at %s "
+#~ msgstr "%s prend des objets d'un réfrégirateur à %s"
+
+#~ msgid "Not enough vertical space to place a refrigerator! "
+#~ msgstr "Pas assez d'espace vertical pour placer un réfrégirateur !"
+
+#~ msgid "E: character map file not found "
+#~ msgstr "E: fichier de table de caractère non trouvé"
+
+#~ msgid "W: unknown symbol in '%s' at %d (probably %s) "
+#~ msgstr "A: symbole inconnu dans '%s' dans %d (probablement %s)"
diff --git a/homedecor_i18n/locale/it.po b/homedecor_i18n/locale/it.po
new file mode 100644
index 0000000..7492464
--- /dev/null
+++ b/homedecor_i18n/locale/it.po
@@ -0,0 +1,1795 @@
+# Italian translations for PACKAGE package.
+# Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-01-30 21:31-0300\n"
+"PO-Revision-Date: 2017-01-25 00:03-0300\n"
+"Last-Translator: Emon <?>\n"
+"Language-Team: Italian\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../building_blocks/init.lua
+msgid "Adobe"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Roof block"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Streak Free Glass"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grate"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Fireplace"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Wood Framed Glass"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Terrycloth towel"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tarmac Spread"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Chess board tiling"
+msgstr ""
+
+#. Translators: "Brobble" is a portmanteau of "Brick" and "Cobble".
+#. Translate however you see fit.
+#: ../building_blocks/init.lua
+msgid "Brobble Spread"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Gravel Spread"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Hardwood"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Marble stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Marble slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Hardwood stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Hardwood slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grass stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+#, fuzzy
+msgid "Grass slab"
+msgstr "Palo di ottone"
+
+#: ../building_blocks/init.lua
+msgid "Tar stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grate Stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grate Slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Adobe stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Adobe slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Roofing stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Roofing slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Fake Grass"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Small bundle of sticks"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar base"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Marble"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar Knife"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Granite"
+msgstr ""
+
+#: ../inbox/init.lua
+msgid "Mailbox"
+msgstr ""
+
+#: ../inbox/init.lua
+msgid "@1's Mailbox"
+msgstr ""
+
+#: ../lavalamp/init.lua
+#, fuzzy
+msgid "Lava Lamp"
+msgstr "Lampada da tavolo"
+
+#: ../lavalamp/init.lua
+msgid "Lava Lamp (off)"
+msgstr ""
+
+#: ../computer/miscitems.lua ../homedecor/crafts.lua
+#, fuzzy
+msgid "Plastic sheet"
+msgstr "Foglio di plastica"
+
+#: ../computer/miscitems.lua
+#, fuzzy
+msgid "Unprocessed Plastic base"
+msgstr "Base non lavorata di plastica"
+
+#: ../computer/computers.lua
+msgid "Monitor and keyboard"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "WIFI Router"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "Computer Tower"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "Printer-Scanner Combo"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "Rack Server"
+msgstr ""
+
+#: ../computer/computers.lua
+#, fuzzy
+msgid "Not enough vertical space to place a server!"
+msgstr "Non c'è abbastanza spazio verticale per mettere un frigorifero!"
+
+#: ../computer/tetris.lua
+msgid "New Game"
+msgstr ""
+
+#: ../computer/tetris.lua
+msgid "Tetris Arcade"
+msgstr ""
+
+#: ../computer/tetris.lua
+msgid "No room for place the Arcade!"
+msgstr ""
+
+#: ../chains/init.lua
+#, fuzzy
+msgid "Hanging chain (wrought iron)"
+msgstr "Palo di ferro battuto"
+
+#: ../chains/init.lua
+msgid "Hanging chain (brass)"
+msgstr ""
+
+#: ../chains/init.lua
+msgid "Hanging chain (ceiling mount, wrought iron)"
+msgstr ""
+
+#: ../chains/init.lua
+msgid "Hanging chain (ceiling mount, brass)"
+msgstr ""
+
+#: ../chains/init.lua
+#, fuzzy
+msgid "Chandelier (wrought iron)"
+msgstr "Palo di ferro battuto"
+
+#: ../chains/init.lua
+msgid "Chandelier (brass)"
+msgstr ""
+
+#: ../itemframes/init.lua
+msgid "Item frame"
+msgstr ""
+
+#: ../itemframes/init.lua
+#, fuzzy
+msgid "Item frame (owned by @1)"
+msgstr "%s (di proprietà di %s)"
+
+#: ../itemframes/init.lua
+msgid "Pedestal"
+msgstr ""
+
+#: ../itemframes/init.lua
+#, fuzzy
+msgid "Pedestal (owned by @1)"
+msgstr "%s (di proprietà di %s)"
+
+#: ../plasmascreen/init.lua
+msgid "Plasma Screen TV Stand"
+msgstr ""
+
+#: ../plasmascreen/init.lua
+msgid "Plasma TV"
+msgstr ""
+
+#: ../plasmascreen/init.lua
+msgid "Plasma TV (off)"
+msgstr ""
+
+#: ../lrfurn/longsofas.lua
+msgid "Long Sofa"
+msgstr ""
+
+#: ../lrfurn/longsofas.lua ../lrfurn/sofas.lua
+msgid "No room to place the sofa!"
+msgstr ""
+
+#: ../lrfurn/longsofas.lua ../lrfurn/armchairs.lua ../lrfurn/sofas.lua
+#: ../lrfurn/endtable.lua ../lrfurn/coffeetable.lua ../homedecor/init.lua
+#, fuzzy
+msgid "Loaded!"
+msgstr "Caricato!"
+
+#: ../lrfurn/armchairs.lua
+#, fuzzy
+msgid "Armchair"
+msgstr "Poltrona (%s)"
+
+#: ../lrfurn/sofas.lua
+msgid "Sofa"
+msgstr ""
+
+#: ../lrfurn/endtable.lua
+#, fuzzy
+msgid "End Table"
+msgstr "Tavolo"
+
+#: ../lrfurn/coffeetable.lua
+#, fuzzy
+msgid "Coffee Table"
+msgstr "Tavolo"
+
+#: ../lrfurn/coffeetable.lua
+msgid "No room to place the coffee table!"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Fake fire"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Ice fire"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Fancy Fire"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Glowing Embers"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Flint and steel"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/furniture.lua
+#, fuzzy
+msgid "black"
+msgstr "nero"
+
+#: ../homedecor/bedroom.lua ../homedecor/books.lua
+msgid "brown"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/books.lua ../homedecor/furniture.lua
+#, fuzzy
+msgid "blue"
+msgstr "blu"
+
+#: ../homedecor/bedroom.lua
+msgid "cyan"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua
+#, fuzzy
+msgid "dark grey"
+msgstr "verde scuro"
+
+#: ../homedecor/bedroom.lua ../homedecor/furniture.lua
+#, fuzzy
+msgid "dark green"
+msgstr "verde scuro"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/exterior.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/books.lua
+#, fuzzy
+msgid "green"
+msgstr "verde"
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua ../homedecor/books.lua
+msgid "grey"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "magenta"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "orange"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "pink"
+msgstr "rosa"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/shutters.lua
+#: ../homedecor/exterior.lua ../homedecor/books.lua ../homedecor/furniture.lua
+#, fuzzy
+msgid "red"
+msgstr "rosso"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/shutters.lua ../homedecor/books.lua
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "violet"
+msgstr "viola"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/shutters.lua
+#, fuzzy
+msgid "white"
+msgstr "bianco"
+
+#: ../homedecor/bedroom.lua ../homedecor/lighting.lua ../homedecor/shutters.lua
+#: ../homedecor/exterior.lua
+msgid "yellow"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "Bed (@1)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "Bed (@1, king sized)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua
+msgid "mahogany"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "oak"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+#, fuzzy
+msgid "Nightstand with One Drawer (@1)"
+msgstr "Comodino in quercia con un cassetto"
+
+#: ../homedecor/bedroom.lua
+#, fuzzy
+msgid "One-drawer Nightstand"
+msgstr "Comodino a singolo cassetto"
+
+#: ../homedecor/bedroom.lua
+#, fuzzy
+msgid "Nightstand with Two Drawers (@1)"
+msgstr "Comodino in quercia con due cassetti"
+
+#: ../homedecor/bedroom.lua
+#, fuzzy
+msgid "Two-drawer Nightstand"
+msgstr "Comodino a doppio cassetto"
+
+#: ../homedecor/kitchen_furniture.lua ../homedecor/kitchen_appliances.lua
+msgid "granite"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua ../homedecor/kitchen_appliances.lua
+msgid "marble"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua ../homedecor/kitchen_appliances.lua
+msgid "steel"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua
+#, fuzzy
+msgid "Kitchen Cabinet"
+msgstr "Armadietto della cucina"
+
+#: ../homedecor/kitchen_furniture.lua
+#, fuzzy
+msgid "Kitchen Cabinet (@1 top)"
+msgstr "Armadietto della cucina"
+
+#: ../homedecor/kitchen_furniture.lua
+#, fuzzy
+msgid "Half-height Kitchen Cabinet (on ceiling)"
+msgstr "Armadietto della cucina di altezza dimezzata (sul soffitto)"
+
+#: ../homedecor/kitchen_furniture.lua
+#, fuzzy
+msgid "Kitchen Cabinet with sink"
+msgstr "Armadietto della cucina con il lavandino"
+
+#: ../homedecor/kitchen_furniture.lua
+#, fuzzy
+msgid "Under-sink cabinet"
+msgstr "Armadietto sotto il lavandino"
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Paper towels"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua
+#, fuzzy
+msgid "Bars"
+msgstr "Sbarre"
+
+#: ../homedecor/furniture_medieval.lua
+#, fuzzy
+msgid "Binding Bars"
+msgstr "Ceppi"
+
+#: ../homedecor/furniture_medieval.lua
+#, fuzzy
+msgid "Chains"
+msgstr "Catene"
+
+#: ../homedecor/furniture_medieval.lua
+#, fuzzy
+msgid "Wall Torch"
+msgstr "Torcia a muro"
+
+#: ../homedecor/furniture_medieval.lua
+#, fuzzy
+msgid "Wall Lamp"
+msgstr "Lampada da tavolo"
+
+#: ../homedecor/kitchen_appliances.lua
+#, fuzzy
+msgid "Refrigerator (stainless steel)"
+msgstr "Frigorifero"
+
+#: ../homedecor/kitchen_appliances.lua
+#, fuzzy
+msgid "Refrigerator"
+msgstr "Frigorifero"
+
+#: ../homedecor/kitchen_appliances.lua
+#, fuzzy
+msgid "Oven"
+msgstr "Forno"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Oven (stainless steel)"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+#, fuzzy
+msgid "Microwave Oven"
+msgstr "Forno a microonde"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Coffee Maker"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Toaster"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Dishwasher"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua ../homedecor/roofing.lua
+#: ../homedecor/window_treatments.lua ../homedecor/exterior.lua
+#: ../homedecor/misc-nodes.lua
+msgid "wood"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Dishwasher (@1)"
+msgstr ""
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Glass Skylight"
+msgstr "Lucernario di vetro"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Glass Skylight Frosted"
+msgstr "Lucernario di vetro satinato"
+
+#: ../homedecor/roofing.lua
+msgid "asphalt"
+msgstr ""
+
+#: ../homedecor/roofing.lua ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "terracotta"
+msgstr "Tegole di terracotta"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Shingles (@1)"
+msgstr "Tegole in legno"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "@1 (outer corner)"
+msgstr "Tegole in legno (angolo esterno)"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "@1 (inner corner)"
+msgstr "Tegole in legno (angolo interno)"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Wood Shingles"
+msgstr "Tegole in legno"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Asphalt Shingles"
+msgstr "Mattonelle di asfalto"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Terracotta Shingles"
+msgstr "Tegole di terracotta"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Glass Shingles"
+msgstr "Mattonelle di asfalto"
+
+#: ../homedecor/roofing.lua
+msgid "Chimney"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+msgid "Window (quartered)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+msgid "Window (plain)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+#, fuzzy
+msgid "Window Blinds (thick)"
+msgstr "Luce fosforescente bianca (spessa)"
+
+#: ../homedecor/window_treatments.lua
+#, fuzzy
+msgid "Window Blinds (thin)"
+msgstr "Luce fosforescente bianca (sottile)"
+
+#: ../homedecor/window_treatments.lua
+#, fuzzy
+msgid "Curtains"
+msgstr "Tende (%s)"
+
+#: ../homedecor/window_treatments.lua ../homedecor/fences.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/tables.lua
+msgid "brass"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua ../homedecor/fences.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/tables.lua
+#, fuzzy
+msgid "wrought iron"
+msgstr "Palo di ferro battuto"
+
+#: ../homedecor/window_treatments.lua
+#, fuzzy
+msgid "Curtain Rod (@1)"
+msgstr "Tende (%s)"
+
+#: ../homedecor/window_treatments.lua
+msgid "Window flowerbox"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+msgid "Stained Glass"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Uncooked Terracotta Base"
+msgstr "Base cruda di terracotta"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Terracotta Roof Tile"
+msgstr "Tegole di terracotta"
+
+#: ../homedecor/crafts.lua
+msgid "Oil extract"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Unprocessed paraffin"
+msgstr "Base non lavorata di plastica"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Plastic strips"
+msgstr "Foglio di plastica"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Small Wooden Drawer"
+msgstr "Bauletto in legno"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Simple Integrated Circuit"
+msgstr "Circuito integrato semplice"
+
+#: ../homedecor/crafts.lua
+msgid "Heating element"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Motor"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Power Crystal"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Blank Canvas"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "VCR"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "DVD Player"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Spool of copper wire"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Spool of steel wire"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Speaker driver"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Fan blades"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Copper Strip"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Steel Strip"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Steel chainlink"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Brass chainlink"
+msgstr "Recinzione di ottone/ringhiera"
+
+#: ../homedecor/crafts.lua
+msgid "Soda Can"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Gold Coin (for soda vending machine)"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Silicon lump"
+msgstr "Grumo di silicone"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Brass Ingot"
+msgstr "Lingotto di ottone"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Small Flower Pot"
+msgstr "Vaso per fiori di plastica nera"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Large Stereo Speaker"
+msgstr "Altoparlante stereo grande"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Large Stereo Speaker, open front"
+msgstr "Altoparlante stereo grande"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Small Surround Speaker"
+msgstr "Altoparlante audio surround piccolo"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Stereo Receiver"
+msgstr "Ricevitore stereo"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Projection Screen Material"
+msgstr "Materiale per lo schermo di proiezione"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Small CRT Television"
+msgstr "Piccola televisione a tubo catodico"
+
+#: ../homedecor/electronics.lua
+msgid "DVD and VCR"
+msgstr ""
+
+#: ../homedecor/electronics.lua
+msgid "Telephone"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Thick Glowlight"
+msgstr "Luce fosforescente bianca (sottile)"
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Thin Glowlight"
+msgstr "Luce fosforescente bianca (sottile)"
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Small Glowlight Cube"
+msgstr "Luce fosforescente gialla (cubo piccolo)"
+
+#: ../homedecor/lighting.lua
+msgid "Plasma Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Plasma Ball"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Thick Candle"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Thin Candle"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Candlestick (wrought iron)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Candlestick (brass)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Wall sconce"
+msgstr "Torcia a muro"
+
+#: ../homedecor/lighting.lua
+msgid "Oil lamp (hurricane)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Oil Lamp (tabletop)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Ground Lantern"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Hanging Lantern"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Lattice lantern (large)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Lattice lantern (small)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Table Lamp"
+msgstr "Lampada da tavolo"
+
+#: ../homedecor/lighting.lua
+msgid "Standing Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Desk Lamp (@1)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Ceiling Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Ceiling Lamp (off)"
+msgstr ""
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Fence/railing (@1)"
+msgstr "Recinzione di ottone/ringhiera"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Fence/railing with sign (@1)"
+msgstr "Recinzione di ottone/ringhiera con cartello"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Unpainted Picket Fence"
+msgstr "Recinzione non verniciata di paletti"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Unpainted Picket Fence Corner"
+msgstr "Angolo della recinzione non verniciata di paletti"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "White Picket Fence"
+msgstr "Recinzione di paletti bianca"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "White Picket Fence Corner"
+msgstr "Angolo della recinzione di paletti bianca"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Wooden Privacy Fence"
+msgstr "Recinzione di isolamento in legno"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Wooden Privacy Fence Corner"
+msgstr "Angolo della recinzione di isolamento in legno"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Barbed Wire Fence"
+msgstr "Recinzione di filo spinato"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Barbed Wire Fence Corner"
+msgstr "Angolo della recinzione di filo spinato"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Chainlink Fence"
+msgstr "Rete metallica"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Chainlink Fence Corner"
+msgstr "Angolo della rete metallica"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Wrought Iron fence (type 2)"
+msgstr "Recinzione/ringhiera in ferro battuto"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Wrought Iron fence (type 2) Corner"
+msgstr "Recinzione/ringhiera in ferro battuto"
+
+#: ../homedecor/shutters.lua
+msgid "unpainted oak"
+msgstr ""
+
+#: ../homedecor/shutters.lua
+msgid "forest green"
+msgstr ""
+
+#: ../homedecor/shutters.lua
+#, fuzzy
+msgid "light blue"
+msgstr "destra"
+
+#: ../homedecor/shutters.lua
+#, fuzzy
+msgid "Wooden Shutter (@1)"
+msgstr "Persiana in legno (rossa)"
+
+#: ../homedecor/exterior.lua
+msgid "Barbecue"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Garden Bench (style 1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Garden Bench (style 2)"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+#, fuzzy
+msgid "Deck Chair"
+msgstr "Sedia"
+
+#: ../homedecor/exterior.lua
+msgid "Doghouse"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Simple Bench"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Garden stone path"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+#, fuzzy
+msgid "white wood"
+msgstr "bianco"
+
+#: ../homedecor/exterior.lua
+msgid "wood, with vegetation"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "white wood, with vegetation"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Garden Lattice (@1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Tree's swing"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Water well"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Shrubbery (@1)"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+#, fuzzy
+msgid "Toilet"
+msgstr "Water"
+
+#: ../homedecor/bathroom_sanitation.lua
+#, fuzzy
+msgid "Toilet paper"
+msgstr "Water"
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom Sink"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom taps/faucet"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom taps/faucet (brass)"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+#, fuzzy
+msgid "Shower Tray"
+msgstr "Piatto della doccia"
+
+#: ../homedecor/bathroom_sanitation.lua
+#, fuzzy
+msgid "Shower Head"
+msgstr "Pigna della doccia"
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom sundries set"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+#, fuzzy
+msgid "Air Conditioner"
+msgstr "Condizionatore dell'aria"
+
+#: ../homedecor/climate-control.lua
+msgid "Desk Fan"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+msgid "Ceiling Fan"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+msgid "Space heater"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+msgid "Radiator heater"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Mahogany Closet Door (@1 opening)"
+msgstr "Porta dell'armadio in mogano"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Oak Closet Door (@1 opening)"
+msgstr "Porta dell'armadio in quercia"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Fancy Wood/Glass Door (@1 opening)"
+msgstr "Porta decorativa in vetro e legno"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Glass Office Door (@1 opening)"
+msgstr "Porta dell'ufficio in vetro"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Glass and Wood, Oak-colored (@1 opening)"
+msgstr "Vetro e legno, color quercia"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Glass and Wood, Mahogany-colored (@1 opening)"
+msgstr "Vetro e legno, color mogano"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Glass and Wood, White (@1 opening)"
+msgstr "Vetro e legno, bianca"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Plain Wooden Door (@1 opening)"
+msgstr "Porta in legno semplice"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "White Bedroom Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Wrought Iron Gate/Door (@1 opening)"
+msgstr "Recinzione/ringhiera in ferro battuto"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Wooden door with glass insert (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Wooden door with glass insert, type 2 (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "left"
+msgstr "sinistra"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "right"
+msgstr "destra"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Unpainted Picket Fence Gate"
+msgstr "Cancello della recinzione non verniciata di paletti"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "White Picket Fence Gate"
+msgstr "Cancello della recinzione di paletti bianca"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Barbed Wire Fence Gate"
+msgstr "Cancello della recinzione di filo spinato"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Chainlink Fence Gate"
+msgstr "Cancello della rete metallica"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese wall (top)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese wall"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese wall (bottom)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese tatami"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese-style door"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Textured Ceiling Paint"
+msgstr "Vernice con trama per il soffitto"
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Drop-Ceiling Tile"
+msgstr "Piastrella del controsoffitto"
+
+#: ../homedecor/misc-nodes.lua
+msgid "small"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "large"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "persian"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Rug (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Flower Pot (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Rose"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Tulip"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Yellow Dandelion"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "White Dandelion"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Blue Geranium"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Viola"
+msgstr "viola"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Cactus"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Bonsai"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Potted flower (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Brass Pole"
+msgstr "Palo di ottone"
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Wrought Iron Pole"
+msgstr "Palo di ferro battuto"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Fishtank"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Fishtank (lighted)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Cardboard box (big)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Cardboard box"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "DVD/CD cabinet"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Pool Table"
+msgstr "Tavolo"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Piano"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Trophy"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Sport bench"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Skateboard"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Metal tool cabinet and work table"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Picture Frame"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Decorative painting #@1"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "dark topped"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "diagonal"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "horizontal"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Banister for Stairs (@1, @2)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "not enough space"
+msgstr ""
+
+#: ../homedecor/tables.lua
+msgid "Small square glass table"
+msgstr ""
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Small round glass table"
+msgstr "Altoparlante audio surround piccolo"
+
+#: ../homedecor/tables.lua
+msgid "Large glass table piece"
+msgstr ""
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Small square wooden table"
+msgstr "Bauletto in legno"
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Small round wooden table"
+msgstr "Altoparlante audio surround piccolo"
+
+#: ../homedecor/tables.lua
+msgid "Large wooden table piece"
+msgstr ""
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Utility Table"
+msgstr "Tavolo di lavoro"
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Table Legs (@1)"
+msgstr "Gambe in ottone del tavolo"
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Legs for Utility Table"
+msgstr "Gambe per il tavolo da lavoro"
+
+#: ../homedecor/books.lua
+msgid "Writable Book (@1)"
+msgstr ""
+
+#: ../homedecor/books.lua
+msgid "@1 has written in a book (title: \"@2\"): \"@3\" at location @4"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "Table"
+msgstr "Tavolo"
+
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "Mahogany Table"
+msgstr "Porta dell'armadio in mogano"
+
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "White Table"
+msgstr "Tavolo di lavoro"
+
+#: ../homedecor/furniture.lua
+msgid "plain"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "Kitchen chair (@1)"
+msgstr "Armadietto della cucina"
+
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "Armchair (@1)"
+msgstr "Poltrona (%s)"
+
+#: ../homedecor/furniture.lua
+msgid "Bookshelf (open-frame)"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+msgid "Wall Shelf"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua
+#, fuzzy
+msgid "@1 moves stuff in @2 at @3"
+msgstr "%s sposta delle cose nel comodino alla posizione %s"
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 moves @2 to @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 takes @2 from @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua
+#, fuzzy
+msgid "@1 (owned by @2)"
+msgstr "%s (di proprietà di %s)"
+
+#: ../homedecor/handlers/inventory.lua
+#, fuzzy
+msgid "@1 tried to access a @2 belonging to @3 at @4"
+msgstr "%s ha provato ad accedere a %s di proprietà di %s alla posizione %s"
+
+#: ../homedecor/handlers/inventory.lua
+#, fuzzy
+msgid "@1 (Locked)"
+msgstr "%s (Con lucchetto)"
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "Furnace"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (empty)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (active)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (active: @2%)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua
+#, fuzzy
+msgid "@1 (out of fuel)"
+msgstr "Senza combustibile"
+
+#: ../homedecor/handlers/furnaces.lua
+#, fuzzy
+msgid "@1 (output bins are full)"
+msgstr "i contenitori sono pieni"
+
+#: ../homedecor/office.lua
+#, fuzzy
+msgid "Filing cabinet"
+msgstr "Armadietto sotto il lavandino"
+
+#: ../homedecor/bathroom_furniture.lua
+#, fuzzy
+msgid "white/grey"
+msgstr "bianco"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/dark grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/black"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "black/dark grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+#, fuzzy
+msgid "white/red"
+msgstr "bianco"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/green"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+#, fuzzy
+msgid "white/blue"
+msgstr "bianco"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/yellow"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+#, fuzzy
+msgid "white/tan"
+msgstr "bianco"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "Bathroom/kitchen tiles (@1)"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "Towel rod with towel"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+#, fuzzy
+msgid "Medicine cabinet"
+msgstr "Armadietto sotto il lavandino"
+
+#, fuzzy
+#~ msgid "dark_grey"
+#~ msgstr "verde scuro"
+
+#, fuzzy
+#~ msgid "dark_green"
+#~ msgstr "verde scuro"
+
+#~ msgid "%s moves stuff in kitchen cabinet at %s "
+#~ msgstr "%s sposta delle cose nell'armadietto della cucina a %s"
+
+#~ msgid "%s moves stuff to kitchen cabinet at %s "
+#~ msgstr "%s mette delle cose nell'armadietto della cucina a %s"
+
+#~ msgid "%s takes stuff from kitchen cabinet at %s "
+#~ msgstr "%s prende delle cose nell'armadietto della cucina a %s"
+
+#~ msgid "(Top Half, %s-opening) "
+#~ msgstr "(Metà superiore, apertura a %s)"
+
+#~ msgid "(%s-opening) "
+#~ msgstr "(apertura a %s)"
+
+#~ msgid "Not enough space above that spot to place a door! "
+#~ msgstr "Non c'è abbastanza spazio sopra quel punto per mettere una porta!"
+
+#~ msgid "Bucket of white paint "
+#~ msgstr "Secchio di vernice bianca"
+
+#~ msgid "Legs for Small Utility table "
+#~ msgstr "Gambe per il tavolo da lavoro piccolo"
+
+#~ msgid "Titanium Dioxide "
+#~ msgstr "Biossido di titanio"
+
+#~ msgid "Wrought Iron Fence/railing with sign "
+#~ msgstr "Recinzione/ringhiera in ferro battuto con cartello"
+
+#~ msgid "want to simply place the wielded item like usual. "
+#~ msgstr "vuole mettere l'oggetto impugnato come sempre."
+
+#~ msgid "Red "
+#~ msgstr "rosso"
+
+#~ msgid "Pink "
+#~ msgstr "rosa"
+
+#~ msgid "Blue "
+#~ msgstr "blu"
+
+#~ msgid "Sink "
+#~ msgstr "Lavandino"
+
+#~ msgid "Taps "
+#~ msgstr "Rubinetti"
+
+#~ msgid "Asphalt Shingles (outer corner) "
+#~ msgstr "Mattonelle di asfalto (angolo esterno)"
+
+#~ msgid "Asphalt Shingles (inner corner) "
+#~ msgstr "Mattonelle di asfalto (angolo interno)"
+
+#~ msgid "Wrought Iron Table Legs "
+#~ msgstr "Gambe in ferro battuto del tavolo"
+
+#~ msgid "Glass Table (Small, Round) "
+#~ msgstr "Tavolo di vetro (piccolo, rotondo)"
+
+#~ msgid "Glass Table (Small, Square) "
+#~ msgstr "Tavolo di vetro (piccolo, quadrato)"
+
+#~ msgid "Glass Table Piece (large) "
+#~ msgstr "Pezzo di tavolo di vetro (grande)"
+
+#~ msgid "Green Plastic Flower Pot "
+#~ msgstr "Vaso per fiori di plastica verde"
+
+#~ msgid "Large Area Rug "
+#~ msgstr "Tappeto per aree grandi"
+
+#~ msgid "Small Throw Rug "
+#~ msgstr "Tappetino"
+
+#~ msgid "Terracotta Flower Pot "
+#~ msgstr "Vaso per fiori in terracotta"
+
+#~ msgid "Terracotta Shingles (outer corner) "
+#~ msgstr "Tegole di terracotta (angolo esterno)"
+
+#~ msgid "Terracotta Shingles (inner corner) "
+#~ msgstr "Tegole di terracotta (angolo interno)"
+
+#~ msgid "Utility table mk2 "
+#~ msgstr "Tavolo di lavoro mk2"
+
+#~ msgid "Wooden Shutter (Black) "
+#~ msgstr "Persiana in legno (nera)"
+
+#~ msgid "Wooden Shutter (Dark grey) "
+#~ msgstr "Persiana in legno (grigia scura)"
+
+#~ msgid "Wooden Shutter (Forest green) "
+#~ msgstr "Persiana in legno (verde foresta)"
+
+#~ msgid "Wooden Shutter (Grey) "
+#~ msgstr "Persiana in legno (grigia)"
+
+#~ msgid "Wooden Shutter (Light blue) "
+#~ msgstr "Persiana in legno (blu chiaro)"
+
+#~ msgid "Wooden Shutter (Violet) "
+#~ msgstr "Persiana in legno (viola)"
+
+#~ msgid "Wooden Shutter (Mahogany) "
+#~ msgstr "Persiana in legno (mogano)"
+
+#~ msgid "Wooden Shutter (Unpainted oak) "
+#~ msgstr "Persiana in legno (quercia non verniciata)"
+
+#~ msgid "Wooden Shutter (White) "
+#~ msgstr "Persiana in legno (bianca)"
+
+#~ msgid "Wooden Shutter (Yellow) "
+#~ msgstr "Persiana in legno (gialla)"
+
+#~ msgid "Wood Table Piece (large)"
+#~ msgstr "Pezzo di tavolo in legno (grande)"
+
+#~ msgid "Wood Table (Small, Round) "
+#~ msgstr "Tavolo in legno (piccolo, rotondo)"
+
+#~ msgid "Wood Table (Small, Square) "
+#~ msgstr "Tavolo in legno (piccolo, quadrato)"
+
+#~ msgid "someone "
+#~ msgstr "qualcuno"
+
+#~ msgid "Sorry, %s owns that spot. "
+#~ msgstr "Spiacente, quel punto è di proprietà di %s."
+
+#~ msgid "White Glowlight (small cube) "
+#~ msgstr "Luce fosforescente bianca (cubo piccolo)"
+
+#~ msgid "White Glowlight (small cube, on ceiling) "
+#~ msgstr "Luce fosforescente bianca (cubo piccolo, sul soffitto)"
+
+#~ msgid "White Glowlight (thick, on wall) "
+#~ msgstr "Luce fosforescente bianca (spessa, a muro)"
+
+#~ msgid "White Glowlight (thin, on wall) "
+#~ msgstr "Luce fosforescente bianca (sottile, a muro)"
+
+#~ msgid "Yellow Glowlight (small cube, on ceiling) "
+#~ msgstr "Luce fosforescente gialla (cubo piccolo, sul soffitto)"
+
+#~ msgid "Yellow Glowlight (thick) "
+#~ msgstr "Luce fosforescente gialla (spessa)"
+
+#~ msgid "Yellow Glowlight (thick, on wall) "
+#~ msgstr "Luce fosforescente gialla (spessa, a muro)"
+
+#~ msgid "Yellow Glowlight (thin) "
+#~ msgstr "Luce fosforescente gialla (sottile)"
+
+#~ msgid "Yellow Glowlight (thin, on wall) "
+#~ msgstr "Luce fosforescente gialla (sottile, a muro)"
+
+#~ msgid "Locked Fridge "
+#~ msgstr "Frigorifero con lucchetto"
+
+#~ msgid "Locked Cabinet "
+#~ msgstr "Armadietto con lucchetto"
+
+#~ msgid "Locked Nightstand "
+#~ msgstr "Comodino con lucchetto"
+
+#~ msgid "Locked Oven "
+#~ msgstr "Forno con lucchetto"
+
+#~ msgid "Locked Oven (active) "
+#~ msgstr "Forno con lucchetto (attivo)"
+
+#~ msgid "Locked Microwave Oven "
+#~ msgstr "Forno a microonde con lucchetto"
+
+#~ msgid "Locked Microwave Oven (active) "
+#~ msgstr "Forno a microonde con lucchetto (attivo)"
+
+#~ msgid "Mahogany Nightstand with One Drawer "
+#~ msgstr "Comodino in mogano con un cassetto"
+
+#~ msgid "Mahogany Nightstand with Two Drawers "
+#~ msgstr "Comodino in mogano con due cassetti"
+
+#~ msgid "%s moves stuff to nightstand at %s "
+#~ msgstr "%s mette delle cose nel comodino alla posizione %s"
+
+#~ msgid "%s takes stuff from nightstand at %s "
+#~ msgstr "%s prende delle cose nel comodino alla posizione %s"
+
+#~ msgid "%s is empty "
+#~ msgstr "%s è vuoto"
+
+#~ msgid "%s moves stuff in refrigerator at %s "
+#~ msgstr "%s sposta delle cose nel frigorifero alla posizione %s"
+
+#~ msgid "%s moves stuff to refrigerator at %s "
+#~ msgstr "%s mette delle cose nel comodino alla posizione %s"
+
+#~ msgid "%s takes stuff from refrigerator at %s "
+#~ msgstr "%s prende delle cose nel comodino alla posizione %s"
+
+#~ msgid "%s wrote \"%s\" to sign at %s "
+#~ msgstr "%s ha scritto \"%s\" sul cartello alla posizione %s"
+
+#~ msgid "Reading cached character database. "
+#~ msgstr "Lettura della banca dati dei caratteri nella cache."
+
+#~ msgid "Font seems to have changed. Rebuilding cache. "
+#~ msgstr "Sembra che i caratteri siano cambiati. Ricostruzione della cache."
+
+#~ msgid "Could not find font line height in cached DB. Trying brute force. "
+#~ msgstr ""
+#~ "Non è stato possibile trovare l'altezza della riga del carattere nella "
+#~ "banca dati nella cache."
+
+#~ msgid "Registered %s and %s "
+#~ msgstr "Registrato %s e %s"
+
+#~ msgid "signs loaded "
+#~ msgstr "cartelli caricati"
diff --git a/homedecor_i18n/locale/ms.po b/homedecor_i18n/locale/ms.po
new file mode 100644
index 0000000..c550a46
--- /dev/null
+++ b/homedecor_i18n/locale/ms.po
@@ -0,0 +1,1795 @@
+# Malay translations for PACKAGE package.
+# Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Automatically generated, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-01-30 21:31-0300\n"
+"PO-Revision-Date: 2017-01-25 00:03-0300\n"
+"Last-Translator: muhdnurhidayat <MuhdNurHidayat@users.noreply.github.com>\n"
+"Language-Team: Malay\n"
+"Language: ms\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../building_blocks/init.lua
+msgid "Adobe"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Roof block"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Streak Free Glass"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grate"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Fireplace"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Wood Framed Glass"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Terrycloth towel"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tarmac Spread"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Chess board tiling"
+msgstr ""
+
+#. Translators: "Brobble" is a portmanteau of "Brick" and "Cobble".
+#. Translate however you see fit.
+#: ../building_blocks/init.lua
+msgid "Brobble Spread"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Gravel Spread"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Hardwood"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Marble stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Marble slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Hardwood stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Hardwood slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grass stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+#, fuzzy
+msgid "Grass slab"
+msgstr "Tiang Loyang"
+
+#: ../building_blocks/init.lua
+msgid "Tar stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grate Stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grate Slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Adobe stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Adobe slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Roofing stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Roofing slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Fake Grass"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Small bundle of sticks"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar base"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Marble"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar Knife"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Granite"
+msgstr ""
+
+#: ../inbox/init.lua
+msgid "Mailbox"
+msgstr ""
+
+#: ../inbox/init.lua
+msgid "@1's Mailbox"
+msgstr ""
+
+#: ../lavalamp/init.lua
+#, fuzzy
+msgid "Lava Lamp"
+msgstr "Lampu Meja"
+
+#: ../lavalamp/init.lua
+msgid "Lava Lamp (off)"
+msgstr ""
+
+#: ../computer/miscitems.lua ../homedecor/crafts.lua
+#, fuzzy
+msgid "Plastic sheet"
+msgstr "Kepingan Plastik"
+
+#: ../computer/miscitems.lua
+#, fuzzy
+msgid "Unprocessed Plastic base"
+msgstr "Bes Plastik Belum Diproses"
+
+#: ../computer/computers.lua
+msgid "Monitor and keyboard"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "WIFI Router"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "Computer Tower"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "Printer-Scanner Combo"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "Rack Server"
+msgstr ""
+
+#: ../computer/computers.lua
+#, fuzzy
+msgid "Not enough vertical space to place a server!"
+msgstr "Tidak cukup ruangan menegak untuk meletak peti sejuk!"
+
+#: ../computer/tetris.lua
+msgid "New Game"
+msgstr ""
+
+#: ../computer/tetris.lua
+msgid "Tetris Arcade"
+msgstr ""
+
+#: ../computer/tetris.lua
+msgid "No room for place the Arcade!"
+msgstr ""
+
+#: ../chains/init.lua
+#, fuzzy
+msgid "Hanging chain (wrought iron)"
+msgstr "Tiang Besi Tempaan"
+
+#: ../chains/init.lua
+msgid "Hanging chain (brass)"
+msgstr ""
+
+#: ../chains/init.lua
+msgid "Hanging chain (ceiling mount, wrought iron)"
+msgstr ""
+
+#: ../chains/init.lua
+msgid "Hanging chain (ceiling mount, brass)"
+msgstr ""
+
+#: ../chains/init.lua
+#, fuzzy
+msgid "Chandelier (wrought iron)"
+msgstr "Tiang Besi Tempaan"
+
+#: ../chains/init.lua
+msgid "Chandelier (brass)"
+msgstr ""
+
+#: ../itemframes/init.lua
+msgid "Item frame"
+msgstr ""
+
+#: ../itemframes/init.lua
+#, fuzzy
+msgid "Item frame (owned by @1)"
+msgstr "%s (hak milik %s)"
+
+#: ../itemframes/init.lua
+msgid "Pedestal"
+msgstr ""
+
+#: ../itemframes/init.lua
+#, fuzzy
+msgid "Pedestal (owned by @1)"
+msgstr "%s (hak milik %s)"
+
+#: ../plasmascreen/init.lua
+msgid "Plasma Screen TV Stand"
+msgstr ""
+
+#: ../plasmascreen/init.lua
+msgid "Plasma TV"
+msgstr ""
+
+#: ../plasmascreen/init.lua
+msgid "Plasma TV (off)"
+msgstr ""
+
+#: ../lrfurn/longsofas.lua
+msgid "Long Sofa"
+msgstr ""
+
+#: ../lrfurn/longsofas.lua ../lrfurn/sofas.lua
+msgid "No room to place the sofa!"
+msgstr ""
+
+#: ../lrfurn/longsofas.lua ../lrfurn/armchairs.lua ../lrfurn/sofas.lua
+#: ../lrfurn/endtable.lua ../lrfurn/coffeetable.lua ../homedecor/init.lua
+#, fuzzy
+msgid "Loaded!"
+msgstr "Telah Dimuatkan!"
+
+#: ../lrfurn/armchairs.lua
+#, fuzzy
+msgid "Armchair"
+msgstr "Kerusi Tangan (%s)"
+
+#: ../lrfurn/sofas.lua
+msgid "Sofa"
+msgstr ""
+
+#: ../lrfurn/endtable.lua
+#, fuzzy
+msgid "End Table"
+msgstr "Meja"
+
+#: ../lrfurn/coffeetable.lua
+#, fuzzy
+msgid "Coffee Table"
+msgstr "Meja"
+
+#: ../lrfurn/coffeetable.lua
+msgid "No room to place the coffee table!"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Fake fire"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Ice fire"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Fancy Fire"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Glowing Embers"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Flint and steel"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/furniture.lua
+#, fuzzy
+msgid "black"
+msgstr "Hitam"
+
+#: ../homedecor/bedroom.lua ../homedecor/books.lua
+msgid "brown"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/books.lua ../homedecor/furniture.lua
+#, fuzzy
+msgid "blue"
+msgstr "biru"
+
+#: ../homedecor/bedroom.lua
+msgid "cyan"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua
+#, fuzzy
+msgid "dark grey"
+msgstr "Hijau Gelap"
+
+#: ../homedecor/bedroom.lua ../homedecor/furniture.lua
+#, fuzzy
+msgid "dark green"
+msgstr "Hijau Gelap"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/exterior.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/books.lua
+#, fuzzy
+msgid "green"
+msgstr "hijau"
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua ../homedecor/books.lua
+msgid "grey"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "magenta"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "orange"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "pink"
+msgstr "merah jambu"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/shutters.lua
+#: ../homedecor/exterior.lua ../homedecor/books.lua ../homedecor/furniture.lua
+#, fuzzy
+msgid "red"
+msgstr "merah"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/shutters.lua ../homedecor/books.lua
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "violet"
+msgstr "ungu"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/shutters.lua
+#, fuzzy
+msgid "white"
+msgstr "putih"
+
+#: ../homedecor/bedroom.lua ../homedecor/lighting.lua ../homedecor/shutters.lua
+#: ../homedecor/exterior.lua
+msgid "yellow"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "Bed (@1)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "Bed (@1, king sized)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua
+msgid "mahogany"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "oak"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+#, fuzzy
+msgid "Nightstand with One Drawer (@1)"
+msgstr "Kabinet Katil Oak dengan Satu Laci"
+
+#: ../homedecor/bedroom.lua
+#, fuzzy
+msgid "One-drawer Nightstand"
+msgstr "Kabinet Katil Laci Satu"
+
+#: ../homedecor/bedroom.lua
+#, fuzzy
+msgid "Nightstand with Two Drawers (@1)"
+msgstr "Kabinet Katil Oak dengan Dua Laci"
+
+#: ../homedecor/bedroom.lua
+#, fuzzy
+msgid "Two-drawer Nightstand"
+msgstr "Kabinet Katil Laci Dua"
+
+#: ../homedecor/kitchen_furniture.lua ../homedecor/kitchen_appliances.lua
+msgid "granite"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua ../homedecor/kitchen_appliances.lua
+msgid "marble"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua ../homedecor/kitchen_appliances.lua
+msgid "steel"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua
+#, fuzzy
+msgid "Kitchen Cabinet"
+msgstr "Kabinet Dapur"
+
+#: ../homedecor/kitchen_furniture.lua
+#, fuzzy
+msgid "Kitchen Cabinet (@1 top)"
+msgstr "Kabinet Dapur"
+
+#: ../homedecor/kitchen_furniture.lua
+#, fuzzy
+msgid "Half-height Kitchen Cabinet (on ceiling)"
+msgstr "Kabinet Dapur Separuh (atas siling)"
+
+#: ../homedecor/kitchen_furniture.lua
+#, fuzzy
+msgid "Kitchen Cabinet with sink"
+msgstr "Kabinet Dapur dengan Sinki"
+
+#: ../homedecor/kitchen_furniture.lua
+#, fuzzy
+msgid "Under-sink cabinet"
+msgstr "Kabinet Bawah Sinki"
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Paper towels"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua
+#, fuzzy
+msgid "Bars"
+msgstr "Palang"
+
+#: ../homedecor/furniture_medieval.lua
+#, fuzzy
+msgid "Binding Bars"
+msgstr "Palang Bersambung"
+
+#: ../homedecor/furniture_medieval.lua
+#, fuzzy
+msgid "Chains"
+msgstr "Rantai"
+
+#: ../homedecor/furniture_medieval.lua
+#, fuzzy
+msgid "Wall Torch"
+msgstr "Obor Dinding"
+
+#: ../homedecor/furniture_medieval.lua
+#, fuzzy
+msgid "Wall Lamp"
+msgstr "Lampu Meja"
+
+#: ../homedecor/kitchen_appliances.lua
+#, fuzzy
+msgid "Refrigerator (stainless steel)"
+msgstr "Peti Sejuk"
+
+#: ../homedecor/kitchen_appliances.lua
+#, fuzzy
+msgid "Refrigerator"
+msgstr "Peti Sejuk"
+
+#: ../homedecor/kitchen_appliances.lua
+#, fuzzy
+msgid "Oven"
+msgstr "Ketuhar"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Oven (stainless steel)"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+#, fuzzy
+msgid "Microwave Oven"
+msgstr "Ketuhar Gelombang Mikro"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Coffee Maker"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Toaster"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Dishwasher"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua ../homedecor/roofing.lua
+#: ../homedecor/window_treatments.lua ../homedecor/exterior.lua
+#: ../homedecor/misc-nodes.lua
+msgid "wood"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Dishwasher (@1)"
+msgstr ""
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Glass Skylight"
+msgstr "Bumbung Kaca"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Glass Skylight Frosted"
+msgstr "Bumbung Kaca Berkabut"
+
+#: ../homedecor/roofing.lua
+msgid "asphalt"
+msgstr ""
+
+#: ../homedecor/roofing.lua ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "terracotta"
+msgstr "Genting Terracotta"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Shingles (@1)"
+msgstr "Genting Kayu"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "@1 (outer corner)"
+msgstr "Genting Kayu (bucu luar)"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "@1 (inner corner)"
+msgstr "Genting Kayu (bucu dalam)"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Wood Shingles"
+msgstr "Genting Kayu"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Asphalt Shingles"
+msgstr "Genting Asfalt"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Terracotta Shingles"
+msgstr "Genting Terracotta"
+
+#: ../homedecor/roofing.lua
+#, fuzzy
+msgid "Glass Shingles"
+msgstr "Genting Asfalt"
+
+#: ../homedecor/roofing.lua
+msgid "Chimney"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+msgid "Window (quartered)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+msgid "Window (plain)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+#, fuzzy
+msgid "Window Blinds (thick)"
+msgstr "Lampu Bara Putih (tebal)"
+
+#: ../homedecor/window_treatments.lua
+#, fuzzy
+msgid "Window Blinds (thin)"
+msgstr "Lampu Bara (nipis)"
+
+#: ../homedecor/window_treatments.lua
+#, fuzzy
+msgid "Curtains"
+msgstr "Langsir (%s)"
+
+#: ../homedecor/window_treatments.lua ../homedecor/fences.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/tables.lua
+msgid "brass"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua ../homedecor/fences.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/tables.lua
+#, fuzzy
+msgid "wrought iron"
+msgstr "Tiang Besi Tempaan"
+
+#: ../homedecor/window_treatments.lua
+#, fuzzy
+msgid "Curtain Rod (@1)"
+msgstr "Langsir (%s)"
+
+#: ../homedecor/window_treatments.lua
+msgid "Window flowerbox"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+msgid "Stained Glass"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Uncooked Terracotta Base"
+msgstr "Bes Terracotta Belum Dimasak"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Terracotta Roof Tile"
+msgstr "Genting Bumbung Terracotta"
+
+#: ../homedecor/crafts.lua
+msgid "Oil extract"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Unprocessed paraffin"
+msgstr "Bes Plastik Belum Diproses"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Plastic strips"
+msgstr "Kepingan Plastik"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Small Wooden Drawer"
+msgstr "Laci Kayu Kecil"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Simple Integrated Circuit"
+msgstr "Litar Bersepadu Ringkas"
+
+#: ../homedecor/crafts.lua
+msgid "Heating element"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Motor"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Power Crystal"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Blank Canvas"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "VCR"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "DVD Player"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Spool of copper wire"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Spool of steel wire"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Speaker driver"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Fan blades"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Copper Strip"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Steel Strip"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Steel chainlink"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Brass chainlink"
+msgstr "Pagar/Kisi-kisi Loyang"
+
+#: ../homedecor/crafts.lua
+msgid "Soda Can"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Gold Coin (for soda vending machine)"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Silicon lump"
+msgstr "Ketulan Silikon"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Brass Ingot"
+msgstr "Jongkong Loyang"
+
+#: ../homedecor/crafts.lua
+#, fuzzy
+msgid "Small Flower Pot"
+msgstr "Pasu Bunga Plastik Hitam"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Large Stereo Speaker"
+msgstr "Pembesar Suara Stereo Besar"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Large Stereo Speaker, open front"
+msgstr "Pembesar Suara Stereo Besar"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Small Surround Speaker"
+msgstr "Pembesar Suara Keliling Kecil"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Stereo Receiver"
+msgstr "Penerima Stereo"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Projection Screen Material"
+msgstr "Bahan Skrin Pemancaran"
+
+#: ../homedecor/electronics.lua
+#, fuzzy
+msgid "Small CRT Television"
+msgstr "Televisyen CRT Kecil"
+
+#: ../homedecor/electronics.lua
+msgid "DVD and VCR"
+msgstr ""
+
+#: ../homedecor/electronics.lua
+msgid "Telephone"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Thick Glowlight"
+msgstr "Lampu Bara (nipis)"
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Thin Glowlight"
+msgstr "Lampu Bara (nipis)"
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Small Glowlight Cube"
+msgstr "Lampu Bara Kuning (kiub kecil)"
+
+#: ../homedecor/lighting.lua
+msgid "Plasma Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Plasma Ball"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Thick Candle"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Thin Candle"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Candlestick (wrought iron)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Candlestick (brass)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Wall sconce"
+msgstr "Obor Dinding"
+
+#: ../homedecor/lighting.lua
+msgid "Oil lamp (hurricane)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Oil Lamp (tabletop)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Ground Lantern"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Hanging Lantern"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Lattice lantern (large)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Lattice lantern (small)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Table Lamp"
+msgstr "Lampu Meja"
+
+#: ../homedecor/lighting.lua
+msgid "Standing Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Desk Lamp (@1)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Ceiling Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Ceiling Lamp (off)"
+msgstr ""
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Fence/railing (@1)"
+msgstr "Pagar/Kisi-kisi Loyang"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Fence/railing with sign (@1)"
+msgstr "Pagar/Kisi-kisi Loyang dengan Papan Tanda"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Unpainted Picket Fence"
+msgstr "Pagar Pancang Tidak Bercat"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Unpainted Picket Fence Corner"
+msgstr "Bucu Pagar Pancang Tidak Bercat"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "White Picket Fence"
+msgstr "Pagar Pancang Putih"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "White Picket Fence Corner"
+msgstr "Bucu Pagar Pancang Putih"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Wooden Privacy Fence"
+msgstr "Pagar Privasi Kayu"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Wooden Privacy Fence Corner"
+msgstr "Bucu Pagar Privasi Kayu"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Barbed Wire Fence"
+msgstr "Pagar Dawai Berduri"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Barbed Wire Fence Corner"
+msgstr "Bucu Pagar Dawai Berduri"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Chainlink Fence"
+msgstr "Pagar Dawai Berangkai"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Chainlink Fence Corner"
+msgstr "Bucu Pagar Dawai Berangkai"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Wrought Iron fence (type 2)"
+msgstr "Pagar/Kisi-kisi Besi Tempaan"
+
+#: ../homedecor/fences.lua
+#, fuzzy
+msgid "Wrought Iron fence (type 2) Corner"
+msgstr "Pagar/Kisi-kisi Besi Tempaan"
+
+#: ../homedecor/shutters.lua
+msgid "unpainted oak"
+msgstr ""
+
+#: ../homedecor/shutters.lua
+msgid "forest green"
+msgstr ""
+
+#: ../homedecor/shutters.lua
+#, fuzzy
+msgid "light blue"
+msgstr "kanan"
+
+#: ../homedecor/shutters.lua
+#, fuzzy
+msgid "Wooden Shutter (@1)"
+msgstr "Pengatup Kayu (Merah)"
+
+#: ../homedecor/exterior.lua
+msgid "Barbecue"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Garden Bench (style 1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Garden Bench (style 2)"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+#, fuzzy
+msgid "Deck Chair"
+msgstr "Kerusi"
+
+#: ../homedecor/exterior.lua
+msgid "Doghouse"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Simple Bench"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Garden stone path"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+#, fuzzy
+msgid "white wood"
+msgstr "putih"
+
+#: ../homedecor/exterior.lua
+msgid "wood, with vegetation"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "white wood, with vegetation"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Garden Lattice (@1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Tree's swing"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Water well"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Shrubbery (@1)"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+#, fuzzy
+msgid "Toilet"
+msgstr "Tandas"
+
+#: ../homedecor/bathroom_sanitation.lua
+#, fuzzy
+msgid "Toilet paper"
+msgstr "Tandas"
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom Sink"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom taps/faucet"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom taps/faucet (brass)"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+#, fuzzy
+msgid "Shower Tray"
+msgstr "Lubang Air Mandi"
+
+#: ../homedecor/bathroom_sanitation.lua
+#, fuzzy
+msgid "Shower Head"
+msgstr "Kepala Air Mandi"
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom sundries set"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+#, fuzzy
+msgid "Air Conditioner"
+msgstr "Pendingin Hawa"
+
+#: ../homedecor/climate-control.lua
+msgid "Desk Fan"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+msgid "Ceiling Fan"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+msgid "Space heater"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+msgid "Radiator heater"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Mahogany Closet Door (@1 opening)"
+msgstr "Pintu Almari Mahogani"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Oak Closet Door (@1 opening)"
+msgstr "Pintu Almari Oak"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Fancy Wood/Glass Door (@1 opening)"
+msgstr "Pintu Hiasan Kayu/Kaca"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Glass Office Door (@1 opening)"
+msgstr "Pintu Pejabat Kaca"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Glass and Wood, Oak-colored (@1 opening)"
+msgstr "Kaca dan Kayu, warna Oak"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Glass and Wood, Mahogany-colored (@1 opening)"
+msgstr "Kaca dan Kayu, warna Mahogani"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Glass and Wood, White (@1 opening)"
+msgstr "Kaca dan Kayu, warna Putih"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Plain Wooden Door (@1 opening)"
+msgstr "Pintu Kayu Biasa"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "White Bedroom Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Wrought Iron Gate/Door (@1 opening)"
+msgstr "Pagar/Kisi-kisi Besi Tempaan"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Wooden door with glass insert (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Wooden door with glass insert, type 2 (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "left"
+msgstr "kiri"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "right"
+msgstr "kanan"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Unpainted Picket Fence Gate"
+msgstr "Pintu Pagar Pancang Tidak Bercat"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "White Picket Fence Gate"
+msgstr "Pintu Pagar Pancang Putih"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Barbed Wire Fence Gate"
+msgstr "Pintu Pagar Dawai Berduri"
+
+#: ../homedecor/doors_and_gates.lua
+#, fuzzy
+msgid "Chainlink Fence Gate"
+msgstr "Pintu Pagar Dawai Berangkai"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese wall (top)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese wall"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese wall (bottom)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese tatami"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese-style door"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Textured Ceiling Paint"
+msgstr "Cat Siling Bertekstur"
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Drop-Ceiling Tile"
+msgstr "Kepingan Siling"
+
+#: ../homedecor/misc-nodes.lua
+msgid "small"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "large"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "persian"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Rug (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Flower Pot (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Rose"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Tulip"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Yellow Dandelion"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "White Dandelion"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Blue Geranium"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Viola"
+msgstr "Ungu"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Cactus"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Bonsai"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Potted flower (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Brass Pole"
+msgstr "Tiang Loyang"
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Wrought Iron Pole"
+msgstr "Tiang Besi Tempaan"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Fishtank"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Fishtank (lighted)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Cardboard box (big)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Cardboard box"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "DVD/CD cabinet"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+#, fuzzy
+msgid "Pool Table"
+msgstr "Meja"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Piano"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Trophy"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Sport bench"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Skateboard"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Metal tool cabinet and work table"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Picture Frame"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Decorative painting #@1"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "dark topped"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "diagonal"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "horizontal"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Banister for Stairs (@1, @2)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "not enough space"
+msgstr ""
+
+#: ../homedecor/tables.lua
+msgid "Small square glass table"
+msgstr ""
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Small round glass table"
+msgstr "Pembesar Suara Keliling Kecil"
+
+#: ../homedecor/tables.lua
+msgid "Large glass table piece"
+msgstr ""
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Small square wooden table"
+msgstr "Laci Kayu Kecil"
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Small round wooden table"
+msgstr "Pembesar Suara Keliling Kecil"
+
+#: ../homedecor/tables.lua
+msgid "Large wooden table piece"
+msgstr ""
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Utility Table"
+msgstr "Meja Utiliti"
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Table Legs (@1)"
+msgstr "Kaki Meja Loyang"
+
+#: ../homedecor/tables.lua
+#, fuzzy
+msgid "Legs for Utility Table"
+msgstr "Kaki untuk Meja Utiliti"
+
+#: ../homedecor/books.lua
+msgid "Writable Book (@1)"
+msgstr ""
+
+#: ../homedecor/books.lua
+msgid "@1 has written in a book (title: \"@2\"): \"@3\" at location @4"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "Table"
+msgstr "Meja"
+
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "Mahogany Table"
+msgstr "Pintu Almari Mahogani"
+
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "White Table"
+msgstr "Meja Utiliti"
+
+#: ../homedecor/furniture.lua
+msgid "plain"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "Kitchen chair (@1)"
+msgstr "Kabinet Dapur"
+
+#: ../homedecor/furniture.lua
+#, fuzzy
+msgid "Armchair (@1)"
+msgstr "Kerusi Tangan (%s)"
+
+#: ../homedecor/furniture.lua
+msgid "Bookshelf (open-frame)"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+msgid "Wall Shelf"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua
+#, fuzzy
+msgid "@1 moves stuff in @2 at @3"
+msgstr "%s pindah barang dalam kabinet katil dekat %s"
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 moves @2 to @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 takes @2 from @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua
+#, fuzzy
+msgid "@1 (owned by @2)"
+msgstr "%s (hak milik %s)"
+
+#: ../homedecor/handlers/inventory.lua
+#, fuzzy
+msgid "@1 tried to access a @2 belonging to @3 at @4"
+msgstr "%s cuba untuk pakai %s milik %s dekat %s"
+
+#: ../homedecor/handlers/inventory.lua
+#, fuzzy
+msgid "@1 (Locked)"
+msgstr "%s (Berkunci)"
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "Furnace"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (empty)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (active)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua
+#, fuzzy
+msgid "@1 (active: @2%)"
+msgstr "%s aktif: %d%%"
+
+#: ../homedecor/handlers/furnaces.lua
+#, fuzzy
+msgid "@1 (out of fuel)"
+msgstr ": Kehabisan bahan api"
+
+#: ../homedecor/handlers/furnaces.lua
+#, fuzzy
+msgid "@1 (output bins are full)"
+msgstr ": dulang keluar penuh"
+
+#: ../homedecor/office.lua
+#, fuzzy
+msgid "Filing cabinet"
+msgstr "Kabinet Bawah Sinki"
+
+#: ../homedecor/bathroom_furniture.lua
+#, fuzzy
+msgid "white/grey"
+msgstr "putih"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/dark grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/black"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "black/dark grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+#, fuzzy
+msgid "white/red"
+msgstr "putih"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/green"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+#, fuzzy
+msgid "white/blue"
+msgstr "putih"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/yellow"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+#, fuzzy
+msgid "white/tan"
+msgstr "putih"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "Bathroom/kitchen tiles (@1)"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "Towel rod with towel"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+#, fuzzy
+msgid "Medicine cabinet"
+msgstr "Kabinet Bawah Sinki"
+
+#, fuzzy
+#~ msgid "dark_grey"
+#~ msgstr "Hijau Gelap"
+
+#, fuzzy
+#~ msgid "dark_green"
+#~ msgstr "Hijau Gelap"
+
+#~ msgid "%s moves stuff in kitchen cabinet at %s "
+#~ msgstr "%s pindah barang dalam kabinet dapur dekat %s"
+
+#~ msgid "%s moves stuff to kitchen cabinet at %s "
+#~ msgstr "%s pindah barang masuk kabinet dapur dekat %s"
+
+#~ msgid "%s takes stuff from kitchen cabinet at %s "
+#~ msgstr "%s ambil barang dari kabinet dapur dekat %s"
+
+#~ msgid "(Top Half, %s-opening) "
+#~ msgstr "(Separuh Atas, bukaan %s)"
+
+#~ msgid "(%s-opening) "
+#~ msgstr "(Bukaan %s)"
+
+#~ msgid "Not enough space above that spot to place a door! "
+#~ msgstr "Tidak cukup ruang di atas kawasan untuk letak pintu!"
+
+#~ msgid "Bucket of white paint "
+#~ msgstr "Baldi cat putih"
+
+#~ msgid "Legs for Small Utility table "
+#~ msgstr "Kaki untuk Meja Utiliti Kecil"
+
+#~ msgid "Titanium Dioxide "
+#~ msgstr "Titanium Dioksida"
+
+#~ msgid "Wrought Iron Fence/railing with sign "
+#~ msgstr "Pagar/Kisi-kisi Besi Tempaan dengan Papan Tanda"
+
+#~ msgid "want to simply place the wielded item like usual. "
+#~ msgstr "ingin letakkan barangan yang diacukan seperti biasa."
+
+#~ msgid "Red "
+#~ msgstr "Merah"
+
+#~ msgid "Pink "
+#~ msgstr "Merah Jambu"
+
+#~ msgid "Blue "
+#~ msgstr "Biru"
+
+#~ msgid "Sink "
+#~ msgstr "Sinki"
+
+#~ msgid "Taps "
+#~ msgstr "Pili Air"
+
+#~ msgid "Asphalt Shingles (outer corner) "
+#~ msgstr "Genting Asfalt (bucu luar)"
+
+#~ msgid "Asphalt Shingles (inner corner) "
+#~ msgstr "Genting Asfalt (bucu dalam)"
+
+#~ msgid "Wrought Iron Table Legs "
+#~ msgstr "Kaki Meja Besi Tempaan"
+
+#~ msgid "Glass Table (Small, Round) "
+#~ msgstr "Meja Kaca (Bulat, Kecil)"
+
+#~ msgid "Glass Table (Small, Square) "
+#~ msgstr "Meja Kaca (Segi Empat, Kecil)"
+
+#~ msgid "Glass Table Piece (large) "
+#~ msgstr "Kepingan Meja Kaca (besar)"
+
+#~ msgid "Green Plastic Flower Pot "
+#~ msgstr "Pasu Bunga Plastik Hijau"
+
+#~ msgid "Large Area Rug "
+#~ msgstr "Ambal Kawasan Besar"
+
+#~ msgid "Small Throw Rug "
+#~ msgstr "Ambal Kecil"
+
+#~ msgid "Terracotta Flower Pot "
+#~ msgstr "Pasu Bunga Terracotta"
+
+#~ msgid "Terracotta Shingles (outer corner) "
+#~ msgstr "Genting Terracotta (bucu luar)"
+
+#~ msgid "Terracotta Shingles (inner corner) "
+#~ msgstr "Genting Terracotta (bucu dalam)"
+
+#~ msgid "Utility table mk2 "
+#~ msgstr "Meja utiliti mk2"
+
+#~ msgid "Wooden Shutter (Black) "
+#~ msgstr "Pengatup Kayu (Hitam)"
+
+#~ msgid "Wooden Shutter (Dark grey) "
+#~ msgstr "Pengatup Kayu (Kelabu Gelap)"
+
+#~ msgid "Wooden Shutter (Forest green) "
+#~ msgstr "Pengatup Kayu (Hijau Rimba)"
+
+#~ msgid "Wooden Shutter (Grey) "
+#~ msgstr "Pengatup Kayu (Kelabu)"
+
+#~ msgid "Wooden Shutter (Light blue) "
+#~ msgstr "Pengatup Kayu (Biru Cerah)"
+
+#~ msgid "Wooden Shutter (Violet) "
+#~ msgstr "Pengatup Kayu (Ungu)"
+
+#~ msgid "Wooden Shutter (Mahogany) "
+#~ msgstr "Pengatup Kayu (Mahogani)"
+
+#~ msgid "Wooden Shutter (Unpainted oak) "
+#~ msgstr "Pengatup Kayu (Oak tak bercat)"
+
+#~ msgid "Wooden Shutter (White) "
+#~ msgstr "Pengatup Kayu (Putih)"
+
+#~ msgid "Wooden Shutter (Yellow) "
+#~ msgstr "Pengatup Kayu (Kuning)"
+
+#~ msgid "Wood Table Piece (large)"
+#~ msgstr "Kepingan Meja Kayu (besar)"
+
+#~ msgid "Wood Table (Small, Round) "
+#~ msgstr "Meja Kayu (Bulat, Kecil)"
+
+#~ msgid "Wood Table (Small, Square) "
+#~ msgstr "Meja Kayu (Segi Empat, Kecil)"
+
+#~ msgid "someone "
+#~ msgstr "seseorang"
+
+#~ msgid "Sorry, %s owns that spot. "
+#~ msgstr "Maaf, ini kawasan %s."
+
+#~ msgid "White Glowlight (small cube) "
+#~ msgstr "Lampu Bara Putih (kiub kecil)"
+
+#~ msgid "White Glowlight (small cube, on ceiling) "
+#~ msgstr "Lampu Bara Putih (kiub kecil, dekat siling)"
+
+#~ msgid "White Glowlight (thick, on wall) "
+#~ msgstr "Lampu Bara Putih (tebal, dekat dinding)"
+
+#~ msgid "White Glowlight (thin, on wall) "
+#~ msgstr "Lampu Bara Putih (nipis, dekat dinding)"
+
+#~ msgid "Yellow Glowlight (small cube, on ceiling) "
+#~ msgstr "Lampu Bara Kuning (kiub kecil, dekat siling)"
+
+#~ msgid "Yellow Glowlight (thick) "
+#~ msgstr "Lampu Bara Kuning (tebal)"
+
+#~ msgid "Yellow Glowlight (thick, on wall) "
+#~ msgstr "Lampu Bara Kuning (tebal, dekat dinding)"
+
+#~ msgid "Yellow Glowlight (thin) "
+#~ msgstr "Lampu Bara Kuning (nipis)"
+
+#~ msgid "Yellow Glowlight (thin, on wall) "
+#~ msgstr "Lampu Bara Kuning (nipis, dekat dinding)"
+
+#~ msgid "Locked Fridge "
+#~ msgstr "Peti Sejuk Berkunci"
+
+#~ msgid "Locked Cabinet "
+#~ msgstr "Kabinet Berkunci"
+
+#~ msgid "Locked Nightstand "
+#~ msgstr "Kabinet Katil Berkunci"
+
+#~ msgid "Locked Oven "
+#~ msgstr "Ketuhar Berkunci"
+
+#~ msgid "Locked Oven (active) "
+#~ msgstr "Ketuhar Berkunci (aktif)"
+
+#~ msgid "Locked Microwave Oven "
+#~ msgstr "Ketuhar Gelombang Mikro Berkunci"
+
+#~ msgid "Locked Microwave Oven (active) "
+#~ msgstr "Ketuhar Gelombang Mikro Berkunci (aktif)"
+
+#~ msgid "Mahogany Nightstand with One Drawer "
+#~ msgstr "Kabinet Katil Mahogani dengan Satu Laci"
+
+#~ msgid "Mahogany Nightstand with Two Drawers "
+#~ msgstr "Kabinet Katil Mahogani dengan Dua Laci"
+
+#~ msgid "%s moves stuff to nightstand at %s "
+#~ msgstr "%s pindah barang masuk kabinet katil dekat %s"
+
+#~ msgid "%s takes stuff from nightstand at %s "
+#~ msgstr "%s ambil barang dari kabinet katil dekat %s"
+
+#~ msgid "%s is empty "
+#~ msgstr "%s tiada apa-apa"
+
+#~ msgid "%s moves stuff in refrigerator at %s "
+#~ msgstr "%s pindah barang dalam peti sejuk dekat %s"
+
+#~ msgid "%s moves stuff to refrigerator at %s "
+#~ msgstr "%s pindah barang masuk peti sejuk dekat %s"
+
+#~ msgid "%s takes stuff from refrigerator at %s "
+#~ msgstr "%s ambil barang dari peti sejuk dekat %s"
+
+#~ msgid "%s wrote \"%s\" to sign at %s "
+#~ msgstr "%s menulis \"%s\" pada papan tanda dekat %s"
+
+#~ msgid "Reading cached character database. "
+#~ msgstr "Sedang membaca pangkalan data watak yang di-cache."
+
+#~ msgid "Font seems to have changed. Rebuilding cache. "
+#~ msgstr "Nampaknya fon tulisan berubah. Membina semula cache."
+
+#~ msgid "Could not find font line height in cached DB. Trying brute force. "
+#~ msgstr ""
+#~ "Tak jumpa ketinggian baris fon dalam DB yang di-cache. Sedang cuba "
+#~ "paksaan kasar."
+
+#~ msgid "Registered %s and %s "
+#~ msgstr "Dah daftarkan %s dan %s"
+
+#~ msgid "signs loaded "
+#~ msgstr "papan tanda telah dimuatkan"
diff --git a/homedecor_i18n/locale/pt.po b/homedecor_i18n/locale/pt.po
new file mode 100644
index 0000000..a343f54
--- /dev/null
+++ b/homedecor_i18n/locale/pt.po
@@ -0,0 +1,1644 @@
+# Portuguese translations for homedecor package.
+# Translations distributed under CC-BY-SA license.
+#
+# Translators and reviewers (updates):
+# BrunoMine <borgesdossantosbruno@gmail.com> [2017]
+# Aracnus <frederico@teia.bio.br>, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-01-30 21:31-0300\n"
+"PO-Revision-Date: 2017-01-29 00:21-0200\n"
+"Last-Translator: Aracnus <frederico@teia.bio.br>\n"
+"Language-Team: Portuguese\n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+#: ../building_blocks/init.lua
+msgid "Adobe"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Roof block"
+msgstr ""
+
+#: ../building_blocks/init.lua
+#, fuzzy
+msgid "Streak Free Glass"
+msgstr "Vitral"
+
+#: ../building_blocks/init.lua
+msgid "Grate"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Fireplace"
+msgstr ""
+
+#: ../building_blocks/init.lua
+#, fuzzy
+msgid "Wood Framed Glass"
+msgstr "Vitral"
+
+#: ../building_blocks/init.lua
+#, fuzzy
+msgid "Terrycloth towel"
+msgstr "Tolo de Toalha com Toalha"
+
+#: ../building_blocks/init.lua
+msgid "Tarmac Spread"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Chess board tiling"
+msgstr ""
+
+#. Translators: "Brobble" is a portmanteau of "Brick" and "Cobble".
+#. Translate however you see fit.
+#: ../building_blocks/init.lua
+msgid "Brobble Spread"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Gravel Spread"
+msgstr ""
+
+#: ../building_blocks/init.lua
+#, fuzzy
+msgid "Hardwood"
+msgstr "madeira"
+
+#: ../building_blocks/init.lua
+msgid "Marble stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Marble slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Hardwood stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Hardwood slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grass stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+#, fuzzy
+msgid "Grass slab"
+msgstr "Poste de bronze"
+
+#: ../building_blocks/init.lua
+msgid "Tar stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grate Stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grate Slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Adobe stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Adobe slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Roofing stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Roofing slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Fake Grass"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Small bundle of sticks"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar base"
+msgstr ""
+
+#: ../building_blocks/init.lua
+#, fuzzy
+msgid "Tar"
+msgstr "Torradeira"
+
+#: ../building_blocks/init.lua
+#, fuzzy
+msgid "Marble"
+msgstr "mármore"
+
+#: ../building_blocks/init.lua
+msgid "Tar Knife"
+msgstr ""
+
+#: ../building_blocks/init.lua
+#, fuzzy
+msgid "Granite"
+msgstr "granito"
+
+#: ../inbox/init.lua
+msgid "Mailbox"
+msgstr ""
+
+#: ../inbox/init.lua
+msgid "@1's Mailbox"
+msgstr ""
+
+#: ../lavalamp/init.lua
+#, fuzzy
+msgid "Lava Lamp"
+msgstr "Lâmpada de Plasma"
+
+#: ../lavalamp/init.lua
+#, fuzzy
+msgid "Lava Lamp (off)"
+msgstr "Luminária de Teto (desligada)"
+
+#: ../computer/miscitems.lua ../homedecor/crafts.lua
+msgid "Plastic sheet"
+msgstr "Folha de Plástico"
+
+#: ../computer/miscitems.lua
+msgid "Unprocessed Plastic base"
+msgstr "Base de plástico não Processada"
+
+#: ../computer/computers.lua
+msgid "Monitor and keyboard"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "WIFI Router"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "Computer Tower"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "Printer-Scanner Combo"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "Rack Server"
+msgstr ""
+
+#: ../computer/computers.lua
+#, fuzzy
+msgid "Not enough vertical space to place a server!"
+msgstr "Não existe espaço vertical suficiente para colocar uma porta."
+
+#: ../computer/tetris.lua
+msgid "New Game"
+msgstr ""
+
+#: ../computer/tetris.lua
+msgid "Tetris Arcade"
+msgstr ""
+
+#: ../computer/tetris.lua
+msgid "No room for place the Arcade!"
+msgstr ""
+
+#: ../chains/init.lua
+#, fuzzy
+msgid "Hanging chain (wrought iron)"
+msgstr "Castiçal (ferro forjado)"
+
+#: ../chains/init.lua
+#, fuzzy
+msgid "Hanging chain (brass)"
+msgstr "Lanterna de Parede"
+
+#: ../chains/init.lua
+msgid "Hanging chain (ceiling mount, wrought iron)"
+msgstr ""
+
+#: ../chains/init.lua
+msgid "Hanging chain (ceiling mount, brass)"
+msgstr ""
+
+#: ../chains/init.lua
+#, fuzzy
+msgid "Chandelier (wrought iron)"
+msgstr "Castiçal (ferro forjado)"
+
+#: ../chains/init.lua
+#, fuzzy
+msgid "Chandelier (brass)"
+msgstr "Castiçal (latão)"
+
+#: ../itemframes/init.lua
+#, fuzzy
+msgid "Item frame"
+msgstr "Quadro de Foto"
+
+#: ../itemframes/init.lua
+#, fuzzy
+msgid "Item frame (owned by @1)"
+msgstr "@1 (pertence a @2)"
+
+#: ../itemframes/init.lua
+msgid "Pedestal"
+msgstr ""
+
+#: ../itemframes/init.lua
+#, fuzzy
+msgid "Pedestal (owned by @1)"
+msgstr "@1 (pertence a @2)"
+
+#: ../plasmascreen/init.lua
+msgid "Plasma Screen TV Stand"
+msgstr ""
+
+#: ../plasmascreen/init.lua
+#, fuzzy
+msgid "Plasma TV"
+msgstr "Lâmpada de Plasma"
+
+#: ../plasmascreen/init.lua
+msgid "Plasma TV (off)"
+msgstr ""
+
+#: ../lrfurn/longsofas.lua
+msgid "Long Sofa"
+msgstr ""
+
+#: ../lrfurn/longsofas.lua ../lrfurn/sofas.lua
+msgid "No room to place the sofa!"
+msgstr ""
+
+#: ../lrfurn/longsofas.lua ../lrfurn/armchairs.lua ../lrfurn/sofas.lua
+#: ../lrfurn/endtable.lua ../lrfurn/coffeetable.lua ../homedecor/init.lua
+msgid "Loaded!"
+msgstr "Carregado!"
+
+#: ../lrfurn/armchairs.lua
+#, fuzzy
+msgid "Armchair"
+msgstr "Poltrona (@1)"
+
+#: ../lrfurn/sofas.lua
+msgid "Sofa"
+msgstr ""
+
+#: ../lrfurn/endtable.lua
+#, fuzzy
+msgid "End Table"
+msgstr "Mesa"
+
+#: ../lrfurn/coffeetable.lua
+#, fuzzy
+msgid "Coffee Table"
+msgstr "Cafeteira"
+
+#: ../lrfurn/coffeetable.lua
+msgid "No room to place the coffee table!"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Fake fire"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Ice fire"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Fancy Fire"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Glowing Embers"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Flint and steel"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/furniture.lua
+msgid "black"
+msgstr "preto"
+
+#: ../homedecor/bedroom.lua ../homedecor/books.lua
+msgid "brown"
+msgstr "marrom"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/books.lua ../homedecor/furniture.lua
+msgid "blue"
+msgstr "azul"
+
+#: ../homedecor/bedroom.lua
+msgid "cyan"
+msgstr "ciano\t\t"
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua
+msgid "dark grey"
+msgstr "cinza escuro"
+
+#: ../homedecor/bedroom.lua ../homedecor/furniture.lua
+msgid "dark green"
+msgstr "verde escuro"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/exterior.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/books.lua
+msgid "green"
+msgstr "verde"
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua ../homedecor/books.lua
+msgid "grey"
+msgstr "cinza"
+
+#: ../homedecor/bedroom.lua
+msgid "magenta"
+msgstr "magenta"
+
+#: ../homedecor/bedroom.lua
+msgid "orange"
+msgstr "laranja"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/furniture.lua
+msgid "pink"
+msgstr "rosa"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/shutters.lua
+#: ../homedecor/exterior.lua ../homedecor/books.lua ../homedecor/furniture.lua
+msgid "red"
+msgstr "vermelho"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/shutters.lua ../homedecor/books.lua
+#: ../homedecor/furniture.lua
+msgid "violet"
+msgstr "violeta"
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/shutters.lua
+msgid "white"
+msgstr "branco"
+
+#: ../homedecor/bedroom.lua ../homedecor/lighting.lua ../homedecor/shutters.lua
+#: ../homedecor/exterior.lua
+msgid "yellow"
+msgstr "amarelo"
+
+#: ../homedecor/bedroom.lua
+msgid "Bed (@1)"
+msgstr "Cama (@1)"
+
+#: ../homedecor/bedroom.lua
+msgid "Bed (@1, king sized)"
+msgstr "Cama (@1, aumentada)"
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua
+msgid "mahogany"
+msgstr "mogno"
+
+#: ../homedecor/bedroom.lua
+msgid "oak"
+msgstr "carvalho"
+
+#: ../homedecor/bedroom.lua
+msgid "Nightstand with One Drawer (@1)"
+msgstr "Mesa de Cabeceira com Gaveta (@1)"
+
+#: ../homedecor/bedroom.lua
+msgid "One-drawer Nightstand"
+msgstr "Mesinha de Uma Gaveta"
+
+#: ../homedecor/bedroom.lua
+msgid "Nightstand with Two Drawers (@1)"
+msgstr "Mesa de Cabeceira com Duas Gavetas"
+
+#: ../homedecor/bedroom.lua
+msgid "Two-drawer Nightstand"
+msgstr "Mesinha de Duas Gavetas"
+
+#: ../homedecor/kitchen_furniture.lua ../homedecor/kitchen_appliances.lua
+msgid "granite"
+msgstr "granito"
+
+#: ../homedecor/kitchen_furniture.lua ../homedecor/kitchen_appliances.lua
+msgid "marble"
+msgstr "mármore"
+
+#: ../homedecor/kitchen_furniture.lua ../homedecor/kitchen_appliances.lua
+msgid "steel"
+msgstr "aço"
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Kitchen Cabinet"
+msgstr "Armário de Cozinha"
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Kitchen Cabinet (@1 top)"
+msgstr "Armário de Cozinha (tampo de @1)"
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Half-height Kitchen Cabinet (on ceiling)"
+msgstr "Armário Superior de Cozinha (no teto)"
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Kitchen Cabinet with sink"
+msgstr "Armário de Cozinha com Pia"
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Under-sink cabinet"
+msgstr "Armário sob a Pia"
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Paper towels"
+msgstr "Papel toalha"
+
+#: ../homedecor/furniture_medieval.lua
+msgid "Bars"
+msgstr "Barras"
+
+#: ../homedecor/furniture_medieval.lua
+msgid "Binding Bars"
+msgstr "Barras do Canto"
+
+#: ../homedecor/furniture_medieval.lua
+msgid "Chains"
+msgstr "Correntes"
+
+#: ../homedecor/furniture_medieval.lua
+msgid "Wall Torch"
+msgstr "Tocha de parede"
+
+#: ../homedecor/furniture_medieval.lua
+msgid "Wall Lamp"
+msgstr "Lâmpada de Parede"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Refrigerator (stainless steel)"
+msgstr "Refrigerador (aço inoxidável)"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Refrigerator"
+msgstr "Refrigerador"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Oven"
+msgstr "Forno"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Oven (stainless steel)"
+msgstr "Forno (aço inoxidável)"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Microwave Oven"
+msgstr "Forno Microondas"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Coffee Maker"
+msgstr "Cafeteira"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Toaster"
+msgstr "Torradeira"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Dishwasher"
+msgstr "Lava Louças"
+
+#: ../homedecor/kitchen_appliances.lua ../homedecor/roofing.lua
+#: ../homedecor/window_treatments.lua ../homedecor/exterior.lua
+#: ../homedecor/misc-nodes.lua
+msgid "wood"
+msgstr "madeira"
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Dishwasher (@1)"
+msgstr "Lava Louças (@1)"
+
+#: ../homedecor/roofing.lua
+msgid "Glass Skylight"
+msgstr "Claraboia de Vidro"
+
+#: ../homedecor/roofing.lua
+msgid "Glass Skylight Frosted"
+msgstr "Claraboia de Vidro Fosco"
+
+#: ../homedecor/roofing.lua
+msgid "asphalt"
+msgstr "asfalto"
+
+#: ../homedecor/roofing.lua ../homedecor/misc-nodes.lua
+msgid "terracotta"
+msgstr "terracota"
+
+#: ../homedecor/roofing.lua
+msgid "Shingles (@1)"
+msgstr "Telhas (@1)"
+
+#: ../homedecor/roofing.lua
+msgid "@1 (outer corner)"
+msgstr "@1 (canto exterior)"
+
+#: ../homedecor/roofing.lua
+msgid "@1 (inner corner)"
+msgstr "@1 (canto interno)"
+
+#: ../homedecor/roofing.lua
+msgid "Wood Shingles"
+msgstr "Telhas de Madeira"
+
+#: ../homedecor/roofing.lua
+msgid "Asphalt Shingles"
+msgstr "Telhas de Asfalto"
+
+#: ../homedecor/roofing.lua
+msgid "Terracotta Shingles"
+msgstr "Telhas de Terracota"
+
+#: ../homedecor/roofing.lua
+msgid "Glass Shingles"
+msgstr "Telhas de Vidro"
+
+#: ../homedecor/roofing.lua
+msgid "Chimney"
+msgstr "Chaminé"
+
+#: ../homedecor/window_treatments.lua
+msgid "Window (quartered)"
+msgstr "Janela Dividida"
+
+#: ../homedecor/window_treatments.lua
+msgid "Window (plain)"
+msgstr "Janela (Sem Acabamento)"
+
+#: ../homedecor/window_treatments.lua
+msgid "Window Blinds (thick)"
+msgstr "Persiana (grossa)"
+
+#: ../homedecor/window_treatments.lua
+msgid "Window Blinds (thin)"
+msgstr "Persiana (fina)"
+
+#: ../homedecor/window_treatments.lua
+#, fuzzy
+msgid "Curtains"
+msgstr "Cortinas (@1)"
+
+#: ../homedecor/window_treatments.lua ../homedecor/fences.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/tables.lua
+msgid "brass"
+msgstr "latão"
+
+#: ../homedecor/window_treatments.lua ../homedecor/fences.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/tables.lua
+msgid "wrought iron"
+msgstr "ferro forjado"
+
+#: ../homedecor/window_treatments.lua
+msgid "Curtain Rod (@1)"
+msgstr "Suporte de Cortina (@1)"
+
+#: ../homedecor/window_treatments.lua
+msgid "Window flowerbox"
+msgstr "Janela com Caixa de Flores"
+
+#: ../homedecor/window_treatments.lua
+msgid "Stained Glass"
+msgstr "Vitral"
+
+#: ../homedecor/crafts.lua
+msgid "Uncooked Terracotta Base"
+msgstr "Base Bruta de Terracota"
+
+#: ../homedecor/crafts.lua
+msgid "Terracotta Roof Tile"
+msgstr "Telha de Terracota"
+
+#: ../homedecor/crafts.lua
+msgid "Oil extract"
+msgstr "Extrato de Óleo"
+
+#: ../homedecor/crafts.lua
+msgid "Unprocessed paraffin"
+msgstr "Parafina não processada"
+
+#: ../homedecor/crafts.lua
+msgid "Plastic strips"
+msgstr "Faixas de plástico"
+
+#: ../homedecor/crafts.lua
+msgid "Small Wooden Drawer"
+msgstr "Gaveta Pequena de Madeira"
+
+#: ../homedecor/crafts.lua
+msgid "Simple Integrated Circuit"
+msgstr "Circuito Integrado Simples"
+
+#: ../homedecor/crafts.lua
+msgid "Heating element"
+msgstr "Elemento de aquecimento"
+
+#: ../homedecor/crafts.lua
+msgid "Motor"
+msgstr "Motor"
+
+#: ../homedecor/crafts.lua
+msgid "Power Crystal"
+msgstr "Cristal de Força"
+
+#: ../homedecor/crafts.lua
+msgid "Blank Canvas"
+msgstr "Tela Branca"
+
+#: ../homedecor/crafts.lua
+msgid "VCR"
+msgstr "VCR"
+
+#: ../homedecor/crafts.lua
+msgid "DVD Player"
+msgstr "DVD Player"
+
+#: ../homedecor/crafts.lua
+msgid "Spool of copper wire"
+msgstr "Bobina de fio de cobre"
+
+#: ../homedecor/crafts.lua
+msgid "Spool of steel wire"
+msgstr "Bobina de fio de aço"
+
+#: ../homedecor/crafts.lua
+msgid "Speaker driver"
+msgstr "Alto-falante"
+
+#: ../homedecor/crafts.lua
+msgid "Fan blades"
+msgstr "Pás de ventilador"
+
+#: ../homedecor/crafts.lua
+msgid "Copper Strip"
+msgstr "Tira de Cobre"
+
+#: ../homedecor/crafts.lua
+msgid "Steel Strip"
+msgstr "Tira de Aço"
+
+#: ../homedecor/crafts.lua
+msgid "Steel chainlink"
+msgstr "Cerca/corrimão de aço"
+
+#: ../homedecor/crafts.lua
+msgid "Brass chainlink"
+msgstr "Cerca/corrimão de bronze"
+
+#: ../homedecor/crafts.lua
+msgid "Soda Can"
+msgstr "Lata de Refrigerante"
+
+#: ../homedecor/crafts.lua
+msgid "Gold Coin (for soda vending machine)"
+msgstr "Moeda de Ouro (para máquina de venda de refrigerante)"
+
+#: ../homedecor/crafts.lua
+msgid "Silicon lump"
+msgstr "Massa de silício"
+
+#: ../homedecor/crafts.lua
+msgid "Brass Ingot"
+msgstr "Lingote de Latão"
+
+#: ../homedecor/crafts.lua
+msgid "Small Flower Pot"
+msgstr "Vaso de Flor Pequeno"
+
+#: ../homedecor/electronics.lua
+msgid "Large Stereo Speaker"
+msgstr "Alto-falante Grande"
+
+#: ../homedecor/electronics.lua
+msgid "Large Stereo Speaker, open front"
+msgstr "Alto-falante Grande, frente aberta"
+
+#: ../homedecor/electronics.lua
+msgid "Small Surround Speaker"
+msgstr "Alto-falante Pequeno"
+
+#: ../homedecor/electronics.lua
+msgid "Stereo Receiver"
+msgstr "Aparelho de Som"
+
+#: ../homedecor/electronics.lua
+msgid "Projection Screen Material"
+msgstr "Material de Tela de Projeção"
+
+#: ../homedecor/electronics.lua
+msgid "Small CRT Television"
+msgstr "TV de tubo pequena"
+
+#: ../homedecor/electronics.lua
+msgid "DVD and VCR"
+msgstr "DVD e VCR"
+
+#: ../homedecor/electronics.lua
+msgid "Telephone"
+msgstr "Telefone"
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Thick Glowlight"
+msgstr "Arandela Fina (@1)"
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Thin Glowlight"
+msgstr "Arandela Grossa (@1)"
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Small Glowlight Cube"
+msgstr "Arandela Cúbica Pequena (@1)"
+
+#: ../homedecor/lighting.lua
+msgid "Plasma Lamp"
+msgstr "Lâmpada de Plasma"
+
+#: ../homedecor/lighting.lua
+msgid "Plasma Ball"
+msgstr "Bola de Plasma"
+
+#: ../homedecor/lighting.lua
+msgid "Thick Candle"
+msgstr "Vela Grossa"
+
+#: ../homedecor/lighting.lua
+msgid "Thin Candle"
+msgstr "Vela Fina"
+
+#: ../homedecor/lighting.lua
+msgid "Candlestick (wrought iron)"
+msgstr "Castiçal (ferro forjado)"
+
+#: ../homedecor/lighting.lua
+msgid "Candlestick (brass)"
+msgstr "Castiçal (latão)"
+
+#: ../homedecor/lighting.lua
+msgid "Wall sconce"
+msgstr "Candeeiro de Parede"
+
+#: ../homedecor/lighting.lua
+msgid "Oil lamp (hurricane)"
+msgstr "Luminária a óleo (lamparina)"
+
+#: ../homedecor/lighting.lua
+msgid "Oil Lamp (tabletop)"
+msgstr "Luminária a Óleo (sobre mesa)"
+
+#: ../homedecor/lighting.lua
+msgid "Ground Lantern"
+msgstr "Lanterna de Chão"
+
+#: ../homedecor/lighting.lua
+msgid "Hanging Lantern"
+msgstr "Lanterna de Parede"
+
+#: ../homedecor/lighting.lua
+msgid "Lattice lantern (large)"
+msgstr "Lanterna com gelosia (grande)"
+
+#: ../homedecor/lighting.lua
+msgid "Lattice lantern (small)"
+msgstr "Lanterna com gelosia (pequena)"
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Table Lamp"
+msgstr "Luminária de Mesa (@1)"
+
+#: ../homedecor/lighting.lua
+#, fuzzy
+msgid "Standing Lamp"
+msgstr "Luminária Elevada (@1)"
+
+#: ../homedecor/lighting.lua
+msgid "Desk Lamp (@1)"
+msgstr "Luminária de Escritório (@1)"
+
+#: ../homedecor/lighting.lua
+msgid "Ceiling Lamp"
+msgstr "Luminária de Teto"
+
+#: ../homedecor/lighting.lua
+msgid "Ceiling Lamp (off)"
+msgstr "Luminária de Teto (desligada)"
+
+#: ../homedecor/fences.lua
+msgid "Fence/railing (@1)"
+msgstr "Cerca/corrimão (@1)"
+
+#: ../homedecor/fences.lua
+msgid "Fence/railing with sign (@1)"
+msgstr "Cerca/corrimão com placa (@1)"
+
+#: ../homedecor/fences.lua
+msgid "Unpainted Picket Fence"
+msgstr "Cerca de Piquete Não Pintada"
+
+#: ../homedecor/fences.lua
+msgid "Unpainted Picket Fence Corner"
+msgstr "Cerca de Piquete Não Pintada de Canto"
+
+#: ../homedecor/fences.lua
+msgid "White Picket Fence"
+msgstr "Cerca de Piquete Branca"
+
+#: ../homedecor/fences.lua
+msgid "White Picket Fence Corner"
+msgstr "Cerca de Piquete Branca de Canto"
+
+#: ../homedecor/fences.lua
+msgid "Wooden Privacy Fence"
+msgstr "Cerca Privativa de Madeira"
+
+#: ../homedecor/fences.lua
+msgid "Wooden Privacy Fence Corner"
+msgstr "Cerca Privativa de Madeira de Canto"
+
+#: ../homedecor/fences.lua
+msgid "Barbed Wire Fence"
+msgstr "Cerca de Arame Farpado"
+
+#: ../homedecor/fences.lua
+msgid "Barbed Wire Fence Corner"
+msgstr "Cerca de Arame Farpado de Canto"
+
+#: ../homedecor/fences.lua
+msgid "Chainlink Fence"
+msgstr "Cerca de Tela de Arame"
+
+#: ../homedecor/fences.lua
+msgid "Chainlink Fence Corner"
+msgstr "Cerca de Tela de Arame de Canto"
+
+#: ../homedecor/fences.lua
+msgid "Wrought Iron fence (type 2)"
+msgstr "Cerca de Ferro Forjado (tipo 2)"
+
+#: ../homedecor/fences.lua
+msgid "Wrought Iron fence (type 2) Corner"
+msgstr "Cerca de Ferro Forjado (tipo 2) de Canto"
+
+#: ../homedecor/shutters.lua
+msgid "unpainted oak"
+msgstr "carvalho não pintado"
+
+#: ../homedecor/shutters.lua
+msgid "forest green"
+msgstr "verde floresta"
+
+#: ../homedecor/shutters.lua
+msgid "light blue"
+msgstr "azul claro"
+
+#: ../homedecor/shutters.lua
+msgid "Wooden Shutter (@1)"
+msgstr "Persiana de Madeira (@1)"
+
+#: ../homedecor/exterior.lua
+msgid "Barbecue"
+msgstr "Churrasqueira"
+
+#: ../homedecor/exterior.lua
+msgid "Garden Bench (style 1)"
+msgstr "Banco de Jardim (estilo 1)"
+
+#: ../homedecor/exterior.lua
+msgid "Garden Bench (style 2)"
+msgstr "Banco de Jardim (estilo 2)"
+
+#: ../homedecor/exterior.lua
+msgid "Deck Chair"
+msgstr "Cadeira de Praia"
+
+#: ../homedecor/exterior.lua
+msgid "Doghouse"
+msgstr "Casa de Cachorro"
+
+#: ../homedecor/exterior.lua
+msgid "Simple Bench"
+msgstr "Banco Simples"
+
+#: ../homedecor/exterior.lua
+msgid "Garden stone path"
+msgstr "Caminho de pedra de jardim"
+
+#: ../homedecor/exterior.lua
+msgid "white wood"
+msgstr "madeira branca"
+
+#: ../homedecor/exterior.lua
+msgid "wood, with vegetation"
+msgstr "madeira, com vegetação"
+
+#: ../homedecor/exterior.lua
+msgid "white wood, with vegetation"
+msgstr "madeira branca, com vegetação"
+
+#: ../homedecor/exterior.lua
+msgid "Garden Lattice (@1)"
+msgstr "Gelosia de Jardin (@1)"
+
+#: ../homedecor/exterior.lua
+msgid "Tree's swing"
+msgstr "Balancinho de árvore"
+
+#: ../homedecor/exterior.lua
+msgid "Water well"
+msgstr "Poço de agua"
+
+#: ../homedecor/exterior.lua
+msgid "Shrubbery (@1)"
+msgstr "Matagal (@1)"
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Toilet"
+msgstr "Vaso Sanitário"
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Toilet paper"
+msgstr "Papel higiênico "
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom Sink"
+msgstr "Pia de Banheiro"
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom taps/faucet"
+msgstr "Torneira de Banheiro"
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom taps/faucet (brass)"
+msgstr "Torneira de Banheiro (latão)"
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Shower Tray"
+msgstr "Ralo do Chuveiro"
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Shower Head"
+msgstr "Chuveiro"
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom sundries set"
+msgstr "Espelho de Banheiro com bancada"
+
+#: ../homedecor/climate-control.lua
+msgid "Air Conditioner"
+msgstr "Ar condicionado"
+
+#: ../homedecor/climate-control.lua
+msgid "Desk Fan"
+msgstr "Ventilador de Escritório"
+
+#: ../homedecor/climate-control.lua
+msgid "Ceiling Fan"
+msgstr "Ventilador de Teto"
+
+#: ../homedecor/climate-control.lua
+msgid "Space heater"
+msgstr "Aquecedor de ambiente"
+
+#: ../homedecor/climate-control.lua
+msgid "Radiator heater"
+msgstr "Aquecedor de radiador"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Mahogany Closet Door (@1 opening)"
+msgstr "Porta de Closet em Mogno (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Oak Closet Door (@1 opening)"
+msgstr "Porta de Closet em Carvalho (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Fancy Wood/Glass Door (@1 opening)"
+msgstr "Porta de madeira/vidro trabalhada (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Glass Office Door (@1 opening)"
+msgstr "Porta de Vidro para Escritório (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Glass and Wood, Oak-colored (@1 opening)"
+msgstr "Vidro e madeira (carvalho) (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Glass and Wood, Mahogany-colored (@1 opening)"
+msgstr "Vidro e madeira (mogno) (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Glass and Wood, White (@1 opening)"
+msgstr "Vidro e madeira (branca) (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Plain Wooden Door (@1 opening)"
+msgstr "Porta de Madeira Sem Acabamento (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "White Bedroom Door (@1 opening)"
+msgstr "Porta de Quarto Branca (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Wrought Iron Gate/Door (@1 opening)"
+msgstr "Cerca/corrimão de ferro forjado (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Wooden door with glass insert (@1 opening)"
+msgstr "Porta de Madeira com Vidraça (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Wooden door with glass insert, type 2 (@1 opening)"
+msgstr "Porta de Madeira com Vidraça, tipo 2 (abre para @1)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "left"
+msgstr "esquerda"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "right"
+msgstr "direita"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Unpainted Picket Fence Gate"
+msgstr "Porteira de Madeira Não Pintada"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "White Picket Fence Gate"
+msgstr "Porteira Branca de Piquete "
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Barbed Wire Fence Gate"
+msgstr "Porteira de Arame Farpado"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Chainlink Fence Gate"
+msgstr "Porteira de Tela de Arame"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese wall (top)"
+msgstr "Divisória japonesa (superior)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese wall"
+msgstr "Divisória japonesa"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese wall (bottom)"
+msgstr "Divisória japonesa (inferior)"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese tatami"
+msgstr "Tatami Japonês"
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese-style door"
+msgstr "Porta estilo japonês"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Textured Ceiling Paint"
+msgstr "Pintura Texturizada do Teto"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Drop-Ceiling Tile"
+msgstr "Placa de Teto"
+
+#: ../homedecor/misc-nodes.lua
+msgid "small"
+msgstr "pequeno"
+
+#: ../homedecor/misc-nodes.lua
+msgid "large"
+msgstr "grande"
+
+#: ../homedecor/misc-nodes.lua
+msgid "persian"
+msgstr "persiana"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Rug (@1)"
+msgstr "Carpete (@1)"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Flower Pot (@1)"
+msgstr "Vaso de Flores"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Rose"
+msgstr "Rosa"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Tulip"
+msgstr "Tulipa"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Yellow Dandelion"
+msgstr "Dente de Leão Amarelo"
+
+#: ../homedecor/misc-nodes.lua
+msgid "White Dandelion"
+msgstr "Dente de Leão Branco"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Blue Geranium"
+msgstr "Gerânio Azul"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Viola"
+msgstr "Violeta"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Cactus"
+msgstr "Cacto"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Bonsai"
+msgstr "Bonsai"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Potted flower (@1)"
+msgstr "Vaso de Flor (@1)"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Brass Pole"
+msgstr "Poste de bronze"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Wrought Iron Pole"
+msgstr "Poste de Ferro Forjado"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Fishtank"
+msgstr "Aquário"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Fishtank (lighted)"
+msgstr "Aquário (iluminado)"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Cardboard box (big)"
+msgstr "Caixa de Papelão (grande)"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Cardboard box"
+msgstr "Caixa de Papelão"
+
+#: ../homedecor/misc-nodes.lua
+msgid "DVD/CD cabinet"
+msgstr "Gabinete de DVD/CD"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Pool Table"
+msgstr "Mesa de Sinuca"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Piano"
+msgstr "Piano"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Trophy"
+msgstr "Troféu"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Sport bench"
+msgstr "Supino Reto"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Skateboard"
+msgstr "Skate"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Metal tool cabinet and work table"
+msgstr "Gabinete de ferramentas metálicas e mesa de trabalho"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Picture Frame"
+msgstr "Quadro de Foto"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Decorative painting #@1"
+msgstr "Quadro Decorativo #@1"
+
+#: ../homedecor/misc-nodes.lua
+msgid "dark topped"
+msgstr "coberto escuro"
+
+#: ../homedecor/misc-nodes.lua
+msgid "diagonal"
+msgstr "diagonal"
+
+#: ../homedecor/misc-nodes.lua
+msgid "horizontal"
+msgstr "horizontal"
+
+#: ../homedecor/misc-nodes.lua
+msgid "Banister for Stairs (@1, @2)"
+msgstr "Corrimão para Escadas (@1, @2)"
+
+#: ../homedecor/misc-nodes.lua
+msgid "not enough space"
+msgstr "Espaço induficiente"
+
+#: ../homedecor/tables.lua
+msgid "Small square glass table"
+msgstr "Tampo Quadrado de Vidro"
+
+#: ../homedecor/tables.lua
+msgid "Small round glass table"
+msgstr "Tampo Redondo de Vidro"
+
+#: ../homedecor/tables.lua
+msgid "Large glass table piece"
+msgstr "Tampo Grande de Vidro"
+
+#: ../homedecor/tables.lua
+msgid "Small square wooden table"
+msgstr "Tampo Quadrado de Madeira"
+
+#: ../homedecor/tables.lua
+msgid "Small round wooden table"
+msgstr "Tampo Redondo de Madeira"
+
+#: ../homedecor/tables.lua
+msgid "Large wooden table piece"
+msgstr "Tampo Grande de Madeira"
+
+#: ../homedecor/tables.lua
+msgid "Utility Table"
+msgstr "Mesa de Trabalho"
+
+#: ../homedecor/tables.lua
+msgid "Table Legs (@1)"
+msgstr "Pernas de Mesa (@1)"
+
+#: ../homedecor/tables.lua
+msgid "Legs for Utility Table"
+msgstr "Pernas para Mesa de Trabalho"
+
+#: ../homedecor/books.lua
+msgid "Writable Book (@1)"
+msgstr "Livro Consumível (@1)"
+
+#: ../homedecor/books.lua
+msgid "@1 has written in a book (title: \"@2\"): \"@3\" at location @4"
+msgstr "@1 escreveu um livro (título: \"@2\"): \"@3\" na localização @4"
+
+#: ../homedecor/furniture.lua
+msgid "Table"
+msgstr "Mesa"
+
+#: ../homedecor/furniture.lua
+msgid "Mahogany Table"
+msgstr "Mesa em Mogno"
+
+#: ../homedecor/furniture.lua
+msgid "White Table"
+msgstr "Mesa Branca"
+
+#: ../homedecor/furniture.lua
+msgid "plain"
+msgstr "Sem Acabamento"
+
+#: ../homedecor/furniture.lua
+msgid "Kitchen chair (@1)"
+msgstr "Cadeira de Cozinha (@1)"
+
+#: ../homedecor/furniture.lua
+msgid "Armchair (@1)"
+msgstr "Poltrona (@1)"
+
+#: ../homedecor/furniture.lua
+msgid "Bookshelf (open-frame)"
+msgstr "Estante de Livros de Parede"
+
+#: ../homedecor/furniture.lua
+msgid "Wall Shelf"
+msgstr "Estante de Parede"
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 moves stuff in @2 at @3"
+msgstr "@1 moveu algo de @2 em @3"
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 moves @2 to @3 at @4"
+msgstr "@1 moveu @2 de @3 em @4"
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 takes @2 from @3 at @4"
+msgstr "@1 pegou @2 de @3 em @4"
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 (owned by @2)"
+msgstr "@1 (pertence a @2)"
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 tried to access a @2 belonging to @3 at @4"
+msgstr "@1 tentou acessar @2 pertencente a @3 em @4"
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 (Locked)"
+msgstr "@1 (trancado)"
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "Furnace"
+msgstr "Forno"
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (empty)"
+msgstr "@1 (vazio)"
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (active)"
+msgstr "@1 (ativo)"
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (active: @2%)"
+msgstr "@1 (ativo: @2%)"
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (out of fuel)"
+msgstr "@1 (sem combustível)"
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (output bins are full)"
+msgstr "@1 (saída de itens está lotada)"
+
+#: ../homedecor/office.lua
+msgid "Filing cabinet"
+msgstr "Armário sob a Pia"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/grey"
+msgstr "branco/cinza"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/dark grey"
+msgstr "branco/cinza escuro"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/black"
+msgstr "branco/preto"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "black/dark grey"
+msgstr "preto/cinza escuro"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/red"
+msgstr "branco/vermelho"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/green"
+msgstr "branco/verde"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/blue"
+msgstr "branco/azul"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/yellow"
+msgstr "branco/amarelo"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/tan"
+msgstr "branco/bronzeado"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "Bathroom/kitchen tiles (@1)"
+msgstr "Azulejo de Banheiro/Cozinha (@1)"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "Towel rod with towel"
+msgstr "Tolo de Toalha com Toalha"
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "Medicine cabinet"
+msgstr "Gabinete Medicinal"
+
+#, fuzzy
+#~ msgid "dark_grey"
+#~ msgstr "cinza escuro"
+
+#, fuzzy
+#~ msgid "dark_green"
+#~ msgstr "verde escuro"
+
+#~ msgid "%s moves stuff in kitchen cabinet at %s "
+#~ msgstr "%s moveu itens no armário de cozinha em %s"
+
+#~ msgid "%s moves stuff to kitchen cabinet at %s "
+#~ msgstr "%s moveu itens para o armário de cozinha em %s"
+
+#~ msgid "%s takes stuff from kitchen cabinet at %s "
+#~ msgstr "%s retirou itens do armário de cozinha em %s"
+
+#~ msgid "(Top Half, %s-opening) "
+#~ msgstr "(Metade superior, abre para %s)"
+
+#~ msgid "(%s-opening) "
+#~ msgstr "(abre para %s)"
+
+#~ msgid "Bucket of white paint "
+#~ msgstr "Balde de tinta branca"
+
+#~ msgid "Legs for Small Utility table "
+#~ msgstr "Pernas para mesa pequena"
+
+#~ msgid "Titanium Dioxide "
+#~ msgstr "Dióxido de titânio"
+
+#~ msgid "Chainlink Fence Gate (open) "
+#~ msgstr "Portão da cerca de tela de arame (aberto)"
+
+#~ msgid "Wrought Iron Fence/railing with sign "
+#~ msgstr "Cerca/corrimão de ferro forjado, com placa"
+
+#~ msgid "want to simply place the wielded item like usual. "
+#~ msgstr "quer somente colocar o item empunhado normalmente."
+
+#~ msgid "Sink "
+#~ msgstr "Pia"
+
+#~ msgid "Taps "
+#~ msgstr "Torneira"
+
+#~ msgid "Glass Table (Small, Round) "
+#~ msgstr "Mesa de vidro (pequena, redonda)"
+
+#~ msgid "Glass Table (Small, Square) "
+#~ msgstr "Mesa de vidro (pequena, quadrada)"
+
+#~ msgid "Green Plastic Flower Pot "
+#~ msgstr "Vaso de flor de plástico verde"
+
+#~ msgid "Large Area Rug "
+#~ msgstr "Tapete grande"
+
+#~ msgid "Small Throw Rug "
+#~ msgstr "Tapete pequeno"
+
+#~ msgid "Terracotta Flower Pot "
+#~ msgstr "Vaso de flor de terracota"
+
+#~ msgid "Utility table mk2 "
+#~ msgstr "Mesa de trabalho mk2"
+
+#~ msgid "Wooden Shutter (Black) "
+#~ msgstr "Persiana de madeira (preta)"
+
+#~ msgid "Wooden Shutter (Dark Grey) "
+#~ msgstr "Persiana de madeira (cinza escura)"
+
+#~ msgid "Wooden Shutter (Forest Green) "
+#~ msgstr "Persiana de madeira (verde)"
+
+#~ msgid "Wooden Shutter (Grey) "
+#~ msgstr "Persiana de madeira (cinza)"
+
+#~ msgid "Wooden Shutter (Light Blue) "
+#~ msgstr "Persiana de madeira (azul clara)"
+
+#~ msgid "Wooden Shutter (Purple) "
+#~ msgstr "Persiana de madeira (roxa)"
+
+#~ msgid "Wooden Shutter (Unpainted Mahogany) "
+#~ msgstr "Persiana de madeira (mogno)"
+
+#~ msgid "Wooden Shutter (Unpainted Oak) "
+#~ msgstr "Persiana de madeira (carvalho)"
+
+#~ msgid "Wooden Shutter (White) "
+#~ msgstr "Persiana de madeira (branca)"
+
+#~ msgid "Wooden Shutter (Yellow) "
+#~ msgstr "Persiana de madeira (amarela)"
+
+#~ msgid "Wooden Tabletop (Small, Round) "
+#~ msgstr "Tampo da mesa (pequeno, arredondado)"
+
+#~ msgid "Wooden Tabletop (Small, Square) "
+#~ msgstr "Tampo da mesa (pequeno, quadrado)"
+
+#~ msgid "someone "
+#~ msgstr "alguém"
+
+#~ msgid "Sorry, %s owns that spot. "
+#~ msgstr "Desculpe, mas esse local pertence a %s."
+
+#~ msgid "White Glowlight (small cube) "
+#~ msgstr "Arandela branca (cubo pequeno)"
+
+#~ msgid "White Glowlight (small cube, on ceiling) "
+#~ msgstr "Arandela branca (cubo pequeno, na parede)"
+
+#~ msgid "White Glowlight (thick, on wall) "
+#~ msgstr "Arandela branca (grossa, na parede)"
+
+#~ msgid "White Glowlight (thin, on wall) "
+#~ msgstr "Arandela branca (fina, na parede)"
+
+#~ msgid "Yellow Glowlight (small cube, on ceiling) "
+#~ msgstr "Arandela amarela (cubo pequeno, na parede)"
+
+#~ msgid "Yellow Glowlight (thick) "
+#~ msgstr "Arandela amarela (grossa)"
+
+#~ msgid "Yellow Glowlight (thick, on wall) "
+#~ msgstr "Arandela amarela (grossa, na parede)"
+
+#~ msgid "Yellow Glowlight (thin) "
+#~ msgstr "Arandela amarela (fina)"
+
+#~ msgid "Yellow Glowlight (thin, on wall) "
+#~ msgstr "Arandela amarela (fina, na parede)"
+
+#~ msgid "Locked Cabinet "
+#~ msgstr "Armário trancado"
+
+#~ msgid "Locked Nightstand "
+#~ msgstr "Criado-mudo trancado"
+
+#~ msgid "Mahogany Nightstand with One Drawer "
+#~ msgstr "Criado-mudo de mogno, com uma gaveta"
+
+#~ msgid "Mahogany Nightstand with Two Drawers "
+#~ msgstr "Criado-mudo de mogno, com duas gavetas"
+
+#~ msgid "%s moves stuff to nightstand at %s "
+#~ msgstr "%s moveu item(ns) para o criado-mudo em %s"
+
+#~ msgid "%s takes stuff from nightstand at %s "
+#~ msgstr "%s tirou item(ns) do criado-mudo em %s"
+
+#~ msgid "Oven active: %d%% "
+#~ msgstr "Forno ativo: %d%%"
+
+#~ msgid "Oven is empty "
+#~ msgstr "O forno está vazio"
+
+#~ msgid "%s moves stuff in refrigerator at %s "
+#~ msgstr "%s moveu item(ns) na geladeira em %s"
+
+#~ msgid "%s moves stuff to refrigerator at %s "
+#~ msgstr "%s moveu item(ns) para a geladeira em %s"
+
+#~ msgid "%s takes stuff from refrigerator at %s "
+#~ msgstr "%s tirou item(ns) da geladeira em %s"
+
+#~ msgid "Not enough vertical space to place a refrigerator! "
+#~ msgstr "Não existe espaço vertical suficiente para adicionar uma geladeira."
+
+#~ msgid "%s wrote \"%s\" to sign at %s "
+#~ msgstr "%s escreveu \"%s\" na placa em %s"
+
+#~ msgid "Reading cached character database. "
+#~ msgstr "Lendo banco de dados de caracteres no cache."
+
+#~ msgid "Font seems to have changed. Rebuilding cache. "
+#~ msgstr "Aparentemente as fontes foram alteradas. Reconstruindo o cache."
+
+#~ msgid "Could not find font line height in cached DB. Trying brute force. "
+#~ msgstr ""
+#~ "Não foi possível encontrar a altura da linha da fonte no cache do BD. "
+#~ "Tentando na marra."
+
+#~ msgid "Registered %s and %s "
+#~ msgstr "%s e %s registrados"
+
+#~ msgid "signs loaded "
+#~ msgstr "placas carregadas"
diff --git a/homedecor_i18n/locale/template.pot b/homedecor_i18n/locale/template.pot
new file mode 100644
index 0000000..bde49c5
--- /dev/null
+++ b/homedecor_i18n/locale/template.pot
@@ -0,0 +1,1420 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-01-30 21:31-0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../building_blocks/init.lua
+msgid "Adobe"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Roof block"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Streak Free Glass"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grate"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Fireplace"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Wood Framed Glass"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Terrycloth towel"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tarmac Spread"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Chess board tiling"
+msgstr ""
+
+#. Translators: "Brobble" is a portmanteau of "Brick" and "Cobble".
+#. Translate however you see fit.
+#: ../building_blocks/init.lua
+msgid "Brobble Spread"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Gravel Spread"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Hardwood"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Marble stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Marble slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Hardwood stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Hardwood slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grass stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grass slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grate Stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Grate Slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Adobe stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Adobe slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Roofing stair"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Roofing slab"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Fake Grass"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Small bundle of sticks"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar base"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Marble"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Tar Knife"
+msgstr ""
+
+#: ../building_blocks/init.lua
+msgid "Granite"
+msgstr ""
+
+#: ../inbox/init.lua
+msgid "Mailbox"
+msgstr ""
+
+#: ../inbox/init.lua
+msgid "@1's Mailbox"
+msgstr ""
+
+#: ../lavalamp/init.lua
+msgid "Lava Lamp"
+msgstr ""
+
+#: ../lavalamp/init.lua
+msgid "Lava Lamp (off)"
+msgstr ""
+
+#: ../computer/miscitems.lua ../homedecor/crafts.lua
+msgid "Plastic sheet"
+msgstr ""
+
+#: ../computer/miscitems.lua
+msgid "Unprocessed Plastic base"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "Monitor and keyboard"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "WIFI Router"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "Computer Tower"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "Printer-Scanner Combo"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "Rack Server"
+msgstr ""
+
+#: ../computer/computers.lua
+msgid "Not enough vertical space to place a server!"
+msgstr ""
+
+#: ../computer/tetris.lua
+msgid "New Game"
+msgstr ""
+
+#: ../computer/tetris.lua
+msgid "Tetris Arcade"
+msgstr ""
+
+#: ../computer/tetris.lua
+msgid "No room for place the Arcade!"
+msgstr ""
+
+#: ../chains/init.lua
+msgid "Hanging chain (wrought iron)"
+msgstr ""
+
+#: ../chains/init.lua
+msgid "Hanging chain (brass)"
+msgstr ""
+
+#: ../chains/init.lua
+msgid "Hanging chain (ceiling mount, wrought iron)"
+msgstr ""
+
+#: ../chains/init.lua
+msgid "Hanging chain (ceiling mount, brass)"
+msgstr ""
+
+#: ../chains/init.lua
+msgid "Chandelier (wrought iron)"
+msgstr ""
+
+#: ../chains/init.lua
+msgid "Chandelier (brass)"
+msgstr ""
+
+#: ../itemframes/init.lua
+msgid "Item frame"
+msgstr ""
+
+#: ../itemframes/init.lua
+msgid "Item frame (owned by @1)"
+msgstr ""
+
+#: ../itemframes/init.lua
+msgid "Pedestal"
+msgstr ""
+
+#: ../itemframes/init.lua
+msgid "Pedestal (owned by @1)"
+msgstr ""
+
+#: ../plasmascreen/init.lua
+msgid "Plasma Screen TV Stand"
+msgstr ""
+
+#: ../plasmascreen/init.lua
+msgid "Plasma TV"
+msgstr ""
+
+#: ../plasmascreen/init.lua
+msgid "Plasma TV (off)"
+msgstr ""
+
+#: ../lrfurn/longsofas.lua
+msgid "Long Sofa"
+msgstr ""
+
+#: ../lrfurn/longsofas.lua ../lrfurn/sofas.lua
+msgid "No room to place the sofa!"
+msgstr ""
+
+#: ../lrfurn/longsofas.lua ../lrfurn/armchairs.lua ../lrfurn/sofas.lua
+#: ../lrfurn/endtable.lua ../lrfurn/coffeetable.lua ../homedecor/init.lua
+msgid "Loaded!"
+msgstr ""
+
+#: ../lrfurn/armchairs.lua
+msgid "Armchair"
+msgstr ""
+
+#: ../lrfurn/sofas.lua
+msgid "Sofa"
+msgstr ""
+
+#: ../lrfurn/endtable.lua
+msgid "End Table"
+msgstr ""
+
+#: ../lrfurn/coffeetable.lua
+msgid "Coffee Table"
+msgstr ""
+
+#: ../lrfurn/coffeetable.lua
+msgid "No room to place the coffee table!"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Fake fire"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Ice fire"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Fancy Fire"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Glowing Embers"
+msgstr ""
+
+#: ../fake_fire/init.lua
+msgid "Flint and steel"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/furniture.lua
+msgid "black"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/books.lua
+msgid "brown"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/books.lua ../homedecor/furniture.lua
+msgid "blue"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "cyan"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua
+msgid "dark grey"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/furniture.lua
+msgid "dark green"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/exterior.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/books.lua
+msgid "green"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua ../homedecor/books.lua
+msgid "grey"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "magenta"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "orange"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/furniture.lua
+msgid "pink"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/shutters.lua
+#: ../homedecor/exterior.lua ../homedecor/books.lua ../homedecor/furniture.lua
+msgid "red"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/shutters.lua ../homedecor/books.lua
+#: ../homedecor/furniture.lua
+msgid "violet"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua
+#: ../homedecor/lighting.lua ../homedecor/shutters.lua
+msgid "white"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/lighting.lua ../homedecor/shutters.lua
+#: ../homedecor/exterior.lua
+msgid "yellow"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "Bed (@1)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "Bed (@1, king sized)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua ../homedecor/shutters.lua
+msgid "mahogany"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "oak"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "Nightstand with One Drawer (@1)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "One-drawer Nightstand"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "Nightstand with Two Drawers (@1)"
+msgstr ""
+
+#: ../homedecor/bedroom.lua
+msgid "Two-drawer Nightstand"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua ../homedecor/kitchen_appliances.lua
+msgid "granite"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua ../homedecor/kitchen_appliances.lua
+msgid "marble"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua ../homedecor/kitchen_appliances.lua
+msgid "steel"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Kitchen Cabinet"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Kitchen Cabinet (@1 top)"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Half-height Kitchen Cabinet (on ceiling)"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Kitchen Cabinet with sink"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Under-sink cabinet"
+msgstr ""
+
+#: ../homedecor/kitchen_furniture.lua
+msgid "Paper towels"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua
+msgid "Bars"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua
+msgid "Binding Bars"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua
+msgid "Chains"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua
+msgid "Wall Torch"
+msgstr ""
+
+#: ../homedecor/furniture_medieval.lua
+msgid "Wall Lamp"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Refrigerator (stainless steel)"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Refrigerator"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Oven"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Oven (stainless steel)"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Microwave Oven"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Coffee Maker"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Toaster"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Dishwasher"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua ../homedecor/roofing.lua
+#: ../homedecor/window_treatments.lua ../homedecor/exterior.lua
+#: ../homedecor/misc-nodes.lua
+msgid "wood"
+msgstr ""
+
+#: ../homedecor/kitchen_appliances.lua
+msgid "Dishwasher (@1)"
+msgstr ""
+
+#: ../homedecor/roofing.lua
+msgid "Glass Skylight"
+msgstr ""
+
+#: ../homedecor/roofing.lua
+msgid "Glass Skylight Frosted"
+msgstr ""
+
+#: ../homedecor/roofing.lua
+msgid "asphalt"
+msgstr ""
+
+#: ../homedecor/roofing.lua ../homedecor/misc-nodes.lua
+msgid "terracotta"
+msgstr ""
+
+#: ../homedecor/roofing.lua
+msgid "Shingles (@1)"
+msgstr ""
+
+#: ../homedecor/roofing.lua
+msgid "@1 (outer corner)"
+msgstr ""
+
+#: ../homedecor/roofing.lua
+msgid "@1 (inner corner)"
+msgstr ""
+
+#: ../homedecor/roofing.lua
+msgid "Wood Shingles"
+msgstr ""
+
+#: ../homedecor/roofing.lua
+msgid "Asphalt Shingles"
+msgstr ""
+
+#: ../homedecor/roofing.lua
+msgid "Terracotta Shingles"
+msgstr ""
+
+#: ../homedecor/roofing.lua
+msgid "Glass Shingles"
+msgstr ""
+
+#: ../homedecor/roofing.lua
+msgid "Chimney"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+msgid "Window (quartered)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+msgid "Window (plain)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+msgid "Window Blinds (thick)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+msgid "Window Blinds (thin)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+msgid "Curtains"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua ../homedecor/fences.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/tables.lua
+msgid "brass"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua ../homedecor/fences.lua
+#: ../homedecor/misc-nodes.lua ../homedecor/tables.lua
+msgid "wrought iron"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+msgid "Curtain Rod (@1)"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+msgid "Window flowerbox"
+msgstr ""
+
+#: ../homedecor/window_treatments.lua
+msgid "Stained Glass"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Uncooked Terracotta Base"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Terracotta Roof Tile"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Oil extract"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Unprocessed paraffin"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Plastic strips"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Small Wooden Drawer"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Simple Integrated Circuit"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Heating element"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Motor"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Power Crystal"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Blank Canvas"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "VCR"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "DVD Player"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Spool of copper wire"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Spool of steel wire"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Speaker driver"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Fan blades"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Copper Strip"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Steel Strip"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Steel chainlink"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Brass chainlink"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Soda Can"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Gold Coin (for soda vending machine)"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Silicon lump"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Brass Ingot"
+msgstr ""
+
+#: ../homedecor/crafts.lua
+msgid "Small Flower Pot"
+msgstr ""
+
+#: ../homedecor/electronics.lua
+msgid "Large Stereo Speaker"
+msgstr ""
+
+#: ../homedecor/electronics.lua
+msgid "Large Stereo Speaker, open front"
+msgstr ""
+
+#: ../homedecor/electronics.lua
+msgid "Small Surround Speaker"
+msgstr ""
+
+#: ../homedecor/electronics.lua
+msgid "Stereo Receiver"
+msgstr ""
+
+#: ../homedecor/electronics.lua
+msgid "Projection Screen Material"
+msgstr ""
+
+#: ../homedecor/electronics.lua
+msgid "Small CRT Television"
+msgstr ""
+
+#: ../homedecor/electronics.lua
+msgid "DVD and VCR"
+msgstr ""
+
+#: ../homedecor/electronics.lua
+msgid "Telephone"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Thick Glowlight"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Thin Glowlight"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Small Glowlight Cube"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Plasma Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Plasma Ball"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Thick Candle"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Thin Candle"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Candlestick (wrought iron)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Candlestick (brass)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Wall sconce"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Oil lamp (hurricane)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Oil Lamp (tabletop)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Ground Lantern"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Hanging Lantern"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Lattice lantern (large)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Lattice lantern (small)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Table Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Standing Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Desk Lamp (@1)"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Ceiling Lamp"
+msgstr ""
+
+#: ../homedecor/lighting.lua
+msgid "Ceiling Lamp (off)"
+msgstr ""
+
+#: ../homedecor/fences.lua
+msgid "Fence/railing (@1)"
+msgstr ""
+
+#: ../homedecor/fences.lua
+msgid "Fence/railing with sign (@1)"
+msgstr ""
+
+#: ../homedecor/fences.lua
+msgid "Unpainted Picket Fence"
+msgstr ""
+
+#: ../homedecor/fences.lua
+msgid "Unpainted Picket Fence Corner"
+msgstr ""
+
+#: ../homedecor/fences.lua
+msgid "White Picket Fence"
+msgstr ""
+
+#: ../homedecor/fences.lua
+msgid "White Picket Fence Corner"
+msgstr ""
+
+#: ../homedecor/fences.lua
+msgid "Wooden Privacy Fence"
+msgstr ""
+
+#: ../homedecor/fences.lua
+msgid "Wooden Privacy Fence Corner"
+msgstr ""
+
+#: ../homedecor/fences.lua
+msgid "Barbed Wire Fence"
+msgstr ""
+
+#: ../homedecor/fences.lua
+msgid "Barbed Wire Fence Corner"
+msgstr ""
+
+#: ../homedecor/fences.lua
+msgid "Chainlink Fence"
+msgstr ""
+
+#: ../homedecor/fences.lua
+msgid "Chainlink Fence Corner"
+msgstr ""
+
+#: ../homedecor/fences.lua
+msgid "Wrought Iron fence (type 2)"
+msgstr ""
+
+#: ../homedecor/fences.lua
+msgid "Wrought Iron fence (type 2) Corner"
+msgstr ""
+
+#: ../homedecor/shutters.lua
+msgid "unpainted oak"
+msgstr ""
+
+#: ../homedecor/shutters.lua
+msgid "forest green"
+msgstr ""
+
+#: ../homedecor/shutters.lua
+msgid "light blue"
+msgstr ""
+
+#: ../homedecor/shutters.lua
+msgid "Wooden Shutter (@1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Barbecue"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Garden Bench (style 1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Garden Bench (style 2)"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Deck Chair"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Doghouse"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Simple Bench"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Garden stone path"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "white wood"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "wood, with vegetation"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "white wood, with vegetation"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Garden Lattice (@1)"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Tree's swing"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Water well"
+msgstr ""
+
+#: ../homedecor/exterior.lua
+msgid "Shrubbery (@1)"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Toilet"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Toilet paper"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom Sink"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom taps/faucet"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom taps/faucet (brass)"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Shower Tray"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Shower Head"
+msgstr ""
+
+#: ../homedecor/bathroom_sanitation.lua
+msgid "Bathroom sundries set"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+msgid "Air Conditioner"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+msgid "Desk Fan"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+msgid "Ceiling Fan"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+msgid "Space heater"
+msgstr ""
+
+#: ../homedecor/climate-control.lua
+msgid "Radiator heater"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Mahogany Closet Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Oak Closet Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Fancy Wood/Glass Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Glass Office Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Glass and Wood, Oak-colored (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Glass and Wood, Mahogany-colored (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Glass and Wood, White (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Plain Wooden Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "White Bedroom Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Wrought Iron Gate/Door (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Wooden door with glass insert (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Wooden door with glass insert, type 2 (@1 opening)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "left"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "right"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Unpainted Picket Fence Gate"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "White Picket Fence Gate"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Barbed Wire Fence Gate"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Chainlink Fence Gate"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese wall (top)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese wall"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese wall (bottom)"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese tatami"
+msgstr ""
+
+#: ../homedecor/doors_and_gates.lua
+msgid "Japanese-style door"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Textured Ceiling Paint"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Drop-Ceiling Tile"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "small"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "large"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "persian"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Rug (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Flower Pot (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Rose"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Tulip"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Yellow Dandelion"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "White Dandelion"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Blue Geranium"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Viola"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Cactus"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Bonsai"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Potted flower (@1)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Brass Pole"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Wrought Iron Pole"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Fishtank"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Fishtank (lighted)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Cardboard box (big)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Cardboard box"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "DVD/CD cabinet"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Pool Table"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Piano"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Trophy"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Sport bench"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Skateboard"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Metal tool cabinet and work table"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Picture Frame"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Decorative painting #@1"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "dark topped"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "diagonal"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "horizontal"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "Banister for Stairs (@1, @2)"
+msgstr ""
+
+#: ../homedecor/misc-nodes.lua
+msgid "not enough space"
+msgstr ""
+
+#: ../homedecor/tables.lua
+msgid "Small square glass table"
+msgstr ""
+
+#: ../homedecor/tables.lua
+msgid "Small round glass table"
+msgstr ""
+
+#: ../homedecor/tables.lua
+msgid "Large glass table piece"
+msgstr ""
+
+#: ../homedecor/tables.lua
+msgid "Small square wooden table"
+msgstr ""
+
+#: ../homedecor/tables.lua
+msgid "Small round wooden table"
+msgstr ""
+
+#: ../homedecor/tables.lua
+msgid "Large wooden table piece"
+msgstr ""
+
+#: ../homedecor/tables.lua
+msgid "Utility Table"
+msgstr ""
+
+#: ../homedecor/tables.lua
+msgid "Table Legs (@1)"
+msgstr ""
+
+#: ../homedecor/tables.lua
+msgid "Legs for Utility Table"
+msgstr ""
+
+#: ../homedecor/books.lua
+msgid "Writable Book (@1)"
+msgstr ""
+
+#: ../homedecor/books.lua
+msgid "@1 has written in a book (title: \"@2\"): \"@3\" at location @4"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+msgid "Table"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+msgid "Mahogany Table"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+msgid "White Table"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+msgid "plain"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+msgid "Kitchen chair (@1)"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+msgid "Armchair (@1)"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+msgid "Bookshelf (open-frame)"
+msgstr ""
+
+#: ../homedecor/furniture.lua
+msgid "Wall Shelf"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 moves stuff in @2 at @3"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 moves @2 to @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 takes @2 from @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 (owned by @2)"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 tried to access a @2 belonging to @3 at @4"
+msgstr ""
+
+#: ../homedecor/handlers/inventory.lua
+msgid "@1 (Locked)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "Furnace"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (empty)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (active)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (active: @2%)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (out of fuel)"
+msgstr ""
+
+#: ../homedecor/handlers/furnaces.lua
+msgid "@1 (output bins are full)"
+msgstr ""
+
+#: ../homedecor/office.lua
+msgid "Filing cabinet"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/dark grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/black"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "black/dark grey"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/red"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/green"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/blue"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/yellow"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "white/tan"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "Bathroom/kitchen tiles (@1)"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "Towel rod with towel"
+msgstr ""
+
+#: ../homedecor/bathroom_furniture.lua
+msgid "Medicine cabinet"
+msgstr ""
diff --git a/homedecor_i18n/tools/updatepo.sh b/homedecor_i18n/tools/updatepo.sh
new file mode 100755
index 0000000..cf101d3
--- /dev/null
+++ b/homedecor_i18n/tools/updatepo.sh
@@ -0,0 +1,22 @@
+#! /bin/bash
+
+# To create a new translation:
+# msginit --locale=ll_CC -o locale/ll_CC.po -i locale/template.pot
+
+cd "$(dirname "${BASH_SOURCE[0]}")/..";
+
+# Extract translatable strings.
+xgettext --from-code=UTF-8 \
+ --keyword=S \
+ --keyword=NS:1,2 \
+ --keyword=N_ \
+ --add-comments='Translators:' \
+ --add-location=file \
+ -o locale/template.pot \
+ $(find .. -name '*.lua')
+
+# Update translations.
+find locale -name '*.po' | while read -r file; do
+ echo $file
+ msgmerge --update $file locale/template.pot;
+done
diff --git a/ilights/depends.txt b/ilights/depends.txt
index b08c42c..fe7e3d9 100644
--- a/ilights/depends.txt
+++ b/ilights/depends.txt
@@ -1,4 +1,3 @@
default
-dye
+unifieddyes
intllib?
-
diff --git a/ilights/init.lua b/ilights/init.lua
index ca2db24..96f2d3e 100644
--- a/ilights/init.lua
+++ b/ilights/init.lua
@@ -1,5 +1,6 @@
-- Industrial lights mod by DanDuncombe
-- License: CC-By-Sa
+-- rewritten by VanessaE to use param2 colorization
ilights = {}
@@ -19,71 +20,125 @@ end
ilights.modpath = minetest.get_modpath("ilights")
+-- Helper function to work around an engine bug
+
+function ilights.fix_rotation(pos, placer, itemstack, pointed_thing)
+ local node = minetest.get_node(pos)
+ local yaw = placer:get_look_yaw()
+ local dir = minetest.yaw_to_dir(yaw-1.5)
+ local pitch = placer:get_look_vertical()
+
+ local fdir = minetest.dir_to_wallmounted(dir)
+
+ if pitch < -(math.pi/4) then
+ fdir = 0
+ elseif pitch > math.pi/4 then
+ fdir = 1
+ end
+ minetest.swap_node(pos, { name = node.name, param2 = fdir })
+end
+
+
-- The important stuff!
-ilights.types = {
- {"white", "White", "#ffffff" },
- {"grey", "Grey", "#a0a0a0" },
- {"black", "Black", "#000000" },
- {"red", "Red", "#ff0000" },
- {"yellow", "Yellow", "#ffff00" },
- {"green", "Green", "#00ff00" },
- {"cyan", "Cyan", "#00ffff" },
- {"blue", "Blue", "#0000ff" },
- {"magenta", "Magenta", "#ff00ff" },
- {"orange", "Orange", "#ff8000" },
- {"violet", "Violet", "#8000ff" },
- {"dark_grey", "Dark Grey", "#404040" },
- {"dark_green", "Dark Green", "#008000" },
- {"pink", "Pink", "#ffb0ff" },
- {"brown", "Brown", "#604000" },
+local lamp_cbox = {
+ type = "wallmounted",
+ wall_top = { -11/32, -4/16, -11/32, 11/32, 8/16, 11/32 },
+ wall_bottom = { -11/32, -8/16, -11/32, 11/32, 4/16, 11/32 },
+ wall_side = { -8/16, -11/32, -11/32, 4/16, 11/32, 11/32 }
}
-local lamp_cbox = {
- type = "fixed",
- fixed = { -11/32, -8/16, -11/32, 11/32, 4/16, 11/32 }
+minetest.register_node("ilights:light", {
+ description = "Industrial Light",
+ drawtype = "mesh",
+ mesh = "ilights_lamp.obj",
+ tiles = {
+ { name = "ilights_lamp_base.png", color = 0xffffffff },
+ { name = "ilights_lamp_cage.png", color = 0xffffffff },
+ "ilights_lamp_bulb.png",
+ { name = "ilights_lamp_bulb_base.png", color = 0xffffffff },
+ "ilights_lamp_lens.png"
+ },
+ use_texture_alpha = true,
+ groups = {cracky=3},
+ paramtype = "light",
+ paramtype2 = "colorwallmounted",
+ palette = "unifieddyes_palette_colorwallmounted.png",
+ light_source = 14,
+ selection_box = lamp_cbox,
+ node_box = lamp_cbox,
+ after_place_node = ilights.fix_rotation,
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "ilights:light", "wallmounted")
+ end,
+})
+
+minetest.register_craft({
+ output = "ilights:light 3",
+ recipe = {
+ { "", "default:steel_ingot", "" },
+ { "", "default:glass", "" },
+ { "default:steel_ingot", "default:torch", "default:steel_ingot" }
+ },
+})
+
+-- convert old static nodes to param2 coloring
+
+ilights.colors = {
+ "white",
+ "grey",
+ "black",
+ "red",
+ "yellow",
+ "green",
+ "cyan",
+ "blue",
+ "magenta",
+ "orange",
+ "violet",
+ "dark_grey",
+ "dark_green",
+ "pink",
+ "brown"
}
-for _, row in ipairs(ilights.types) do
- local name = row[1]
- local desc = row[2]
- local colordef = row[3]
-
- -- Node Definition
-
- minetest.register_node("ilights:light_"..name, {
- description = desc.." Industrial Light",
- drawtype = "mesh",
- mesh = "ilights_lamp.obj",
- tiles = {
- "ilights_lamp_base.png",
- "ilights_lamp_cage.png",
- "ilights_lamp_bulb.png^[colorize:"..colordef..":200",
- "ilights_lamp_bulb_base.png",
- "ilights_lamp_lens.png^[colorize:"..colordef.."20:75"
- },
- use_texture_alpha = true,
- groups = {cracky=3},
- paramtype = "light",
- paramtype2 = "facedir",
- light_source = 14,
- selection_box = lamp_cbox,
- collision_box = lamp_cbox,
- on_place = minetest.rotate_node
- })
-
- if name then
-
- --Choose craft material
- minetest.register_craft({
- output = "ilights:light_"..name.." 3",
- recipe = {
- { "", "default:steel_ingot", "" },
- { "dye:"..name, "default:glass", "dye:"..name },
- { "default:steel_ingot", "default:torch", "default:steel_ingot" }
- },
- })
+ilights.old_static_nodes = {}
- end
+for _, i in ipairs (ilights.colors) do
+ table.insert(ilights.old_static_nodes, "ilights:light_"..i)
end
+minetest.register_lbm({
+ name = "ilights:convert",
+ label = "Convert ilights static nodes to use param2 color",
+ run_at_every_load = true,
+ nodenames = ilights.old_static_nodes,
+ action = function(pos, node)
+ local name = node.name
+ local color = string.sub(name, string.find(name, "_") + 1)
+ local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
+ local old_fdir = math.floor(node.param2 / 4)
+ local param2
+
+ if old_fdir == 5 then
+ new_fdir = 0
+ elseif old_fdir == 1 then
+ new_fdir = 5
+ elseif old_fdir == 2 then
+ new_fdir = 4
+ elseif old_fdir == 3 then
+ new_fdir = 3
+ elseif old_fdir == 4 then
+ new_fdir = 2
+ elseif old_fdir == 0 then
+ new_fdir = 1
+ end
+ param2 = paletteidx + new_fdir
+
+ minetest.set_node(pos, { name = "ilights:light", param2 = param2 })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..color)
+ end
+})
diff --git a/ilights/textures/ilights_lamp_bulb.png b/ilights/textures/ilights_lamp_bulb.png
index 053b20f..16c67cd 100644
--- a/ilights/textures/ilights_lamp_bulb.png
+++ b/ilights/textures/ilights_lamp_bulb.png
Binary files differ
diff --git a/inbox/depends.txt b/inbox/depends.txt
index 4ad96d5..947d2a7 100644
--- a/inbox/depends.txt
+++ b/inbox/depends.txt
@@ -1 +1,2 @@
default
+homedecor_i18n
diff --git a/inbox/init.lua b/inbox/init.lua
index d188f0d..7262e9f 100644
--- a/inbox/init.lua
+++ b/inbox/init.lua
@@ -1,3 +1,6 @@
+
+local S = homedecor_i18n.gettext
+
local inbox = {}
screwdriver = screwdriver or {}
@@ -19,7 +22,7 @@ minetest.register_node("inbox:empty", {
paramtype = "light",
drawtype = "mesh",
mesh = "inbox_mailbox.obj",
- description = "Mailbox",
+ description = S("Mailbox"),
tiles = {
"inbox_red_metal.png",
"inbox_white_metal.png",
@@ -36,7 +39,7 @@ minetest.register_node("inbox:empty", {
local meta = minetest.get_meta(pos)
local owner = placer:get_player_name()
meta:set_string("owner", owner)
- meta:set_string("infotext", owner.."'s Mailbox")
+ meta:set_string("infotext", S("@1's Mailbox", owner))
local inv = meta:get_inventory()
inv:set_size("main", 8*4)
inv:set_size("drop", 1)
@@ -45,8 +48,9 @@ minetest.register_node("inbox:empty", {
local meta = minetest.get_meta(pos)
local player = clicker:get_player_name()
local owner = meta:get_string("owner")
- local meta = minetest.get_meta(pos)
- if owner == player then
+ if owner == player or
+ minetest.check_player_privs(player, "protection_bypass") and
+ clicker:get_player_control().aux1 then
minetest.show_formspec(
clicker:get_player_name(),
"default:chest_locked",
diff --git a/item_tweaks/item_drop.lua b/item_tweaks/item_drop.lua
index aa0e9d0..7f030db 100644
--- a/item_tweaks/item_drop.lua
+++ b/item_tweaks/item_drop.lua
@@ -188,6 +188,12 @@ if minetest.setting_get("enable_item_pickup") == "true" then
playerPosition.y = playerPosition.y + 0.5
local inv = player:get_inventory()
+ for _,i in ipairs({"x","y","z"}) do
+ if playerPosition[i] > 31000 or playerPosition[i] < -31000 then
+ return
+ end
+ end
+
for _, object in ipairs(minetest.get_objects_inside_radius(playerPosition, 3)) do
if isGood(object) and (object:get_luaentity().dropped_by ~= player:get_player_name() or object:get_luaentity().age > 3) and
inv and
diff --git a/itemframes/depends.txt b/itemframes/depends.txt
index 85a4dc2..29ebd95 100644
--- a/itemframes/depends.txt
+++ b/itemframes/depends.txt
@@ -1,2 +1,3 @@
default
+homedecor_i18n
mesecons_mvps?
diff --git a/itemframes/init.lua b/itemframes/init.lua
index 8fca5e9..94004a2 100644
--- a/itemframes/init.lua
+++ b/itemframes/init.lua
@@ -1,3 +1,6 @@
+
+local S = homedecor_i18n.gettext
+
local tmp = {}
screwdriver = screwdriver or {}
@@ -98,7 +101,7 @@ local drop_item = function(pos, node)
end
minetest.register_node("itemframes:frame",{
- description = "Item frame",
+ description = S("Item frame"),
drawtype = "nodebox",
node_box = {
type = "fixed",
@@ -121,12 +124,13 @@ minetest.register_node("itemframes:frame",{
after_place_node = function(pos, placer, itemstack)
local meta = minetest.get_meta(pos)
meta:set_string("owner",placer:get_player_name())
- meta:set_string("infotext","Item frame (owned by "..placer:get_player_name()..")")
+ meta:set_string("infotext", S("Item frame (owned by @1)", placer:get_player_name()))
end,
on_rightclick = function(pos, node, clicker, itemstack)
if not itemstack then return end
local meta = minetest.get_meta(pos)
- if clicker:get_player_name() == meta:get_string("owner") then
+ if clicker:get_player_name() == meta:get_string("owner") or
+ minetest.check_player_privs(clicker, "protection_bypass") then
drop_item(pos,node)
local s = itemstack:take_item()
meta:set_string("item",s:to_string())
@@ -136,14 +140,16 @@ minetest.register_node("itemframes:frame",{
end,
on_punch = function(pos,node,puncher)
local meta = minetest.get_meta(pos)
- if puncher:get_player_name() == meta:get_string("owner") then
+ if puncher:get_player_name() == meta:get_string("owner") or
+ minetest.check_player_privs(puncher, "protection_bypass") then
drop_item(pos, node)
end
end,
can_dig = function(pos,player)
local name = player and player:get_player_name()
local meta = minetest.get_meta(pos)
- return name == meta:get_string("owner")
+ return name == meta:get_string("owner") or
+ minetest.check_player_privs(player, "protection_bypass")
end,
on_destruct = function(pos)
local meta = minetest.get_meta(pos)
@@ -156,7 +162,7 @@ minetest.register_node("itemframes:frame",{
minetest.register_node("itemframes:pedestal",{
- description = "Pedestal",
+ description = S("Pedestal"),
drawtype = "nodebox",
node_box = {
type = "fixed", fixed = {
@@ -178,12 +184,13 @@ minetest.register_node("itemframes:pedestal",{
after_place_node = function(pos, placer, itemstack)
local meta = minetest.get_meta(pos)
meta:set_string("owner",placer:get_player_name())
- meta:set_string("infotext","Pedestal (owned by "..placer:get_player_name()..")")
+ meta:set_string("infotext", S("Pedestal (owned by @1)", placer:get_player_name()))
end,
on_rightclick = function(pos, node, clicker, itemstack)
if not itemstack then return end
local meta = minetest.get_meta(pos)
- if clicker:get_player_name() == meta:get_string("owner") then
+ if clicker:get_player_name() == meta:get_string("owner") or
+ minetest.check_player_privs(clicker, "protection_bypass") then
drop_item(pos,node)
local s = itemstack:take_item()
meta:set_string("item",s:to_string())
@@ -193,14 +200,16 @@ minetest.register_node("itemframes:pedestal",{
end,
on_punch = function(pos,node,puncher)
local meta = minetest.get_meta(pos)
- if puncher:get_player_name() == meta:get_string("owner") then
+ if puncher:get_player_name() == meta:get_string("owner") or
+ minetest.check_player_privs(puncher, "protection_bypass") then
drop_item(pos,node)
end
end,
can_dig = function(pos,player)
local name = player and player:get_player_name()
local meta = minetest.get_meta(pos)
- return name == meta:get_string("owner")
+ return name == meta:get_string("owner") or
+ minetest.check_player_privs(player, "protection_bypass")
end,
on_destruct = function(pos)
local meta = minetest.get_meta(pos)
diff --git a/lavalamp/depends.txt b/lavalamp/depends.txt
index 29a8e95..9944202 100644
--- a/lavalamp/depends.txt
+++ b/lavalamp/depends.txt
@@ -1,2 +1,4 @@
wool
-bucket \ No newline at end of file
+bucket
+homedecor_i18n
+unifieddyes
diff --git a/lavalamp/init.lua b/lavalamp/init.lua
index 93571c6..eec843a 100644
--- a/lavalamp/init.lua
+++ b/lavalamp/init.lua
@@ -1,84 +1,134 @@
-local lavalamps_list = {
- { "Red Lava Lamp", "red"},
- { "Orange Lava Lamp", "orange"},
- { "Yellow Lava Lamp", "yellow"},
- { "Green Lava Lamp", "green"},
- { "Blue Lava Lamp", "blue"},
- { "Violet Lava Lamp", "violet"},
-}
-for i in ipairs(lavalamps_list) do
- local lavalampdesc = lavalamps_list[i][1]
- local colour = lavalamps_list[i][2]
+local S = homedecor_i18n.gettext
- minetest.register_node("lavalamp:"..colour, {
- description = lavalampdesc,
- drawtype = "mesh",
- mesh = "lavalamp.obj",
- tiles = {
- "lavalamp_metal.png",
- {
- name="lavalamp_lamp_anim_"..colour..".png",
- animation={
- type="vertical_frames",
- aspect_w=40,
- aspect_h=40,
- length=6.0,
- },
- },
- },
- inventory_image = "lavalamp_lamp_"..colour.."_inv.png",
- paramtype = "light",
- paramtype2 = "facedir",
- sunlight_propagates = true,
- walkable = false,
- light_source = 14,
- selection_box = {
- type = "fixed",
- fixed = { -0.25, -0.5, -0.25, 0.25,0.5, 0.25 },
- },
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
- sounds = default.node_sound_glass_defaults(),
- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
- node.name = "lavalamp:"..colour.."_off"
- minetest.set_node(pos, node)
- return itemstack
- end,
- })
+lavalamp = {}
- minetest.register_node("lavalamp:"..colour.."_off", {
- description = lavalampdesc.." off",
- drawtype = "mesh",
- mesh = "lavalamp.obj",
- tiles = {
- "lavalamp_metal.png",
- "lavalamp_lamp_off.png",
- },
- paramtype = "light",
- paramtype2 = "facedir",
- sunlight_propagates = true,
- walkable = false,
- selection_box = {
- type = "fixed",
- fixed = { -0.25, -0.5, -0.25, 0.25,0.5, 0.25 },
- },
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, not_in_creative_inventory=1},
- sounds = default.node_sound_glass_defaults(),
- drop = "lavalamp:"..colour,
- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
- node.name = "lavalamp:"..colour
- minetest.set_node(pos, node)
+minetest.register_node("lavalamp:lavalamp", {
+ description = S("Lava Lamp"),
+ drawtype = "mesh",
+ mesh = "lavalamp.obj",
+ tiles = {
+ { name = "lavalamp_metal.png", color = 0xffffffff},
+ {
+ name="lavalamp_lamp_anim.png",
+ animation={
+ type="vertical_frames",
+ aspect_w=40,
+ aspect_h=40,
+ length=6.0,
+ },
+ },
+ },
+ inventory_image = "lavalamp_lamp_inv.png",
+ paramtype = "light",
+ paramtype2 = "color",
+ palette = "unifieddyes_palette.png",
+ sunlight_propagates = true,
+ walkable = false,
+ light_source = 14,
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.25, 0.25,0.5, 0.25 },
+ },
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
+ sounds = default.node_sound_glass_defaults(),
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local itemname = itemstack:get_name()
+ if string.find(itemname, "dye:") or string.find(itemname, "unifieddyes:") then
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "lavalamp:lavalamp", false)
+ else
+ node.name = "lavalamp:lavalamp_off"
+ minetest.swap_node(pos, node)
return itemstack
- end,
- })
+ end
+ end
+})
+
+minetest.register_node("lavalamp:lavalamp_off", {
+ description = S("Lava Lamp (off)"),
+ drawtype = "mesh",
+ mesh = "lavalamp.obj",
+ tiles = {
+ { name = "lavalamp_metal.png", color = 0xffffffff },
+ "lavalamp_lamp_off.png",
+ },
+ paramtype = "light",
+ paramtype2 = "color",
+ palette = "unifieddyes_palette.png",
+ sunlight_propagates = true,
+ walkable = false,
+ selection_box = {
+ type = "fixed",
+ fixed = { -0.25, -0.5, -0.25, 0.25,0.5, 0.25 },
+ },
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, not_in_creative_inventory=1},
+ sounds = default.node_sound_glass_defaults(),
+ drop = "lavalamp:lavalamp",
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ node.name = "lavalamp:lavalamp"
+ minetest.swap_node(pos, node)
+ return itemstack
+ end,
+})
+
+minetest.register_craft({
+ output = "lavalamp:lavalamp",
+ recipe = {
+ {"", "wool:white", "", },
+ {"", "bucket:bucket_water", "", },
+ {"", "wool:black", "", }
+ }
+})
+
+-- convert to param2 coloring
+
+local colors = {
+ "red",
+ "orange",
+ "yellow",
+ "green",
+ "blue",
+ "violet"
+}
- minetest.register_craft({
- output = "lavalamp:"..colour,
- recipe = {
- {"", "wool:"..colour, "", },
- {"", "bucket:bucket_water", "", },
- {"", "wool:black", "", }
- }
- })
-
+lavalamp.old_static_nodes = {}
+for _, color in ipairs(colors) do
+ table.insert(lavalamp.old_static_nodes, "lavalamp:"..color)
+ table.insert(lavalamp.old_static_nodes, "lavalamp:"..color.."_off")
end
+
+minetest.register_lbm({
+ name = "lavalamp:convert",
+ label = "Convert lava lamps to use param2 color",
+ run_at_every_load = true,
+ nodenames = lavalamp.old_static_nodes,
+ action = function(pos, node)
+ local name = node.name
+ local newname
+ local color
+
+ if string.find(name, "red") then
+ color = "red"
+ elseif string.find(name, "orange") then
+ color = "orange"
+ elseif string.find(name, "yellow") then
+ color = "yellow"
+ elseif string.find(name, "green") then
+ color = "green"
+ elseif string.find(name, "blue") then
+ color = "blue"
+ elseif string.find(name, "violet") then
+ color = "violet"
+ end
+
+ local paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..color, false)
+
+ minetest.set_node(pos, { name = "lavalamp:lavalamp", param2 = paletteidx })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..color)
+
+ end
+})
diff --git a/lavalamp/textures/lavalamp_lamp_anim.png b/lavalamp/textures/lavalamp_lamp_anim.png
new file mode 100644
index 0000000..d9f7d53
--- /dev/null
+++ b/lavalamp/textures/lavalamp_lamp_anim.png
Binary files differ
diff --git a/lavalamp/textures/lavalamp_lamp_inv.png b/lavalamp/textures/lavalamp_lamp_inv.png
new file mode 100644
index 0000000..04296c6
--- /dev/null
+++ b/lavalamp/textures/lavalamp_lamp_inv.png
Binary files differ
diff --git a/lavalamp/textures/lavalamp_lamp_off.png b/lavalamp/textures/lavalamp_lamp_off.png
index 704f9c5..491708e 100644
--- a/lavalamp/textures/lavalamp_lamp_off.png
+++ b/lavalamp/textures/lavalamp_lamp_off.png
Binary files differ
diff --git a/lrfurn/armchairs.lua b/lrfurn/armchairs.lua
index f3b8225..fc9d096 100644
--- a/lrfurn/armchairs.lua
+++ b/lrfurn/armchairs.lua
@@ -1,30 +1,36 @@
+local S = homedecor_i18n.gettext
local armchair_cbox = {
type = "fixed",
- fixed = {
+ fixed = {
{-0.5, -0.5, -0.5, 0.5, 0, 0.5 },
{-0.5, -0.5, 0.4, 0.5, 0.5, 0.5 }
}
}
-for i in ipairs(lrfurn.colors) do
- local colour = lrfurn.colors[i][1]
- local hue = lrfurn.colors[i][2]
-
- minetest.register_node("lrfurn:armchair_"..colour, {
- description = "Armchair ("..colour..")",
- drawtype = "mesh",
- mesh = "lrfurn_armchair.obj",
- tiles = {
- "lrfurn_bg_white.png^[colorize:"..hue.."^lrfurn_sofa_overlay.png",
- "lrfurn_sofa_bottom.png"
- },
- paramtype = "light",
- paramtype2 = "facedir",
- groups = {snappy=3},
- sounds = default.node_sound_wood_defaults(),
- node_box = armchair_cbox,
- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+minetest.register_node("lrfurn:armchair", {
+ description = S("Armchair"),
+ drawtype = "mesh",
+ mesh = "lrfurn_armchair.obj",
+ tiles = {
+ "lrfurn_upholstery.png",
+ { name = "lrfurn_sofa_bottom.png", color = 0xffffffff }
+ },
+ paramtype = "light",
+ paramtype2 = "colorwallmounted",
+ palette = "unifieddyes_palette_colorwallmounted.png",
+ inventory_image = "lrfurn_armchair_inv.png",
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ node_box = armchair_cbox,
+ after_place_node = lrfurn.fix_rotation,
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local itemname = itemstack:get_name()
+ if string.find(itemname, "dye:") or string.find(itemname, "unifieddyes:") then
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "lrfurn:armchair", "wallmounted")
+ else
if not clicker:is_player() then
return itemstack
end
@@ -33,28 +39,77 @@ for i in ipairs(lrfurn.colors) do
clicker:set_hp(20)
return itemstack
end
- })
-
- minetest.register_craft({
- output = "lrfurn:armchair_"..colour,
- recipe = {
- {"wool:"..colour, "", "", },
- {"stairs:slab_wood", "", "", },
- {"group:stick", "", "", }
- }
- })
-
- minetest.register_craft({
- output = "lrfurn:armchair_"..colour,
- recipe = {
- {"wool:"..colour, "", "", },
- {"moreblocks:slab_wood", "", "", },
- {"group:stick", "", "", }
- }
- })
+ end
+})
+minetest.register_craft({
+ output = "lrfurn:armchair",
+ recipe = {
+ {"wool:white", "", "", },
+ {"stairs:slab_wood", "", "", },
+ {"group:stick", "", "", }
+ }
+})
+
+minetest.register_craft({
+ output = "lrfurn:armchair",
+ recipe = {
+ {"wool:white", "", "", },
+ {"moreblocks:slab_wood", "", "", },
+ {"group:stick", "", "", }
+ }
+})
+
+-- convert old static nodes to param2 color
+
+lrfurn.old_static_armchairs = {}
+
+for _, color in ipairs(lrfurn.colors) do
+ table.insert(lrfurn.old_static_armchairs, "lrfurn:armchair_"..color)
+ print("lrfurn:armchair_"..color)
end
+minetest.register_lbm({
+ name = "lrfurn:convert_armchairs",
+ label = "Convert lrfurn armchairs to use param2 color",
+ run_at_every_load = true,
+ nodenames = lrfurn.old_static_armchairs,
+ action = function(pos, node)
+ local name = node.name
+ local color = string.sub(name, string.find(name, "_")+1)
+
+ if color == "red" then
+ color = "medium_red"
+ elseif color == "dark_green" then
+ color = "medium_green"
+ elseif color == "magenta" then
+ color = "medium_magenta"
+ elseif color == "cyan" then
+ color = "medium_cyan"
+ end
+
+ local paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
+ 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
+
+ local param2 = paletteidx + new_fdir
+
+ minetest.set_node(pos, { name = "lrfurn:armchair", param2 = param2 })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..color)
+ end
+})
+
if minetest.setting_get("log_mods") then
- minetest.log("action", "armchairs loaded")
+ minetest.log("action", "[lrfurn/armchairs] "..S("Loaded!"))
end
diff --git a/lrfurn/coffeetable.lua b/lrfurn/coffeetable.lua
index 7f7afaa..506a5bf 100644
--- a/lrfurn/coffeetable.lua
+++ b/lrfurn/coffeetable.lua
@@ -1,5 +1,8 @@
+
+local S = homedecor_i18n.gettext
+
minetest.register_node("lrfurn:coffeetable_back", {
- description = "Coffee Table",
+ description = S("Coffee Table"),
drawtype = "nodebox",
tiles = {"lrfurn_coffeetable_back.png", "lrfurn_coffeetable_back.png", "lrfurn_coffeetable_back.png", "lrfurn_coffeetable_back.png", "lrfurn_coffeetable_back.png", "lrfurn_coffeetable_back.png"},
paramtype = "light",
@@ -45,7 +48,8 @@ minetest.register_node("lrfurn:coffeetable_back", {
end
minetest.set_node(pos, node)
else
- minetest.chat_send_player(placer:get_player_name(), "No room to place the coffee table!")
+ minetest.chat_send_player(placer:get_player_name(),
+ S("No room to place the coffee table!"))
minetest.set_node(pos, {name = "air"})
return true
end
@@ -68,7 +72,7 @@ minetest.register_node("lrfurn:coffeetable_back", {
if minetest.is_protected(pos, digger:get_player_name()) then return true end
- if (minetest.get_node({x=pos.x, y=pos.y, z=pos.z}).name == "lrfurn:coffeetable_front")
+ if (minetest.get_node({x=pos.x, y=pos.y, z=pos.z}).name == "lrfurn:coffeetable_front")
and (minetest.get_node({x=pos.x, y=pos.y, z=pos.z}).param2 == param2) then
minetest.remove_node(pos)
end
@@ -122,5 +126,5 @@ minetest.register_craft({
})
if minetest.setting_get("log_mods") then
- minetest.log("action", "coffeetable loaded")
+ minetest.log("action", "[lrfurn/coffeetable] "..S("Loaded!"))
end
diff --git a/lrfurn/depends.txt b/lrfurn/depends.txt
index 470ec30..973de17 100644
--- a/lrfurn/depends.txt
+++ b/lrfurn/depends.txt
@@ -1,2 +1,4 @@
default
wool
+homedecor_i18n
+unifieddyes
diff --git a/lrfurn/endtable.lua b/lrfurn/endtable.lua
index fa3940a..b94da3b 100644
--- a/lrfurn/endtable.lua
+++ b/lrfurn/endtable.lua
@@ -1,5 +1,8 @@
+
+local S = homedecor_i18n.gettext
+
minetest.register_node("lrfurn:endtable", {
- description = "End Table",
+ description = S("End Table"),
drawtype = "nodebox",
tiles = {"lrfurn_coffeetable_back.png", "lrfurn_coffeetable_back.png", "lrfurn_coffeetable_back.png", "lrfurn_coffeetable_back.png", "lrfurn_coffeetable_back.png", "lrfurn_coffeetable_back.png"},
paramtype = "light",
@@ -46,5 +49,5 @@ minetest.register_craft({
})
if minetest.setting_get("log_mods") then
- minetest.log("action", "endtable loaded")
+ minetest.log("action", "[lrfurn/endtable] "..S("Loaded!"))
end
diff --git a/lrfurn/init.lua b/lrfurn/init.lua
index 64e2ab9..6434136 100644
--- a/lrfurn/init.lua
+++ b/lrfurn/init.lua
@@ -1,3 +1,6 @@
+
+local S = homedecor_i18n.gettext
+
lrfurn = {}
screwdriver = screwdriver or {}
@@ -8,22 +11,22 @@ lrfurn.fdir_to_fwd = {
{ -1, 0 },
}
-lrfurn.colors = { -- mod changed to use colorize feature of minetest engine (cg72)
- { "black", "#000000:230" },
- { "brown", "#251005:225" },
- { "blue", "#0000d0:225" },
- { "cyan", "#009fa7:250" },
- { "dark_grey", "#101010:175" },
- { "dark_green", "#007000:230" },
- { "green", "#00d000:250" },
- { "grey", "#101010:100" },
- { "magenta", "#e0048b:250" },
- { "orange", "#ee9000:240" },
- { "pink", "#ff90b0:250" },
- { "red", "#800000:240" },
- { "violet", "#9000d0:250" },
- { "white", "#000000:000" },
- { "yellow", "#dde000:240" }
+lrfurn.colors = {
+ "black",
+ "brown",
+ "blue",
+ "cyan",
+ "dark_grey",
+ "dark_green",
+ "green",
+ "grey",
+ "magenta",
+ "orange",
+ "pink",
+ "red",
+ "violet",
+ "white",
+ "yellow",
}
function lrfurn.check_forward(pos, fdir, long, placer)
@@ -57,6 +60,15 @@ function lrfurn.check_forward(pos, fdir, long, placer)
return true
end
+function lrfurn.fix_rotation(pos, placer, itemstack, pointed_thing)
+ local node = minetest.get_node(pos)
+ local yaw = placer:get_look_yaw()
+ local dir = minetest.yaw_to_dir(yaw)
+ local fdir = minetest.dir_to_wallmounted(dir)
+
+ minetest.swap_node(pos, { name = node.name, param2 = fdir })
+end
+
dofile(minetest.get_modpath("lrfurn").."/longsofas.lua")
dofile(minetest.get_modpath("lrfurn").."/sofas.lua")
dofile(minetest.get_modpath("lrfurn").."/armchairs.lua")
diff --git a/lrfurn/longsofas.lua b/lrfurn/longsofas.lua
index a1721a9..b741aa9 100644
--- a/lrfurn/longsofas.lua
+++ b/lrfurn/longsofas.lua
@@ -1,86 +1,129 @@
-local longsofa_sbox = {
- type = "fixed",
- fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 2.5}
-}
+local S = homedecor_i18n.gettext
local longsofa_cbox = {
- type = "fixed",
- fixed = {
- {-0.5, -0.5, -0.5, 0.5, 0, 2.5 },
- {-0.5, -0.5, 0.5, -0.4, 0.5, 2.5 }
- }
+ type = "wallmounted",
+ wall_side = {-0.5, -0.5, -0.5, 0.5, 0.5, 2.5},
}
-for i in ipairs(lrfurn.colors) do
- local colour = lrfurn.colors[i][1]
- local hue = lrfurn.colors[i][2]
-
- minetest.register_node("lrfurn:longsofa_"..colour, {
- description = "Long Sofa ("..colour..")",
- drawtype = "mesh",
- mesh = "lrfurn_sofa_long.obj",
- tiles = {
- "lrfurn_bg_white.png^[colorize:"..hue.."^lrfurn_sofa_overlay.png",
- "lrfurn_sofa_bottom.png"
- },
- paramtype = "light",
- paramtype2 = "facedir",
- groups = {snappy=3},
- sounds = default.node_sound_wood_defaults(),
- selection_box = longsofa_sbox,
- node_box = longsofa_cbox,
- on_rotate = screwdriver.disallow,
-
- after_place_node = function(pos, placer, itemstack, pointed_thing)
- if minetest.is_protected(pos, placer:get_player_name()) then return true end
-
- local fdir = minetest.dir_to_facedir(placer:get_look_dir(), false)
-
- if lrfurn.check_forward(pos, fdir, true, placer) then
- minetest.set_node(pos, {name = "lrfurn:longsofa_"..colour, param2 = fdir})
- itemstack:take_item()
- else
- minetest.chat_send_player(placer:get_player_name(), "No room to place the sofa!")
- minetest.set_node(pos, { name = "air" })
- end
- return itemstack
- end,
- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+minetest.register_node("lrfurn:longsofa", {
+ description = S("Long Sofa"),
+ drawtype = "mesh",
+ mesh = "lrfurn_sofa_long.obj",
+ tiles = {
+ "lrfurn_upholstery.png",
+ { name = "lrfurn_sofa_bottom.png", color = 0xffffffff }
+ },
+ paramtype = "light",
+ paramtype2 = "colorwallmounted",
+ palette = "unifieddyes_palette_colorwallmounted.png",
+ inventory_image = "lrfurn_longsofa_inv.png",
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = longsofa_cbox,
+ node_box = longsofa_cbox,
+ on_rotate = screwdriver.disallow,
+ after_place_node = function(pos, placer, itemstack, pointed_thing)
+ lrfurn.fix_rotation(pos, placer, itemstack, pointed_thing)
+ if minetest.is_protected(pos, placer:get_player_name()) then return true end
+
+ local fdir = minetest.dir_to_facedir(placer:get_look_dir(), false)
+
+ if lrfurn.check_forward(pos, fdir, true, placer) then
+ itemstack:take_item()
+ else
+ minetest.chat_send_player(placer:get_player_name(), S("No room to place the sofa!"))
+ minetest.set_node(pos, { name = "air" })
+ end
+ return itemstack
+ end,
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local itemname = itemstack:get_name()
+ if string.find(itemname, "dye:") or string.find(itemname, "unifieddyes:") then
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "lrfurn:longsofa", "wallmounted")
+ else
if not clicker:is_player() then
return itemstack
end
+
pos.y = pos.y-0.5
clicker:setpos(pos)
clicker:set_hp(20)
return itemstack
end
- })
-
- minetest.register_alias("lrfurn:longsofa_left_"..colour, "air")
- minetest.register_alias("lrfurn:longsofa_middle_"..colour, "air")
- minetest.register_alias("lrfurn:longsofa_right_"..colour, "lrfurn:longsofa_"..colour)
-
- minetest.register_craft({
- output = "lrfurn:longsofa_"..colour,
- recipe = {
- {"wool:"..colour, "wool:"..colour, "wool:"..colour, },
- {"stairs:slab_wood", "stairs:slab_wood", "stairs:slab_wood", },
- {"group:stick", "group:stick", "group:stick", }
- }
- })
-
- minetest.register_craft({
- output = "lrfurn:longsofa_"..colour,
- recipe = {
- {"wool:"..colour, "wool:"..colour, "wool:"..colour, },
- {"moreblocks:slab_wood", "moreblocks:slab_wood", "moreblocks:slab_wood", },
- {"group:stick", "group:stick", "group:stick", }
- }
- })
+ end
+})
+
+minetest.register_craft({
+ output = "lrfurn:longsofa",
+ recipe = {
+ {"wool:white", "wool:white", "wool:white", },
+ {"stairs:slab_wood", "stairs:slab_wood", "stairs:slab_wood", },
+ {"group:stick", "group:stick", "group:stick", }
+ }
+})
+
+minetest.register_craft({
+ output = "lrfurn:longsofa",
+ recipe = {
+ {"wool:white", "wool:white", "wool:white", },
+ {"moreblocks:slab_wood", "moreblocks:slab_wood", "moreblocks:slab_wood", },
+ {"group:stick", "group:stick", "group:stick", }
+ }
+})
+-- convert old static nodes to param2 colorization
+
+lrfurn.old_static_longsofas = {}
+
+for _, color in ipairs(lrfurn.colors) do
+ table.insert(lrfurn.old_static_longsofas, "lrfurn:longsofa_"..color)
end
+minetest.register_lbm({
+ name = "lrfurn:convert_longsofas",
+ label = "Convert lrfurn long sofas to use param2 color",
+ run_at_every_load = true,
+ nodenames = lrfurn.old_static_longsofas,
+ action = function(pos, node)
+ local name = node.name
+ local color = string.sub(name, string.find(name, "_")+1)
+
+ if color == "red" then
+ color = "medium_red"
+ elseif color == "dark_green" then
+ color = "medium_green"
+ elseif color == "magenta" then
+ color = "medium_magenta"
+ elseif color == "cyan" then
+ color = "medium_cyan"
+ end
+
+ local paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
+ 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
+
+ local param2 = paletteidx + new_fdir
+
+ minetest.set_node(pos, { name = "lrfurn:longsofa", param2 = param2 })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..color)
+
+ end
+})
+
if minetest.setting_get("log_mods") then
- minetest.log("action", "long sofas loaded")
+ minetest.log("action", "[lrfurn/longsofas] "..S("Loaded!"))
end
diff --git a/lrfurn/models/lrfurn_armchair.obj b/lrfurn/models/lrfurn_armchair.obj
index 78a85c2..1ad653e 100644
--- a/lrfurn/models/lrfurn_armchair.obj
+++ b/lrfurn/models/lrfurn_armchair.obj
@@ -1,153 +1,153 @@
-# Blender v2.73 (sub 0) OBJ File: 'lrfurn-armchair.blend'
+# Blender v2.72 (sub 0) OBJ File: 'lrfurn-armchair.blend'
# www.blender.org
o Cylinder
-v 0.464844 0.234375 0.312500
-v -0.500000 0.460938 0.464844
-v -0.312500 0.187500 -0.437500
-v 0.500000 0.421875 0.316406
-v 0.500000 0.421875 0.496094
-v 0.312500 -0.078125 0.312500
-v 0.312500 -0.078125 -0.500000
-v 0.496094 0.187500 -0.500000
-v 0.500000 0.187500 0.312500
-v 0.312500 0.187500 0.312500
-v 0.316406 0.187500 -0.500000
-v -0.500000 0.460938 0.347656
-v -0.500000 0.476562 0.406250
-v -0.312500 -0.062500 0.250000
-v -0.347656 0.234375 0.312500
-v -0.437500 0.437500 0.500000
-v -0.437500 0.437500 0.312500
-v -0.312500 -0.078125 0.312500
-v 0.464844 0.218750 -0.500000
-v 0.347656 0.234375 0.312500
-v 0.347656 0.218750 -0.500000
-v -0.312500 -0.062500 -0.437500
-v 0.406250 0.234375 -0.500000
-v 0.406250 0.250000 0.312500
-v 0.500000 0.476562 0.406250
-v -0.437500 0.500000 0.406250
-v 0.500000 0.460938 0.464844
-v -0.437500 0.484375 0.347656
-v 0.500000 0.460938 0.347656
-v -0.437500 0.484375 0.464844
-v 0.000000 -0.039062 0.312500
-v -0.000000 -0.039062 -0.500000
-v -0.312500 -0.078125 -0.500000
-v -0.347656 0.218750 -0.500000
-v 0.250000 -0.046875 -0.500000
-v 0.250000 -0.046875 0.312500
-v -0.000000 0.000000 -0.437500
-v 0.312500 -0.062500 -0.437500
-v 0.250000 -0.015625 -0.437500
-v 0.000000 0.000000 0.250000
-v 0.312500 -0.062500 0.250000
-v 0.250000 -0.015625 0.250000
-v -2.426160 -0.153004 0.228538
-v 0.500000 0.187500 -0.437500
-v 0.312500 0.187500 -0.437500
-v -0.500000 0.421875 0.316406
-v -0.312500 0.187500 0.312500
-v 0.464844 0.234375 -0.437500
-v -0.500000 0.421875 0.496094
-v 0.347656 0.234375 -0.437500
-v -0.316406 0.187500 -0.500000
-v 0.406250 0.250000 -0.437500
-v -0.312500 -0.078125 0.312500
-v 0.437500 0.437500 0.312500
-v 0.437500 0.437500 0.500000
-v 0.000000 0.437500 0.312500
-v 0.437500 0.500000 0.406250
-v 0.437500 0.484375 0.347656
-v 0.437500 0.484375 0.464844
-v -0.500000 -0.187500 0.500000
-v -0.000000 -0.187500 -0.500000
-v 0.500000 -0.187500 0.500000
-v -0.312500 -0.078125 -0.500000
-v -0.500000 -0.187500 -0.500000
-v 0.500000 -0.187500 -0.500000
-v -0.464844 0.234375 -0.437500
-v -0.347656 0.234375 -0.437500
-v 0.500000 -0.375000 0.500000
-v 0.500000 -0.375000 -0.500000
-v 0.437500 -0.500000 -0.437500
-v 0.437500 -0.500000 -0.375000
-v 0.375000 -0.500000 -0.375000
-v 0.375000 -0.500000 -0.437500
-v 0.437500 -0.375000 -0.437500
-v 0.437500 -0.375000 -0.375000
+v -0.312500 -0.464844 0.234375
+v -0.464844 0.500000 0.460938
+v 0.437500 0.312500 0.187500
+v -0.316406 -0.500000 0.421875
+v -0.496094 -0.500000 0.421875
+v -0.312500 -0.312500 -0.078125
+v 0.500000 -0.312500 -0.078125
+v 0.500000 -0.496094 0.187500
+v -0.312500 -0.500000 0.187500
+v -0.312500 -0.312500 0.187500
+v 0.500000 -0.316406 0.187500
+v -0.347657 0.500000 0.460938
+v -0.406250 0.500000 0.476562
+v -0.250000 0.312500 -0.062500
+v -0.312500 0.347656 0.234375
+v -0.500000 0.437500 0.437500
+v -0.312500 0.437500 0.437500
+v -0.312500 0.312500 -0.078125
+v 0.500000 -0.464844 0.218750
+v -0.312500 -0.347656 0.234375
+v 0.500000 -0.347656 0.218750
+v 0.437500 0.312500 -0.062500
+v 0.500000 -0.406250 0.234375
+v -0.312500 -0.406250 0.250000
+v -0.406250 -0.500000 0.476562
+v -0.406250 0.437500 0.500000
+v -0.464844 -0.500000 0.460938
+v -0.347656 0.437500 0.484375
+v -0.347656 -0.500000 0.460938
+v -0.464844 0.437500 0.484375
+v -0.312500 -0.000000 -0.039062
+v 0.500000 0.000000 -0.039062
+v 0.500000 0.312500 -0.078125
+v 0.500000 0.347656 0.218750
+v 0.500000 -0.250000 -0.046875
+v -0.312500 -0.250000 -0.046875
+v 0.437500 0.000000 0.000000
+v 0.437500 -0.312500 -0.062500
+v 0.437500 -0.250000 -0.015625
+v -0.250000 -0.000000 0.000000
+v -0.250000 -0.312500 -0.062500
+v -0.250000 -0.250000 -0.015625
+v -0.228538 2.426160 -0.153004
+v 0.437500 -0.500000 0.187500
+v 0.437500 -0.312500 0.187500
+v -0.316407 0.500000 0.421875
+v -0.312500 0.312500 0.187500
+v 0.437500 -0.464844 0.234375
+v -0.496094 0.500000 0.421875
+v 0.437500 -0.347656 0.234375
+v 0.500000 0.316406 0.187500
+v 0.437500 -0.406250 0.250000
+v -0.312500 0.312500 -0.078125
+v -0.312500 -0.437500 0.437500
+v -0.500000 -0.437500 0.437500
+v -0.312500 -0.000000 0.437500
+v -0.406250 -0.437500 0.500000
+v -0.347656 -0.437500 0.484375
+v -0.464844 -0.437500 0.484375
+v -0.500000 0.500000 -0.187500
+v 0.500000 0.000000 -0.187500
+v -0.500000 -0.500000 -0.187500
+v 0.500000 0.312500 -0.078125
+v 0.500000 0.500000 -0.187500
+v 0.500000 -0.500000 -0.187500
+v 0.437500 0.464844 0.234375
+v 0.437500 0.347656 0.234375
+v -0.500000 -0.500000 -0.375000
+v 0.500000 -0.500000 -0.375000
+v 0.437500 -0.437500 -0.500000
+v 0.375000 -0.437500 -0.500000
+v 0.375000 -0.375000 -0.500000
+v 0.437500 -0.375000 -0.500000
+v 0.437500 -0.437500 -0.375000
+v 0.375000 -0.437500 -0.375000
v 0.375000 -0.375000 -0.375000
-v 0.375000 -0.375000 -0.437500
-v -0.500000 0.187500 -0.437500
-v -0.500000 0.460938 0.464844
-v -0.500000 0.460938 0.347656
-v -0.500000 0.476562 0.406250
-v -0.406250 0.250000 0.312500
-v -0.406250 0.234375 -0.500000
-v -0.464844 0.234375 0.312500
-v -0.496094 0.187500 -0.500000
-v 0.437500 -0.500000 0.375000
-v 0.437500 -0.500000 0.437500
-v 0.375000 -0.500000 0.437500
-v 0.375000 -0.500000 0.375000
-v 0.437500 -0.375000 0.375000
-v 0.437500 -0.375000 0.437500
-v 0.375000 -0.375000 0.437500
-v 0.375000 -0.375000 0.375000
-v -0.500000 0.187500 0.312500
-v -0.316406 0.187500 -0.500000
-v -0.312500 -0.078125 -0.500000
-v -0.500000 0.421875 0.316406
-v -0.500000 0.421875 0.496094
-v -0.464844 0.218750 -0.500000
-v -0.347656 0.234375 0.312500
-v -0.347656 0.218750 -0.500000
-v -0.500000 -0.375000 0.500000
-v -0.500000 -0.375000 -0.500000
-v -0.500000 -0.187500 0.500000
-v -0.500000 -0.187500 -0.500000
-v -0.500000 -0.375000 -0.500000
-v -0.500000 -0.375000 0.500000
-v -0.375000 -0.500000 -0.437500
-v -0.375000 -0.500000 -0.375000
-v -0.437500 -0.500000 -0.375000
-v -0.437500 -0.500000 -0.437500
-v -0.375000 -0.375000 -0.437500
-v -0.375000 -0.375000 -0.375000
+v 0.437500 -0.375000 -0.375000
+v 0.437500 0.500000 0.187500
+v -0.464844 0.500000 0.460938
+v -0.347657 0.500000 0.460938
+v -0.406250 0.500000 0.476562
+v -0.312500 0.406250 0.250000
+v 0.500000 0.406250 0.234375
+v -0.312500 0.464844 0.234375
+v 0.500000 0.496094 0.187500
+v -0.375000 -0.437500 -0.500000
+v -0.437500 -0.437500 -0.500000
+v -0.437500 -0.375000 -0.500000
+v -0.375000 -0.375000 -0.500000
+v -0.375000 -0.437500 -0.375000
+v -0.437500 -0.437500 -0.375000
v -0.437500 -0.375000 -0.375000
-v -0.437500 -0.375000 -0.437500
-v -0.375000 -0.500000 0.375000
-v -0.375000 -0.500000 0.437500
-v -0.437500 -0.500000 0.437500
-v -0.437500 -0.500000 0.375000
-v -0.375000 -0.375000 0.375000
-v -0.375000 -0.375000 0.437500
-v -0.437500 -0.375000 0.437500
-v -0.437500 -0.375000 0.375000
-v -0.406250 0.250000 -0.437500
-v -0.500000 -0.187500 0.500000
-v -0.500000 -0.187500 -0.500000
-v -0.347656 0.234375 -0.437500
-v -0.437500 0.437500 0.500000
-v -0.437500 0.437500 0.312500
-v -0.437500 0.500000 0.406250
-v -0.437500 0.484375 0.347656
-v -0.437500 0.484375 0.464844
-v 0.000000 -0.039062 0.312500
-v -0.000000 -0.039062 -0.500000
-v -0.250000 -0.046875 -0.500000
-v -0.250000 -0.046875 0.312500
-v -0.000000 0.000000 -0.437500
-v -0.312500 -0.062500 -0.437500
-v -0.250000 -0.015625 -0.437500
-v 0.000000 0.000000 0.250000
-v -0.250000 -0.015625 0.250000
-v -0.312500 -0.062500 0.250000
-v 0.000000 0.437500 0.500000
-v 0.000000 0.500000 0.406250
-v 0.000000 0.484375 0.347656
-v 0.000000 0.484375 0.464844
-v 0.000000 -0.187500 0.500000
+v -0.375000 -0.375000 -0.375000
+v -0.312500 0.500000 0.187500
+v 0.500000 0.316406 0.187500
+v 0.500000 0.312500 -0.078125
+v -0.316407 0.500000 0.421875
+v -0.496094 0.500000 0.421875
+v 0.500000 0.464844 0.218750
+v -0.312500 0.347656 0.234375
+v 0.500000 0.347656 0.218750
+v -0.500000 0.500000 -0.375000
+v 0.500000 0.500000 -0.375000
+v -0.500000 0.500000 -0.187500
+v 0.500000 0.500000 -0.187500
+v 0.500000 0.500000 -0.375000
+v -0.500000 0.500000 -0.375000
+v 0.437500 0.375000 -0.500000
+v 0.375000 0.375000 -0.500000
+v 0.375000 0.437500 -0.500000
+v 0.437500 0.437500 -0.500000
+v 0.437500 0.375000 -0.375000
+v 0.375000 0.375000 -0.375000
+v 0.375000 0.437500 -0.375000
+v 0.437500 0.437500 -0.375000
+v -0.375000 0.375000 -0.500000
+v -0.437500 0.375000 -0.500000
+v -0.437500 0.437500 -0.500000
+v -0.375000 0.437500 -0.500000
+v -0.375000 0.375000 -0.375000
+v -0.437500 0.375000 -0.375000
+v -0.437500 0.437500 -0.375000
+v -0.375000 0.437500 -0.375000
+v 0.437500 0.406250 0.250000
+v -0.500000 0.500000 -0.187500
+v 0.500000 0.500000 -0.187500
+v 0.437500 0.347656 0.234375
+v -0.500000 0.437500 0.437500
+v -0.312500 0.437500 0.437500
+v -0.406250 0.437500 0.500000
+v -0.347656 0.437500 0.484375
+v -0.464844 0.437500 0.484375
+v -0.312500 -0.000000 -0.039062
+v 0.500000 0.000000 -0.039062
+v 0.500000 0.250000 -0.046875
+v -0.312500 0.250000 -0.046875
+v 0.437500 0.000000 0.000000
+v 0.437500 0.312500 -0.062500
+v 0.437500 0.250000 -0.015625
+v -0.250000 -0.000000 0.000000
+v -0.250000 0.250000 -0.015625
+v -0.250000 0.312500 -0.062500
+v -0.500000 -0.000000 0.437500
+v -0.406250 -0.000000 0.500000
+v -0.347656 -0.000000 0.484375
+v -0.464844 -0.000000 0.484375
+v -0.500000 -0.000000 -0.187500
vt 0.140470 0.234971
vt 0.140470 0.272035
vt 0.078047 0.270084
@@ -339,102 +339,102 @@ vt 0.937500 0.875000
vt 0.937500 0.937500
vt 0.875000 0.062500
vt 0.937500 0.062500
-vn -0.000000 0.000000 -1.000000
-vn -0.310300 0.927700 -0.207300
-vn -0.192600 0.560200 -0.805600
-vn -0.505100 0.808100 -0.303000
-vn -0.557500 0.814600 -0.160300
-vn 0.146800 0.831000 0.536500
-vn 0.075700 0.338900 0.937700
-vn 0.689700 0.205200 0.694400
-vn 0.746300 0.537600 0.392500
-vn -0.943400 0.329600 -0.035700
-vn -1.000000 -0.000000 0.000000
-vn -0.586900 0.195600 -0.785700
-vn 0.535500 0.839600 -0.090600
-vn 0.352300 0.517700 -0.779600
-vn 0.981900 0.156900 -0.105900
-vn 0.943000 0.330000 -0.042000
-vn -0.999800 0.004100 -0.017300
-vn -0.701300 0.265500 -0.661600
-vn -0.943000 0.330000 -0.042000
-vn -0.535500 0.839600 -0.090600
-vn -0.386900 0.578400 -0.718100
-vn 0.000000 0.992800 -0.119800
-vn 0.005700 0.640900 -0.767500
-vn -0.344000 0.509500 -0.788700
-vn -0.000000 0.600000 -0.800000
-vn -0.000000 0.828700 -0.559600
-vn -0.000000 0.316200 -0.948700
-vn 0.098200 0.368400 -0.924400
-vn -0.005700 0.640900 -0.767500
-vn -0.030800 -0.005100 -0.999500
-vn -0.817000 -0.001200 -0.576600
-vn 0.687300 0.202400 -0.697500
-vn 0.077600 0.335500 -0.938800
-vn 0.557500 0.814600 0.160300
-vn 0.310300 0.927700 0.207300
-vn 0.297500 0.865300 0.403400
-vn 0.505100 0.808100 0.303000
-vn 0.053500 0.966600 0.250500
-vn 0.040800 0.870800 0.489900
-vn -0.767600 0.000000 -0.641000
-vn -0.024000 0.512200 -0.858500
-vn -0.706800 0.266200 -0.655400
-vn -0.528800 0.004000 -0.848700
-vn 0.000000 1.000000 0.000000
-vn 0.000000 0.828700 0.559600
-vn 0.173500 0.984800 0.000000
-vn -0.282800 0.774700 0.565600
-vn -0.210900 0.597700 0.773500
-vn -0.299000 0.813400 0.498900
-vn -0.282800 0.774700 -0.565600
-vn -0.351100 0.936300 0.000000
-vn -0.299000 0.813400 -0.498900
-vn 0.146800 0.831000 -0.536500
-vn 0.779200 0.626800 0.000000
-vn 0.746300 0.537600 -0.392500
-vn -0.053500 0.966600 -0.250500
-vn -0.352300 0.517700 -0.779600
-vn 0.297500 0.865300 -0.403400
-vn 0.040800 0.870800 -0.489900
-vn 0.053500 0.966600 -0.250500
-vn 0.310300 0.927700 -0.207300
-vn 0.505100 0.808100 -0.303000
-vn 0.557500 0.814600 -0.160300
-vn -0.981900 0.156900 -0.105900
-vn 0.586900 0.195600 -0.785700
-vn 0.000000 0.671300 -0.741200
-vn 0.386900 0.578400 -0.718100
-vn -0.210900 0.597700 -0.773500
-vn 0.701300 0.265500 -0.661600
-vn 0.000000 0.316200 0.948700
-vn -0.707100 0.000800 -0.707100
-vn 0.707100 0.000300 0.707100
-vn 0.833200 0.000900 -0.553000
-vn 0.943400 0.329600 -0.035700
vn 1.000000 0.000000 0.000000
-vn 0.999800 0.004100 -0.017300
-vn 0.781700 0.621700 -0.048700
-vn 0.800000 0.600000 -0.000000
-vn 0.757800 0.644100 -0.104200
-vn 0.933300 0.351600 -0.073100
-vn 0.999500 0.007600 -0.032200
-vn 0.767600 0.000000 -0.641000
-vn 0.114000 0.427600 -0.896800
-vn 0.255800 0.959200 -0.120500
-vn -0.819400 0.003700 0.573200
-vn -0.707100 0.000300 0.707100
-vn -0.027100 0.002700 0.999600
-vn -0.310300 0.927700 0.207300
-vn -0.557500 0.814600 0.160300
-vn -0.053500 0.966600 0.250500
-vn -0.040800 0.870800 0.489900
-vn -0.297500 0.865300 0.403400
-vn -0.505100 0.808100 0.303000
-vn 0.000000 0.600000 0.800000
+vn 0.207300 0.310300 0.927700
+vn 0.805600 0.192600 0.560200
+vn 0.303000 0.505100 0.808100
+vn 0.160300 0.557500 0.814600
+vn -0.536500 -0.146800 0.831000
+vn -0.937700 -0.075700 0.338900
+vn -0.694400 -0.689700 0.205200
+vn -0.392500 -0.746300 0.537600
+vn 0.035700 0.943400 0.329600
+vn -0.000000 1.000000 -0.000000
+vn 0.785700 0.586900 0.195600
+vn 0.090600 -0.535500 0.839600
+vn 0.779600 -0.352300 0.517700
+vn 0.105900 -0.981900 0.156900
+vn 0.042000 -0.943000 0.330000
+vn 0.017300 0.999800 0.004100
+vn 0.661600 0.701300 0.265500
+vn 0.042000 0.943000 0.330000
+vn 0.090600 0.535500 0.839600
+vn 0.718100 0.386900 0.578400
+vn 0.119800 0.000000 0.992800
+vn 0.767500 -0.005700 0.640900
+vn 0.788700 0.344000 0.509500
+vn 0.800000 0.000000 0.600000
+vn 0.559600 0.000000 0.828700
+vn 0.948700 0.000000 0.316200
+vn 0.924400 -0.098200 0.368400
+vn 0.767500 0.005700 0.640900
+vn 0.999500 0.030800 -0.005100
+vn 0.576600 0.817000 -0.001200
+vn 0.697500 -0.687300 0.202400
+vn 0.938800 -0.077600 0.335500
+vn -0.160300 -0.557500 0.814600
+vn -0.207300 -0.310300 0.927700
+vn -0.403400 -0.297500 0.865300
+vn -0.303000 -0.505100 0.808100
+vn -0.250500 -0.053500 0.966600
+vn -0.489900 -0.040800 0.870800
+vn 0.641000 0.767600 0.000000
+vn 0.858500 0.024000 0.512200
+vn 0.655400 0.706800 0.266200
+vn 0.848700 0.528800 0.004000
vn 0.000000 0.000000 1.000000
+vn -0.559600 0.000000 0.828700
+vn 0.000000 -0.173500 0.984800
+vn -0.565600 0.282800 0.774700
+vn -0.773500 0.210900 0.597700
+vn -0.498900 0.299000 0.813400
+vn 0.565600 0.282800 0.774700
+vn -0.000000 0.351100 0.936300
+vn 0.498900 0.299000 0.813400
+vn 0.536500 -0.146800 0.831000
+vn 0.000000 -0.779200 0.626800
+vn 0.392500 -0.746300 0.537600
+vn 0.250500 0.053500 0.966600
+vn 0.779600 0.352300 0.517700
+vn 0.403400 -0.297500 0.865300
+vn 0.489900 -0.040800 0.870800
+vn 0.250500 -0.053500 0.966600
+vn 0.207300 -0.310300 0.927700
+vn 0.303000 -0.505100 0.808100
+vn 0.160300 -0.557500 0.814600
+vn 0.105900 0.981900 0.156900
+vn 0.785700 -0.586900 0.195600
+vn 0.741200 0.000000 0.671300
+vn 0.718100 -0.386900 0.578400
+vn 0.773500 0.210900 0.597700
+vn 0.661600 -0.701300 0.265500
+vn -0.948700 -0.000000 0.316200
+vn 0.707100 0.707100 0.000800
+vn -0.707100 -0.707100 0.000300
+vn 0.553000 -0.833200 0.000900
+vn 0.035700 -0.943400 0.329600
vn 0.000000 -1.000000 0.000000
+vn 0.017300 -0.999800 0.004100
+vn 0.048700 -0.781700 0.621700
+vn 0.000000 -0.800000 0.600000
+vn 0.104200 -0.757800 0.644100
+vn 0.073100 -0.933300 0.351600
+vn 0.032200 -0.999500 0.007600
+vn 0.641000 -0.767600 0.000000
+vn 0.896800 -0.114000 0.427600
+vn 0.120500 -0.255800 0.959200
+vn -0.573200 0.819400 0.003700
+vn -0.707100 0.707100 0.000300
+vn -0.999600 0.027100 0.002700
+vn -0.207300 0.310300 0.927700
+vn -0.160300 0.557500 0.814600
+vn -0.250500 0.053500 0.966600
+vn -0.489900 0.040800 0.870800
+vn -0.403400 0.297500 0.865300
+vn -0.303000 0.505100 0.808100
+vn -0.800000 -0.000000 0.600000
+vn -1.000000 -0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
g Cylinder_Cylinder_upholstery
s off
f 61/1/1 134/2/1 35/3/1
diff --git a/lrfurn/models/lrfurn_sofa_long.obj b/lrfurn/models/lrfurn_sofa_long.obj
index 99d0db6..d8e32db 100644
--- a/lrfurn/models/lrfurn_sofa_long.obj
+++ b/lrfurn/models/lrfurn_sofa_long.obj
@@ -1,183 +1,183 @@
-# Blender v2.73 (sub 0) OBJ File: 'lrfurn-sofa-long.blend'
+# Blender v2.72 (sub 0) OBJ File: 'lrfurn-sofa-long.blend'
# www.blender.org
o Cylinder
-v 0.312500 0.234375 -0.464844
-v -0.500000 0.218750 2.347656
-v 0.312500 0.234375 2.347656
-v -0.500000 0.218750 2.464844
-v 0.316406 0.421875 -0.500000
-v 0.496094 0.421875 -0.500000
-v 0.496094 0.421875 2.500000
-v 0.316406 0.421875 2.500000
-v 0.312500 -0.078125 -0.312500
-v -0.500000 -0.078125 -0.312500
-v -0.500000 0.187500 -0.496094
-v 0.312500 0.187500 -0.500000
-v 0.312500 0.187500 -0.312500
-v -0.500000 0.187500 -0.316406
-v -0.500000 -0.078125 2.312500
-v 0.312500 -0.078125 2.312500
-v -0.500000 0.187500 2.316406
-v 0.312500 0.187500 2.312500
-v 0.312500 0.187500 2.500000
-v -0.500000 0.187500 2.496094
-v -0.500000 -0.078125 0.500000
-v 0.500000 0.437500 0.500000
-v 0.312500 0.437500 0.500000
-v 0.312500 -0.078125 0.500000
-v 0.500000 0.437500 1.500000
-v 0.312500 -0.078125 1.500000
-v -0.500000 -0.078125 1.500000
-v 0.312500 0.437500 1.500000
-v 0.312500 0.234375 2.464844
-v -0.500000 0.218750 -0.464844
-v 0.312500 0.234375 -0.347656
-v -0.500000 0.218750 -0.347656
-v -0.500000 0.234375 2.406250
-v 0.312500 0.250000 2.406250
-v -0.500000 0.234375 -0.406250
-v 0.312500 0.250000 -0.406250
-v 0.406250 0.476562 -0.500000
-v 0.406250 0.476562 2.500000
-v 0.406250 0.500000 0.500000
-v 0.406250 0.500000 1.500000
-v 0.464844 0.460938 -0.500000
-v 0.347656 0.460938 2.500000
-v 0.347656 0.484375 0.500000
-v 0.347656 0.484375 1.500000
-v 0.347656 0.460938 -0.500000
-v 0.464844 0.460938 2.500000
-v 0.464844 0.484375 0.500000
-v 0.464844 0.484375 1.500000
-v 0.312500 -0.039062 1.906250
-v -0.500000 -0.039062 1.000000
-v 0.312500 -0.039062 0.093750
-v 0.312500 -0.039062 1.000000
-v -0.500000 -0.039062 0.093750
-v -0.500000 -0.039062 1.906250
-v 0.312500 -0.046875 1.562500
-v -0.500000 -0.046875 0.562500
-v -0.500000 -0.046875 2.250000
-v 0.312500 -0.046875 0.437500
-v -0.500000 -0.046875 0.437500
-v 0.312500 -0.046875 1.437500
-v 0.312500 -0.046875 0.562500
-v -0.500000 -0.046875 -0.250000
-v 0.312500 -0.046875 -0.250000
-v -0.500000 -0.046875 1.437500
-v 0.312500 -0.046875 2.250000
-v -0.500000 -0.046875 1.562500
-v -0.437500 0.000000 0.093750
-v -0.437500 0.000000 1.906250
-v -0.437500 -0.062500 -0.312500
-v -0.437500 -0.062500 2.312500
-v -0.437500 -0.062500 1.500000
-v -0.437500 -0.062500 0.500000
-v -0.437500 0.000000 1.000000
-v -0.437500 -0.015625 1.562500
-v -0.437500 -0.015625 -0.250000
-v -0.437500 -0.015625 1.437500
-v -0.437500 -0.015625 2.250000
-v -0.437500 -0.015625 0.437500
-v -0.437500 -0.015625 0.562500
-v 0.250000 0.000000 0.093750
-v 0.250000 0.000000 1.906250
-v 0.250000 -0.062500 -0.312500
-v 0.250000 -0.062500 1.500000
-v 0.250000 -0.015625 1.562500
-v 0.250000 -0.015625 -0.250000
-v 0.250000 -0.015625 2.250000
-v 0.250000 -0.015625 0.437500
-v 0.250000 -0.062500 2.312500
-v 0.250000 -0.062500 0.500000
-v 0.250000 0.000000 1.000000
-v 0.250000 -0.015625 1.437500
-v 0.250000 -0.015625 0.562500
-v 0.228538 -0.153004 2.426160
-v -0.437500 0.187500 -0.500000
-v -0.437500 0.187500 -0.312500
-v -0.437500 0.187500 2.312500
-v -0.437500 0.187500 2.500000
-v -0.437500 0.234375 -0.464844
-v -0.437500 0.234375 2.347656
-v -0.437500 0.234375 -0.347656
-v -0.437500 0.234375 2.464844
-v -0.437500 0.250000 -0.406250
-v -0.437500 0.250000 2.406250
-v 0.312500 0.437500 -0.437500
-v 0.500000 0.437500 2.437500
-v 0.500000 0.437500 -0.437500
-v 0.312500 0.437500 2.437500
-v 0.406250 0.500000 2.437500
-v 0.406250 0.500000 -0.437500
-v 0.347656 0.484375 -0.437500
-v 0.347656 0.484375 2.437500
-v 0.464844 0.484375 2.437500
-v 0.464844 0.484375 -0.437500
-v 0.500000 -0.187500 0.500000
-v 0.500000 -0.187500 1.500000
-v 0.500000 -0.187500 2.500000
-v 0.500000 -0.187500 -0.500000
-v -0.500000 -0.187500 2.500000
-v -0.500000 -0.187500 1.500000
-v -0.500000 -0.187500 0.500000
-v -0.500000 -0.187500 -0.500000
-v -0.500000 -0.375000 2.500000
-v 0.500000 -0.375000 2.500000
-v 0.500000 -0.375000 -0.500000
-v -0.500000 -0.375000 -0.500000
-v -0.437500 -0.500000 -0.437500
-v -0.375000 -0.500000 -0.437500
-v -0.375000 -0.500000 -0.375000
-v -0.437500 -0.500000 -0.375000
-v -0.437500 -0.375000 -0.437500
-v -0.375000 -0.375000 -0.437500
-v -0.375000 -0.375000 -0.375000
-v -0.437500 -0.375000 -0.375000
-v -0.437500 -0.500000 2.375000
-v -0.375000 -0.500000 2.375000
-v -0.375000 -0.500000 2.437500
-v -0.437500 -0.500000 2.437500
-v -0.437500 -0.375000 2.375000
-v -0.375000 -0.375000 2.375000
-v -0.375000 -0.375000 2.437500
-v -0.437500 -0.375000 2.437500
-v 0.375000 -0.500000 -0.437500
-v 0.437500 -0.500000 -0.437500
-v 0.437500 -0.500000 -0.375000
-v 0.375000 -0.500000 -0.375000
-v 0.375000 -0.375000 -0.437500
-v 0.437500 -0.375000 -0.437500
+v 0.464844 -0.312500 0.234375
+v -2.347656 0.500000 0.218751
+v -2.347656 -0.312500 0.234375
+v -2.464844 0.500000 0.218751
+v 0.500000 -0.316407 0.421875
+v 0.500000 -0.496094 0.421875
+v -2.500000 -0.496094 0.421875
+v -2.500000 -0.316406 0.421875
+v 0.312500 -0.312500 -0.078125
+v 0.312500 0.500000 -0.078125
+v 0.496094 0.500000 0.187500
+v 0.500000 -0.312500 0.187500
+v 0.312500 -0.312500 0.187500
+v 0.316406 0.500000 0.187500
+v -2.312500 0.500000 -0.078124
+v -2.312500 -0.312500 -0.078125
+v -2.316406 0.500000 0.187501
+v -2.312500 -0.312500 0.187500
+v -2.500000 -0.312500 0.187500
+v -2.496094 0.500000 0.187501
+v -0.500000 0.500000 -0.078125
+v -0.500000 -0.500000 0.437500
+v -0.500000 -0.312500 0.437500
+v -0.500000 -0.312500 -0.078125
+v -1.500000 -0.500000 0.437500
+v -1.500000 -0.312500 -0.078125
+v -1.500000 0.500000 -0.078124
+v -1.500000 -0.312500 0.437500
+v -2.464844 -0.312500 0.234375
+v 0.464844 0.500000 0.218750
+v 0.347656 -0.312500 0.234375
+v 0.347656 0.500000 0.218750
+v -2.406250 0.500000 0.234376
+v -2.406250 -0.312500 0.250000
+v 0.406250 0.500000 0.234375
+v 0.406250 -0.312500 0.250000
+v 0.500000 -0.406250 0.476562
+v -2.500000 -0.406250 0.476563
+v -0.500000 -0.406250 0.500000
+v -1.500000 -0.406250 0.500000
+v 0.500000 -0.464844 0.460937
+v -2.500000 -0.347656 0.460938
+v -0.500000 -0.347656 0.484375
+v -1.500000 -0.347656 0.484375
+v 0.500000 -0.347657 0.460937
+v -2.500000 -0.464844 0.460938
+v -0.500000 -0.464844 0.484375
+v -1.500000 -0.464844 0.484375
+v -1.906250 -0.312500 -0.039062
+v -1.000000 0.500000 -0.039062
+v -0.093750 -0.312500 -0.039063
+v -1.000000 -0.312500 -0.039063
+v -0.093750 0.500000 -0.039062
+v -1.906250 0.500000 -0.039062
+v -1.562500 -0.312500 -0.046875
+v -0.562500 0.500000 -0.046875
+v -2.250000 0.500000 -0.046874
+v -0.437500 -0.312500 -0.046875
+v -0.437500 0.500000 -0.046875
+v -1.437500 -0.312500 -0.046875
+v -0.562500 -0.312500 -0.046875
+v 0.250000 0.500000 -0.046875
+v 0.250000 -0.312500 -0.046875
+v -1.437500 0.500000 -0.046874
+v -2.250000 -0.312500 -0.046875
+v -1.562500 0.500000 -0.046874
+v -0.093750 0.437500 0.000000
+v -1.906250 0.437500 0.000001
+v 0.312500 0.437500 -0.062500
+v -2.312500 0.437500 -0.062499
+v -1.500000 0.437500 -0.062499
+v -0.500000 0.437500 -0.062500
+v -1.000000 0.437500 0.000000
+v -1.562500 0.437500 -0.015624
+v 0.250000 0.437500 -0.015625
+v -1.437500 0.437500 -0.015625
+v -2.250000 0.437500 -0.015624
+v -0.437500 0.437500 -0.015625
+v -0.562500 0.437500 -0.015625
+v -0.093750 -0.250000 -0.000000
+v -1.906250 -0.250000 0.000000
+v 0.312500 -0.250000 -0.062500
+v -1.500000 -0.250000 -0.062500
+v -1.562500 -0.250000 -0.015625
+v 0.250000 -0.250000 -0.015625
+v -2.250000 -0.250000 -0.015625
+v -0.437500 -0.250000 -0.015625
+v -2.312500 -0.250000 -0.062500
+v -0.500000 -0.250000 -0.062500
+v -1.000000 -0.250000 -0.000000
+v -1.437500 -0.250000 -0.015625
+v -0.562500 -0.250000 -0.015625
+v -2.426160 -0.228537 -0.153004
+v 0.500000 0.437500 0.187500
+v 0.312500 0.437500 0.187500
+v -2.312500 0.437500 0.187501
+v -2.500000 0.437500 0.187501
+v 0.464844 0.437500 0.234375
+v -2.347656 0.437500 0.234376
+v 0.347656 0.437500 0.234375
+v -2.464844 0.437500 0.234376
+v 0.406250 0.437500 0.250000
+v -2.406250 0.437500 0.250001
+v 0.437500 -0.312500 0.437500
+v -2.437500 -0.500000 0.437500
+v 0.437500 -0.500000 0.437500
+v -2.437500 -0.312500 0.437500
+v -2.437500 -0.406250 0.500000
+v 0.437500 -0.406250 0.500000
+v 0.437500 -0.347657 0.484375
+v -2.437500 -0.347656 0.484375
+v -2.437500 -0.464844 0.484375
+v 0.437500 -0.464844 0.484375
+v -0.500000 -0.500000 -0.187500
+v -1.500000 -0.500000 -0.187500
+v -2.500000 -0.499999 -0.187500
+v 0.500000 -0.500000 -0.187500
+v -2.500000 0.500000 -0.187499
+v -1.500000 0.500000 -0.187499
+v -0.500000 0.500000 -0.187500
+v 0.500000 0.500000 -0.187500
+v -2.500000 0.500001 -0.374999
+v -2.500000 -0.499999 -0.375000
+v 0.500000 -0.500000 -0.375000
+v 0.500000 0.500000 -0.375000
+v 0.437500 0.437500 -0.500000
+v 0.437500 0.375000 -0.500000
+v 0.375000 0.375000 -0.500000
+v 0.375000 0.437500 -0.500000
+v 0.437500 0.437500 -0.375000
+v 0.437500 0.375000 -0.375000
+v 0.375000 0.375000 -0.375000
+v 0.375000 0.437500 -0.375000
+v -2.375000 0.437501 -0.499999
+v -2.375000 0.375001 -0.499999
+v -2.437500 0.375001 -0.499999
+v -2.437500 0.437501 -0.499999
+v -2.375000 0.437501 -0.374999
+v -2.375000 0.375001 -0.374999
+v -2.437500 0.375001 -0.374999
+v -2.437500 0.437501 -0.374999
+v 0.437500 -0.375000 -0.500000
+v 0.437500 -0.437500 -0.500000
+v 0.375000 -0.437500 -0.500000
+v 0.375000 -0.375000 -0.500000
v 0.437500 -0.375000 -0.375000
+v 0.437500 -0.437500 -0.375000
+v 0.375000 -0.437500 -0.375000
v 0.375000 -0.375000 -0.375000
-v 0.375000 -0.500000 2.375000
-v 0.437500 -0.500000 2.375000
-v 0.437500 -0.500000 2.437500
-v 0.375000 -0.500000 2.437500
-v 0.375000 -0.375000 2.375000
-v 0.437500 -0.375000 2.375000
-v 0.437500 -0.375000 2.437500
-v 0.375000 -0.375000 2.437500
-v -0.437500 -0.500000 0.968750
-v -0.375000 -0.500000 0.968750
-v -0.375000 -0.500000 1.031250
-v -0.437500 -0.500000 1.031250
-v -0.437500 -0.375000 0.968750
-v -0.375000 -0.375000 0.968750
-v -0.375000 -0.375000 1.031250
-v -0.437500 -0.375000 1.031250
-v 0.375000 -0.500000 0.968750
-v 0.437500 -0.500000 0.968750
-v 0.437500 -0.500000 1.031250
-v 0.375000 -0.500000 1.031250
-v 0.375000 -0.375000 0.968750
-v 0.437500 -0.375000 0.968750
-v 0.437500 -0.375000 1.031250
-v 0.375000 -0.375000 1.031250
-v 0.500000 -0.375000 0.500000
-v -0.500000 -0.375000 0.500000
-v -0.500000 -0.375000 1.500000
-v 0.500000 -0.375000 1.500000
+v -2.375000 -0.374999 -0.500000
+v -2.375000 -0.437499 -0.500000
+v -2.437500 -0.437499 -0.500000
+v -2.437500 -0.374999 -0.500000
+v -2.375000 -0.374999 -0.375000
+v -2.375000 -0.437499 -0.375000
+v -2.437500 -0.437499 -0.375000
+v -2.437500 -0.374999 -0.375000
+v -0.968750 0.437500 -0.500000
+v -0.968750 0.375000 -0.500000
+v -1.031250 0.375000 -0.500000
+v -1.031250 0.437500 -0.500000
+v -0.968750 0.437500 -0.375000
+v -0.968750 0.375000 -0.375000
+v -1.031250 0.375000 -0.375000
+v -1.031250 0.437500 -0.375000
+v -0.968750 -0.375000 -0.500000
+v -0.968750 -0.437500 -0.500000
+v -1.031250 -0.437500 -0.500000
+v -1.031250 -0.375000 -0.500000
+v -0.968750 -0.375000 -0.375000
+v -0.968750 -0.437500 -0.375000
+v -1.031250 -0.437500 -0.375000
+v -1.031250 -0.375000 -0.375000
+v -0.500000 -0.500000 -0.375000
+v -0.500000 0.500000 -0.375000
+v -1.500000 0.500000 -0.374999
+v -1.500000 -0.500000 -0.375000
vt 0.250000 0.383435
vt 0.265625 0.375706
vt 0.265625 0.503232
@@ -416,103 +416,103 @@ vt 0.531250 0.875000
vt 0.531250 0.937500
vt 0.468750 0.062500
vt 0.531250 0.062500
-vn -1.000000 0.000000 0.000000
-vn -0.948700 0.316200 0.000000
-vn 0.207400 0.931200 -0.299600
-vn 0.404600 0.867500 -0.289300
-vn 0.351100 0.936300 0.000000
-vn 0.193100 0.981200 0.000000
-vn 0.251900 0.967700 0.000000
-vn 0.490300 0.871600 -0.000000
-vn 0.536500 0.831000 -0.146800
-vn 0.937700 0.338900 -0.075700
-vn 0.694400 0.205200 -0.689700
-vn 0.392500 0.537600 -0.746300
-vn -0.035700 0.329600 0.943400
-vn 0.000000 -0.000000 1.000000
-vn -0.785700 0.195600 0.586900
-vn -0.090600 0.839600 -0.535500
-vn -0.779600 0.517700 -0.352300
-vn -0.105900 0.156900 -0.981900
-vn -0.042000 0.330000 -0.943000
-vn -0.017300 0.004100 0.999800
-vn -0.788400 0.511400 -0.341800
-vn -0.785700 0.195600 -0.586900
-vn -0.035700 0.329600 -0.943400
-vn 0.251500 0.967800 0.000000
-vn 0.207400 0.930000 0.303500
-vn 0.404200 0.866700 0.292300
-vn -0.251500 0.967800 0.000000
-vn -0.860000 0.510300 0.000000
-vn -0.805300 0.561700 0.189400
-vn -0.207400 0.930000 0.303500
-vn 0.559600 0.828700 0.000000
-vn 0.948700 0.316200 0.000000
-vn 0.536500 0.831000 0.146800
-vn 0.937700 0.338900 0.075700
-vn -0.119800 0.992800 0.000000
-vn -0.760700 0.649000 0.002000
-vn -0.973400 0.205400 -0.101100
-vn -0.160300 0.814600 0.557500
-vn 0.404600 0.867500 0.289300
-vn 0.207400 0.931200 0.299600
-vn -0.760700 0.649000 -0.002000
-vn -0.788400 0.511400 0.341800
-vn -0.090600 0.839600 0.535500
-vn -0.559600 0.828700 0.000000
-vn -0.536500 0.831000 -0.146800
-vn -0.940200 0.331200 -0.079300
-vn -0.699900 0.200500 -0.685500
-vn -0.042000 0.330000 0.943000
-vn -0.105900 0.156900 0.981900
-vn -0.779600 0.517700 0.352300
-vn 0.160300 0.814600 -0.557500
-vn 0.207400 0.930000 -0.303500
-vn 0.404200 0.866700 -0.292300
-vn 0.303000 0.808100 -0.505100
-vn -0.193100 0.981200 0.000000
-vn -0.902600 0.430500 0.000000
-vn -0.805300 0.561700 -0.189400
-vn -0.207400 0.930000 -0.303500
-vn -0.699900 0.200500 0.685500
-vn -0.641000 0.000000 0.767600
-vn -0.655400 0.266200 0.706800
-vn -0.973400 0.205400 0.101100
-vn -0.392500 0.537600 0.746300
-vn 0.000000 0.626800 0.779200
-vn -0.536500 0.831000 0.146800
-vn -0.940200 0.331200 0.079300
-vn 0.392500 0.537600 0.746300
-vn 0.000000 0.984800 0.173500
vn 0.000000 1.000000 0.000000
-vn 0.000000 0.984800 -0.173500
-vn 0.000000 0.000000 -1.000000
-vn -0.017300 0.004100 -0.999800
-vn -0.641000 0.000000 -0.767600
-vn -0.655400 0.266200 -0.706800
-vn -0.718100 0.578400 0.386900
-vn -0.661600 0.265500 0.701300
-vn -0.741200 0.671300 0.000000
-vn -0.718100 0.578400 -0.386900
-vn 0.000000 0.626800 -0.779200
-vn -0.392500 0.537600 -0.746300
-vn -0.805200 0.562500 0.187600
-vn -0.207400 0.931200 0.299600
-vn -0.251900 0.967700 0.000000
-vn -0.860700 0.509200 0.000000
-vn -0.160300 0.814600 -0.557500
-vn 0.160300 0.814600 0.557500
-vn -0.207400 0.931200 -0.299600
-vn -0.805200 0.562500 -0.187600
-vn 0.303000 0.808100 0.505100
-vn -0.661600 0.265500 -0.701300
-vn 0.694400 0.205200 0.689700
-vn 1.000000 0.000000 -0.000000
-vn 0.707100 0.000300 0.707100
-vn 0.707100 0.000300 -0.707100
-vn -0.707100 0.000800 -0.707100
-vn -0.707100 0.000800 0.707100
-vn 0.000000 -1.000000 0.000000
+vn 0.000000 0.948700 0.316200
+vn 0.299600 -0.207400 0.931200
+vn 0.289300 -0.404600 0.867500
+vn -0.000000 -0.351100 0.936300
+vn 0.000000 -0.193100 0.981200
+vn 0.000000 -0.251900 0.967700
+vn 0.000000 -0.490300 0.871600
+vn 0.146800 -0.536500 0.831000
+vn 0.075700 -0.937700 0.338900
+vn 0.689700 -0.694400 0.205200
+vn 0.746300 -0.392500 0.537600
+vn -0.943400 0.035700 0.329600
+vn -1.000000 0.000000 0.000000
+vn -0.586900 0.785700 0.195600
+vn 0.535500 0.090600 0.839600
+vn 0.352300 0.779600 0.517700
+vn 0.981900 0.105900 0.156900
+vn 0.943000 0.042000 0.330000
+vn -0.999800 0.017300 0.004100
+vn 0.341800 0.788400 0.511400
+vn 0.586900 0.785700 0.195600
+vn 0.943400 0.035700 0.329600
+vn 0.000000 -0.251500 0.967800
+vn -0.303500 -0.207400 0.930000
+vn -0.292300 -0.404200 0.866700
+vn 0.000000 0.251500 0.967800
+vn 0.000000 0.860000 0.510300
+vn -0.189400 0.805300 0.561700
+vn -0.303500 0.207400 0.930000
+vn 0.000000 -0.559600 0.828700
+vn 0.000000 -0.948700 0.316200
+vn -0.146800 -0.536500 0.831000
+vn -0.075700 -0.937700 0.338900
+vn 0.000000 0.119800 0.992800
+vn -0.002000 0.760700 0.649000
+vn 0.101100 0.973400 0.205400
+vn -0.557500 0.160300 0.814600
+vn -0.289300 -0.404600 0.867500
+vn -0.299600 -0.207400 0.931200
+vn 0.002000 0.760700 0.649000
+vn -0.341800 0.788400 0.511400
+vn -0.535500 0.090600 0.839600
+vn 0.000000 0.559600 0.828700
+vn 0.146800 0.536500 0.831000
+vn 0.079300 0.940200 0.331200
+vn 0.685500 0.699900 0.200500
+vn -0.943000 0.042000 0.330000
+vn -0.981900 0.105900 0.156900
+vn -0.352300 0.779600 0.517700
+vn 0.557500 -0.160300 0.814600
+vn 0.303500 -0.207400 0.930000
+vn 0.292300 -0.404200 0.866700
+vn 0.505100 -0.303000 0.808100
+vn 0.000000 0.193100 0.981200
+vn 0.000000 0.902600 0.430500
+vn 0.189400 0.805300 0.561700
+vn 0.303500 0.207400 0.930000
+vn -0.685500 0.699900 0.200500
+vn -0.767600 0.641000 0.000000
+vn -0.706800 0.655400 0.266200
+vn -0.101100 0.973400 0.205400
+vn -0.746300 0.392500 0.537600
+vn -0.779200 0.000000 0.626800
+vn -0.146800 0.536500 0.831000
+vn -0.079300 0.940200 0.331200
+vn -0.746300 -0.392500 0.537600
+vn -0.173500 0.000000 0.984800
+vn 0.000000 0.000000 1.000000
+vn 0.173500 0.000000 0.984800
+vn 1.000000 -0.000000 0.000000
+vn 0.999800 0.017300 0.004100
+vn 0.767600 0.641000 0.000000
+vn 0.706800 0.655400 0.266200
+vn -0.386900 0.718100 0.578400
+vn -0.701300 0.661600 0.265500
+vn 0.000000 0.741200 0.671300
+vn 0.386900 0.718100 0.578400
+vn 0.779200 0.000000 0.626800
+vn 0.746300 0.392500 0.537600
+vn -0.187600 0.805200 0.562500
+vn -0.299600 0.207400 0.931200
+vn 0.000000 0.251900 0.967700
+vn 0.000000 0.860700 0.509200
+vn 0.557500 0.160300 0.814600
+vn -0.557500 -0.160300 0.814600
+vn 0.299600 0.207400 0.931200
+vn 0.187600 0.805200 0.562500
+vn -0.505100 -0.303000 0.808100
+vn 0.701300 0.661600 0.265500
+vn -0.689700 -0.694400 0.205200
+vn -0.000000 -1.000000 -0.000000
+vn -0.707100 -0.707100 0.000300
+vn 0.707100 -0.707100 0.000300
+vn 0.707100 0.707100 0.000800
+vn -0.707100 0.707100 0.000800
+vn -0.000000 0.000000 -1.000000
g Cylinder_Cylinder_upholstery
s 1
f 58/1/1 24/2/1 23/3/2
diff --git a/lrfurn/models/lrfurn_sofa_short.obj b/lrfurn/models/lrfurn_sofa_short.obj
index a11e01b..1bf1446 100644
--- a/lrfurn/models/lrfurn_sofa_short.obj
+++ b/lrfurn/models/lrfurn_sofa_short.obj
@@ -1,142 +1,142 @@
-# Blender v2.73 (sub 0) OBJ File: 'lrfurn-sofa-short.blend'
+# Blender v2.72 (sub 0) OBJ File: 'lrfurn-sofa-short.blend'
# www.blender.org
o Cylinder
-v 0.312500 0.234375 -0.464844
-v -0.500000 0.218750 1.347656
-v 0.312500 0.234375 1.347656
-v -0.500000 0.218750 1.464844
-v 0.316406 0.421875 -0.500000
-v 0.496094 0.421875 -0.500000
-v 0.496094 0.421875 1.500000
-v 0.316406 0.421875 1.500000
-v 0.312500 -0.078125 -0.312500
-v -0.500000 -0.078125 -0.312500
-v -0.500000 0.187500 -0.496094
-v 0.312500 0.187500 -0.500000
-v 0.312500 0.187500 -0.312500
-v -0.500000 0.187500 -0.316406
-v -0.500000 -0.078125 1.312500
-v 0.312500 -0.078125 1.312500
-v -0.500000 0.187500 1.316406
-v 0.312500 0.187500 1.312500
-v 0.312500 0.187500 1.500000
-v -0.500000 0.187500 1.496094
-v -0.500000 -0.078125 0.500000
-v 0.500000 0.437500 0.500000
-v 0.312500 0.437500 0.500000
-v 0.312500 -0.078125 0.500000
-v 0.312500 0.234375 1.464844
-v -0.500000 0.218750 -0.464844
-v 0.312500 0.234375 -0.347656
-v -0.500000 0.218750 -0.347656
-v -0.500000 0.234375 1.406250
-v 0.312500 0.250000 1.406250
-v -0.500000 0.234375 -0.406250
-v 0.312500 0.250000 -0.406250
-v 0.406250 0.476562 -0.500000
-v 0.406250 0.476562 1.500000
-v 0.406250 0.500000 0.500000
-v 0.464844 0.460938 -0.500000
-v 0.347656 0.460938 1.500000
-v 0.347656 0.484375 0.500000
-v 0.347656 0.460938 -0.500000
-v 0.464844 0.460938 1.500000
-v 0.464844 0.484375 0.500000
-v 0.312500 -0.039062 0.906250
-v 0.312500 -0.039062 0.093750
-v -0.500000 -0.039062 0.093750
-v -0.500000 -0.039062 0.906250
-v 0.312500 -0.046875 0.562500
-v -0.500000 -0.046875 1.250000
-v 0.312500 -0.046875 0.437500
-v -0.500000 -0.046875 0.437500
-v -0.500000 -0.046875 -0.250000
-v 0.312500 -0.046875 -0.250000
-v 0.312500 -0.046875 1.250000
-v -0.500000 -0.046875 0.562500
-v -0.437500 0.000000 0.093750
-v -0.437500 0.000000 0.906250
-v -0.437500 -0.062500 -0.312500
-v -0.437500 -0.062500 1.312500
-v -0.437500 -0.062500 0.500000
-v -0.437500 -0.015625 0.562500
-v -0.437500 -0.015625 -0.250000
-v -0.437500 -0.015625 1.250000
-v -0.437500 -0.015625 0.437500
-v 0.250000 0.000000 0.093750
-v 0.250000 0.000000 0.906250
-v 0.250000 -0.062500 -0.312500
-v 0.250000 -0.015625 0.562500
-v 0.250000 -0.015625 -0.250000
-v 0.250000 -0.015625 1.250000
-v 0.250000 -0.015625 0.437500
-v 0.250000 -0.062500 1.312500
-v 0.250000 -0.062500 0.500000
-v 0.228538 -0.153004 2.426160
-v -0.437500 0.187500 -0.500000
-v -0.437500 0.187500 -0.312500
-v -0.437500 0.187500 1.312500
-v -0.437500 0.187500 1.500000
-v -0.437500 0.234375 -0.464844
-v -0.437500 0.234375 1.347656
-v -0.437500 0.234375 -0.347656
-v -0.437500 0.234375 1.464844
-v -0.437500 0.250000 -0.406250
-v -0.437500 0.250000 1.406250
-v 0.312500 0.437500 -0.437500
-v 0.500000 0.437500 1.437500
-v 0.500000 0.437500 -0.437500
-v 0.312500 0.437500 1.437500
-v 0.406250 0.500000 1.437500
-v 0.406250 0.500000 -0.437500
-v 0.347656 0.484375 -0.437500
-v 0.347656 0.484375 1.437500
-v 0.464844 0.484375 1.437500
-v 0.464844 0.484375 -0.437500
-v 0.500000 -0.187500 0.500000
-v 0.500000 -0.187500 1.500000
-v 0.500000 -0.187500 -0.500000
-v -0.500000 -0.187500 1.500000
-v -0.500000 -0.187500 0.500000
-v -0.500000 -0.187500 -0.500000
-v -0.500000 -0.375000 1.500000
-v 0.500000 -0.375000 1.500000
-v 0.500000 -0.375000 -0.500000
-v -0.500000 -0.375000 -0.500000
-v -0.437500 -0.500000 -0.437500
-v -0.375000 -0.500000 -0.437500
-v -0.375000 -0.500000 -0.375000
-v -0.437500 -0.500000 -0.375000
-v -0.437500 -0.375000 -0.437500
-v -0.375000 -0.375000 -0.437500
-v -0.375000 -0.375000 -0.375000
-v -0.437500 -0.375000 -0.375000
-v -0.437500 -0.500000 1.375000
-v -0.375000 -0.500000 1.375000
-v -0.375000 -0.500000 1.437500
-v -0.437500 -0.500000 1.437500
-v -0.437500 -0.375000 1.375000
-v -0.375000 -0.375000 1.375000
-v -0.375000 -0.375000 1.437500
-v -0.437500 -0.375000 1.437500
-v 0.375000 -0.500000 -0.437500
-v 0.437500 -0.500000 -0.437500
-v 0.437500 -0.500000 -0.375000
-v 0.375000 -0.500000 -0.375000
-v 0.375000 -0.375000 -0.437500
-v 0.437500 -0.375000 -0.437500
+v 0.464844 -0.312500 0.234375
+v -1.347656 0.500000 0.218750
+v -1.347656 -0.312500 0.234375
+v -1.464844 0.500000 0.218750
+v 0.500000 -0.316406 0.421875
+v 0.500000 -0.496094 0.421875
+v -1.500000 -0.496094 0.421875
+v -1.500000 -0.316407 0.421875
+v 0.312500 -0.312500 -0.078125
+v 0.312500 0.500000 -0.078125
+v 0.496094 0.500000 0.187500
+v 0.500000 -0.312500 0.187500
+v 0.312500 -0.312500 0.187500
+v 0.316406 0.500000 0.187500
+v -1.312500 0.500000 -0.078125
+v -1.312500 -0.312500 -0.078125
+v -1.316406 0.500000 0.187500
+v -1.312500 -0.312500 0.187500
+v -1.500000 -0.312500 0.187500
+v -1.496094 0.500000 0.187500
+v -0.500000 0.500000 -0.078125
+v -0.500000 -0.500000 0.437500
+v -0.500000 -0.312500 0.437500
+v -0.500000 -0.312500 -0.078125
+v -1.464844 -0.312500 0.234375
+v 0.464844 0.500000 0.218750
+v 0.347656 -0.312500 0.234375
+v 0.347656 0.500000 0.218750
+v -1.406250 0.500000 0.234375
+v -1.406250 -0.312500 0.250000
+v 0.406250 0.500000 0.234375
+v 0.406250 -0.312500 0.250000
+v 0.500000 -0.406250 0.476562
+v -1.500000 -0.406250 0.476562
+v -0.500000 -0.406250 0.500000
+v 0.500000 -0.464844 0.460938
+v -1.500000 -0.347657 0.460938
+v -0.500000 -0.347656 0.484375
+v 0.500000 -0.347656 0.460938
+v -1.500000 -0.464844 0.460938
+v -0.500000 -0.464844 0.484375
+v -0.906250 -0.312500 -0.039062
+v -0.093750 -0.312500 -0.039062
+v -0.093750 0.500000 -0.039062
+v -0.906250 0.500000 -0.039062
+v -0.562500 -0.312500 -0.046875
+v -1.250000 0.500000 -0.046875
+v -0.437500 -0.312500 -0.046875
+v -0.437500 0.500000 -0.046875
+v 0.250000 0.500000 -0.046875
+v 0.250000 -0.312500 -0.046875
+v -1.250000 -0.312500 -0.046875
+v -0.562500 0.500000 -0.046875
+v -0.093750 0.437500 0.000000
+v -0.906250 0.437500 0.000000
+v 0.312500 0.437500 -0.062500
+v -1.312500 0.437500 -0.062500
+v -0.500000 0.437500 -0.062500
+v -0.562500 0.437500 -0.015625
+v 0.250000 0.437500 -0.015625
+v -1.250000 0.437500 -0.015625
+v -0.437500 0.437500 -0.015625
+v -0.093750 -0.250000 0.000000
+v -0.906250 -0.250000 0.000000
+v 0.312500 -0.250000 -0.062500
+v -0.562500 -0.250000 -0.015625
+v 0.250000 -0.250000 -0.015625
+v -1.250000 -0.250000 -0.015625
+v -0.437500 -0.250000 -0.015625
+v -1.312500 -0.250000 -0.062500
+v -0.500000 -0.250000 -0.062500
+v -2.426160 -0.228538 -0.153004
+v 0.500000 0.437500 0.187500
+v 0.312500 0.437500 0.187500
+v -1.312500 0.437500 0.187500
+v -1.500000 0.437500 0.187500
+v 0.464844 0.437500 0.234375
+v -1.347656 0.437500 0.234375
+v 0.347656 0.437500 0.234375
+v -1.464844 0.437500 0.234375
+v 0.406250 0.437500 0.250000
+v -1.406250 0.437500 0.250000
+v 0.437500 -0.312500 0.437500
+v -1.437500 -0.500000 0.437500
+v 0.437500 -0.500000 0.437500
+v -1.437500 -0.312500 0.437500
+v -1.437500 -0.406250 0.500000
+v 0.437500 -0.406250 0.500000
+v 0.437500 -0.347656 0.484375
+v -1.437500 -0.347657 0.484375
+v -1.437500 -0.464844 0.484375
+v 0.437500 -0.464844 0.484375
+v -0.500000 -0.500000 -0.187500
+v -1.500000 -0.500000 -0.187500
+v 0.500000 -0.500000 -0.187500
+v -1.500000 0.500000 -0.187500
+v -0.500000 0.500000 -0.187500
+v 0.500000 0.500000 -0.187500
+v -1.500000 0.500000 -0.375000
+v -1.500000 -0.500000 -0.375000
+v 0.500000 -0.500000 -0.375000
+v 0.500000 0.500000 -0.375000
+v 0.437500 0.437500 -0.500000
+v 0.437500 0.375000 -0.500000
+v 0.375000 0.375000 -0.500000
+v 0.375000 0.437500 -0.500000
+v 0.437500 0.437500 -0.375000
+v 0.437500 0.375000 -0.375000
+v 0.375000 0.375000 -0.375000
+v 0.375000 0.437500 -0.375000
+v -1.375000 0.437500 -0.500000
+v -1.375000 0.375000 -0.500000
+v -1.437500 0.375000 -0.500000
+v -1.437500 0.437500 -0.500000
+v -1.375000 0.437500 -0.375000
+v -1.375000 0.375000 -0.375000
+v -1.437500 0.375000 -0.375000
+v -1.437500 0.437500 -0.375000
+v 0.437500 -0.375000 -0.500000
+v 0.437500 -0.437500 -0.500000
+v 0.375000 -0.437500 -0.500000
+v 0.375000 -0.375000 -0.500000
v 0.437500 -0.375000 -0.375000
+v 0.437500 -0.437500 -0.375000
+v 0.375000 -0.437500 -0.375000
v 0.375000 -0.375000 -0.375000
-v 0.375000 -0.500000 1.375000
-v 0.437500 -0.500000 1.375000
-v 0.437500 -0.500000 1.437500
-v 0.375000 -0.500000 1.437500
-v 0.375000 -0.375000 1.375000
-v 0.437500 -0.375000 1.375000
-v 0.437500 -0.375000 1.437500
-v 0.375000 -0.375000 1.437500
-v 0.500000 -0.375000 0.500000
-v -0.500000 -0.375000 0.500000
+v -1.375000 -0.375000 -0.500000
+v -1.375000 -0.437500 -0.500000
+v -1.437500 -0.437500 -0.500000
+v -1.437500 -0.375000 -0.500000
+v -1.375000 -0.375000 -0.375000
+v -1.375000 -0.437500 -0.375000
+v -1.437500 -0.437500 -0.375000
+v -1.437500 -0.375000 -0.375000
+v -0.500000 -0.500000 -0.375000
+v -0.500000 0.500000 -0.375000
vt 0.250000 0.383435
vt 0.265625 0.375706
vt 0.265625 0.503232
@@ -347,92 +347,92 @@ vt 0.062500 0.062500
vt 0.125000 0.062500
vt 0.875000 0.062500
vt 0.937500 0.062500
-vn -1.000000 0.000000 0.000000
-vn -0.948700 0.316200 0.000000
-vn 0.536500 0.831000 -0.146800
-vn 0.937700 0.338900 -0.075700
-vn 0.694400 0.205200 -0.689700
-vn 0.392500 0.537600 -0.746300
-vn -0.035700 0.329600 0.943400
-vn 0.000000 -0.000000 1.000000
-vn -0.785700 0.195600 0.586900
-vn -0.090600 0.839600 -0.535500
-vn -0.779600 0.517700 -0.352300
-vn -0.105900 0.156900 -0.981900
-vn -0.042000 0.330000 -0.943000
-vn -0.017300 0.004100 0.999800
-vn -0.788400 0.511400 -0.341800
-vn -0.785700 0.195600 -0.586900
-vn -0.035700 0.329600 -0.943400
-vn 0.251500 0.967800 0.000000
-vn 0.207400 0.930000 0.303500
-vn 0.404200 0.866700 0.292300
-vn 0.490300 0.871600 -0.000000
-vn 0.193100 0.981200 0.000000
-vn 0.351100 0.936300 -0.000000
-vn -0.251500 0.967800 0.000000
-vn -0.860000 0.510300 0.000000
-vn -0.805300 0.561700 0.189400
-vn -0.207400 0.930000 0.303500
-vn -0.119800 0.992800 0.000000
-vn -0.760700 0.649000 0.002000
-vn -0.973400 0.205400 -0.101100
-vn -0.160300 0.814600 0.557500
-vn -0.760700 0.649000 -0.002000
-vn -0.788400 0.511400 0.341800
-vn -0.090600 0.839600 0.535500
-vn -0.559600 0.828700 0.000000
-vn -0.536500 0.831000 -0.146800
-vn -0.940200 0.331200 -0.079300
-vn -0.699900 0.200500 -0.685500
-vn -0.042000 0.330000 0.943000
-vn -0.105900 0.156900 0.981900
-vn -0.779600 0.517700 0.352300
-vn 0.160300 0.814600 -0.557500
-vn 0.207400 0.930000 -0.303500
-vn 0.404200 0.866700 -0.292300
-vn 0.303000 0.808100 -0.505100
-vn -0.699900 0.200500 0.685500
-vn -0.207400 0.930000 -0.303500
-vn -0.805300 0.561700 -0.189400
-vn -0.641000 0.000000 0.767600
-vn -0.655400 0.266200 0.706800
-vn -0.973400 0.205400 0.101100
-vn -0.392500 0.537600 0.746300
-vn 0.000000 0.626800 0.779200
-vn -0.536500 0.831000 0.146800
-vn -0.940200 0.331200 0.079300
-vn 0.392500 0.537600 0.746300
-vn 0.536500 0.831000 0.146800
-vn 0.000000 0.984800 0.173500
-vn 0.000000 1.000000 0.000000
-vn 0.559600 0.828700 0.000000
-vn 0.000000 0.984800 -0.173500
-vn 0.000000 0.000000 -1.000000
-vn -0.017300 0.004100 -0.999800
-vn -0.641000 0.000000 -0.767600
-vn -0.655400 0.266200 -0.706800
-vn -0.718100 0.578400 0.386900
-vn -0.661600 0.265500 0.701300
-vn -0.741200 0.671300 0.000000
-vn -0.718100 0.578400 -0.386900
-vn 0.000000 0.626800 -0.779200
-vn -0.392500 0.537600 -0.746300
-vn -0.160300 0.814600 -0.557500
-vn 0.160300 0.814600 0.557500
-vn -0.902600 0.430500 0.000000
-vn -0.193100 0.981200 0.000000
-vn 0.303000 0.808100 0.505100
-vn -0.707100 0.000800 0.707100
-vn -0.661600 0.265500 -0.701300
-vn 0.694400 0.205200 0.689700
-vn 0.937700 0.338900 0.075700
-vn 0.948700 0.316200 0.000000
-vn 0.707100 0.000300 0.707100
-vn 0.707100 0.000300 -0.707100
-vn -0.707100 0.000800 -0.707100
-vn 1.000000 0.000000 -0.000000
+vn -0.000000 1.000000 0.000000
+vn 0.000000 0.948700 0.316200
+vn 0.146800 -0.536500 0.831000
+vn 0.075700 -0.937700 0.338900
+vn 0.689700 -0.694400 0.205200
+vn 0.746300 -0.392500 0.537600
+vn -0.943400 0.035700 0.329600
+vn -1.000000 -0.000000 0.000000
+vn -0.586900 0.785700 0.195600
+vn 0.535500 0.090600 0.839600
+vn 0.352300 0.779600 0.517700
+vn 0.981900 0.105900 0.156900
+vn 0.943000 0.042000 0.330000
+vn -0.999800 0.017300 0.004100
+vn 0.341800 0.788400 0.511400
+vn 0.586900 0.785700 0.195600
+vn 0.943400 0.035700 0.329600
+vn 0.000000 -0.251500 0.967800
+vn -0.303500 -0.207400 0.930000
+vn -0.292300 -0.404200 0.866700
+vn 0.000000 -0.490300 0.871600
+vn 0.000000 -0.193100 0.981200
+vn 0.000000 -0.351100 0.936300
+vn 0.000000 0.251500 0.967800
+vn 0.000000 0.860000 0.510300
+vn -0.189400 0.805300 0.561700
+vn -0.303500 0.207400 0.930000
+vn 0.000000 0.119800 0.992800
+vn -0.002000 0.760700 0.649000
+vn 0.101100 0.973400 0.205400
+vn -0.557500 0.160300 0.814600
+vn 0.002000 0.760700 0.649000
+vn -0.341800 0.788400 0.511400
+vn -0.535500 0.090600 0.839600
+vn 0.000000 0.559600 0.828700
+vn 0.146800 0.536500 0.831000
+vn 0.079300 0.940200 0.331200
+vn 0.685500 0.699900 0.200500
+vn -0.943000 0.042000 0.330000
+vn -0.981900 0.105900 0.156900
+vn -0.352300 0.779600 0.517700
+vn 0.557500 -0.160300 0.814600
+vn 0.303500 -0.207400 0.930000
+vn 0.292300 -0.404200 0.866700
+vn 0.505100 -0.303000 0.808100
+vn -0.685500 0.699900 0.200500
+vn 0.303500 0.207400 0.930000
+vn 0.189400 0.805300 0.561700
+vn -0.767600 0.641000 0.000000
+vn -0.706800 0.655400 0.266200
+vn -0.101100 0.973400 0.205400
+vn -0.746300 0.392500 0.537600
+vn -0.779200 0.000000 0.626800
+vn -0.146800 0.536500 0.831000
+vn -0.079300 0.940200 0.331200
+vn -0.746300 -0.392500 0.537600
+vn -0.146800 -0.536500 0.831000
+vn -0.173500 0.000000 0.984800
+vn 0.000000 0.000000 1.000000
+vn 0.000000 -0.559600 0.828700
+vn 0.173500 0.000000 0.984800
+vn 1.000000 0.000000 0.000000
+vn 0.999800 0.017300 0.004100
+vn 0.767600 0.641000 0.000000
+vn 0.706800 0.655400 0.266200
+vn -0.386900 0.718100 0.578400
+vn -0.701300 0.661600 0.265500
+vn 0.000000 0.741200 0.671300
+vn 0.386900 0.718100 0.578400
+vn 0.779200 0.000000 0.626800
+vn 0.746300 0.392500 0.537600
+vn 0.557500 0.160300 0.814600
+vn -0.557500 -0.160300 0.814600
+vn 0.000000 0.902600 0.430500
+vn 0.000000 0.193100 0.981200
+vn -0.505100 -0.303000 0.808100
+vn -0.707100 0.707100 0.000800
+vn 0.701300 0.661600 0.265500
+vn -0.689700 -0.694400 0.205200
+vn -0.075700 -0.937700 0.338900
+vn 0.000000 -0.948700 0.316200
+vn -0.707100 -0.707100 0.000300
+vn 0.707100 -0.707100 0.000300
+vn 0.707100 0.707100 0.000800
vn 0.000000 -1.000000 0.000000
+vn 0.000000 0.000000 -1.000000
g Cylinder_Cylinder_upholstery
s 1
f 48/1/1 24/2/1 23/3/2
diff --git a/lrfurn/sofas.lua b/lrfurn/sofas.lua
index bc071c2..b05414c 100644
--- a/lrfurn/sofas.lua
+++ b/lrfurn/sofas.lua
@@ -1,87 +1,129 @@
-
-local sofa_sbox = {
- type = "fixed",
- fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 1.5}
-}
+local S = homedecor_i18n.gettext
local sofa_cbox = {
- type = "fixed",
- fixed = {
- {-0.5, -0.5, -0.5, 0.5, 0, 1.5 },
- {-0.5, -0.5, 0.5, -0.4, 0.5, 1.5 }
- }
+ type = "wallmounted",
+ wall_side = {-0.5, -0.5, -0.5, 0.5, 0.5, 1.5}
}
-for i in ipairs(lrfurn.colors) do
- local colour = lrfurn.colors[i][1]
- local hue = lrfurn.colors[i][2]
-
- minetest.register_node("lrfurn:sofa_"..colour, {
- description = "Sofa ("..colour..")",
- drawtype = "mesh",
- mesh = "lrfurn_sofa_short.obj",
- tiles = {
- "lrfurn_bg_white.png^[colorize:"..hue.."^lrfurn_sofa_overlay.png",
- "lrfurn_sofa_bottom.png"
- },
- paramtype = "light",
- paramtype2 = "facedir",
- groups = {snappy=3},
- sounds = default.node_sound_wood_defaults(),
- selection_box = sofa_sbox,
- node_box = sofa_cbox,
- on_rotate = screwdriver.disallow,
-
- after_place_node = function(pos, placer, itemstack, pointed_thing)
- if minetest.is_protected(pos, placer:get_player_name()) then return true end
-
- local fdir = minetest.dir_to_facedir(placer:get_look_dir(), false)
-
- if lrfurn.check_forward(pos, fdir, false, placer) then
- minetest.set_node(pos, {name = "lrfurn:sofa_"..colour, param2 = fdir})
- itemstack:take_item()
- else
- minetest.chat_send_player(placer:get_player_name(), "No room to place the sofa!")
- minetest.set_node(pos, { name = "air" })
+minetest.register_node("lrfurn:sofa", {
+ description = S("Sofa"),
+ drawtype = "mesh",
+ mesh = "lrfurn_sofa_short.obj",
+ tiles = {
+ "lrfurn_upholstery.png",
+ { name = "lrfurn_sofa_bottom.png", color = 0xffffffff }
+ },
+ paramtype = "light",
+ paramtype2 = "colorwallmounted",
+ palette = "unifieddyes_palette_colorwallmounted.png",
+ inventory_image = "lrfurn_sofa_inv.png",
+ groups = {snappy=3},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = sofa_cbox,
+ node_box = sofa_cbox,
+ on_rotate = screwdriver.disallow,
+ after_place_node = function(pos, placer, itemstack, pointed_thing)
+ lrfurn.fix_rotation(pos, placer, itemstack, pointed_thing)
+ if minetest.is_protected(pos, placer:get_player_name()) then return true end
- end
- return itemstack
- end,
- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local fdir = minetest.dir_to_facedir(placer:get_look_dir(), false)
+
+ if lrfurn.check_forward(pos, fdir, false, placer) then
+ itemstack:take_item()
+ else
+ minetest.chat_send_player(placer:get_player_name(), S("No room to place the sofa!"))
+ minetest.set_node(pos, { name = "air" })
+ end
+ return itemstack
+ end,
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local itemname = itemstack:get_name()
+ if string.find(itemname, "dye:") or string.find(itemname, "unifieddyes:") then
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "lrfurn:sofa", "wallmounted")
+ else
if not clicker:is_player() then
return itemstack
end
+
pos.y = pos.y-0.5
clicker:setpos(pos)
clicker:set_hp(20)
return itemstack
end
- })
-
- minetest.register_alias("lrfurn:sofa_left_"..colour, "air")
- minetest.register_alias("lrfurn:sofa_right_"..colour, "lrfurn:sofa_"..colour)
-
- minetest.register_craft({
- output = "lrfurn:sofa_"..colour,
- recipe = {
- {"wool:"..colour, "wool:"..colour, "", },
- {"stairs:slab_wood", "stairs:slab_wood", "", },
- {"group:stick", "group:stick", "", }
- }
- })
-
- minetest.register_craft({
- output = "lrfurn:sofa_"..colour,
- recipe = {
- {"wool:"..colour, "wool:"..colour, "", },
- {"moreblocks:slab_wood", "moreblocks:slab_wood", "", },
- {"group:stick", "group:stick", "", }
- }
- })
+ end
+})
+
+minetest.register_craft({
+ output = "lrfurn:sofa",
+ recipe = {
+ {"wool:white", "wool:white", "", },
+ {"stairs:slab_wood", "stairs:slab_wood", "", },
+ {"group:stick", "group:stick", "", }
+ }
+})
+
+minetest.register_craft({
+ output = "lrfurn:sofa",
+ recipe = {
+ {"wool:white", "wool:white", "", },
+ {"moreblocks:slab_wood", "moreblocks:slab_wood", "", },
+ {"group:stick", "group:stick", "", }
+ }
+})
+-- convert old static nodes to param2 color
+
+lrfurn.old_static_sofas = {}
+
+for _, color in ipairs(lrfurn.colors) do
+ table.insert(lrfurn.old_static_sofas, "lrfurn:sofa_"..color)
end
+minetest.register_lbm({
+ name = "lrfurn:convert_sofas",
+ label = "Convert lrfurn short sofas to use param2 color",
+ run_at_every_load = true,
+ nodenames = lrfurn.old_static_sofas,
+ action = function(pos, node)
+ local name = node.name
+ local color = string.sub(name, string.find(name, "_")+1)
+
+ if color == "red" then
+ color = "medium_red"
+ elseif color == "dark_green" then
+ color = "medium_green"
+ elseif color == "magenta" then
+ color = "medium_magenta"
+ elseif color == "cyan" then
+ color = "medium_cyan"
+ end
+
+ local paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
+ 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
+
+ local param2 = paletteidx + new_fdir
+
+ minetest.set_node(pos, { name = "lrfurn:sofa", param2 = param2 })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..color)
+
+ end
+})
+
if minetest.setting_get("log_mods") then
- minetest.log("action", "sofas loaded")
+ minetest.log("action", "[lrfurn/sofas] "..S("Loaded!"))
end
diff --git a/lrfurn/textures/lrfurn_armchair_inv.png b/lrfurn/textures/lrfurn_armchair_inv.png
new file mode 100644
index 0000000..cc6b87b
--- /dev/null
+++ b/lrfurn/textures/lrfurn_armchair_inv.png
Binary files differ
diff --git a/lrfurn/textures/lrfurn_longsofa_inv.png b/lrfurn/textures/lrfurn_longsofa_inv.png
new file mode 100644
index 0000000..37bde8b
--- /dev/null
+++ b/lrfurn/textures/lrfurn_longsofa_inv.png
Binary files differ
diff --git a/lrfurn/textures/lrfurn_sofa_inv.png b/lrfurn/textures/lrfurn_sofa_inv.png
new file mode 100644
index 0000000..a4f7f6f
--- /dev/null
+++ b/lrfurn/textures/lrfurn_sofa_inv.png
Binary files differ
diff --git a/lrfurn/textures/lrfurn_upholstery.png b/lrfurn/textures/lrfurn_upholstery.png
new file mode 100644
index 0000000..6db36a8
--- /dev/null
+++ b/lrfurn/textures/lrfurn_upholstery.png
Binary files differ
diff --git a/moreblocks/.luacheckrc b/moreblocks/.luacheckrc
new file mode 100644
index 0000000..fbf3483
--- /dev/null
+++ b/moreblocks/.luacheckrc
@@ -0,0 +1,14 @@
+unused_args = false
+allow_defined_top = true
+
+read_globals = {
+ "DIR_DELIM",
+ "minetest", "core",
+ "dump",
+ "vector", "nodeupdate",
+ "VoxelManip", "VoxelArea",
+ "PseudoRandom", "ItemStack",
+ "intllib",
+ "default",
+}
+
diff --git a/moreblocks/aliases.lua b/moreblocks/aliases.lua
index c34472d..e1ddc64 100644
--- a/moreblocks/aliases.lua
+++ b/moreblocks/aliases.lua
@@ -77,4 +77,3 @@ minetest.register_abm({
})
end,
})
-
diff --git a/moreblocks/circular_saw.lua b/moreblocks/circular_saw.lua
index 09fbd90..61d53a7 100644
--- a/moreblocks/circular_saw.lua
+++ b/moreblocks/circular_saw.lua
@@ -145,7 +145,7 @@ function circular_saw:update_inventory(pos, amount)
self:reset(pos)
return
end
-
+
local stack = inv:get_stack("input", 1)
-- At least one "normal" block is necessary to see what kind of stairs are requested.
if stack:is_empty() then
@@ -327,8 +327,6 @@ function circular_saw.on_metadata_inventory_take(
-- The recycle field plays no role here since it is processed immediately.
end
-gui_slots = "listcolors[#606060AA;#808080;#101010;#202020;#FFF]"
-
function circular_saw.on_construct(pos)
local meta = minetest.get_meta(pos)
local fancy_inv = default.gui_bg..default.gui_bg_img..default.gui_slots
@@ -371,14 +369,14 @@ function circular_saw.can_dig(pos,player)
end
minetest.register_node("moreblocks:circular_saw", {
- description = S("Circular Saw"),
- drawtype = "nodebox",
+ description = S("Circular Saw"),
+ drawtype = "nodebox",
node_box = {
- type = "fixed",
+ type = "fixed",
fixed = {
{-0.4, -0.5, -0.4, -0.25, 0.25, -0.25}, -- Leg
{0.25, -0.5, 0.25, 0.4, 0.25, 0.4}, -- Leg
- {-0.4, -0.5, 0.25, -0.25, 0.25, 0.4}, -- Leg
+ {-0.4, -0.5, 0.25, -0.25, 0.25, 0.4}, -- Leg
{0.25, -0.5, -0.4, 0.4, 0.25, -0.25}, -- Leg
{-0.5, 0.25, -0.5, 0.5, 0.375, 0.5}, -- Tabletop
{-0.01, 0.4375, -0.125, 0.01, 0.5, 0.125}, -- Saw blade (top)
@@ -389,9 +387,9 @@ minetest.register_node("moreblocks:circular_saw", {
tiles = {"moreblocks_circular_saw_top.png",
"moreblocks_circular_saw_bottom.png",
"moreblocks_circular_saw_side.png"},
- paramtype = "light",
+ paramtype = "light",
sunlight_propagates = true,
- paramtype2 = "facedir",
+ paramtype2 = "facedir",
groups = {choppy = 2,oddly_breakable_by_hand = 2},
sounds = default.node_sound_wood_defaults(),
on_construct = circular_saw.on_construct,
diff --git a/moreblocks/crafting.lua b/moreblocks/crafting.lua
index 501c9f4..16753c3 100644
--- a/moreblocks/crafting.lua
+++ b/moreblocks/crafting.lua
@@ -207,6 +207,8 @@ minetest.register_craft({
output = "moreblocks:empty_bookshelf",
type = "shapeless",
recipe = {"moreblocks:sweeper", "default:bookshelf"},
+ replacements = {{"default:bookshelf", "default:book 3"}},
+ -- When obtaining an empty bookshelf, return the books used in it as well
})
minetest.register_craft({
@@ -475,7 +477,7 @@ minetest.register_craft({
if minetest.setting_getbool("moreblocks.circular_saw_crafting") ~= false then -- “If nil or true then”
minetest.register_craft({
- output = "moreblocks:circular_saw",
+ output = "moreblocks:circular_saw",
recipe = {
{ "", "default:steel_ingot", "" },
{ "group:wood", "group:wood", "group:wood"},
diff --git a/moreblocks/models/moreblocks_slope.obj b/moreblocks/models/moreblocks_slope.obj
index 22a833f..57298d7 100644
--- a/moreblocks/models/moreblocks_slope.obj
+++ b/moreblocks/models/moreblocks_slope.obj
@@ -1,26 +1,56 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib moreblocks_slope.mtl
-o Cube_Cube.002
+g top
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
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 0.0000 0.7071 -0.7071
+s off
+f 2/1/1 1/2/1 4/3/1 3/4/1
+g bottom
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
-vt 1.000000 1.000000
-vt 0.000000 1.000000
-vt 0.000000 0.000000
-vt 1.000000 0.000000
-vn 0.000000 -0.000000 1.000000
-vn 0.000000 -1.000000 -0.000000
-vn -1.000000 0.000000 0.000000
-vn 1.000000 0.000000 0.000000
-vn 0.000000 0.707100 -0.707100
-usemtl None
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vn 0.0000 -1.0000 -0.0000
+s off
+f 6/5/2 5/6/2 7/7/2 8/8/2
+g right
+v -0.500000 0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+vt 1.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn -1.0000 0.0000 0.0000
+s off
+f 9/9/3 11/10/3 10/11/3
+g left
+v 0.500000 0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 1.0000 0.0000 0.0000
+s off
+f 12/12/4 13/13/4 14/14/4
+g back
+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
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 0.0000 -0.0000 1.0000
s off
-f 1/1/1 2/2/1 3/3/1 4/4/1
-f 4/3/2 3/4/2 5/1/2 6/2/2
-f 2/1/3 5/3/3 3/4/3
-f 1/2/4 4/3/4 6/4/4
-f 2/1/5 1/2/5 6/3/5 5/4/5
+f 15/15/5 16/16/5 17/17/5 18/18/5
diff --git a/moreblocks/models/moreblocks_slope_cut.obj b/moreblocks/models/moreblocks_slope_cut.obj
index a9ea83d..bf2dd79 100644
--- a/moreblocks/models/moreblocks_slope_cut.obj
+++ b/moreblocks/models/moreblocks_slope_cut.obj
@@ -1,33 +1,68 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib moreblocks_slope_cut.mtl
-o moreblocks_slope_cut
+g top
+v 0.500000 0.500000 0.500000
+v -0.500000 -0.000000 0.500000
+v 0.500000 0.000000 -0.500000
+v -0.500000 -0.500000 -0.500000
+vt 0.5000 0.0000
+vt 1.0000 1.0000
+vt 0.5000 2.0000
+vt 0.0000 1.0000
+vn -0.4082 0.8165 -0.4082
+s 1
+f 4/1/1 2/2/1 1/3/1 3/4/1
+g bottom
+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
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 0.0000 -1.0000 -0.0000
+s 1
+f 6/5/2 5/6/2 8/7/2 7/8/2
+g right
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.000000 0.500000
+v -0.500000 -0.500000 -0.500000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 0.5000
+vn -1.0000 0.0000 0.0000
+s 1
+f 11/9/3 9/10/3 10/11/3
+g left
+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.000000 -0.500000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 0.5000
+vt 0.0000 1.0000
+vn 1.0000 0.0000 0.0000
+s 1
+f 12/12/4 14/13/4 15/14/4 13/15/4
+g back
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.000000 0.500000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 0.5000
+vn -0.0000 -0.0000 1.0000
+s 1
+f 16/16/5 17/17/5 18/18/5 19/19/5
+g front
v 0.500000 -0.500000 -0.500000
v 0.500000 0.000000 -0.500000
v -0.500000 -0.500000 -0.500000
-vt 0.000000 0.000000
-vt 1.000000 0.000000
-vt 1.000000 1.000000
-vt 0.000000 0.500000
-vt 1.000000 0.500000
-vt 0.000000 1.000000
-vt 0.500000 0.000000
-vt 0.500000 2.000000
-vn 0.000000 -0.000000 1.000000
-vn 1.000000 0.000000 0.000000
-vn 0.000000 -1.000000 -0.000000
-vn -0.408200 0.816500 -0.408200
-vn 0.000000 0.000000 -1.000000
-vn -1.000000 0.000000 0.000000
-usemtl None
-s off
-f 1/1/1 2/2/1 3/3/1 4/4/1
-f 2/1/2 5/2/2 6/5/2 3/6/2
-f 2/3/3 1/6/3 7/1/3 5/2/3
-f 7/7/4 4/3/4 3/8/4 6/6/4
-f 5/1/5 7/2/5 6/4/5
-f 7/1/6 1/2/6 4/5/6
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 0.0000 0.5000
+vn 0.0000 0.0000 -1.0000
+s 1
+f 20/20/6 22/21/6 21/22/6
diff --git a/moreblocks/models/moreblocks_slope_half.obj b/moreblocks/models/moreblocks_slope_half.obj
index a6b1a56..1fa631c 100644
--- a/moreblocks/models/moreblocks_slope_half.obj
+++ b/moreblocks/models/moreblocks_slope_half.obj
@@ -1,28 +1,56 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib moreblocks_slope_half.mtl
-o Cube_Cube.002
+g top
v 0.500000 -0.000000 0.500000
v -0.500000 -0.000000 0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 0.0000 0.8944 -0.4472
+s off
+f 2/1/1 1/2/1 4/3/1 3/4/1
+g bottom
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
-vt 1.000000 0.500000
-vt 0.000000 0.500000
-vt 0.000000 0.000000
-vt 1.000000 0.000000
-vt 1.000000 1.000000
-vt 0.000000 1.000000
-vn 0.000000 -0.000000 1.000000
-vn 0.000000 -1.000000 -0.000000
-vn -1.000000 0.000000 0.000000
-vn 1.000000 0.000000 0.000000
-vn 0.000000 0.894400 -0.447200
-usemtl None
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vn 0.0000 -1.0000 -0.0000
+s off
+f 6/5/2 5/6/2 7/7/2 8/8/2
+g right
+v -0.500000 -0.000000 0.500000
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+vt 1.0000 0.5000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn -1.0000 0.0000 0.0000
+s off
+f 9/9/3 11/10/3 10/11/3
+g left
+v 0.500000 -0.000000 0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+vt 0.0000 0.5000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 1.0000 0.0000 0.0000
+s off
+f 12/12/4 13/13/4 14/14/4
+g back
+v 0.500000 -0.000000 0.500000
+v -0.500000 -0.000000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+vt 1.0000 0.5000
+vt 0.0000 0.5000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 0.0000 -0.0000 1.0000
s off
-f 1/1/1 2/2/1 3/3/1 4/4/1
-f 4/3/2 3/4/2 5/5/2 6/6/2
-f 2/1/3 5/3/3 3/4/3
-f 1/2/4 4/3/4 6/4/4
-f 2/5/5 1/6/5 6/3/5 5/4/5
+f 15/15/5 16/16/5 17/17/5 18/18/5
diff --git a/moreblocks/models/moreblocks_slope_half_raised.obj b/moreblocks/models/moreblocks_slope_half_raised.obj
index 6f985e3..86139d7 100644
--- a/moreblocks/models/moreblocks_slope_half_raised.obj
+++ b/moreblocks/models/moreblocks_slope_half_raised.obj
@@ -1,32 +1,72 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib moreblocks_slope_half_raised.mtl
-o Cube.001
+g top
v -0.500000 0.500000 0.500000
v -0.500000 0.000000 -0.500000
+v 0.500000 0.000000 -0.500000
+v 0.500000 0.500000 0.500000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vn 0.0000 0.8944 -0.4472
+s off
+f 2/1/1 1/2/1 4/3/1 3/4/1
+g bottom
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
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vn 0.0000 -1.0000 -0.0000
+s off
+f 6/5/2 5/6/2 7/7/2 8/8/2
+g right
+v -0.500000 0.500000 0.500000
+v -0.500000 0.000000 -0.500000
+v -0.500000 -0.500000 -0.500000
+v -0.500000 -0.500000 0.500000
+vt 1.0000 1.0000
+vt 0.0000 0.5000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn -1.0000 0.0000 0.0000
+s off
+f 9/9/3 10/10/3 11/11/3 12/12/3
+g left
v 0.500000 0.000000 -0.500000
v 0.500000 -0.500000 -0.500000
v 0.500000 0.500000 0.500000
v 0.500000 -0.500000 0.500000
-vt 1.000000 1.000000
-vt 0.000000 0.500000
-vt 0.000000 0.000000
-vt 1.000000 0.000000
-vt 1.000000 0.500000
-vt 0.000000 1.000000
-vn -1.000000 0.000000 0.000000
-vn 0.000000 0.000000 -1.000000
-vn 1.000000 0.000000 0.000000
-vn 0.000000 -0.000000 1.000000
-vn 0.000000 -1.000000 -0.000000
-vn 0.000000 0.894400 -0.447200
-usemtl None.001
+vt 1.0000 0.5000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 1.0000 0.0000 0.0000
+s off
+f 13/13/4 15/14/4 16/15/4 14/16/4
+g back
+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
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 0.0000 -0.0000 1.0000
+s off
+f 19/17/5 17/18/5 18/19/5 20/20/5
+g front
+v -0.500000 0.000000 -0.500000
+v -0.500000 -0.500000 -0.500000
+v 0.500000 0.000000 -0.500000
+v 0.500000 -0.500000 -0.500000
+vt 1.0000 0.5000
+vt 0.0000 0.5000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 0.0000 0.0000 -1.0000
s off
-f 1/1/1 2/2/1 3/3/1 4/4/1
-f 2/5/2 5/2/2 6/3/2 3/4/2
-f 5/5/3 7/6/3 8/3/3 6/4/3
-f 7/1/4 1/6/4 4/3/4 8/4/4
-f 4/4/5 3/1/5 6/6/5 8/3/5
-f 2/4/6 1/1/6 7/6/6 5/3/6
+f 21/21/6 23/22/6 24/23/6 22/24/6
diff --git a/moreblocks/models/moreblocks_slope_inner.obj b/moreblocks/models/moreblocks_slope_inner.obj
index d4a444e..c6f811e 100644
--- a/moreblocks/models/moreblocks_slope_inner.obj
+++ b/moreblocks/models/moreblocks_slope_inner.obj
@@ -1,35 +1,81 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib moreblocks_slope_inner.mtl
-o Cube_Cube.000
+g top
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
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vn 0.0000 0.7071 -0.7071
+vn -0.7071 0.7071 0.0000
+s 1
+f 3/1/1 2/2/1 4/3/1
+f 2/4/2 1/5/2 5/6/2
+g bottom
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
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 0.0000 -1.0000 -0.0000
+s 1
+f 9/7/3 7/8/3 6/9/3 8/10/3
+l 8 10
+g right
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
+vt 1.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn -1.0000 0.0000 0.0000
+s 1
+f 11/11/4 12/12/4 13/13/4
+g left
+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
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 1.0000 0.0000 0.0000
+s 1
+f 14/14/5 15/15/5 16/16/5 17/17/5
+l 15 18
+g back
+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
-vt 1.000000 1.000000
-vt 0.000000 1.000000
-vt 0.000000 0.000000
-vt 1.000000 0.000000
-vn 1.000000 0.000000 0.000000
-vn -1.000000 0.000000 0.000000
-vn 0.000000 0.707100 -0.707100
-vn 0.000000 0.000000 -1.000000
-vn 0.000000 -1.000000 -0.000000
-vn 0.000000 -0.000000 1.000000
-vn -0.707100 0.707100 0.000000
-usemtl None
-s off
-f 1/1/1 2/2/1 3/3/1 4/4/1
-f 5/1/2 6/3/2 7/4/2
-f 5/1/3 2/2/3 6/4/3
-f 1/2/4 4/3/4 8/4/4
-f 8/1/5 4/2/5 3/3/5 7/4/5
-f 7/3/6 3/4/6 2/1/6 5/2/6
-f 2/1/7 1/2/7 8/3/7
-l 7 9
-l 2 9
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vn 0.0000 -0.0000 1.0000
+s 1
+f 22/18/6 20/19/6 19/20/6 21/21/6
+l 22 23
+l 19 23
+g front
+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
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 0.0000 0.0000 -1.0000
+s 1
+f 24/22/7 25/23/7 27/24/7
diff --git a/moreblocks/models/moreblocks_slope_inner_cut.obj b/moreblocks/models/moreblocks_slope_inner_cut.obj
index b687b11..babe502 100644
--- a/moreblocks/models/moreblocks_slope_inner_cut.obj
+++ b/moreblocks/models/moreblocks_slope_inner_cut.obj
@@ -1,32 +1,72 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib moreblocks_slope_inner_cut.mtl
-o moreblocks_slope_inner_cut
+g top
+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
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.5000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vn 0.0000 1.0000 0.0000
+vn -0.5774 0.5774 -0.5774
+s 1
+f 3/1/1 2/2/1 1/3/1
+f 4/4/2 3/5/2 1/6/2
+g bottom
+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
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vn 0.0000 -1.0000 -0.0000
+s 1
+f 6/7/3 5/8/3 7/9/3 8/10/3
+g right
+v -0.500000 -0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vn -1.0000 0.0000 0.0000
+s 1
+f 11/11/4 9/12/4 10/13/4
+g left
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
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vn 1.0000 0.0000 0.0000
+s 1
+f 12/14/5 13/15/5 14/16/5 15/17/5
+g back
+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
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vn 0.0000 -0.0000 1.0000
+s 1
+f 18/18/6 16/19/6 17/20/6 19/21/6
+g front
+v 0.500000 -0.500000 -0.500000
+v 0.500000 0.500000 -0.500000
v -0.500000 -0.500000 -0.500000
-vt 0.000000 0.000000
-vt 1.000000 0.000000
-vt 1.000000 1.000000
-vt 0.000000 1.000000
-vt 0.500000 0.000000
-vn 1.000000 0.000000 0.000000
-vn 0.000000 -0.000000 1.000000
-vn 0.000000 -1.000000 -0.000000
-vn 0.000000 1.000000 0.000000
-vn -1.000000 0.000000 0.000000
-vn 0.000000 0.000000 -1.000000
-vn -0.577400 0.577400 -0.577400
-usemtl None
-s off
-f 1/1/1 2/2/1 3/3/1 4/4/1
-f 5/1/2 1/2/2 4/3/2 6/4/2
-f 2/1/3 1/2/3 5/3/3 7/4/3
-f 6/1/4 4/2/4 3/3/4
-f 7/1/5 5/2/5 6/3/5
-f 2/1/6 7/2/6 3/4/6
-f 7/5/7 6/3/7 3/4/7
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 0.0000 1.0000
+vn 0.0000 0.0000 -1.0000
+s 1
+f 20/22/7 22/23/7 21/24/7
diff --git a/moreblocks/models/moreblocks_slope_inner_cut_half.obj b/moreblocks/models/moreblocks_slope_inner_cut_half.obj
index 82a387b..5af38b5 100644
--- a/moreblocks/models/moreblocks_slope_inner_cut_half.obj
+++ b/moreblocks/models/moreblocks_slope_inner_cut_half.obj
@@ -1,34 +1,72 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib moreblocks_slope_inner_cut_half.mtl
-o moreblocks_slope_inner_cut_half
+g top
+v 0.500000 0.000000 -0.500000
+v 0.500000 -0.000000 0.500000
+v -0.500000 -0.000000 0.500000
+v -0.500000 -0.500000 -0.500000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.5000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vn 0.0000 1.0000 0.0000
+vn -0.4082 0.8165 -0.4082
+s 1
+f 3/1/1 2/2/1 1/3/1
+f 4/4/2 3/5/2 1/6/2
+g bottom
+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
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vn 0.0000 -1.0000 -0.0000
+s 1
+f 6/7/3 5/8/3 7/9/3 8/10/3
+g right
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.000000 0.500000
+v -0.500000 -0.500000 -0.500000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 0.5000
+vn -1.0000 0.0000 0.0000
+s 1
+f 11/11/4 9/12/4 10/13/4
+g left
v 0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
v 0.500000 0.000000 -0.500000
v 0.500000 -0.000000 0.500000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 0.5000
+vt 0.0000 0.5000
+vn 1.0000 0.0000 0.0000
+s 1
+f 12/14/5 13/15/5 14/16/5 15/17/5
+g back
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.000000 0.500000
v -0.500000 -0.500000 0.500000
v -0.500000 -0.000000 0.500000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 0.5000
+vt 0.0000 0.5000
+vn 0.0000 -0.0000 1.0000
+s 1
+f 18/18/6 16/19/6 17/20/6 19/21/6
+g front
+v 0.500000 -0.500000 -0.500000
+v 0.500000 0.000000 -0.500000
v -0.500000 -0.500000 -0.500000
-vt 0.000000 0.000000
-vt 1.000000 0.000000
-vt 1.000000 0.500000
-vt 0.000000 0.500000
-vt 1.000000 1.000000
-vt 0.000000 1.000000
-vt 0.500000 0.000000
-vn 1.000000 0.000000 0.000000
-vn 0.000000 -0.000000 1.000000
-vn 0.000000 -1.000000 -0.000000
-vn 0.000000 1.000000 0.000000
-vn -1.000000 0.000000 0.000000
-vn 0.000000 0.000000 -1.000000
-vn -0.408200 0.816500 -0.408200
-usemtl None
-s off
-f 1/1/1 2/2/1 3/3/1 4/4/1
-f 5/1/2 1/2/2 4/3/2 6/4/2
-f 2/1/3 1/2/3 5/5/3 7/6/3
-f 6/1/4 4/2/4 3/5/4
-f 7/1/5 5/2/5 6/3/5
-f 2/1/6 7/2/6 3/4/6
-f 7/7/7 6/5/7 3/6/7
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 0.0000 0.5000
+vn 0.0000 0.0000 -1.0000
+s 1
+f 20/22/7 22/23/7 21/24/7
diff --git a/moreblocks/models/moreblocks_slope_inner_cut_half_raised.obj b/moreblocks/models/moreblocks_slope_inner_cut_half_raised.obj
index 8231ee4..d8c1f81 100644
--- a/moreblocks/models/moreblocks_slope_inner_cut_half_raised.obj
+++ b/moreblocks/models/moreblocks_slope_inner_cut_half_raised.obj
@@ -1,35 +1,76 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib moreblocks_slope_inner_cut_half_raised.mtl
-o moreblocks_slope_inner_cut_half_raised
+g top
+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.000000 -0.500000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.5000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vn 0.0000 1.0000 0.0000
+vn -0.4082 0.8165 -0.4082
+s 1
+f 3/1/1 2/2/1 1/3/1
+f 4/4/2 3/5/2 1/6/2
+g bottom
+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
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vn 0.0000 -1.0000 -0.0000
+s 1
+f 6/7/3 5/8/3 7/9/3 8/10/3
+g right
+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.000000 -0.500000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 0.5000
+vn -1.0000 0.0000 0.0000
+s 1
+f 11/11/4 9/12/4 10/13/4 12/14/4
+g left
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
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vn 1.0000 0.0000 0.0000
+s 1
+f 13/15/5 14/16/5 15/17/5 16/18/5
+g back
+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
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vn 0.0000 -0.0000 1.0000
+s 1
+f 19/19/6 17/20/6 18/21/6 20/22/6
+g front
+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.000000 -0.500000
-vt 0.000000 0.000000
-vt 1.000000 0.000000
-vt 1.000000 1.000000
-vt 0.000000 1.000000
-vt 0.000000 0.500000
-vt 1.000000 0.500000
-vt 0.500000 0.000000
-vn 1.000000 0.000000 0.000000
-vn 0.000000 -0.000000 1.000000
-vn 0.000000 -1.000000 -0.000000
-vn 0.000000 1.000000 0.000000
-vn -1.000000 0.000000 0.000000
-vn -0.000000 0.000000 -1.000000
-vn -0.408200 0.816500 -0.408200
-usemtl None
-s off
-f 1/1/1 2/2/1 3/3/1 4/4/1
-f 5/1/2 1/2/2 4/3/2 6/4/2
-f 2/1/3 1/2/3 5/3/3 7/4/3
-f 6/1/4 4/2/4 3/3/4
-f 7/1/5 5/2/5 6/3/5 8/5/5
-f 2/1/6 7/2/6 8/6/6 3/4/6
-f 8/7/7 6/3/7 3/4/7
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 0.5000
+vt 0.0000 1.0000
+vn -0.0000 0.0000 -1.0000
+s 1
+f 21/23/7 23/24/7 24/25/7 22/26/7
diff --git a/moreblocks/models/moreblocks_slope_inner_half.obj b/moreblocks/models/moreblocks_slope_inner_half.obj
index 3e54dea..3158b57 100644
--- a/moreblocks/models/moreblocks_slope_inner_half.obj
+++ b/moreblocks/models/moreblocks_slope_inner_half.obj
@@ -1,35 +1,85 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib moreblocks_slope_inner_half.mtl
-o Cube_Cube.001
+g top
v 0.500000 0.000000 -0.500000
v 0.500000 -0.000000 0.500000
+v -0.500000 -0.000000 0.500000
+v -0.500000 -0.500000 -0.500000
+v -0.500000 -0.500000 -0.500000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vn 0.0000 0.8944 -0.4472
+vn -0.4472 0.8944 0.0000
+s off
+f 3/1/1 2/2/1 4/3/1
+f 2/4/2 1/5/2 5/6/2
+g bottom
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
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 0.0000 -1.0000 -0.0000
+s off
+f 10/7/3 7/8/3 6/9/3 9/10/3
+l 9 8
+l 11 9
+g right
v -0.500000 -0.000000 0.500000
v -0.500000 -0.500000 -0.500000
v -0.500000 -0.500000 0.500000
v -0.500000 -0.500000 -0.500000
+vt 1.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn -1.0000 0.0000 0.0000
+s off
+f 12/11/4 13/12/4 14/13/4
+l 15 14
+g left
+v 0.500000 0.000000 -0.500000
+v 0.500000 -0.000000 0.500000
v 0.500000 -0.500000 0.500000
-vt 1.000000 1.000000
-vt 0.000000 1.000000
-vt 0.000000 0.000000
-vt 1.000000 0.000000
-vn 1.000000 0.000000 0.000000
-vn -1.000000 0.000000 0.000000
-vn 0.000000 0.894400 -0.447200
-vn 0.000000 0.000000 -1.000000
-vn 0.000000 -1.000000 -0.000000
-vn 0.000000 -0.000000 1.000000
-vn -0.447200 0.894400 0.000000
-usemtl None.002
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 1.0000 0.0000 0.0000
+s off
+f 16/14/5 17/15/5 18/16/5 19/17/5
+l 20 17
+g back
+v 0.500000 -0.000000 0.500000
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.000000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vn 0.0000 -0.0000 1.0000
+s off
+f 24/18/6 22/19/6 21/20/6 23/21/6
+l 25 24
+l 25 21
+g front
+v 0.500000 0.000000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v -0.500000 -0.500000 -0.500000
+v -0.500000 -0.500000 -0.500000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 0.0000 0.0000 -1.0000
s off
-f 1/1/1 2/2/1 3/3/1 4/4/1
-f 5/1/2 6/3/2 7/4/2
-f 5/1/3 2/2/3 6/4/3
-f 1/2/4 4/3/4 8/4/4
-f 8/1/5 4/2/5 3/3/5 7/4/5
-f 7/3/6 3/4/6 2/1/6 5/2/6
-f 2/1/7 1/2/7 8/3/7
-l 7 9
-l 2 9
+f 26/22/7 27/23/7 29/24/7
diff --git a/moreblocks/models/moreblocks_slope_inner_half_raised.obj b/moreblocks/models/moreblocks_slope_inner_half_raised.obj
index e6c2205..bd41389 100644
--- a/moreblocks/models/moreblocks_slope_inner_half_raised.obj
+++ b/moreblocks/models/moreblocks_slope_inner_half_raised.obj
@@ -1,38 +1,86 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib moreblocks_slope_inner_half_raised.mtl
-o Cube_Cube.003
+g top
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.000000 -0.500000
+v -0.500000 0.000000 -0.500000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 1.0000 0.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 0.0000 0.8944 -0.4472
+vn -0.4472 0.8944 0.0000
+s off
+f 3/1/1 2/2/1 4/3/1
+f 2/2/2 1/4/2 5/5/2
+g bottom
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
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 0.0000 -1.0000 -0.0000
+s off
+f 8/6/3 9/7/3 7/8/3 6/9/3
+l 10 8
+g right
v -0.500000 0.500000 0.500000
v -0.500000 0.000000 -0.500000
v -0.500000 -0.500000 0.500000
v -0.500000 0.000000 -0.500000
v -0.500000 -0.500000 -0.500000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 0.5000
+vt 0.0000 0.0000
+vn -1.0000 0.0000 0.0000
+s off
+f 13/10/4 11/11/4 12/12/4 15/13/4
+g left
+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
-vt 1.000000 1.000000
-vt 0.000000 1.000000
-vt 0.000000 0.000000
-vt 1.000000 0.000000
-vt 1.000000 0.500000
-vt 0.000000 0.500000
-vn 1.000000 0.000000 0.000000
-vn 0.000000 0.894400 -0.447200
-vn 0.000000 -0.000000 1.000000
-vn -0.447200 0.894400 0.000000
-vn 0.000000 -1.000000 -0.000000
-vn 0.000000 0.000000 -1.000000
-vn -1.000000 0.000000 0.000000
-usemtl None.003
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 1.0000 0.0000 0.0000
+s off
+f 16/14/5 17/15/5 18/16/5 19/17/5
+l 20 17
+g back
+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
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vn 0.0000 -0.0000 1.0000
+s off
+f 24/18/6 22/19/6 21/20/6 23/21/6
+l 25 21
+l 25 24
+g front
+v 0.500000 0.500000 -0.500000
+v 0.500000 -0.500000 -0.500000
+v -0.500000 0.000000 -0.500000
+v -0.500000 0.000000 -0.500000
+v -0.500000 -0.500000 -0.500000
+vt 1.0000 0.5000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn -0.0000 0.0000 -1.0000
s off
-f 1/1/1 2/2/1 3/3/1 4/4/1
-f 5/1/2 2/2/2 6/4/2
-f 7/3/3 3/4/3 2/1/3 5/2/3
-f 2/2/4 1/3/4 8/4/4
-f 7/1/5 9/2/5 4/3/5 3/4/5
-f 6/5/6 1/2/6 4/3/6 9/4/6
-f 7/4/7 5/1/7 6/6/7 9/3/7
-l 2 10
-l 7 10
+f 28/22/7 26/23/7 27/24/7 30/25/7
+l 29 26
diff --git a/moreblocks/models/moreblocks_slope_outer.obj b/moreblocks/models/moreblocks_slope_outer.obj
index b8f4e9e..c779309 100644
--- a/moreblocks/models/moreblocks_slope_outer.obj
+++ b/moreblocks/models/moreblocks_slope_outer.obj
@@ -1,25 +1,48 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib moreblocks_slope_outer.mtl
-o Cube_Cube.004
+g top
+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
+vt 1.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn -0.7071 0.7071 0.0000
+vn 0.0000 0.7071 -0.7071
+s off
+f 4/1/1 2/2/1 1/3/1
+f 4/4/2 3/5/2 2/6/2
+g bottom
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
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 0.0000 -1.0000 -0.0000
+s off
+f 5/7/3 6/8/3 7/9/3 8/10/3
+g right
+v 0.500000 -0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 0.500000 0.500000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vn 0.0000 -0.0000 1.0000
+s off
+f 10/11/4 9/12/4 11/13/4
+g left
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
v 0.500000 0.500000 0.500000
-vt 1.000000 1.000000
-vt 0.000000 1.000000
-vt 0.000000 0.000000
-vt 1.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.707100 0.707100 0.000000
-vn 0.000000 0.707100 -0.707100
-usemtl None
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 1.0000 0.0000 0.0000
s off
-f 1/1/1 2/2/1 3/3/1 4/4/1
-f 5/2/2 1/3/2 4/4/2
-f 2/3/3 1/4/3 5/1/3
-f 5/1/4 3/3/4 2/4/4
-f 5/2/5 4/3/5 3/4/5
+f 14/14/5 12/15/5 13/16/5
diff --git a/moreblocks/models/moreblocks_slope_outer_cut.obj b/moreblocks/models/moreblocks_slope_outer_cut.obj
index e6cbfb4..4dcd46a 100644
--- a/moreblocks/models/moreblocks_slope_outer_cut.obj
+++ b/moreblocks/models/moreblocks_slope_outer_cut.obj
@@ -1,23 +1,40 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib moreblocks_slope_outer_cut.mtl
-o Cube.002
+g top
v 0.500000 0.500000 0.500000
v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+vt 1.0000 0.0000
+vt 0.5000 1.0000
+vt 0.0000 0.0000
+vn -0.5774 0.5774 -0.5774
+s off
+f 2/1/1 1/2/1 3/3/1
+g bottom
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 0.0000 1.0000
+vn 0.0000 -1.0000 -0.0000
+s off
+f 5/4/2 4/5/2 6/6/2
+g right
+v 0.500000 0.500000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+vt 1.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 0.0000 -0.0000 1.0000
+s off
+f 7/7/3 8/8/3 9/9/3
+g left
+v 0.500000 0.500000 0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
-vt 1.000000 1.000000
-vt 0.000000 0.000000
-vt 1.000000 0.000000
-vt 0.000000 1.000000
-vt 0.500000 1.000000
-vn 0.000000 -0.000000 1.000000
-vn 1.000000 0.000000 0.000000
-vn 0.000000 -1.000000 0.000000
-vn -0.577400 0.577400 -0.577400
-usemtl None.004
+vt 1.0000 0.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vn 1.0000 0.0000 0.0000
s off
-f 1/1/1 2/2/1 3/3/1
-f 4/3/2 1/4/2 3/2/2
-f 3/2/3 2/3/3 4/4/3
-f 2/3/4 1/5/4 4/2/4
+f 12/10/4 10/11/4 11/12/4
diff --git a/moreblocks/models/moreblocks_slope_outer_cut_half.obj b/moreblocks/models/moreblocks_slope_outer_cut_half.obj
index bd64194..c309a4e 100644
--- a/moreblocks/models/moreblocks_slope_outer_cut_half.obj
+++ b/moreblocks/models/moreblocks_slope_outer_cut_half.obj
@@ -1,24 +1,40 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib moreblocks_slope_outer_cut_half.mtl
-o Cube.003
+g top
v 0.500000 -0.000000 0.500000
v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+vt 1.0000 0.0000
+vt 0.5000 1.0000
+vt 0.0000 0.0000
+vn -0.4082 0.8165 -0.4082
+s off
+f 2/1/1 1/2/1 3/3/1
+g bottom
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 0.0000 1.0000
+vn 0.0000 -1.0000 -0.0000
+s off
+f 5/4/2 4/5/2 6/6/2
+g right
+v 0.500000 -0.000000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+vt 1.0000 0.5000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 0.0000 -0.0000 1.0000
+s off
+f 7/7/3 8/8/3 9/9/3
+g left
+v 0.500000 -0.000000 0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 -0.500000 -0.500000
-vt 1.000000 0.500000
-vt 0.000000 0.000000
-vt 1.000000 0.000000
-vt 0.000000 0.500000
-vt 0.000000 1.000000
-vt 0.500000 1.000000
-vn 0.000000 -0.000000 1.000000
-vn 1.000000 0.000000 0.000000
-vn 0.000000 -1.000000 0.000000
-vn -0.408200 0.816500 -0.408200
-usemtl None.005
+vt 1.0000 0.0000
+vt 0.0000 0.5000
+vt 0.0000 0.0000
+vn 1.0000 0.0000 0.0000
s off
-f 1/1/1 2/2/1 3/3/1
-f 4/3/2 1/4/2 3/2/2
-f 3/2/3 2/3/3 4/5/3
-f 2/3/4 1/6/4 4/2/4
+f 12/10/4 10/11/4 11/12/4
diff --git a/moreblocks/models/moreblocks_slope_outer_cut_half_raised.obj b/moreblocks/models/moreblocks_slope_outer_cut_half_raised.obj
index c65e08d..78cdfed 100644
--- a/moreblocks/models/moreblocks_slope_outer_cut_half_raised.obj
+++ b/moreblocks/models/moreblocks_slope_outer_cut_half_raised.obj
@@ -1,28 +1,56 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib moreblocks_slope_outer_cut_half_raised.mtl
-o Cube_Cube.005
+g top
+v -0.500000 -0.000000 0.500000
+v 0.500000 0.500000 0.500000
+v 0.500000 0.000000 -0.500000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vn -0.4082 0.8165 -0.4082
+s off
+f 1/1/1 2/2/1 3/3/1
+g bottom
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+vt 0.0000 1.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vn 0.0000 -1.0000 -0.0000
+s off
+f 4/4/2 6/5/2 5/6/2
+g right
v -0.500000 -0.000000 0.500000
v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 0.000000 -0.500000
+vt 1.0000 0.0000
+vt 1.0000 0.5000
+vt 0.0000 0.5000
+vt 0.0000 0.0000
+vn -0.7071 0.0000 -0.7071
+s off
+f 8/7/3 7/8/3 10/9/3 9/10/3
+g left
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.000000 -0.500000
-vt 0.000000 0.500000
-vt 0.000000 0.000000
-vt 1.000000 0.000000
-vt 1.000000 1.000000
-vt 0.000000 1.000000
-vt 1.000000 0.500000
-vn 0.000000 -0.000000 1.000000
-vn 1.000000 0.000000 0.000000
-vn 0.000000 -1.000000 0.000000
-vn -0.408200 0.816500 -0.408200
-vn -0.707100 0.000000 -0.707100
-usemtl None.006
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 0.5000
+vn 1.0000 0.0000 0.0000
+s off
+f 12/11/4 11/12/4 13/13/4 14/14/4
+g back
+v -0.500000 -0.000000 0.500000
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 0.500000 0.500000
+vt 0.0000 0.5000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vn -0.0000 -0.0000 1.0000
s off
-f 1/1/1 2/2/1 3/3/1 4/4/1
-f 4/5/2 3/2/2 5/3/2 6/6/2
-f 2/5/3 5/3/3 3/4/3
-f 1/2/4 4/3/4 6/4/4
-f 2/3/5 1/6/5 6/1/5 5/2/5
+f 15/15/5 16/16/5 17/17/5 18/18/5
diff --git a/moreblocks/models/moreblocks_slope_outer_half.obj b/moreblocks/models/moreblocks_slope_outer_half.obj
index 7bbb38d..b87be69 100644
--- a/moreblocks/models/moreblocks_slope_outer_half.obj
+++ b/moreblocks/models/moreblocks_slope_outer_half.obj
@@ -1,27 +1,48 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib moreblocks_slope_outer_half.mtl
-o Cube.004
+g top
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.000000 0.500000
+vt 1.0000 0.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vt 0.0000 0.0000
+vn 0.0000 0.8944 -0.4472
+vn -0.4472 0.8944 0.0000
+s off
+f 2/1/1 4/2/1 3/3/1
+f 1/4/2 4/5/2 2/6/2
+g bottom
+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
+vt 1.0000 1.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 0.0000 -1.0000 -0.0000
+s off
+f 5/7/3 6/8/3 7/9/3 8/10/3
+g right
+v -0.500000 -0.500000 0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.000000 0.500000
+vt 1.0000 0.5000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn 0.0000 -0.0000 1.0000
+s off
+f 11/11/4 9/12/4 10/13/4
+g left
+v 0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 -0.000000 0.500000
-vt 1.000000 1.000000
-vt 0.000000 1.000000
-vt 0.000000 0.000000
-vt 1.000000 0.000000
-vt 1.000000 0.500000
-vt 0.000000 0.500000
-vn 0.000000 -1.000000 -0.000000
-vn 0.000000 -0.000000 1.000000
-vn 1.000000 0.000000 0.000000
-vn 0.000000 0.894400 -0.447200
-vn -0.447200 0.894400 0.000000
-usemtl None.007
+vt 1.0000 0.0000
+vt 0.0000 0.5000
+vt 0.0000 0.0000
+vn 1.0000 0.0000 0.0000
s off
-f 1/1/1 2/2/1 3/3/1 4/4/1
-f 5/5/2 1/3/2 4/4/2
-f 3/4/3 5/6/3 4/3/3
-f 2/4/4 5/2/4 3/3/4
-f 1/4/5 5/1/5 2/3/5
+f 12/14/5 14/15/5 13/16/5
diff --git a/moreblocks/models/moreblocks_slope_outer_half_raised.obj b/moreblocks/models/moreblocks_slope_outer_half_raised.obj
index 51a929a..e06304d 100644
--- a/moreblocks/models/moreblocks_slope_outer_half_raised.obj
+++ b/moreblocks/models/moreblocks_slope_outer_half_raised.obj
@@ -1,34 +1,74 @@
-# Blender v2.72 (sub 0) OBJ File: ''
-# www.blender.org
-mtllib moreblocks_slope_outer_half_raised.mtl
-o Cube_Cube.006
+g top
+v -0.500000 -0.000000 0.500000
+v 0.500000 0.500000 0.500000
+v 0.500000 0.000000 -0.500000
+v -0.500000 0.000000 -0.500000
+vt 1.0000 0.0000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 1.0000
+vn 0.0000 0.8944 -0.4472
+vn -0.4472 0.8944 0.0000
+s off
+f 4/1/1 2/2/1 3/3/1
+f 4/1/2 1/4/2 2/2/2
+g bottom
+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
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vn 0.0000 -1.0000 -0.0000
+s off
+f 7/5/3 6/6/3 5/7/3 8/8/3
+g right
+v -0.500000 -0.000000 0.500000
+v -0.500000 -0.500000 0.500000
+v -0.500000 0.000000 -0.500000
+v -0.500000 -0.500000 -0.500000
+vt 1.0000 0.5000
+vt 0.0000 0.5000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vn -1.0000 0.0000 0.0000
+s off
+f 9/9/4 11/10/4 12/11/4 10/12/4
+g left
+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.000000 -0.500000
+vt 0.0000 1.0000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 0.5000
+vn 1.0000 0.0000 0.0000
+s off
+f 14/13/5 13/14/5 15/15/5 16/16/5
+g back
v -0.500000 -0.000000 0.500000
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
+vt 0.0000 0.5000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 1.0000
+vn -0.0000 -0.0000 1.0000
+s off
+f 17/17/6 18/18/6 19/19/6 20/20/6
+g front
v 0.500000 -0.500000 -0.500000
v 0.500000 0.000000 -0.500000
v -0.500000 0.000000 -0.500000
v -0.500000 -0.500000 -0.500000
-vt 0.000000 0.500000
-vt 0.000000 0.000000
-vt 1.000000 0.000000
-vt 1.000000 1.000000
-vt 0.000000 1.000000
-vt 1.000000 0.500000
-vn 0.000000 -0.000000 1.000000
-vn 1.000000 0.000000 0.000000
-vn 0.000000 0.894400 -0.447200
-vn -1.000000 0.000000 0.000000
-vn -0.447200 0.894400 0.000000
-vn 0.000000 0.000000 -1.000000
-vn 0.000000 -1.000000 -0.000000
-usemtl None.008
+vt 0.0000 0.5000
+vt 0.0000 0.0000
+vt 1.0000 0.0000
+vt 1.0000 0.5000
+vn 0.0000 0.0000 -1.0000
s off
-f 1/1/1 2/2/1 3/3/1 4/4/1
-f 4/5/2 3/2/2 5/3/2 6/6/2
-f 7/3/3 4/5/3 6/2/3
-f 1/6/4 7/1/4 8/2/4 2/3/4
-f 7/3/5 1/4/5 4/5/5
-f 6/1/6 5/2/6 8/3/6 7/6/6
-f 5/5/7 3/2/7 2/3/7 8/4/7
+f 22/21/7 21/22/7 24/23/7 23/24/7
diff --git a/moreblocks/nodes.lua b/moreblocks/nodes.lua
index da61b3f..8d90614 100644
--- a/moreblocks/nodes.lua
+++ b/moreblocks/nodes.lua
@@ -12,6 +12,10 @@ local sound_stone = default.node_sound_stone_defaults()
local sound_glass = default.node_sound_glass_defaults()
local sound_leaves = default.node_sound_leaves_defaults()
+-- Don't break on 0.4.14 and earlier.
+local sound_metal = (default.node_sound_metal_defaults
+ and default.node_sound_metal_defaults() or sound_stone)
+
local function tile_tiles(name)
local tex = "moreblocks_" ..name.. ".png"
return {tex, tex, tex, tex, tex.. "^[transformR90", tex.. "^[transformR90"}
@@ -31,7 +35,7 @@ local nodes = {
},
["wood_tile_flipped"] = {
description = S("Wooden Tile"),
- groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
+ groups = {wood = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
tiles = {"default_wood.png^moreblocks_wood_tile.png^[transformR90",
"default_wood.png^moreblocks_wood_tile.png^[transformR90",
"default_wood.png^moreblocks_wood_tile.png^[transformR90",
@@ -43,40 +47,40 @@ local nodes = {
},
["wood_tile_center"] = {
description = S("Centered Wooden Tile"),
- groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
+ groups = {wood = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
tiles = {"default_wood.png^moreblocks_wood_tile_center.png"},
sounds = sound_wood,
},
["wood_tile_full"] = {
description = S("Full Wooden Tile"),
- groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
+ groups = {wood = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
tiles = tile_tiles("wood_tile_full"),
sounds = sound_wood,
},
["wood_tile_up"] = {
description = S("Upwards Wooden Tile"),
- groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
+ groups = {wood = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
tiles = {"default_wood.png^moreblocks_wood_tile_up.png"},
sounds = sound_wood,
no_stairs = true,
},
["wood_tile_down"] = {
description = S("Downwards Wooden Tile"),
- groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
+ groups = {wood = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
tiles = {"default_wood.png^[transformR180^moreblocks_wood_tile_up.png^[transformR180"},
sounds = sound_wood,
no_stairs = true,
},
["wood_tile_left"] = {
description = S("Leftwards Wooden Tile"),
- groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
+ groups = {wood = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
tiles = {"default_wood.png^[transformR270^moreblocks_wood_tile_up.png^[transformR270"},
sounds = sound_wood,
no_stairs = true,
},
["wood_tile_right"] = {
description = S("Rightwards Wooden Tile"),
- groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
+ groups = {wood = 1, snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
tiles = {"default_wood.png^[transformR90^moreblocks_wood_tile_up.png^[transformR90"},
sounds = sound_wood,
no_stairs = true,
@@ -186,6 +190,7 @@ local nodes = {
"moreblocks_empty_bookshelf.png"},
groups = {snappy = 2, choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
sounds = sound_wood,
+ furnace_burntime = 15,
no_stairs = true,
},
["coal_stone"] = {
@@ -319,7 +324,7 @@ local nodes = {
["copperpatina"] = {
description = S("Copper Patina Block"),
groups = {cracky = 1, level = 2},
- sounds = sound_stone,
+ sounds = sound_metal,
},
}
@@ -353,4 +358,3 @@ minetest.register_craftitem("moreblocks:nothing", {
inventory_image = "invisible.png",
on_use = function() end,
})
-
diff --git a/moreblocks/ownership.lua b/moreblocks/ownership.lua
index 1c2431b..355d7f1 100644
--- a/moreblocks/ownership.lua
+++ b/moreblocks/ownership.lua
@@ -22,11 +22,11 @@ function moreblocks.node_is_owned(pos, placer)
end
end
- elseif type(isprotect)=="function" then -- glomie's protection mod
+ elseif type(isprotect)=="function" then -- glomie's protection mod
if not isprotect(5, pos, placer) then
ownername = S("someone")
end
- elseif type(protector)=="table" and type(protector.can_dig)=="function" then -- Zeg9's protection mod
+ elseif type(protector)=="table" and type(protector.can_dig)=="function" then -- Zeg9's protection mod
if not protector.can_dig(5, pos, placer) then
ownername = S("someone")
end
diff --git a/moreblocks/stairsplus/conversion.lua b/moreblocks/stairsplus/conversion.lua
index 13966b6..37f2a25 100644
--- a/moreblocks/stairsplus/conversion.lua
+++ b/moreblocks/stairsplus/conversion.lua
@@ -80,8 +80,9 @@ function stairsplus:register_6dfacedir_conversion(modname, material)
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local fdir = node.param2 or 0
+ local nfdir
- if flip_upside_down and not flip_to_wall then
+ if flip_upside_down and not flip_to_wall then
nfdir = dirs1[fdir + 2]
elseif flip_to_wall and not flip_upside_down then
nfdir = dirs2[fdir + 1]
@@ -125,7 +126,7 @@ function stairsplus:register_6dfacedir_conversion(modname, material)
local fdir = node.param2
local nfdir = 20
- if flip_upside_down and not flip_to_wall then
+ if flip_upside_down and not flip_to_wall then
nfdir = dirs1[fdir + 1]
elseif flip_to_wall and not flip_upside_down then
nfdir = dirs2[fdir + 2]
@@ -136,4 +137,3 @@ function stairsplus:register_6dfacedir_conversion(modname, material)
})
end
end
-
diff --git a/moreblocks/stairsplus/microblocks.lua b/moreblocks/stairsplus/microblocks.lua
index a457d10..a3b94d3 100644
--- a/moreblocks/stairsplus/microblocks.lua
+++ b/moreblocks/stairsplus/microblocks.lua
@@ -88,7 +88,7 @@ function stairsplus:register_micro(modname, subname, recipeitem, fields)
end
def.drawtype = "nodebox"
def.paramtype = "light"
- def.paramtype2 = "facedir"
+ def.paramtype2 = def.paramtype2 or "facedir"
def.on_place = minetest.rotate_node
def.groups = stairsplus:prepare_groups(fields.groups)
def.description = desc
@@ -98,53 +98,53 @@ function stairsplus:register_micro(modname, subname, recipeitem, fields)
minetest.register_node(":" ..modname.. ":micro_" ..subname..alternate, def)
end
minetest.register_alias(modname.. ":micro_" ..subname.. "_bottom", modname.. ":micro_" ..subname)
-
+
circular_saw.known_nodes[recipeitem] = {modname, subname}
-- Some saw-less recipes:
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":micro_" .. subname .. " 7",
recipe = {modname .. ":stair_" .. subname .. "_inner"},
})
-
+
minetest.register_craft({
output = modname .. ":micro_" .. subname .. " 6",
type = "shapeless",
recipe = {modname .. ":stair_" .. subname},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":micro_" .. subname .. " 5",
recipe = {modname .. ":stair_" .. subname .. "_outer"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":micro_" .. subname .. " 4",
recipe = {modname .. ":slab_" .. subname},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":micro_" .. subname .. " 4",
recipe = {modname .. ":stair_" .. subname .. "_alt"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":micro_" .. subname .. " 3",
recipe = {modname .. ":stair_" .. subname .. "_right_half"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":micro_" .. subname .. " 2",
recipe = {modname .. ":panel_" .. subname},
})
-
+
minetest.register_craft({
type = "shapeless",
output = recipeitem,
diff --git a/moreblocks/stairsplus/panels.lua b/moreblocks/stairsplus/panels.lua
index 314939b..66e736d 100644
--- a/moreblocks/stairsplus/panels.lua
+++ b/moreblocks/stairsplus/panels.lua
@@ -88,7 +88,7 @@ function stairsplus:register_panel(modname, subname, recipeitem, fields)
end
def.drawtype = "nodebox"
def.paramtype = "light"
- def.paramtype2 = "facedir"
+ def.paramtype2 = def.paramtype2 or "facedir"
def.on_place = minetest.rotate_node
def.description = desc
def.groups = stairsplus:prepare_groups(fields.groups)
@@ -98,7 +98,7 @@ function stairsplus:register_panel(modname, subname, recipeitem, fields)
minetest.register_node(":" ..modname.. ":panel_" ..subname..alternate, def)
end
minetest.register_alias(modname.. ":panel_" ..subname.. "_bottom", modname.. ":panel_" ..subname)
-
+
circular_saw.known_nodes[recipeitem] = {modname, subname}
-- Some saw-less recipes:
@@ -110,7 +110,7 @@ function stairsplus:register_panel(modname, subname, recipeitem, fields)
{recipeitem, recipeitem},
},
})
-
+
minetest.register_craft({
output = modname .. ":panel_" .. subname .. " 12",
recipe = {
@@ -118,13 +118,13 @@ function stairsplus:register_panel(modname, subname, recipeitem, fields)
{recipeitem, recipeitem},
},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":panel_" .. subname,
recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
})
-
+
minetest.register_craft({
type = "shapeless",
output = recipeitem,
diff --git a/moreblocks/stairsplus/slabs.lua b/moreblocks/stairsplus/slabs.lua
index 2acdd41..9fa2494 100644
--- a/moreblocks/stairsplus/slabs.lua
+++ b/moreblocks/stairsplus/slabs.lua
@@ -59,7 +59,7 @@ function stairsplus:register_slab(modname, subname, recipeitem, fields)
end
def.drawtype = "nodebox"
def.paramtype = "light"
- def.paramtype2 = "facedir"
+ def.paramtype2 = def.paramtype2 or "facedir"
def.on_place = minetest.rotate_node
def.description = ("%s (%d/16)"):format(desc_base, num)
def.groups = stairsplus:prepare_groups(fields.groups)
@@ -78,27 +78,27 @@ function stairsplus:register_slab(modname, subname, recipeitem, fields)
output = modname .. ":slab_" .. subname .. " 6",
recipe = {{recipeitem, recipeitem, recipeitem}},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname,
recipe = {modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname, modname .. ":micro_" .. subname},
})
-
+
-- uncomment this rule when conflict is no longer likely to happen
- -- https://github.com/minetest/minetest/issues/2881
+ -- https://github.com/minetest/minetest/issues/2881
-- minetest.register_craft({
- -- type = "shapeless",
- -- output = modname .. ":slab_" .. subname,
- -- recipe = {modname .. ":panel_" .. subname, modname .. ":panel_" .. subname},
+ -- type = "shapeless",
+ -- output = modname .. ":slab_" .. subname,
+ -- recipe = {modname .. ":panel_" .. subname, modname .. ":panel_" .. subname},
-- })
-
+
-- then remove these two
minetest.register_craft({
output = modname .. ":slab_" .. subname,
recipe = {{modname .. ":panel_" .. subname, modname .. ":panel_" .. subname}},
})
-
+
minetest.register_craft({
output = modname .. ":slab_" .. subname,
recipe = {
@@ -113,109 +113,109 @@ function stairsplus:register_slab(modname, subname, recipeitem, fields)
output = recipeitem,
recipe = {modname .. ":slab_" .. subname, modname .. ":slab_" .. subname},
})
-
+
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slab_" .. subname .. "_three_quarter", modname .. ":slab_" .. subname .. "_quarter"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slab_" .. subname .. "_14", modname .. ":slab_" .. subname .. "_2"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slab_" .. subname .. "_15", modname .. ":slab_" .. subname .. "_1"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname,
recipe = {modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname,
recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname,
recipe = {modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_quarter",
recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_quarter",
recipe = {modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_2",
recipe = {modname .. ":slab_" .. subname .. "_1", modname .. ":slab_" .. subname .. "_1"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_three_quarter",
recipe = {modname .. ":slab_" .. subname, modname .. ":slab_" .. subname .. "_quarter"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_three_quarter",
recipe = {modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter", modname .. ":slab_" .. subname .. "_quarter"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_three_quarter",
recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_14",
recipe = {modname .. ":slab_" .. subname .. "_three_quarter", modname .. ":slab_" .. subname .. "_2"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_14",
recipe = {modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2", modname .. ":slab_" .. subname .. "_2"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. "_15",
recipe = {modname .. ":slab_" .. subname .. "_14", modname .. ":slab_" .. subname .. "_1"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname .. " 3",
diff --git a/moreblocks/stairsplus/slopes.lua b/moreblocks/stairsplus/slopes.lua
index da524b6..1868cb3 100644
--- a/moreblocks/stairsplus/slopes.lua
+++ b/moreblocks/stairsplus/slopes.lua
@@ -242,7 +242,7 @@ function stairsplus:register_slope(modname, subname, recipeitem, fields)
end
def.drawtype = "mesh"
def.paramtype = "light"
- def.paramtype2 = "facedir"
+ def.paramtype2 = def.paramtype2 or "facedir"
def.on_place = minetest.rotate_node
def.description = desc
def.groups = stairsplus:prepare_groups(fields.groups)
@@ -261,99 +261,99 @@ function stairsplus:register_slope(modname, subname, recipeitem, fields)
output = recipeitem,
recipe = {modname .. ":slope_" .. subname, modname .. ":slope_" .. subname},
})
-
+
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half_raised"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half",
modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slope_" .. subname .. "_outer", modname .. ":slope_" .. subname .. "_inner"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slope_" .. subname .. "_outer_half", modname .. ":slope_" .. subname .. "_inner_half_raised"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slope_" .. subname .. "_outer_half_raised", modname .. ":slope_" .. subname .. "_inner_half"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slope_" .. subname .. "_outer_cut", modname .. ":slope_" .. subname .. "_inner_cut"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slope_" .. subname .. "_outer_cut_half", modname .. ":slope_" .. subname .. "_inner_cut_half_raised"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = recipeitem,
recipe = {modname .. ":slope_" .. subname .. "_cut", modname .. ":slope_" .. subname .. "_cut"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname,
recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname,
recipe = {modname .. ":slope_" .. subname .. "_outer_half", modname .. ":slope_" .. subname .. "_inner_half"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slab_" .. subname,
recipe = {modname .. ":slope_" .. subname .. "_outer_cut_half", modname .. ":slope_" .. subname .. "_inner_cut_half"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slope_" .. subname .. "_half_raised",
recipe = {modname .. ":slope_" .. subname .. "_half", modname .. ":slope_" .. subname .. "_half",
modname .. ":slope_" .. subname .. "_half"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slope_" .. subname .. "_half_raised",
recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_half"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slope_" .. subname .. "_inner_half_raised",
recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_inner_half"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slope_" .. subname .. "_outer_half_raised",
recipe = {modname .. ":slab_" .. subname, modname .. ":slope_" .. subname .. "_outer_half"},
})
-
+
minetest.register_craft({
type = "shapeless",
output = modname .. ":slope_" .. subname .. "_inner_cut_half_raised",
diff --git a/moreblocks/stairsplus/stairs.lua b/moreblocks/stairsplus/stairs.lua
index 6609466..fc47dbd 100644
--- a/moreblocks/stairsplus/stairs.lua
+++ b/moreblocks/stairsplus/stairs.lua
@@ -128,7 +128,7 @@ function stairsplus:register_stair(modname, subname, recipeitem, fields)
end
def.drawtype = "nodebox"
def.paramtype = "light"
- def.paramtype2 = "facedir"
+ def.paramtype2 = def.paramtype2 or "facedir"
def.on_place = minetest.rotate_node
def.description = desc
def.groups = stairsplus:prepare_groups(fields.groups)
diff --git a/moreores/_config.txt b/moreores/_config.txt
index e716b2e..42e7b37 100644
--- a/moreores/_config.txt
+++ b/moreores/_config.txt
@@ -7,21 +7,21 @@
------------------------------------------------------------------------------
-- Chunk sizes for ore generation (bigger = ore deposits are more scattered around)
-moreores_tin_chunk_size = 7
-moreores_silver_chunk_size = 11
-moreores_mithril_chunk_size = 11
+moreores.tin_chunk_size = 7
+moreores.silver_chunk_size = 11
+moreores.mithril_chunk_size = 11
-- Amount of ore per chunk (higher = bigger ore deposits)
-moreores_tin_ore_per_chunk = 3
-moreores_silver_ore_per_chunk = 4
-moreores_mithril_ore_per_chunk = 1
+moreores.tin_ore_per_chunk = 3
+moreores.silver_ore_per_chunk = 4
+moreores.mithril_ore_per_chunk = 1
-- Minimal depths of ore generation (Y coordinate, 0 being sea level by default)
-moreores_tin_min_depth = -31000
-moreores_silver_min_depth = -31000
-moreores_mithril_min_depth = -31000
+moreores.tin_min_depth = -31000
+moreores.silver_min_depth = -31000
+moreores.mithril_min_depth = -31000
-- Maximal depths of ore generation (Y coordinate, 0 being sea level by default)
-moreores_tin_max_depth = 8
-moreores_silver_max_depth = -2
-moreores_mithril_max_depth = -512
+moreores.tin_max_depth = 8
+moreores.silver_max_depth = -2
+moreores.mithril_max_depth = -512
diff --git a/moreores/init.lua b/moreores/init.lua
index 72bd0a1..7af91bc 100644
--- a/moreores/init.lua
+++ b/moreores/init.lua
@@ -8,6 +8,8 @@ Licensed under the zlib license. See LICENSE.md for more information.
=====================================================================
--]]
+moreores = {}
+
local S
if minetest.get_modpath("intllib") then
S = intllib.Getter()
@@ -28,6 +30,7 @@ end
-- =================
local default_stone_sounds = default.node_sound_stone_defaults()
+local default_metal_sounds = default.node_sound_metal_defaults()
local function hoe_on_use(itemstack, user, pointed_thing, uses)
local pt = pointed_thing
@@ -110,7 +113,7 @@ local function add_ore(modname, description, mineral_name, oredef)
description = S("%s Block"):format(S(description)),
tiles = { img_base .. "_block.png" },
groups = {snappy = 1, bendy = 2, cracky = 1, melty = 2, level= 2},
- sounds = default_stone_sounds
+ sounds = default_metal_sounds,
})
minetest.register_alias(mineral_name.."_block", block_item)
if oredef.makes.ingot then
@@ -177,7 +180,8 @@ local function add_ore(modname, description, mineral_name, oredef)
tool_capabilities = {
max_drop_level = 3,
groupcaps = tooldef
- }
+ },
+ sound = {breaks = "default_tool_breaks"},
}
if tool_name == "sword" then
@@ -202,6 +206,7 @@ local function add_ore(modname, description, mineral_name, oredef)
tdef.full_punch_interval = oredef.full_punch_interval
tdef.tool_capabilities.damage_groups = oredef.damage_groups
tdef.description = S("%s Shovel"):format(S(description))
+ tdef.wield_image = toolimg_base .. tool_name .. ".png^[transformR90"
end
if tool_name == "hoe" then
@@ -232,11 +237,11 @@ local oredefs = {
silver = {
description = "Silver",
makes = {ore = true, block = true, lump = true, ingot = true, chest = true},
- oredef = {clust_scarcity = moreores_silver_chunk_size * moreores_silver_chunk_size * moreores_silver_chunk_size,
- clust_num_ores = moreores_silver_ore_per_chunk,
- clust_size = moreores_silver_chunk_size,
- y_min = moreores_silver_min_depth,
- y_max = moreores_silver_max_depth
+ oredef = {clust_scarcity = moreores.silver_chunk_size * moreores.silver_chunk_size * moreores.silver_chunk_size,
+ clust_num_ores = moreores.silver_ore_per_chunk,
+ clust_size = moreores.silver_chunk_size,
+ y_min = moreores.silver_min_depth,
+ y_max = moreores.silver_max_depth
},
tools = {
pick = {
@@ -264,22 +269,22 @@ local oredefs = {
tin = {
description = "Tin",
makes = {ore = true, block = true, lump = true, ingot = true, chest = false},
- oredef = {clust_scarcity = moreores_tin_chunk_size * moreores_tin_chunk_size * moreores_tin_chunk_size,
- clust_num_ores = moreores_tin_ore_per_chunk,
- clust_size = moreores_tin_chunk_size,
- y_min = moreores_tin_min_depth,
- y_max = moreores_tin_max_depth
+ oredef = {clust_scarcity = moreores.tin_chunk_size * moreores.tin_chunk_size * moreores.tin_chunk_size,
+ clust_num_ores = moreores.tin_ore_per_chunk,
+ clust_size = moreores.tin_chunk_size,
+ y_min = moreores.tin_min_depth,
+ y_max = moreores.tin_max_depth
},
tools = {},
},
mithril = {
description = "Mithril",
makes = {ore = true, block = true, lump = true, ingot = true, chest = false},
- oredef = {clust_scarcity = moreores_mithril_chunk_size * moreores_mithril_chunk_size * moreores_mithril_chunk_size,
- clust_num_ores = moreores_mithril_ore_per_chunk,
- clust_size = moreores_mithril_chunk_size,
- y_min = moreores_mithril_min_depth,
- y_max = moreores_mithril_max_depth
+ oredef = {clust_scarcity = moreores.mithril_chunk_size * moreores.mithril_chunk_size * moreores.mithril_chunk_size,
+ clust_num_ores = moreores.mithril_ore_per_chunk,
+ clust_size = moreores.mithril_chunk_size,
+ y_min = moreores.mithril_min_depth,
+ y_max = moreores.mithril_max_depth
},
tools = {
pick = {
@@ -345,6 +350,7 @@ minetest.register_node("moreores:copper_rail", {
type = "fixed",
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
+ sounds = default_metal_sounds,
groups = {bendy = 2,snappy = 1,dig_immediate = 2,rail= 1, connect_to_raillike = 1},
mesecons = {
effector = {
diff --git a/moreores/textures/moreores_copper_rail_t_junction.png b/moreores/textures/moreores_copper_rail_t_junction.png
index aac2981..1e1feaa 100644
--- a/moreores/textures/moreores_copper_rail_t_junction.png
+++ b/moreores/textures/moreores_copper_rail_t_junction.png
Binary files differ
diff --git a/pipeworks/routing_tubes.lua b/pipeworks/routing_tubes.lua
index 8620d20..0a82fc8 100644
--- a/pipeworks/routing_tubes.lua
+++ b/pipeworks/routing_tubes.lua
@@ -14,13 +14,14 @@ minetest.register_craft( {
-- without doing actual sorting, like at outputs of tubedevices that might both accept and eject items
if pipeworks.enable_priority_tube then
local color = "#ff3030:128"
+ local nodecolor = 0xffff3030
pipeworks.register_tube("pipeworks:priority_tube", {
description = "High Priority Tube Segment",
inventory_image = "pipeworks_tube_inv.png^[colorize:" .. color,
- plain = { "pipeworks_tube_plain.png^[colorize:" .. color },
- noctr = { "pipeworks_tube_noctr.png^[colorize:" .. color },
- ends = { "pipeworks_tube_end.png^[colorize:" .. color },
- short = "pipeworks_tube_short.png^[colorize:" .. color,
+ plain = { { name = "pipeworks_tube_plain.png", color = nodecolor } },
+ noctr = { { name = "pipeworks_tube_noctr.png", color = nodecolor } },
+ ends = { { name = "pipeworks_tube_end.png", color = nodecolor } },
+ short = { name = "pipeworks_tube_short.png", color = nodecolor },
node_def = {
tube = { priority = 150 } -- higher than tubedevices (100)
},
diff --git a/plasmascreen/depends.txt b/plasmascreen/depends.txt
index 331d858..7b3e79f 100644
--- a/plasmascreen/depends.txt
+++ b/plasmascreen/depends.txt
@@ -1 +1,2 @@
-default \ No newline at end of file
+default
+homedecor
diff --git a/plasmascreen/init.lua b/plasmascreen/init.lua
index 839fa1f..109e418 100644
--- a/plasmascreen/init.lua
+++ b/plasmascreen/init.lua
@@ -1,7 +1,10 @@
+
+local S = homedecor_i18n.gettext
+
screwdriver = screwdriver or {}
minetest.register_node("plasmascreen:stand", {
- description = "Plasma Screen TV Stand",
+ description = S("Plasma Screen TV Stand"),
tiles = {"plasmascreen_back.png"},
paramtype = "light",
paramtype2 = "facedir",
@@ -85,7 +88,7 @@ local function checkwall(pos)
end
local node5 = minetest.get_node({x=pos.x+dxr, y=pos.y+1, z=pos.z+dzr})
- if not node5 or not minetest.registered_nodes[node5.name]
+ if not node5 or not minetest.registered_nodes[node5.name]
or not minetest.registered_nodes[node5.name].buildable_to then
return false
end
@@ -94,7 +97,7 @@ local function checkwall(pos)
end
minetest.register_node("plasmascreen:tv", {
- description = "Plasma TV",
+ description = S("Plasma TV"),
drawtype = "mesh",
mesh = "plasmascreen_tv.obj",
tiles = {
@@ -130,7 +133,7 @@ minetest.register_node("plasmascreen:tv", {
})
minetest.register_node("plasmascreen:tv_off", {
- description = "Plasma TV (off)",
+ description = S("Plasma TV (off)"),
drawtype = "mesh",
mesh = "plasmascreen_tv.obj",
tiles = {
diff --git a/plasticbox/depends.txt b/plasticbox/depends.txt
index 42f64ae..7910ab9 100644
--- a/plasticbox/depends.txt
+++ b/plasticbox/depends.txt
@@ -1,4 +1,3 @@
homedecor
-technic?
-bucket?
-pipeworks?
+moreblocks
+unifieddyes
diff --git a/plasticbox/init.lua b/plasticbox/init.lua
index 256f972..8bd6a69 100644
--- a/plasticbox/init.lua
+++ b/plasticbox/init.lua
@@ -1,142 +1,22 @@
-plasticbox = {}
-plasticbox.colorlist = {
- {"black", "Black Plastic"},
- {"blue", "Blue Plastic"},
- {"brown", "Brown Plastic"},
- {"cyan", "Cyan Plastic"},
- {"green", "Green Plastic"},
- {"grey", "Grey Plastic"},
- {"magenta", "Magenta Plastic"},
- {"orange", "Orange Plastic"},
- {"pink", "Pink Plastic"},
- {"red", "Red Plastic"},
- {"violet", "Violet Plastic"},
- {"white", "White Plastic"},
- {"yellow", "Yellow Plastic"},
-}
-
-
-
---Register Nodes, assign textures, blah, blah...
minetest.register_node("plasticbox:plasticbox", {
- description = "Plain Plastic Box",
- tiles = {"plasticbox.png"},
- is_ground_content = true,
- groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
- sounds = default.node_sound_stone_defaults(),
-})
-minetest.register_node("plasticbox:plasticbox_black", {
- description = "Black Plastic Box",
- tiles = {"plasticbox_black.png"},
- is_ground_content = true,
- groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
- sounds = default.node_sound_stone_defaults(),
-})
-minetest.register_node("plasticbox:plasticbox_blue", {
- description = "Blue Plastic Box",
- tiles = {"plasticbox_blue.png"},
- is_ground_content = true,
- groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
- sounds = default.node_sound_stone_defaults(),
-})
-minetest.register_node("plasticbox:plasticbox_brown", {
- description = "Brown Plastic Box",
- tiles = {"plasticbox_brown.png"},
- is_ground_content = true,
- groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
- sounds = default.node_sound_stone_defaults(),
-})
-minetest.register_node("plasticbox:plasticbox_cyan", {
- description = "Cyan Plastic Box",
- tiles = {"plasticbox_cyan.png"},
- is_ground_content = true,
- groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
- sounds = default.node_sound_stone_defaults(),
-})
-minetest.register_node("plasticbox:plasticbox_darkgreen", {
- description = "Dark Green Plastic Box",
- tiles = {"plasticbox_darkgreen.png"},
- is_ground_content = true,
- groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
- sounds = default.node_sound_stone_defaults(),
-})
-minetest.register_node("plasticbox:plasticbox_darkgrey", {
- description = "Dark Gray Plastic Box",
- tiles = {"plasticbox_darkgrey.png"},
- is_ground_content = true,
- groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
- sounds = default.node_sound_stone_defaults(),
-})
-minetest.register_node("plasticbox:plasticbox_green", {
- description = "Green Plastic Box",
- tiles = {"plasticbox_green.png"},
- is_ground_content = true,
- groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
- sounds = default.node_sound_stone_defaults(),
-})
-minetest.register_node("plasticbox:plasticbox_grey", {
- description = "Gray Plastic Box",
- tiles = {"plasticbox_grey.png"},
- is_ground_content = true,
- groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
- sounds = default.node_sound_stone_defaults(),
-})
-minetest.register_node("plasticbox:plasticbox_magenta", {
- description = "Magenta Plastic Box",
- tiles = {"plasticbox_magenta.png"},
- is_ground_content = true,
- groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
- sounds = default.node_sound_stone_defaults(),
-})
-minetest.register_node("plasticbox:plasticbox_orange", {
- description = "Orange Plastic Box",
- tiles = {"plasticbox_orange.png"},
- is_ground_content = true,
- groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
- sounds = default.node_sound_stone_defaults(),
-})
-minetest.register_node("plasticbox:plasticbox_pink", {
- description = "Pink Plastic Box",
- tiles = {"plasticbox_pink.png"},
- is_ground_content = true,
- groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
- sounds = default.node_sound_stone_defaults(),
-})
-minetest.register_node("plasticbox:plasticbox_red", {
- description = "Red Plastic Box",
- tiles = {"plasticbox_red.png"},
- is_ground_content = true,
- groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
- sounds = default.node_sound_stone_defaults(),
-})
-minetest.register_node("plasticbox:plasticbox_violet", {
- description = "Violet Plastic Box",
- tiles = {"plasticbox_violet.png"},
- is_ground_content = true,
- groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
- sounds = default.node_sound_stone_defaults(),
-})
-minetest.register_node("plasticbox:plasticbox_white", {
- description = "White Plastic Box",
+ description = "Plastic Box",
tiles = {"plasticbox_white.png"},
- is_ground_content = true,
- groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
+ is_ground_content = false,
+ groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1},
sounds = default.node_sound_stone_defaults(),
+ paramtype2 = "color",
+ palette = "unifieddyes_palette.png",
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = unifieddyes.on_rightclick,
})
-minetest.register_node("plasticbox:plasticbox_yellow", {
- description = "Yellow Plastic Box",
- tiles = {"plasticbox_yellow.png"},
- is_ground_content = true,
- groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, level=1},
+
+stairsplus:register_all("plasticbox", "plasticbox", "plasticbox:plasticbox", {
+ description = "Plastic",
+ tiles = {"plasticbox_white.png"},
+ groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1},
sounds = default.node_sound_stone_defaults(),
})
-minetest.register_craftitem("plasticbox:plastic_powder", {
- image = "plastic_powder.png",
- description="Plastic Powder",
-})
-
---Register craft for plain box
minetest.register_craft( {
output = "plasticbox:plasticbox 4",
recipe = {
@@ -146,206 +26,48 @@ minetest.register_craft( {
},
})
-
-minetest.register_craft( {
- output = "homedecor:plastic_sheeting 7",
- recipe = {
- { "plasticbox:plasticbox", "plasticbox:plasticbox" },
- { "plasticbox:plasticbox", "plasticbox:plasticbox" },
- },
-})
-
-minetest.register_craft({
- type = "cooking",
- output = "homedecor:plastic_sheeting",
- recipe = "plasticbox:plastic_powder",
-})
-
---Register crafts for colored boxes
-minetest.register_craft({
- type = "shapeless",
- output = 'plasticbox:plasticbox_black',
- recipe = {'plasticbox:plasticbox', 'group:basecolor_black'},
-})
-minetest.register_craft({
- type = "shapeless",
- output = 'plasticbox:plasticbox_blue',
- recipe = {'plasticbox:plasticbox', 'group:basecolor_blue'},
-})
-minetest.register_craft({
- type = "shapeless",
- output = 'plasticbox:plasticbox_brown',
- recipe = {'plasticbox:plasticbox', 'group:basecolor_brown'},
-})
-minetest.register_craft({
- type = "shapeless",
- output = 'plasticbox:plasticbox_cyan',
- recipe = {'plasticbox:plasticbox', 'group:basecolor_cyan'},
-})
-minetest.register_craft({
- type = "shapeless",
- output = 'plasticbox:plasticbox_green',
- recipe = {'plasticbox:plasticbox', 'group:basecolor_green'},
-})
-minetest.register_craft({
- type = "shapeless",
- output = 'plasticbox:plasticbox_grey',
- recipe = {'plasticbox:plasticbox', 'group:basecolor_grey'},
-})
-minetest.register_craft({
- type = "shapeless",
- output = 'plasticbox:plasticbox_magenta',
- recipe = {'plasticbox:plasticbox', 'group:basecolor_magenta'},
-})
-minetest.register_craft({
- type = "shapeless",
- output = 'plasticbox:plasticbox_orange',
- recipe = {'plasticbox:plasticbox', 'group:basecolor_orange'},
-})
-minetest.register_craft({
- type = "shapeless",
- output = 'plasticbox:plasticbox_pink',
- recipe = {'plasticbox:plasticbox', 'group:basecolor_pink'},
-})
-minetest.register_craft({
- type = "shapeless",
- output = 'plasticbox:plasticbox_red',
- recipe = {'plasticbox:plasticbox', 'group:basecolor_red'},
-})
-minetest.register_craft({
- type = "shapeless",
- output = 'plasticbox:plasticbox_violet',
- recipe = {'plasticbox:plasticbox', 'group:basecolor_violet'},
-})
-minetest.register_craft({
- type = "shapeless",
- output = 'plasticbox:plasticbox_white',
- recipe = {'plasticbox:plasticbox', 'group:basecolor_white'},
-})
-minetest.register_craft({
- type = "shapeless",
- output = 'plasticbox:plasticbox_yellow',
- recipe = {'plasticbox:plasticbox', 'group:basecolor_yellow'},
-})
-
---ugly below here.
-
-if minetest.get_modpath("moreblocks") then
- register_stair(
- "plasticbox",
- "plasticbox",
- "plasticbox:plasticbox",
- { snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2,not_in_creative_inventory=1 },
- { "plasticbox.png",
- },
- "Plastic",
- "plasticbox",
- 0
- )
- register_slab(
- "plasticbox",
- "plasticbox",
- "plasticbox:plasticbox",
- { snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2,not_in_creative_inventory=1 },
- { "plasticbox.png",
- },
- "Plastic",
- "plasticbox",
- 0
- )
-
- register_panel(
- "plasticbox",
- "plasticbox",
- "plasticbox:plasticbox",
- { snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2,not_in_creative_inventory=1 },
- { "plasticbox.png",
- },
- "Plastic",
- "plasticbox",
- 0
- )
-
- register_micro(
- "plasticbox",
- "plasticbox",
- "plasticbox:plasticbox",
- { snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2,not_in_creative_inventory=1 },
- { "plasticbox.png",
- },
- "Plastic",
- "plasticbox",
- 0
- )
- table.insert(circular_saw.known_stairs, "plasticbox:plasticbox")
-
-end
-
-
-
-for i in ipairs(plasticbox.colorlist) do
- local colorname = plasticbox.colorlist[i][1]
- local desc = plasticbox.colorlist[i][2]
-
- if minetest.get_modpath("moreblocks") then
- register_stair(
- "plasticbox",
- "plasticbox_"..colorname,
- "plasticbox:plasticbox_"..colorname,
- { snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2,not_in_creative_inventory=1 },
- { "plasticbox_"..colorname..".png",
- },
- desc,
- "plasticbox_"..colorname,
- 0
- )
- register_slab(
- "plasticbox",
- "plasticbox_"..colorname,
- "plasticbox:plasticbox_"..colorname,
- { snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2,not_in_creative_inventory=1 },
- { "plasticbox_"..colorname..".png",
- },
- desc,
- "plasticbox_"..colorname,
- 0
- )
-
- register_panel(
- "plasticbox",
- "plasticbox_"..colorname,
- "plasticbox:plasticbox_"..colorname,
- { snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2,not_in_creative_inventory=1 },
- { "plasticbox_"..colorname..".png",
- },
- desc,
- "plasticbox_"..colorname,
- 0
- )
-
- register_micro(
- "plasticbox",
- "plasticbox_"..colorname,
- "plasticbox:plasticbox_"..colorname,
- { snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2,not_in_creative_inventory=1 },
- { "plasticbox_"..colorname..".png",
- },
- desc,
- "plasticbox_"..colorname,
- 0
- )
- table.insert(circular_saw.known_stairs, "plasticbox:plasticbox_"..colorname)
-
- end
-end
-
---Crafting recipes involving other mods
-if minetest.get_modpath("bucket") then
-minetest.register_craft( {
- output = "bucket:bucket_empty",
- recipe = {
- { "homedecor:plastic_sheeting", "", "homedecor:plastic_sheeting" },
- { "", "homedecor:plastic_sheeting", "" },
- },
+minetest.register_lbm({
+ name = "plasticbox:convert_colors",
+ label = "Convert plastic boxes to use param2 color",
+ nodenames = {
+ "plasticbox:plasticbox_black",
+ "plasticbox:plasticbox_blue",
+ "plasticbox:plasticbox_brown",
+ "plasticbox:plasticbox_cyan",
+ "plasticbox:plasticbox_green",
+ "plasticbox:plasticbox_grey",
+ "plasticbox:plasticbox_magenta",
+ "plasticbox:plasticbox_orange",
+ "plasticbox:plasticbox_pink",
+ "plasticbox:plasticbox_red",
+ "plasticbox:plasticbox_violet",
+ "plasticbox:plasticbox_white",
+ "plasticbox:plasticbox_yellow",
+ "plasticbox:plasticbox_darkgreen",
+ "plasticbox:plasticbox_darkgrey",
+ },
+ action = function(pos,node)
+ local conv = {
+ ["black"] = 5,
+ ["blue"] = 73,
+ ["brown"] = 22,
+ ["cyan"] = 57,
+ ["green"] = 41,
+ ["grey"] = 3,
+ ["magenta"] = 89,
+ ["orange"] = 17,
+ ["pink"] = 11,
+ ["red"] = 9,
+ ["violet"] = 81,
+ ["white"] = 1,
+ ["yellow"] = 25,
+ ["darkgreen"] = 46,
+ ["darkgrey"] = 4,
+ }
+ local name = node.name
+ local oldcolor = string.sub(name,string.len("plasticbox:plasticbox_-"),-1)
+ node.name = "plasticbox:plasticbox"
+ if conv[oldcolor] then node.param2 = conv[oldcolor] end
+ minetest.set_node(pos,node)
+ end,
})
-end
diff --git a/plasticbox/textures/plasticbox_ud_palette.png b/plasticbox/textures/plasticbox_ud_palette.png
new file mode 100644
index 0000000..1d7c485
--- /dev/null
+++ b/plasticbox/textures/plasticbox_ud_palette.png
Binary files differ
diff --git a/plasticbox/ud_palette.txt b/plasticbox/ud_palette.txt
new file mode 100644
index 0000000..5e88718
--- /dev/null
+++ b/plasticbox/ud_palette.txt
@@ -0,0 +1,9 @@
+Hues: red orange yellow lime green aqua cyan skyblue blue violet magenta redviolet
+Shades: full full50 light med med50 dark dark50
+(both 1-indexed)
+
+For grayscale, use hue 0, shades available: white gray75 gray50 gray25 black
+
+param2 = color*8 + shade
+
+Invalid colors resolve to white.
diff --git a/signs_lib/init.lua b/signs_lib/init.lua
index 6953e0e..b89cff7 100644
--- a/signs_lib/init.lua
+++ b/signs_lib/init.lua
@@ -572,7 +572,7 @@ function signs_lib.determine_sign_type(itemstack, placer, pointed_thing, locked)
local node=minetest.get_node(pointed_thing.under)
if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then
- return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack)
+ return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack, pointed_thing)
else
local above = pointed_thing.above
local under = pointed_thing.under
@@ -943,7 +943,7 @@ function signs_lib.register_fence_with_sign(fencename, fencewithsignname)
end
if def_under and def_under.on_rightclick then
- return def_under.on_rightclick(pointed_thing.under, node_under, placer, itemstack) or itemstack
+ return def_under.on_rightclick(pointed_thing.under, node_under, placer, itemstack, pointed_thing) or itemstack
elseif def_under and def_under.buildable_to then
minetest.add_node(pointed_thing.under, {name = fencename, param2 = fdir})
if not signs_lib.expect_infinite_stacks then
diff --git a/stained_glass/geany_run_script.sh b/stained_glass/geany_run_script.sh
new file mode 100644
index 0000000..05d787e
--- /dev/null
+++ b/stained_glass/geany_run_script.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+rm $0
+
+lua "init.lua"
+
+echo "
+
+------------------
+(program exited with code: $?)"
+
+
+echo "Press return to continue"
+#to be more compatible with shells like dash
+dummy_var=""
+read dummy_var
diff --git a/stained_glass/init.lua b/stained_glass/init.lua
index be804e9..6ffb61d 100644
--- a/stained_glass/init.lua
+++ b/stained_glass/init.lua
@@ -25,78 +25,206 @@ changes, and to resurrect the craft recipes. Still GPL'd as far as I'm concerned
August 2013 -- rewritten a bit by VanessaEzekowitz to further condense the code.
-==============================================================================
-
-
-Recipe for standard colors:
-
-dye
-super glow glass
-super glow glass
-super glow glass
-
-
-Recipe for pastel colors:
-
-light dye
-white paint
-super glow glass
-super glow glass
-super glow glass
-
-
-Recipe for faint colors:
-
-light dye
-white paint
-white paint
-super glow glass
-super glow glass
-super glow glass
-
-recipe for low-glow-stained-glass:
-as above, but substitute 'glow glass' for super glow glass.
-
-recipe for no-glow-stained-glass:
-as regular stained glass, but substitute plain 'glass' for super glow glass
-
-
-All recipes produce three stained glass blocks.
+January 2017 -- rewritten a bit more by Vanessa E. to use engine param2 colorization
+ and place-then-paint creation of colors. To get the pastel colors,
+ place super glow glass, right-click with dye to color it, then right-
+ click with Moreblocks' "sweeper" to "brush off" some of the color. Do
+ it again to change pastel to faint. Right click a pastel or faint with
+ some dye to re-color it (you have to dig and re-place if you want to
+ darken it). Crafting is no longer used to create the colors.
==============================================================================
]]--
-function makenode(arg)
+stainedglass = {}
+stainedglass.old_static_nodes = {}
+
+minetest.register_node("stained_glass:stained_glass", {
+ description = "Stained Glass",
+ drawtype = "glasslike",
+ tiles = { "stained_glass.png" },
+ paramtype = "light",
+ paramtype2 = "color",
+ palette = "unifieddyes_palette.png",
+ sunlight_propagates = true,
+ use_texture_alpha = true,
+ light_source = myglow,
+ is_ground_content = true,
+ walkable = true,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, not_in_creative_inventory=1},
+ sounds = default.node_sound_glass_defaults(),
+ drop = "moreblocks:super_glow_glass",
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local name = itemstack:get_name()
+ if name == "moreblocks:sweeper" then
+ minetest.swap_node(pos, { name = "stained_glass:pastel_stained_glass", param2 = node.param2 })
+ return
+ end
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "stained_glass:stained_glass")
+ end,
+ drop = "moreblocks:super_glow_glass"
+})
+
+minetest.override_item("moreblocks:super_glow_glass", {
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "stained_glass:stained_glass")
+ end
+})
+
+-- pastel and faint
+
+minetest.register_node("stained_glass:pastel_stained_glass", {
+ description = "Stained Glass",
+ drawtype = "glasslike",
+ tiles = { "stained_glass.png" },
+ paramtype = "light",
+ paramtype2 = "color",
+ palette = "stained_glass_pastels_palette.png",
+ sunlight_propagates = true,
+ use_texture_alpha = true,
+ light_source = myglow,
+ is_ground_content = true,
+ walkable = true,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, not_in_creative_inventory=1},
+ sounds = default.node_sound_glass_defaults(),
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local name = itemstack:get_name()
+ if name == "moreblocks:sweeper" then
+ minetest.swap_node(pos, { name = "stained_glass:faint_stained_glass", param2 = node.param2 })
+ return
+ end
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "stained_glass:pastel_stained_glass")
+ end,
+ drop = "moreblocks:super_glow_glass"
+})
+
+minetest.register_node("stained_glass:faint_stained_glass", {
+ description = "Stained Glass",
+ drawtype = "glasslike",
+ tiles = { "stained_glass.png" },
+ paramtype = "light",
+ paramtype2 = "color",
+ palette = "stained_glass_faint_palette.png",
+ sunlight_propagates = true,
+ use_texture_alpha = true,
+ light_source = myglow,
+ is_ground_content = true,
+ walkable = true,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, not_in_creative_inventory=1},
+ sounds = default.node_sound_glass_defaults(),
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "stained_glass:faint_stained_glass")
+ end,
+ drop = "moreblocks:super_glow_glass"
+})
+
+-- trap glass
+
+minetest.override_item("moreblocks:trap_super_glow_glass", {
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "stained_glass:stained_trap_glass")
+ end
+})
+
+minetest.register_node("stained_glass:stained_trap_glass", {
+ description = "Stained Trap-glass",
+ drawtype = "glasslike",
+ tiles = { "stained_glass.png" },
+ paramtype = "light",
+ paramtype2 = "color",
+ palette = "unifieddyes_palette.png",
+ sunlight_propagates = true,
+ use_texture_alpha = true,
+ light_source = myglow,
+ is_ground_content = true,
+ walkable = false,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, not_in_creative_inventory=1},
+ sounds = default.node_sound_glass_defaults(),
+ drop = "moreblocks:trap_super_glow_glass",
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local name = itemstack:get_name()
+ if name == "moreblocks:sweeper" then
+ minetest.swap_node(pos, { name = "stained_glass:pastel_stained_trap_glass", param2 = node.param2 })
+ return
+ end
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "stained_glass:stained_trap_glass")
+ end,
+ drop = "moreblocks:trap_super_glow_glass"
+})
+
+-- pastel and faint trap
+
+minetest.register_node("stained_glass:pastel_stained_trap_glass", {
+ description = "Stained Glass",
+ drawtype = "glasslike",
+ tiles = { "stained_glass.png" },
+ paramtype = "light",
+ paramtype2 = "color",
+ palette = "stained_glass_pastels_palette.png",
+ sunlight_propagates = true,
+ use_texture_alpha = true,
+ light_source = myglow,
+ is_ground_content = true,
+ walkable = true,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, not_in_creative_inventory=1},
+ sounds = default.node_sound_glass_defaults(),
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ local name = itemstack:get_name()
+ if name == "moreblocks:sweeper" then
+ minetest.swap_node(pos, { name = "stained_glass:faint_stained_trap_glass", param2 = node.param2 })
+ return
+ end
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "stained_glass:pastel_stained_glass")
+ end,
+ drop = "moreblocks:trap_super_glow_glass"
+})
+
+minetest.register_node("stained_glass:faint_stained_trap_glass", {
+ description = "Stained Glass",
+ drawtype = "glasslike",
+ tiles = { "stained_glass.png" },
+ paramtype = "light",
+ paramtype2 = "color",
+ palette = "stained_glass_faint_palette.png",
+ sunlight_propagates = true,
+ use_texture_alpha = true,
+ light_source = myglow,
+ is_ground_content = true,
+ walkable = true,
+ groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, not_in_creative_inventory=1},
+ sounds = default.node_sound_glass_defaults(),
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "stained_glass:faint_stained_glass")
+ end,
+ drop = "moreblocks:trap_super_glow_glass"
+})
+
+function stainedglass.makenode(arg)
local name=arg.blockname
local myglow=arg.glow
local myprefix=arg.prefix
local imagename=arg.imagename
local safe=arg.walkflag
- local Description
-
- local function tchelper(first, rest)
- return first:upper()..rest:lower()
- end -- from lua-users.org/wiki/StringRecipes
- -- above function is used to turn red_violet_s50 to 'Red Violet S50'
-
- --register item attributes
-
- Description=string.gsub("Stained Glass - " ..myprefix..name, "_", " ")
- Description=Description:gsub("(%a)([%w_']*)", tchelper)
-
- minetest.register_node("stained_glass:"..myprefix..name, {
- description = Description,
- drawtype = "glasslike",
- tiles = {"stained_glass_" .. imagename .. ".png"},
- paramtype = "light",
- sunlight_propagates = true,
- use_texture_alpha = true,
- light_source = myglow,
- is_ground_content = true,
- walkable=safe, -- if not safe, this is trapglass
- groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, not_in_creative_inventory=1},
- sounds = default.node_sound_glass_defaults()
- })
+
+ local function tchelper(first, rest)
+ return first:upper()..rest:lower()
+ end -- from lua-users.org/wiki/StringRecipes
+
+ table.insert(stainedglass.old_static_nodes, "stained_glass:"..name)
end
-- maybe someday, I can cleanly combine these two functions.
@@ -148,13 +276,7 @@ function stained_trapglass_define(arg)
myrecipe[6] = "dye:white"
end
- minetest.register_craft({
- type = "shapeless",
- output = "stained_glass:"..myprefix..name.." 3",
- recipe = myrecipe,
- })
-
- makenode{blockname=name, glow=myglow, prefix=myprefix, imagename=imagename, walkflag=false}
+ stainedglass.makenode{blockname=name, glow=myglow, prefix=myprefix, imagename=imagename, walkflag=false}
end
end
@@ -204,13 +326,7 @@ function stained_glass_define(arg)
myrecipe[6] = "dye:white"
end
- minetest.register_craft({
- type = "shapeless",
- output = "stained_glass:"..myprefix..name.." 3",
- recipe = myrecipe,
- })
-
- makenode{blockname=name, glow=myglow, prefix=myprefix, imagename=name, walkflag=true}
+ stainedglass.makenode{blockname=name, glow=myglow, prefix=myprefix, imagename=name, walkflag=true}
if myprefix == "" then
local aliasname
@@ -351,6 +467,68 @@ for i in ipairs(stained_glass_hues) do
end
end
+-- convert in-map static nodes to use param2 coloring
+
+minetest.register_lbm({
+ name = "stained_glass:convert_brickblocks",
+ label = "Convert static glass blocks to use param2 color",
+ run_at_every_load = true,
+ nodenames = stainedglass.old_static_nodes,
+ action = function(pos, node)
+ local name = node.name
+ local n = string.find(name, ":")
+ local color = string.sub(name, n + 1)
+ local h,s,v = unifieddyes.get_hsv(name)
+
+ if string.find(name, "trap") then
+ n = string.find(color, "_")
+ color = string.sub(color, n + 1)
+
+ if string.find(color, "pastel") then
+ n = string.find(color, "_")
+ color = string.sub(color, n + 1)
+ local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color)
+ minetest.set_node(pos, { name = "stained_glass:pastel_stained_trap_glass", param2 = paletteidx })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..v..h..s)
+ elseif string.find(color, "faint") then
+ n = string.find(color, "_")
+ color = string.sub(color, n + 1)
+ local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color)
+ minetest.set_node(pos, { name = "stained_glass:faint_stained_trap_glass", param2 = paletteidx })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..v..h..s)
+ else
+ local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color)
+ minetest.set_node(pos, { name = "stained_glass:stained_trap_glass", param2 = paletteidx })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..v..h..s)
+ end
+ else
+ if string.find(color, "pastel") then
+ n = string.find(color, "_")
+ color = string.sub(color, n + 1)
+ local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color)
+ minetest.set_node(pos, { name = "stained_glass:pastel_stained_glass", param2 = paletteidx })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..v..h..s)
+ elseif string.find(color, "faint") then
+ n = string.find(color, "_")
+ color = string.sub(color, n + 1)
+ local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color)
+ minetest.set_node(pos, { name = "stained_glass:faint_stained_glass", param2 = paletteidx })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..v..h..s)
+ else
+ local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color)
+ minetest.set_node(pos, { name = "stained_glass:stained_glass", param2 = paletteidx })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..v..h..s)
+ end
+ end
+ end
+})
+
print("[stained_glass] Loaded!")
diff --git a/stained_glass/textures/stained_glass.png b/stained_glass/textures/stained_glass.png
new file mode 100644
index 0000000..7d80b70
--- /dev/null
+++ b/stained_glass/textures/stained_glass.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_faint_palette.png b/stained_glass/textures/stained_glass_faint_palette.png
new file mode 100644
index 0000000..a019b95
--- /dev/null
+++ b/stained_glass/textures/stained_glass_faint_palette.png
Binary files differ
diff --git a/stained_glass/textures/stained_glass_pastels_palette.png b/stained_glass/textures/stained_glass_pastels_palette.png
new file mode 100644
index 0000000..e55c17a
--- /dev/null
+++ b/stained_glass/textures/stained_glass_pastels_palette.png
Binary files differ
diff --git a/teleport_request/init.lua b/teleport_request/init.lua
index a586769..cf843b0 100644
--- a/teleport_request/init.lua
+++ b/teleport_request/init.lua
@@ -136,7 +136,7 @@ local function tpc_send(player,coordinates)
minetest.chat_send_player(player, 'Teleporting to '..posx..','..posy..','..posz)
pname:setpos(find_free_position_near(target_coords))
minetest.sound_play("whoosh", {pos = target_coords, gain = 0.5, max_hear_distance = 10})
- parti2(target_coords)
+ --parti2(target_coords)
else
if minetest.check_player_privs(pname, {tp_tpc=true}) then
local protected = minetest.is_protected(target_coords,pname)
@@ -150,7 +150,7 @@ local function tpc_send(player,coordinates)
minetest.chat_send_player(player, 'Teleporting to '..posx..','..posy..','..posz)
pname:setpos(find_free_position_near(target_coords))
minetest.sound_play("whoosh", {pos = target_coords, gain = 0.5, max_hear_distance = 10})
- parti2(target_coords)
+ --parti2(target_coords)
else
minetest.chat_send_player(player, "Error: You do not have permission to teleport to coordinates.")
return
@@ -209,7 +209,7 @@ local function tpr_accept(name, param)
local target_coords=source:getpos()
target:setpos(find_free_position_near(target_coords))
minetest.sound_play("whoosh", {pos = target_coords, gain = 0.5, max_hear_distance = 10})
- parti2(target_coords)
+ --parti2(target_coords)
end
-- Teleport Jump - Relative Position Teleportation by number of nodes
@@ -237,17 +237,17 @@ local function tpj(player,param)
target_coords["x"] = target_coords["x"] + tonumber(args[2])
pname:setpos(find_free_position_near(target_coords))
minetest.sound_play("whoosh", {pos = target_coords, gain = 0.5, max_hear_distance = 10})
- parti2(target_coords)
+ --parti2(target_coords)
elseif args[1] == "y" then
target_coords["y"] = target_coords["y"] + tonumber(args[2])
pname:setpos(find_free_position_near(target_coords))
minetest.sound_play("whoosh", {pos = target_coords, gain = 0.5, max_hear_distance = 10})
- parti2(target_coords)
+ --parti2(target_coords)
elseif args[1] == "z" then
target_coords["z"] = target_coords["z"] + tonumber(args[2])
pname:setpos(find_free_position_near(target_coords))
minetest.sound_play("whoosh", {pos = target_coords, gain = 0.5, max_hear_distance = 10})
- parti2(target_coords)
+ --parti2(target_coords)
else
minetest.chat_send_player(player,"Not a valid axis. Valid options are X, Y or Z.")
end
@@ -304,13 +304,13 @@ minetest.register_chatcommand("tpc", {
minetest.register_chatcommand("tpj", {
description = "Teleport to relative position",
params = "<axis> <distance> | leave empty to see help message",
- privs = {interact=true},
+ privs = {interact=true,tp_tpc=true},
func = tpj
})
minetest.register_chatcommand("tpe", {
description = "Evade Enemy",
- privs = {interact=true},
+ privs = {interact=true,tp_tpc=true},
func = tpe
})
diff --git a/trafficlight/init.lua b/trafficlight/init.lua
index b55d467..2b2038b 100644
--- a/trafficlight/init.lua
+++ b/trafficlight/init.lua
@@ -75,6 +75,14 @@ streets.hbBox = {
{0.0625,-0.125,0.3125,0.125,-0.0625,0.5}, --Bottom Visor, Right
}
+streets.rrfbBox = {
+ {-0.375,0.05,0.5,0.375,0.3,0.75}, --Box
+
+ {-0.125, 0.125, 0.85, 0.125, 0.25, 0.75}, -- Pole Mounting Bracket
+
+ --These usually don't have visors
+}
+
streets.tlDigilineRules = {
{x= 0, y= 0, z=-1},
{x= 0, y= 0, z= 1},
@@ -84,6 +92,35 @@ streets.tlDigilineRules = {
{x= 0, y= 1, z= 0}
}
+local function ped_on_flash_start(pos)
+ local timer = minetest.get_node_timer(pos)
+ timer:set(99,0)
+end
+
+local function ped_on_flash_end(pos,record)
+ local objs = minetest.get_objects_inside_radius(pos,1.5)
+ for _,obj in pairs(objs) do
+ if obj:get_luaentity() and obj:get_luaentity().name == "streets:pedcountdown" then
+ obj:remove()
+ end
+ end
+ if not record then
+ timer:stop()
+ return
+ end
+ local timer = minetest.get_node_timer(pos)
+ local meta = minetest.get_meta(pos)
+ local lastflashtime = meta:get_int("lastflashtime")
+ local twoflashesago = meta:get_int("twoflashesago")
+ local flashtime = math.min(timer:get_elapsed(),99)
+ meta:set_int("twoflashesago",lastflashtime)
+ meta:set_int("lastflashtime",flashtime)
+ if math.abs(twoflashesago-lastflashtime) + math.abs(lastflashtime-flashtime) < 3 then
+ meta:set_int("flashtime",flashtime)
+ end
+ timer:stop()
+end
+
streets.tlSwitch = function(pos,to)
if not pos or not to then
return
@@ -100,6 +137,9 @@ streets.on_digiline_receive = function(pos, node, channel, msg)
local name = minetest.get_node(pos).name
if msg == "OFF" then
if name:find("pedlight") then
+ if name == "streets:pedlight_top_flashingdontwalk" then
+ ped_on_flash_end(pos,false)
+ end
streets.tlSwitch(pos,"streets:pedlight_top_off")
elseif name:find("extender_left") then
streets.tlSwitch(pos,"streets:trafficlight_top_extender_left_off")
@@ -113,11 +153,16 @@ streets.on_digiline_receive = function(pos, node, channel, msg)
streets.tlSwitch(pos,"streets:beacon_hybrid_off")
elseif name:find("beacon") then
streets.tlSwitch(pos,"streets:beacon_off")
+ elseif name:find("rrfb") then
+ streets.tlSwitch(pos,"streets:trafficlight_rrfb_off")
else
streets.tlSwitch(pos,"streets:trafficlight_top_off")
end
elseif msg == "GREEN" then
if name:find("pedlight") then
+ if name == "streets:pedlight_top_flashingdontwalk" then
+ ped_on_flash_end(pos,false)
+ end
streets.tlSwitch(pos,"streets:pedlight_top_walk")
elseif name:find("extender_left") then
streets.tlSwitch(pos,"streets:trafficlight_top_extender_left_green")
@@ -131,11 +176,16 @@ streets.on_digiline_receive = function(pos, node, channel, msg)
--Not Supported
elseif name:find("beacon") then
--Not Supported
+ elseif name:find("rrfb") then
+ --Not Supported
else
streets.tlSwitch(pos,"streets:trafficlight_top_green")
end
elseif msg == "RED" then
if name:find("pedlight") then
+ if name == "streets:pedlight_top_flashingdontwalk" then
+ ped_on_flash_end(pos,true)
+ end
streets.tlSwitch(pos,"streets:pedlight_top_dontwalk")
elseif name:find("extender_left") then
streets.tlSwitch(pos,"streets:trafficlight_top_extender_left_off")
@@ -148,12 +198,17 @@ streets.on_digiline_receive = function(pos, node, channel, msg)
elseif name:find("beacon_hybrid") then
streets.tlSwitch(pos,"streets:beacon_hybrid_red")
elseif name:find("beacon") then
+ streets.tlSwitch(pos,"streets:beacon_red")
+ elseif name:find("rrfb") then
--Not Supported
else
streets.tlSwitch(pos,"streets:trafficlight_top_red")
end
elseif msg == "WARN" then
if name:find("pedlight") then
+ if name ~= "streets:pedlight_top_flashingdontwalk" then
+ ped_on_flash_start(pos)
+ end
streets.tlSwitch(pos,"streets:pedlight_top_flashingdontwalk")
elseif name:find("extender_left") then
streets.tlSwitch(pos,"streets:trafficlight_top_extender_left_off")
@@ -167,16 +222,21 @@ streets.on_digiline_receive = function(pos, node, channel, msg)
streets.tlSwitch(pos,"streets:beacon_hybrid_flashyellow")
elseif name:find("beacon") then
streets.tlSwitch(pos,"streets:beacon_flashyellow")
+ elseif name:find("rrfb") then
+ streets.tlSwitch(pos,"streets:trafficlight_rrfb_on")
else
streets.tlSwitch(pos,"streets:trafficlight_top_warn")
end
elseif msg == "FLASHYELLOW" then
if name:find("pedlight") then
+ if name ~= "streets:pedlight_top_flashingdontwalk" then
+ ped_on_flash_start(pos)
+ end
streets.tlSwitch(pos,"streets:pedlight_top_flashingdontwalk")
elseif name:find("extender_left") then
- streets.tlSwitch(pos,"streets:trafficlight_top_extender_left_off")
+ streets.tlSwitch(pos,"streets:trafficlight_top_extender_left_flashyellow")
elseif name:find("extender_right") then
- streets.tlSwitch(pos,"streets:trafficlight_top_extender_right_off")
+ streets.tlSwitch(pos,"streets:trafficlight_top_extender_right_flashyellow")
elseif name:find("left") then
streets.tlSwitch(pos,"streets:trafficlight_top_left_warn")
elseif name:find("right") then
@@ -185,11 +245,16 @@ streets.on_digiline_receive = function(pos, node, channel, msg)
streets.tlSwitch(pos,"streets:beacon_hybrid_flashyellow")
elseif name:find("beacon") then
streets.tlSwitch(pos,"streets:beacon_flashyellow")
+ elseif name:find("rrfb") then
+ streets.tlSwitch(pos,"streets:trafficlight_rrfb_on")
else
streets.tlSwitch(pos,"streets:trafficlight_top_warn")
end
elseif msg == "YELLOW" then
if name:find("pedlight") then
+ if name ~= "streets:pedlight_top_flashingdontwalk" then
+ ped_on_flash_start(pos)
+ end
streets.tlSwitch(pos,"streets:pedlight_top_flashingdontwalk")
elseif name:find("extender_left") then
streets.tlSwitch(pos,"streets:trafficlight_top_extender_left_yellow")
@@ -202,12 +267,17 @@ streets.on_digiline_receive = function(pos, node, channel, msg)
elseif name:find("beacon_hybrid") then
streets.tlSwitch(pos,"streets:beacon_hybrid_yellow")
elseif name:find("beacon") then
+ streets.tlSwitch(pos,"streets:beacon_yellow")
+ elseif name:find("rrfb") then
--Not Supported
else
streets.tlSwitch(pos,"streets:trafficlight_top_yellow")
end
elseif msg == "FLASHRED" then
if name:find("pedlight") then
+ if name ~= "streets:pedlight_top_flashingdontwalk" then
+ ped_on_flash_start(pos)
+ end
streets.tlSwitch(pos,"streets:pedlight_top_flashingdontwalk")
elseif name:find("extender_left") then
streets.tlSwitch(pos,"streets:trafficlight_top_extender_left_off")
@@ -221,6 +291,8 @@ streets.on_digiline_receive = function(pos, node, channel, msg)
streets.tlSwitch(pos,"streets:beacon_hybrid_flashred")
elseif name:find("beacon") then
streets.tlSwitch(pos,"streets:beacon_flashred")
+ elseif name:find("rrfb") then
+ --Not Supported
else
streets.tlSwitch(pos,"streets:trafficlight_top_flashred")
end
@@ -465,6 +537,74 @@ minetest.register_node(":streets:beacon_off",{
end,
})
+minetest.register_node(":streets:beacon_red",{
+ drop = "streets:beacon_off",
+ drawtype="nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 1, level = 2, not_in_creative_inventory = 1},
+ light_source = 11,
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = streets.bBox
+ },
+ tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_b_red.png"},
+ digiline = {
+ receptor = {},
+ wire = {rules=streets.tlDigilineRules},
+ effector = {
+ action = function(pos, node, channel, msg)
+ streets.on_digiline_receive(pos, node, channel, msg)
+ end
+ }
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec", "field[channel;Channel;${channel}]")
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ if (fields.channel) then
+ minetest.get_meta(pos):set_string("channel", fields.channel)
+ minetest.get_meta(pos):set_string("state", "Off")
+ end
+ end,
+})
+
+minetest.register_node(":streets:beacon_yellow",{
+ drop = "streets:beacon_off",
+ drawtype="nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 1, level = 2, not_in_creative_inventory = 1},
+ light_source = 11,
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = streets.bBox
+ },
+ tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_yellow.png"},
+ digiline = {
+ receptor = {},
+ wire = {rules=streets.tlDigilineRules},
+ effector = {
+ action = function(pos, node, channel, msg)
+ streets.on_digiline_receive(pos, node, channel, msg)
+ end
+ }
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec", "field[channel;Channel;${channel}]")
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ if (fields.channel) then
+ minetest.get_meta(pos):set_string("channel", fields.channel)
+ minetest.get_meta(pos):set_string("state", "Off")
+ end
+ end,
+})
+
minetest.register_node(":streets:beacon_flashred",{
drop = "streets:beacon_off",
drawtype="nodebox",
@@ -609,6 +749,44 @@ minetest.register_node(":streets:trafficlight_top_extender_left_yellow",{
end,
})
+minetest.register_node(":streets:trafficlight_top_extender_left_flashyellow",{
+ drop = "streets:trafficlight_top_extender_left_off",
+ description = streets.S("Traffic Light Left-Turn Module"),
+ drawtype="nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 1, level = 2, not_in_creative_inventory = 1},
+ light_source = 11,
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = streets.tleBox
+ },
+ tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
+ name="streets_tl_left_warn.png",
+ animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.2},
+ }},
+ digiline = {
+ receptor = {},
+ wire = {rules=streets.tlDigilineRules},
+ effector = {
+ action = function(pos, node, channel, msg)
+ streets.on_digiline_receive(pos, node, channel, msg)
+ end
+ }
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec", "field[channel;Channel;${channel}]")
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ if (fields.channel) then
+ minetest.get_meta(pos):set_string("channel", fields.channel)
+ minetest.get_meta(pos):set_string("state", "Off")
+ end
+ end,
+})
+
minetest.register_node(":streets:trafficlight_top_extender_left_green",{
drop = "streets:trafficlight_top_extender_left_off",
description = streets.S("Traffic Light Left-Turn Module"),
@@ -714,6 +892,44 @@ minetest.register_node(":streets:trafficlight_top_extender_right_yellow",{
end,
})
+minetest.register_node(":streets:trafficlight_top_extender_right_flashyellow",{
+ drop = "streets:trafficlight_top_extender_right_off",
+ description = streets.S("Traffic Light Right-Turn Module"),
+ drawtype="nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 1, level = 2, not_in_creative_inventory = 1},
+ light_source = 11,
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = streets.tleBox
+ },
+ tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
+ name="streets_tl_right_warn.png",
+ animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.2},
+ }},
+ digiline = {
+ receptor = {},
+ wire = {rules=streets.tlDigilineRules},
+ effector = {
+ action = function(pos, node, channel, msg)
+ streets.on_digiline_receive(pos, node, channel, msg)
+ end
+ }
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec", "field[channel;Channel;${channel}]")
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ if (fields.channel) then
+ minetest.get_meta(pos):set_string("channel", fields.channel)
+ minetest.get_meta(pos):set_string("state", "Off")
+ end
+ end,
+})
+
minetest.register_node(":streets:trafficlight_top_extender_right_green",{
drop = "streets:trafficlight_top_extender_left_off",
description = streets.S("Traffic Light Right-Turn Module"),
@@ -749,6 +965,8 @@ minetest.register_node(":streets:trafficlight_top_extender_right_green",{
end,
})
+
+
minetest.register_node(":streets:pedlight_top_off",{
description = streets.S("Pedestrian Light"),
drawtype="nodebox",
@@ -859,6 +1077,53 @@ minetest.register_node(":streets:pedlight_top_flashingdontwalk",{
},
})
+minetest.register_entity(":streets:pedcountdown",{
+ physical = false,
+ collisionbox = {0,0,0,0,0,0},
+ visual = "upright_sprite",
+ textures = {"streets_pl_number_0l.png"}
+})
+
+minetest.register_abm({
+ label = "Update pedestrian countdown time display",
+ nodenames = {"streets:pedlight_top_flashingdontwalk"},
+ interval = 1,
+ chance = 1,
+ catch_up = false,
+ action = function(pos,node)
+ local meta = minetest.get_meta(pos)
+ local timer = minetest.get_node_timer(pos)
+ local totaltime = meta:get_int("flashtime")
+ local timesofar = timer:get_elapsed()
+ local timeleft = math.max(0,totaltime-timesofar)
+ local objs = minetest.get_objects_inside_radius(pos,1.5)
+ for _,obj in pairs(objs) do
+ if obj:get_luaentity() and obj:get_luaentity().name == "streets:pedcountdown" then
+ obj:remove()
+ end
+ end
+ local backdir = minetest.facedir_to_dir(node.param2)
+ local frontdir = vector.multiply(backdir,-1)
+ local entpos = vector.add(vector.multiply(frontdir,-0.495),pos)
+ local entity = minetest.add_entity(entpos,"streets:pedcountdown")
+ local yaw = 0
+ if backdir.z == -1 then
+ yaw = math.pi
+ elseif backdir.x == 1 then
+ yaw = math.pi / 2
+ elseif backdir.x == -1 then
+ yaw = math.pi / -2
+ end
+ --Circles are hard...
+ entity:setyaw(yaw)
+
+ local ldigit = math.floor(timeleft/10)
+ local rdigit = timeleft % 10
+ local tex = string.format("streets_pl_number_%01dl.png^streets_pl_number_%01dr.png",ldigit,rdigit)
+ entity:set_properties({textures={tex}})
+ end
+})
+
for _,i in pairs({"","_left","_right"}) do
minetest.register_node(":streets:trafficlight_top"..i.."_off",{
@@ -1025,6 +1290,94 @@ for _,i in pairs({"","_left","_right"}) do
})
end
+minetest.register_node(":streets:trafficlight_rrfb_off",{
+ description = streets.S("Rectangular Rapid Flashing Beacon"),
+ drawtype="nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 1, level = 2},
+ inventory_image = "streets_rrfb_inv.png",
+ light_source = 11,
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = streets.rrfbBox
+ },
+ tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_rrfb_off.png"},
+ digiline = {
+ receptor = {},
+ wire = {rules=streets.tlDigilineRules},
+ effector = {
+ action = function(pos, node, channel, msg)
+ streets.on_digiline_receive(pos, node, channel, msg)
+ end
+ }
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec", "field[channel;Channel;${channel}]")
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ if (fields.channel) then
+ minetest.get_meta(pos):set_string("channel", fields.channel)
+ minetest.get_meta(pos):set_string("state", "Off")
+ end
+ end,
+})
+
+minetest.register_node(":streets:trafficlight_rrfb_on",{
+ drop = "streets:trafficlight_rrfb_off",
+ drawtype="nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 1, level = 2, not_in_creative_inventory = 1},
+ light_source = 11,
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = streets.rrfbBox
+ },
+ tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
+ name="streets_rrfb_on.png",
+ animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=0.75},
+ }},
+ digiline = {
+ receptor = {},
+ wire = {rules=streets.tlDigilineRules},
+ effector = {
+ action = function(pos, node, channel, msg)
+ streets.on_digiline_receive(pos, node, channel, msg)
+ end
+ }
+ },
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec", "field[channel;Channel;${channel}]")
+ end,
+ on_receive_fields = function(pos, formname, fields, sender)
+ if (fields.channel) then
+ minetest.get_meta(pos):set_string("channel", fields.channel)
+ minetest.get_meta(pos):set_string("state", "Off")
+ end
+ end,
+})
+
+minetest.register_node(":streets:green_arrow",{
+ description = "Straight-through green arrow",
+ drawtype="nodebox",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ groups = {cracky = 1, level = 2},
+ inventory_image = "streets_trafficlight_inv_greenarrow.png",
+ light_source = 11,
+ sunlight_propagates = true,
+ node_box = {
+ type = "fixed",
+ fixed = streets.bBox
+ },
+ tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_straight_green.png"}
+})
+
minetest.register_craft({
output = "streets:trafficlight_top_off",
recipe = {
@@ -1096,6 +1449,24 @@ minetest.register_craft({
})
minetest.register_craft({
+ output = "streets:trafficlight_rrfb_off",
+ recipe = {
+ {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},
+ {"dye:yellow", "default:steel_ingot", "dye:yellow"},
+ {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}
+ }
+})
+
+minetest.register_craft({
+ output = "streets:green_arrow",
+ recipe = {
+ {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},
+ {"default:steel_ingot", "dye:green", "default:steel_ingot"},
+ {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}
+ }
+})
+
+minetest.register_craft({
output = "streets:digiline_distributor",
recipe = {
{"", "digilines:wire_std_00000000", ""},
diff --git a/trafficlight/textures/streets_b_red.png b/trafficlight/textures/streets_b_red.png
new file mode 100644
index 0000000..7419027
--- /dev/null
+++ b/trafficlight/textures/streets_b_red.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_number_0l.png b/trafficlight/textures/streets_pl_number_0l.png
new file mode 100644
index 0000000..99fc263
--- /dev/null
+++ b/trafficlight/textures/streets_pl_number_0l.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_number_0r.png b/trafficlight/textures/streets_pl_number_0r.png
new file mode 100644
index 0000000..6f9b143
--- /dev/null
+++ b/trafficlight/textures/streets_pl_number_0r.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_number_1l.png b/trafficlight/textures/streets_pl_number_1l.png
new file mode 100644
index 0000000..e35735a
--- /dev/null
+++ b/trafficlight/textures/streets_pl_number_1l.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_number_1r.png b/trafficlight/textures/streets_pl_number_1r.png
new file mode 100644
index 0000000..b878ae6
--- /dev/null
+++ b/trafficlight/textures/streets_pl_number_1r.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_number_2l.png b/trafficlight/textures/streets_pl_number_2l.png
new file mode 100644
index 0000000..d439aa9
--- /dev/null
+++ b/trafficlight/textures/streets_pl_number_2l.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_number_2r.png b/trafficlight/textures/streets_pl_number_2r.png
new file mode 100644
index 0000000..dd9b4be
--- /dev/null
+++ b/trafficlight/textures/streets_pl_number_2r.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_number_3l.png b/trafficlight/textures/streets_pl_number_3l.png
new file mode 100644
index 0000000..bdab896
--- /dev/null
+++ b/trafficlight/textures/streets_pl_number_3l.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_number_3r.png b/trafficlight/textures/streets_pl_number_3r.png
new file mode 100644
index 0000000..da7de9a
--- /dev/null
+++ b/trafficlight/textures/streets_pl_number_3r.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_number_4l.png b/trafficlight/textures/streets_pl_number_4l.png
new file mode 100644
index 0000000..91d1ff4
--- /dev/null
+++ b/trafficlight/textures/streets_pl_number_4l.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_number_4r.png b/trafficlight/textures/streets_pl_number_4r.png
new file mode 100644
index 0000000..5468b00
--- /dev/null
+++ b/trafficlight/textures/streets_pl_number_4r.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_number_5l.png b/trafficlight/textures/streets_pl_number_5l.png
new file mode 100644
index 0000000..4d21bbd
--- /dev/null
+++ b/trafficlight/textures/streets_pl_number_5l.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_number_5r.png b/trafficlight/textures/streets_pl_number_5r.png
new file mode 100644
index 0000000..9992ed9
--- /dev/null
+++ b/trafficlight/textures/streets_pl_number_5r.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_number_6l.png b/trafficlight/textures/streets_pl_number_6l.png
new file mode 100644
index 0000000..92f64be
--- /dev/null
+++ b/trafficlight/textures/streets_pl_number_6l.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_number_6r.png b/trafficlight/textures/streets_pl_number_6r.png
new file mode 100644
index 0000000..ba84f54
--- /dev/null
+++ b/trafficlight/textures/streets_pl_number_6r.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_number_7l.png b/trafficlight/textures/streets_pl_number_7l.png
new file mode 100644
index 0000000..9328d86
--- /dev/null
+++ b/trafficlight/textures/streets_pl_number_7l.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_number_7r.png b/trafficlight/textures/streets_pl_number_7r.png
new file mode 100644
index 0000000..444ce49
--- /dev/null
+++ b/trafficlight/textures/streets_pl_number_7r.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_number_8l.png b/trafficlight/textures/streets_pl_number_8l.png
new file mode 100644
index 0000000..9a78cd8
--- /dev/null
+++ b/trafficlight/textures/streets_pl_number_8l.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_number_8r.png b/trafficlight/textures/streets_pl_number_8r.png
new file mode 100644
index 0000000..727afad
--- /dev/null
+++ b/trafficlight/textures/streets_pl_number_8r.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_number_9l.png b/trafficlight/textures/streets_pl_number_9l.png
new file mode 100644
index 0000000..4830e0f
--- /dev/null
+++ b/trafficlight/textures/streets_pl_number_9l.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_number_9r.png b/trafficlight/textures/streets_pl_number_9r.png
new file mode 100644
index 0000000..dabea2a
--- /dev/null
+++ b/trafficlight/textures/streets_pl_number_9r.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_number_template.png b/trafficlight/textures/streets_pl_number_template.png
new file mode 100644
index 0000000..41ae2f1
--- /dev/null
+++ b/trafficlight/textures/streets_pl_number_template.png
Binary files differ
diff --git a/trafficlight/textures/streets_pl_walk.png b/trafficlight/textures/streets_pl_walk.png
index 392f024..4a79e54 100644
--- a/trafficlight/textures/streets_pl_walk.png
+++ b/trafficlight/textures/streets_pl_walk.png
Binary files differ
diff --git a/trafficlight/textures/streets_rrfb_inv.png b/trafficlight/textures/streets_rrfb_inv.png
new file mode 100644
index 0000000..8977926
--- /dev/null
+++ b/trafficlight/textures/streets_rrfb_inv.png
Binary files differ
diff --git a/trafficlight/textures/streets_rrfb_off.png b/trafficlight/textures/streets_rrfb_off.png
new file mode 100644
index 0000000..0d1ba1a
--- /dev/null
+++ b/trafficlight/textures/streets_rrfb_off.png
Binary files differ
diff --git a/trafficlight/textures/streets_rrfb_on.png b/trafficlight/textures/streets_rrfb_on.png
new file mode 100644
index 0000000..4b28c81
--- /dev/null
+++ b/trafficlight/textures/streets_rrfb_on.png
Binary files differ
diff --git a/trafficlight/textures/streets_tl_straight_green.png b/trafficlight/textures/streets_tl_straight_green.png
new file mode 100644
index 0000000..afbd506
--- /dev/null
+++ b/trafficlight/textures/streets_tl_straight_green.png
Binary files differ
diff --git a/trafficlight/textures/streets_trafficlight_inv_greenarrow.png b/trafficlight/textures/streets_trafficlight_inv_greenarrow.png
new file mode 100644
index 0000000..530a9b9
--- /dev/null
+++ b/trafficlight/textures/streets_trafficlight_inv_greenarrow.png
Binary files differ
diff --git a/unifiedbricks/init.lua b/unifiedbricks/init.lua
index 6ece9f3..369126a 100644
--- a/unifiedbricks/init.lua
+++ b/unifiedbricks/init.lua
@@ -7,26 +7,15 @@
--Obviously, offers the same colors in unifieddyes.
--Thanks go to VanessaE for making unifieddyes, gentextures.sh, etc.
+unifiedbricks = {}
+unifiedbricks.old_static_list = {}
+unifiedbricks.old_static_list_formals = {}
+
minetest.register_alias("unifieddyes:white","unifieddyes:white_paint")
minetest.register_alias("unifieddyes:lightgrey","unifieddyes:lightgrey_paint")
minetest.register_alias("unifieddyes:grey","unifieddyes:grey_paint")
minetest.register_alias("unifieddyes:darkgrey","unifieddyes:darkgrey_paint")
---1 indicates yes, 0 indicates no
---default:clay_lump + unifieddyes:color = unifiedbricks:color
-SETTING_allow_default_coloring = 1
---red, orange, yellow, lime, green, aqua, cyan, skyblue, blue, violet, magenta,
---redviolet, black, darkgrey, mediumgrey, lightgrey, white, respectively (by default)
-SETTING_allow_hues = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
---clayblock, clay, brick, singlecolor brickblock, multicolor brickblock, respectively (by default)
-SETTING_allow_types = {1,1,1,1,1}
---half saturation, full saturation, respectively (by default)
-SETTING_allow_saturation = {1,1}
---dark, medium, bright, light, respectively (by default)
-SETTING_allow_darkness = {1,1,1,1}
---dark, medium, bright, respectively (by default)
-SETTING_allow_multicolor = {1,1,1}
-
HUES = {
"red",
"orange",
@@ -101,616 +90,137 @@ FORMALDARKNESS = {
"Light "
}
-register_clay_block = function(name,formalname)
- minetest.register_node("unifiedbricks:" .. TYPES[1] .. name, {
- description = formalname .. FORMALTYPES[1],
- tiles = {"unifiedbricks_" .. TYPES[1] .. name .. ".png"},
- is_ground_content = true,
- groups = {crumbly=3, not_in_creative_inventory=1},
- drop = "unifiedbricks:" .. TYPES[2] .. name .. " 4",
+-- param2-coloring-enabled nodes
+
+minetest.register_node("unifiedbricks:brickblock", {
+ description = "Brick Block",
+ tiles = {
+ "unifiedbricks_brickblock.png",
+ { name = "unifiedbricks_mortar.png", color = 0xffffffff },
+ },
+ drawtype = "mesh",
+ mesh = "unifiedbricks_brick_block.obj",
+ paramtype = "light",
+ paramtype2 = "color",
+ palette = "unifieddyes_palette.png",
+ is_ground_content = true,
+ groups = {cracky=3, not_in_creative_inventory=1},
+ sounds = default.node_sound_stone_defaults(),
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "unifiedbricks:brickblock")
+ end,
+ drop = "default:brick"
+})
+
+minetest.override_item("default:brick", {
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "unifiedbricks:brickblock")
+ end
+})
+
+minetest.register_node("unifiedbricks:clayblock", {
+ description = "Clay Block",
+ tiles = {
+ "unifiedbricks_clayblock.png",
+ },
+ paramtype = "light",
+ paramtype2 = "color",
+ palette = "unifieddyes_palette.png",
+ is_ground_content = true,
+ groups = {crumbly=3, not_in_creative_inventory=1},
sounds = default.node_sound_dirt_defaults({
footstep = "",
}),
- })
-end
-register_clay_lump = function(name,formalname)
- minetest.register_craftitem("unifiedbricks:" .. TYPES[2] .. name, {
- description = formalname .. FORMALTYPES[2],
- inventory_image = "unifiedbricks_" .. TYPES[2] .. name .. ".png",
- groups = {not_in_creative_inventory=1}
- })
-end
-register_brick = function(name,formalname)
- minetest.register_craftitem("unifiedbricks:" .. TYPES[3] .. name, {
- description = formalname .. FORMALTYPES[3],
- inventory_image = "unifiedbricks_" .. TYPES[3] .. name .. ".png",
- groups = {not_in_creative_inventory=1}
- })
-end
-register_brick_block = function(name,formalname)
- minetest.register_node("unifiedbricks:" .. TYPES[4] .. name, {
- description = formalname .. FORMALTYPES[4],
- tiles = {"unifiedbricks_" .. TYPES[4] .. name .. ".png"},
- is_ground_content = true,
- groups = {cracky=3, not_in_creative_inventory=1},
- drop = "unifiedbricks:" .. TYPES[3] .. name .." 4",
- sounds = default.node_sound_stone_defaults(),
- })
+ after_dig_node = unifieddyes.after_dig_node,
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "unifiedbricks:clayblock")
+ end,
+ drop = "default:clay"
+})
+
+minetest.override_item("default:clay", {
+ on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
+ unifieddyes.on_rightclick(pos, node, clicker,
+ itemstack, pointed_thing, "unifiedbricks:clayblock")
+ end
+})
+
+
+-- static nodes
+
+unifiedbricks.register_old_static_block = function(name, formalname, blocktype)
+ table.insert(unifiedbricks.old_static_list, "unifiedbricks:"..blocktype.."_"..name)
+ table.insert(unifiedbricks.old_static_list_formals, formalname)
end
-register_multicolor = function(name,formalname,drop_one,drop_two,drop_three)
+
+unifiedbricks.register_multicolor = function(name, formalname, drop_one, drop_two, drop_three)
minetest.register_node("unifiedbricks:" .. TYPES[5] .. name, {
description = formalname .. FORMALTYPES[5],
tiles = {"unifiedbricks_" .. TYPES[5] .. name .. ".png"},
is_ground_content = true,
- groups = {cracky=3, not_in_creative_inventory=1},
- drop = {max_items = 4,
- items={
- {items={"unifiedbricks:" .. TYPES[3] .. drop_one .." 2"}},
- {items={"unifiedbricks:" .. TYPES[3] .. drop_two}},
- {items={"unifiedbricks:" .. TYPES[3] .. drop_three}}
- }},
- sounds = default.node_sound_stone_defaults(),
- })
-end
-
-register_clay_craft_default = function(color)
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color,
- recipe = {
- "default:clay_lump",
- "unifieddyes:" .. color,
- },
- replacements = { { "unifieddyes:"..color, "vessels:glass_bottle"} }
- })
-end
-
-register_clay_craft_bucketlast = function(color_combo,color_one,color_two)
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 2",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- },
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 1",
- recipe = {
- "unifieddyes:" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- },
- replacements = { { "unifieddyes:" .. color_one, "vessels:glass_bottle"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 1",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifieddyes:" .. color_two,
- },
- replacements = { { "unifieddyes:"..color_two, "bucket:bucket_empty"} }
- })
-end
-register_clay_craft_vessellast = function(color_combo,color_one,color_two)
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 2",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- },
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 1",
- recipe = {
- "unifieddyes:" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- },
- replacements = { { "unifieddyes:" .. color_one, "vessels:glass_bottle"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 1",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifieddyes:" .. color_two,
- },
- replacements = { { "unifieddyes:"..color_two, "vessels:glass_bottle"} }
- })
-end
-register_clay_craft_three = function(color_combo,color_one,color_two,color_three)
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 3",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- },
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 2",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifieddyes:" .. color_three,
+ groups = {cracky=3},
+ drop = {
+ max_items = 4,
+ items = {
+ items = {
+ { "default:brick",
+ "unifieddyes:"..drop_one,
+ "unifieddyes:"..drop_two,
+ "unifieddyes:"..drop_three,
+ rarity = 1 }
+ }
+ }
},
- replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 2",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifieddyes:" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- },
- replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 2",
- recipe = {
- "unifieddyes:" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- },
- replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 1",
- recipe = {
- "unifieddyes:" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifieddyes:" .. color_three,
- },
- replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 1",
- recipe = {
- "unifieddyes:" .. color_one,
- "unifieddyes:" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- },
- replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 1",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifieddyes:" .. color_two,
- "unifieddyes:" .. color_three,
- },
- replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"} }
- })
-end
-register_clay_craft_three_reducedfat_blackfirst = function(color_combo,color_one,color_two,color_three)
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 3",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- },
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 2",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifieddyes:" .. color_three,
- },
- replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 2",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifieddyes:" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- },
- replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 1",
- recipe = {
- "unifieddyes:" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifieddyes:" .. color_three,
- },
- replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 1",
- recipe = {
- "unifieddyes:" .. color_one,
- "unifieddyes:" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- },
- replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"} }
- })
-end
-register_clay_craft_three_reducedfat_whitefirst = function(color_combo,color_one,color_two,color_three)
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 3",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- },
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 2",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifieddyes:" .. color_three,
- },
- replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 2",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifieddyes:" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- },
- replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 1",
- recipe = {
- "unifieddyes:" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifieddyes:" .. color_three,
- },
- replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 1",
- recipe = {
- "unifieddyes:" .. color_one,
- "unifieddyes:" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- },
- replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"} }
- })
-end
-register_clay_craft_four_reducedfat_blackfirst = function(color_combo,color_one,color_two,color_three,color_four)
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 4",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- "unifiedbricks:clay_" .. color_four,
- },
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 3",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- "unifieddyes:" .. color_four,
- },
- replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"},{ "unifieddyes:"..color_four, "vessels:glass_bottle"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 3",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifieddyes:" .. color_three,
- "unifiedbricks:clay_" .. color_four,
- },
- replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"},{ "unifieddyes:"..color_four, "vessels:glass_bottle"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 3",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifieddyes:" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- "unifiedbricks:clay_" .. color_four,
- },
- replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"},{ "unifieddyes:"..color_four, "vessels:glass_bottle"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 2",
- recipe = {
- "unifieddyes:" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- "unifieddyes:" .. color_four,
- },
- replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"},{ "unifieddyes:"..color_four, "vessels:glass_bottle"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 2",
- recipe = {
- "unifieddyes:" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifieddyes:" .. color_three,
- "unifiedbricks:clay_" .. color_four,
- },
- replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"},{ "unifieddyes:"..color_four, "vessels:glass_bottle"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 2",
- recipe = {
- "unifieddyes:" .. color_one,
- "unifieddyes:" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- "unifiedbricks:clay_" .. color_four,
- },
- replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"},{ "unifieddyes:"..color_four, "vessels:glass_bottle"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 2",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifieddyes:" .. color_three,
- "unifieddyes:" .. color_four,
- },
- replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"},{ "unifieddyes:"..color_four, "vessels:glass_bottle"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 1",
- recipe = {
- "unifieddyes:" .. color_one,
- "unifieddyes:" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- "unifieddyes:" .. color_four,
- },
- replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"},{ "unifieddyes:"..color_four, "vessels:glass_bottle"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 1",
- recipe = {
- "unifieddyes:" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifieddyes:" .. color_three,
- "unifieddyes:" .. color_four,
- },
- replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"},{ "unifieddyes:"..color_four, "vessels:glass_bottle"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 1",
- recipe = {
- "unifieddyes:" .. color_one,
- "unifieddyes:" .. color_two,
- "unifieddyes:" .. color_three,
- "unifiedbricks:clay_" .. color_four,
- },
- replacements = { { "unifieddyes:"..color_one, "vessels:glass_bottle"},{ "unifieddyes:"..color_two, "vessels:glass_bottle"},{ "unifieddyes:"..color_three, "bucket:bucket_empty"},{ "unifieddyes:"..color_four, "vessels:glass_bottle"} }
- })
-end
-register_clay_craft_four_reducedfat_whitefirst = function(color_combo,color_one,color_two,color_three,color_four)
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 4",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- "unifiedbricks:clay_" .. color_four,
- },
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 3",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- "unifieddyes:" .. color_four,
- },
- replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"},{ "unifieddyes:"..color_four, "bucket:bucket_empty"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 3",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifieddyes:" .. color_three,
- "unifiedbricks:clay_" .. color_four,
- },
- replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"},{ "unifieddyes:"..color_four, "bucket:bucket_empty"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 3",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifieddyes:" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- "unifiedbricks:clay_" .. color_four,
- },
- replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"},{ "unifieddyes:"..color_four, "bucket:bucket_empty"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 2",
- recipe = {
- "unifieddyes:" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- "unifieddyes:" .. color_four,
- },
- replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"},{ "unifieddyes:"..color_four, "bucket:bucket_empty"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 2",
- recipe = {
- "unifieddyes:" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifieddyes:" .. color_three,
- "unifiedbricks:clay_" .. color_four,
- },
- replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"},{ "unifieddyes:"..color_four, "bucket:bucket_empty"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 2",
- recipe = {
- "unifieddyes:" .. color_one,
- "unifieddyes:" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- "unifiedbricks:clay_" .. color_four,
- },
- replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"},{ "unifieddyes:"..color_four, "bucket:bucket_empty"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 2",
- recipe = {
- "unifiedbricks:clay_" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifieddyes:" .. color_three,
- "unifieddyes:" .. color_four,
- },
- replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"},{ "unifieddyes:"..color_four, "bucket:bucket_empty"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 1",
- recipe = {
- "unifieddyes:" .. color_one,
- "unifieddyes:" .. color_two,
- "unifiedbricks:clay_" .. color_three,
- "unifieddyes:" .. color_four,
- },
- replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"},{ "unifieddyes:"..color_four, "bucket:bucket_empty"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 1",
- recipe = {
- "unifieddyes:" .. color_one,
- "unifiedbricks:clay_" .. color_two,
- "unifieddyes:" .. color_three,
- "unifieddyes:" .. color_four,
- },
- replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"},{ "unifieddyes:"..color_four, "bucket:bucket_empty"} }
- })
- minetest.register_craft( {
- type = "shapeless",
- output = "unifiedbricks:clay_" .. color_combo .. " 1",
- recipe = {
- "unifieddyes:" .. color_one,
- "unifieddyes:" .. color_two,
- "unifieddyes:" .. color_three,
- "unifiedbricks:clay_" .. color_four,
- },
- replacements = { { "unifieddyes:"..color_one, "bucket:bucket_empty"},{ "unifieddyes:"..color_two, "bucket:bucket_empty"},{ "unifieddyes:"..color_three, "vessels:glass_bottle"},{ "unifieddyes:"..color_four, "bucket:bucket_empty"} }
+ sounds = default.node_sound_stone_defaults(),
})
end
-register_clay_block_craft = function(color)
- minetest.register_craft({
- output = "unifiedbricks:" .. TYPES[1] .. color,
- recipe = {
- {"unifiedbricks:" .. TYPES[2] .. color, "unifiedbricks:" .. TYPES[2] .. color},
- {"unifiedbricks:" .. TYPES[2] .. color, "unifiedbricks:" .. TYPES[2] .. color},
- }
- })
-end
-register_brick_cooking = function(color)
- minetest.register_craft({
- type = "cooking",
- output = "unifiedbricks:" .. TYPES[3] .. color,
- recipe = "unifiedbricks:" .. TYPES[2] .. color,
- })
-end
-register_brick_block_craft = function(color)
- minetest.register_craft({
- output = "unifiedbricks:" .. TYPES[4] .. color,
- recipe = {
- {"unifiedbricks:" .. TYPES[3] .. color, "unifiedbricks:" .. TYPES[3] .. color},
- {"unifiedbricks:" .. TYPES[3] .. color, "unifiedbricks:" .. TYPES[3] .. color},
- }
- })
-end
-register_multicolor_craft = function(name,drop_one,drop_two,drop_three)
+unifiedbricks.register_multicolor_craft = function(name, dye_one, dye_two, dye_three)
minetest.register_craft( {
type = "shapeless",
output = "unifiedbricks:multicolor_" .. name,
recipe = {
- "unifiedbricks:".. TYPES[3] .. drop_one,
- "unifiedbricks:".. TYPES[3] .. drop_one,
- "unifiedbricks:".. TYPES[3] .. drop_two,
- "unifiedbricks:".. TYPES[3] .. drop_three,
+ "default:brick",
+ "unifieddyes:"..dye_one,
+ "unifieddyes:"..dye_two,
+ "unifieddyes:"..dye_three
},
})
end
---REGISTERS ALL NODES AND CRAFTITEMS EXCEPT MULTICOLOR BRICK BLOCKS
+--REGISTERS ALL STATIC NODES EXCEPT MULTICOLOR BRICK BLOCKS
for i = 1,17 do
- if SETTING_allow_hues[i] == 1 then
- for j = 1,4 do
- if SETTING_allow_types[j] == 1 then
- if i > 12 then
- formalname = FORMALHUES[i]
- name = HUES[i]
- if j == 1 then register_clay_block(name,formalname)
- elseif j == 2 then register_clay_lump(name,formalname)
- elseif j == 3 then register_brick(name,formalname)
- else register_brick_block(name,formalname) end
+ for j = 1,4 do
+ if i > 12 then
+ formalname = FORMALHUES[i]
+ name = HUES[i]
+ if j == 1 then
+ unifiedbricks.register_old_static_block(name, formalname, "clayblock")
+ elseif j == 4 then
+ unifiedbricks.register_old_static_block(name, formalname, "brickblock")
+ end
+ else
+ for k = 1,4 do
+ if k == 4 then
+ formalname = FORMALDARKNESS[k] .. FORMALHUES[i]
+ name = DARKNESS[k] .. HUES[i]
+ if j == 1 then
+ unifiedbricks.register_old_static_block(name, formalname, "clayblock")
+ elseif j == 4 then
+ unifiedbricks.register_old_static_block(name, formalname, "brickblock")
+ end
else
- for k = 1,4 do
- if SETTING_allow_darkness[k] == 1 then
- if k == 4 then
- formalname = FORMALDARKNESS[k] .. FORMALHUES[i]
- name = DARKNESS[k] .. HUES[i]
- if j == 1 then register_clay_block(name,formalname)
- elseif j == 2 then register_clay_lump(name,formalname)
- elseif j == 3 then register_brick(name,formalname)
- else register_brick_block(name,formalname) end
- else
- for l = 1,2 do
- if SETTING_allow_saturation[l] == 1 then
- formalname = FORMALDARKNESS[k] .. FORMALHUES[i] .. FORMALSATURATION[l]
- name = DARKNESS[k] .. HUES[i] .. SATURATION[l]
- if j == 1 then register_clay_block(name,formalname)
- elseif j == 2 then register_clay_lump(name,formalname)
- elseif j == 3 then register_brick(name,formalname)
- else register_brick_block(name,formalname) end
- end
- end
- end
+ for l = 1,2 do
+ formalname = FORMALDARKNESS[k] .. FORMALHUES[i] .. FORMALSATURATION[l]
+ name = DARKNESS[k] .. HUES[i] .. SATURATION[l]
+ if j == 1 then
+ unifiedbricks.register_old_static_block(name, formalname, "clayblock")
+ elseif j == 4 then
+ unifiedbricks.register_old_static_block(name, formalname, "brickblock")
end
end
end
@@ -719,197 +229,88 @@ for i = 1,17 do
end
end
---REGISTERS ALL CLAY BLOCK CRAFTING RECIPES
-if SETTING_allow_types[1] + SETTING_allow_types[2] == 2 then
- for i = 1,17 do
- if SETTING_allow_hues[i] == 1 then
- if i > 12 then
- register_clay_block_craft(HUES[i])
- else
- for k = 1,4 do
- if SETTING_allow_darkness[k] == 1 then
- if k == 4 then
- register_clay_block_craft(DARKNESS[k] .. HUES[i])
- else
- for l = 1,2 do
- if SETTING_allow_saturation[l] == 1 then
- register_clay_block_craft(DARKNESS[k] .. HUES[i] .. SATURATION[l])
- end
- end
- end
- end
- end
- end
- end
- end
-end
+--REGISTERS ALL MULTICOLOR EVERYTHING
+for i = 1,13 do
+ if i == 13 then
+ name = HUES[14]
+ formalname = FORMALHUES[14]
+ brick_one = HUES[14]
+ brick_two = HUES[15]
+ brick_three = HUES[16]
+ unifiedbricks.register_multicolor(name, formalname, brick_one, brick_two, brick_three)
+ unifiedbricks.register_multicolor_craft(name, brick_one, brick_two, brick_three)
---REGISTERS ALL CLAY LUMP CRAFTING RECIPES
-if SETTING_allow_types[2] == 1 then
- if SETTING_allow_saturation[2] + SETTING_allow_darkness[3] == 2 then
- if SETTING_allow_hues[2] == 1 then register_clay_craft_vessellast("orange","yellow","red") end
- if SETTING_allow_hues[4] == 1 then register_clay_craft_vessellast("lime","green","yellow") end
- if SETTING_allow_hues[5] == 1 then register_clay_craft_vessellast("green","blue","yellow") end
- if SETTING_allow_hues[6] == 1 then register_clay_craft_vessellast("aqua","green","cyan") end
- if SETTING_allow_hues[7] == 1 then register_clay_craft_vessellast("cyan","blue","green") end
- if SETTING_allow_hues[8] == 1 then register_clay_craft_vessellast("skyblue","cyan","blue") end
- if SETTING_allow_hues[10] == 1 then register_clay_craft_vessellast("violet","magenta","blue") end
- if SETTING_allow_hues[11] == 1 then register_clay_craft_vessellast("magenta","blue","red") end
- if SETTING_allow_hues[12] == 1 then register_clay_craft_vessellast("redviolet","magenta","red") end
+ name = HUES[15]
+ formalname = FORMALHUES[15]
+ brick_one = HUES[15]
+ brick_two = HUES[14]
+ brick_three = HUES[16]
+ unifiedbricks.register_multicolor(name, formalname, brick_one, brick_two, brick_three)
+ unifiedbricks.register_multicolor_craft(name, brick_one, brick_two, brick_three)
- if SETTING_allow_hues[14] == 1 then register_clay_craft_three_reducedfat_blackfirst("darkgrey","black","black","white") end
- if SETTING_allow_hues[15] == 1 then register_clay_craft_bucketlast("grey","black","white") end
- if SETTING_allow_hues[16] == 1 then register_clay_craft_three_reducedfat_whitefirst("lightgrey","white","white","black") end
-
- if SETTING_allow_default_coloring == 1 then
- for i = 13,17 do
- if SETTING_allow_hues[i] == 1 then register_clay_craft_default(HUES[i]) end
- end
- end
- end
-
- for i = 1,12 do
- if SETTING_allow_hues[i] == 1 then
- if SETTING_allow_darkness[1] + SETTING_allow_saturation[1] == 2 then --dark s50
- register_clay_craft_bucketlast(DARKNESS[1] .. HUES[i] .. SATURATION[1],HUES[i],"darkgrey")
- register_clay_craft_four_reducedfat_blackfirst(DARKNESS[1] .. HUES[i] .. SATURATION[1],"black","black","white",HUES[i])
- if SETTING_allow_default_coloring == 1 then register_clay_craft_default(DARKNESS[1] .. HUES[i] .. SATURATION[1]) end end
- if SETTING_allow_darkness[1] + SETTING_allow_saturation[2] == 2 then --dark
- register_clay_craft_three_reducedfat_blackfirst(DARKNESS[1] .. HUES[i] .. SATURATION[2],"black","black",HUES[i])
- if SETTING_allow_default_coloring == 1 then register_clay_craft_default(DARKNESS[1] .. HUES[i] .. SATURATION[2]) end end
- if SETTING_allow_darkness[2] + SETTING_allow_saturation[1] == 2 then --medium s50
- register_clay_craft_bucketlast(DARKNESS[2] .. HUES[i] .. SATURATION[1],HUES[i],"grey")
- register_clay_craft_three(DARKNESS[2] .. HUES[i] .. SATURATION[1],HUES[i],"black","white")
- if SETTING_allow_default_coloring == 1 then register_clay_craft_default(DARKNESS[2] .. HUES[i] .. SATURATION[1]) end end
- if SETTING_allow_darkness[2] + SETTING_allow_saturation[2] == 2 then --medium
- register_clay_craft_vessellast(DARKNESS[2] .. HUES[i] .. SATURATION[2],HUES[i],"black")
- if SETTING_allow_default_coloring == 1 then register_clay_craft_default(DARKNESS[2] .. HUES[i] .. SATURATION[2]) end end
- if SETTING_allow_darkness[3] + SETTING_allow_saturation[1] == 2 then --bright s50
- register_clay_craft_bucketlast(DARKNESS[3] .. HUES[i] .. SATURATION[1],HUES[i],"lightgrey")
- register_clay_craft_four_reducedfat_whitefirst(DARKNESS[3] .. HUES[i] .. SATURATION[1],"white","white","black",HUES[i])
- if SETTING_allow_default_coloring == 1 then register_clay_craft_default(DARKNESS[3] .. HUES[i] .. SATURATION[1]) end end
- if SETTING_allow_darkness[3] + SETTING_allow_saturation[2] == 2 then --bright
- if SETTING_allow_default_coloring == 1 then register_clay_craft_default(DARKNESS[3] .. HUES[i] .. SATURATION[2]) end end
- if SETTING_allow_darkness[4] + SETTING_allow_saturation[2] == 2 then --light
- register_clay_craft_bucketlast(DARKNESS[4] .. HUES[i] .. SATURATION[2],HUES[i],"white")
- if SETTING_allow_default_coloring == 1 then register_clay_craft_default(DARKNESS[4] .. HUES[i] .. SATURATION[2]) end end
- end
- end
-end
+ name = HUES[16]
+ formalname = FORMALHUES[16]
+ brick_one = HUES[16]
+ brick_two = HUES[14]
+ brick_three = HUES[15]
+ unifiedbricks.register_multicolor(name, formalname, brick_one, brick_two, brick_three)
+ unifiedbricks.register_multicolor_craft(name, brick_one, brick_two, brick_three)
+ else
+ name = DARKNESS[1] .. HUES[i]
+ formalname = FORMALDARKNESS[1] .. FORMALHUES[i]
+ brick_one = DARKNESS[1] .. HUES[i]
+ brick_two = DARKNESS[2] .. HUES[i]
+ brick_three = DARKNESS[2] .. HUES[i] .. SATURATION[1]
+ unifiedbricks.register_multicolor(name, formalname, brick_one, brick_two, brick_three)
+ unifiedbricks.register_multicolor_craft(name, brick_one, brick_two, brick_three)
---REGISTERS ALL BRICK COOKING RECIPES
-if SETTING_allow_types[2] + SETTING_allow_types[3] == 2 then
- for i = 1,17 do
- if SETTING_allow_hues[i] == 1 then
- if i > 12 then
- register_brick_cooking(HUES[i])
- else
- for k = 1,4 do
- if SETTING_allow_darkness[k] == 1 then
- if k == 4 then
- register_brick_cooking(DARKNESS[k] .. HUES[i])
- else
- for l = 1,2 do
- if SETTING_allow_saturation[l] == 1 then
- register_brick_cooking(DARKNESS[k] .. HUES[i] .. SATURATION[l])
- end
- end
- end
- end
- end
- end
- end
- end
-end
+ name = DARKNESS[2] .. HUES[i]
+ formalname = FORMALDARKNESS[2] .. FORMALHUES[i]
+ brick_one = DARKNESS[2] .. HUES[i]
+ brick_two = DARKNESS[1] .. HUES[i]
+ brick_three = DARKNESS[3] .. HUES[i] .. SATURATION[1]
+ unifiedbricks.register_multicolor(name, formalname, brick_one, brick_two, brick_three)
+ unifiedbricks.register_multicolor_craft(name, brick_one, brick_two, brick_three)
---REGISTERS ALL BRICK BLOCK CRAFTING RECIPES
-if SETTING_allow_types[3] + SETTING_allow_types[4] == 2 then
- for i = 1,17 do
- if SETTING_allow_hues[i] == 1 then
- if i > 12 then
- register_brick_block_craft(HUES[i])
- else
- for k = 1,4 do
- if SETTING_allow_darkness[k] == 1 then
- if k == 4 then
- register_brick_block_craft(DARKNESS[k] .. HUES[i])
- else
- for l = 1,2 do
- if SETTING_allow_saturation[l] == 1 then
- register_brick_block_craft(DARKNESS[k] .. HUES[i] .. SATURATION[l])
- end
- end
- end
- end
- end
- end
- end
+ name = DARKNESS[4] .. HUES[i]
+ formalname = FORMALDARKNESS[4] .. FORMALHUES[i]
+ brick_one = DARKNESS[3] .. HUES[i]
+ brick_two = DARKNESS[4] .. HUES[i]
+ brick_three = DARKNESS[2] .. HUES[i] .. SATURATION[1]
+ unifiedbricks.register_multicolor(name, formalname, brick_one, brick_two, brick_three)
+ unifiedbricks.register_multicolor_craft(name, brick_one, brick_two, brick_three)
end
end
---REGISTERS ALL MULTICOLOR EVERYTHING
-if SETTING_allow_types[5] == 1 then
- for i = 1,13 do
- if SETTING_allow_hues[i] == 1 then
- if i == 13 then
- if SETTING_allow_multicolor[1] == 1 then
- name = HUES[14]
- formalname = FORMALHUES[14]
- brick_one = HUES[14]
- brick_two = HUES[15]
- brick_three = HUES[16]
- register_multicolor(name,formalname,brick_one,brick_two,brick_three)
- register_multicolor_craft(name,brick_one,brick_two,brick_three)
- end
- if SETTING_allow_multicolor[2] == 1 then
- name = HUES[15]
- formalname = FORMALHUES[15]
- brick_one = HUES[15]
- brick_two = HUES[14]
- brick_three = HUES[16]
- register_multicolor(name,formalname,brick_one,brick_two,brick_three)
- register_multicolor_craft(name,brick_one,brick_two,brick_three)
- end
- if SETTING_allow_multicolor[3] == 1 then
- name = HUES[16]
- formalname = FORMALHUES[16]
- brick_one = HUES[16]
- brick_two = HUES[14]
- brick_three = HUES[15]
- register_multicolor(name,formalname,brick_one,brick_two,brick_three)
- register_multicolor_craft(name,brick_one,brick_two,brick_three)
- end
- else
- if SETTING_allow_multicolor[1] == 1 then
- name = DARKNESS[1] .. HUES[i]
- formalname = FORMALDARKNESS[1] .. FORMALHUES[i]
- brick_one = DARKNESS[1] .. HUES[i]
- brick_two = DARKNESS[2] .. HUES[i]
- brick_three = DARKNESS[2] .. HUES[i] .. SATURATION[1]
- register_multicolor(name,formalname,brick_one,brick_two,brick_three)
- register_multicolor_craft(name,brick_one,brick_two,brick_three)
- end
- if SETTING_allow_multicolor[2] == 1 then
- name = DARKNESS[2] .. HUES[i]
- formalname = FORMALDARKNESS[2] .. FORMALHUES[i]
- brick_one = DARKNESS[2] .. HUES[i]
- brick_two = DARKNESS[1] .. HUES[i]
- brick_three = DARKNESS[3] .. HUES[i] .. SATURATION[1]
- register_multicolor(name,formalname,brick_one,brick_two,brick_three)
- register_multicolor_craft(name,brick_one,brick_two,brick_three)
- end
- if SETTING_allow_multicolor[3] == 1 then
- name = DARKNESS[4] .. HUES[i]
- formalname = FORMALDARKNESS[4] .. FORMALHUES[i]
- brick_one = DARKNESS[3] .. HUES[i]
- brick_two = DARKNESS[4] .. HUES[i]
- brick_three = DARKNESS[2] .. HUES[i] .. SATURATION[1]
- register_multicolor(name,formalname,brick_one,brick_two,brick_three)
- register_multicolor_craft(name,brick_one,brick_two,brick_three)
- end
- end
+-- convert in-map static nodes to use param2 coloring
+
+minetest.register_lbm({
+ name = "unifiedbricks:convert_brickblocks",
+ label = "Convert clay blocks and single-color brick blocks to use param2 color",
+ run_at_every_load = true,
+ nodenames = unifiedbricks.old_static_list,
+ action = function(pos, node)
+
+ local name = node.name
+ local t = string.find(name, "_")
+ local type = string.sub(name, 1, t - 1)
+ local color1 = string.sub(name, t + 1)
+
+ local color2 = string.gsub(color1, "grey", "_grey")
+ if color2 == "_grey" then color2 = "grey" end
+
+ local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color2)
+
+ if string.find(type, "brickblock") then
+ minetest.set_node(pos, { name = "unifiedbricks:brickblock", param2 = paletteidx })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..color1)
+ elseif string.find(type, "clayblock") then
+ minetest.set_node(pos, { name = "unifiedbricks:clayblock", param2 = paletteidx })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..color1)
end
end
-end
+})
print("[UnifiedBricks] Loaded!")
diff --git a/unifiedbricks/models/unifiedbricks_brick_block.obj b/unifiedbricks/models/unifiedbricks_brick_block.obj
new file mode 100644
index 0000000..9c70760
--- /dev/null
+++ b/unifiedbricks/models/unifiedbricks_brick_block.obj
@@ -0,0 +1,44 @@
+# 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
diff --git a/unifiedbricks/textures/unifiedbricks_brickblock.png b/unifiedbricks/textures/unifiedbricks_brickblock.png
new file mode 100644
index 0000000..811ed60
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_brickblock.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_clayblock.png b/unifiedbricks/textures/unifiedbricks_clayblock.png
new file mode 100644
index 0000000..9187684
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_clayblock.png
Binary files differ
diff --git a/unifiedbricks/textures/unifiedbricks_mortar.png b/unifiedbricks/textures/unifiedbricks_mortar.png
new file mode 100644
index 0000000..6d52335
--- /dev/null
+++ b/unifiedbricks/textures/unifiedbricks_mortar.png
Binary files differ
diff --git a/unifieddyes/init.lua b/unifieddyes/init.lua
index fc36199..0ed6cb1 100644
--- a/unifieddyes/init.lua
+++ b/unifieddyes/init.lua
@@ -29,6 +29,10 @@ with this program; if not, write to the Free Software Foundation, Inc.,
--=====================================================================
+unifieddyes = {}
+
+local creative_mode = minetest.setting_getbool("creative_mode")
+
-- Boilerplate to support localized strings if intllib mod is installed.
local S
if minetest.get_modpath("intllib") then
@@ -37,6 +41,354 @@ else
S = function(s) return s end
end
+-- helper functions for other mods that use this one
+
+local HUES = {
+ "red",
+ "orange",
+ "yellow",
+ "lime",
+ "green",
+ "aqua",
+ "cyan",
+ "skyblue",
+ "blue",
+ "violet",
+ "magenta",
+ "redviolet"
+}
+
+local HUES2 = {
+ "Red",
+ "Orange",
+ "Yellow",
+ "Lime",
+ "Green",
+ "Aqua",
+ "Cyan",
+ "Sky-blue",
+ "Blue",
+ "Violet",
+ "Magenta",
+ "Red-violet"
+}
+
+-- code borrowed from homedecor
+
+function unifieddyes.select_node(pointed_thing)
+ 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]
+ end
+ return def and pos, def
+end
+
+function unifieddyes.is_buildable_to(placer_name, ...)
+ for _, pos in ipairs({...}) do
+ local node = minetest.get_node_or_nil(pos)
+ local def = node and minetest.registered_nodes[node.name]
+ if not (def and def.buildable_to) or minetest.is_protected(pos, placer_name) then
+ return false
+ end
+ end
+ return true
+end
+
+function unifieddyes.get_hsv(name) -- expects a node/item name
+ local hue = ""
+ local a,b
+ for _, i in ipairs(HUES) do
+ a,b = string.find(name, "_"..i)
+ if a and not ( string.find(name, "_redviolet") and i == "red" ) then
+ hue = i
+ break
+ end
+ end
+
+ if string.find(name, "_light_grey") then hue = "light_grey"
+ elseif string.find(name, "_lightgrey") then hue = "light_grey"
+ elseif string.find(name, "_dark_grey") then hue = "dark_grey"
+ elseif string.find(name, "_darkgrey") then hue = "dark_grey"
+ elseif string.find(name, "_grey") then hue = "grey"
+ elseif string.find(name, "_white") then hue = "white"
+ elseif string.find(name, "_black") then hue = "black"
+ end
+
+ local sat = ""
+ if string.find(name, "_s50") then sat = "_s50" end
+
+ local val = ""
+ if string.find(name, "dark_") then val = "dark_" end
+ if string.find(name, "medium_") then val = "medium_" end
+ if string.find(name, "light_") then val = "light_" end
+
+ return hue, sat, val
+end
+
+-- code borrowed from cheapie's plasticbox mod
+
+function unifieddyes.getpaletteidx(color, is_color_fdir)
+ local origcolor = color
+ local aliases = {
+ ["pink"] = "light_red",
+ ["brown"] = "dark_orange",
+ }
+
+ local grayscale = {
+ ["white"] = 1,
+ ["light_grey"] = 2,
+ ["grey"] = 3,
+ ["dark_grey"] = 4,
+ ["black"] = 5,
+ }
+
+ local grayscale_wallmounted = {
+ ["white"] = 0,
+ ["light_grey"] = 1,
+ ["grey"] = 2,
+ ["dark_grey"] = 3,
+ ["black"] = 4,
+ }
+
+ local hues = {
+ ["red"] = 1,
+ ["orange"] = 2,
+ ["yellow"] = 3,
+ ["lime"] = 4,
+ ["green"] = 5,
+ ["aqua"] = 6,
+ ["cyan"] = 7,
+ ["skyblue"] = 8,
+ ["blue"] = 9,
+ ["violet"] = 10,
+ ["magenta"] = 11,
+ ["redviolet"] = 12,
+ }
+
+ local hues_wallmounted = {
+ ["red"] = 0,
+ ["orange"] = 1,
+ ["yellow"] = 2,
+ ["green"] = 3,
+ ["cyan"] = 4,
+ ["blue"] = 5,
+ ["violet"] = 6,
+ ["magenta"] = 7
+ }
+
+ local shades = {
+ [""] = 1,
+ ["s50"] = 2,
+ ["light"] = 3,
+ ["medium"] = 4,
+ ["mediums50"] = 5,
+ ["dark"] = 6,
+ ["darks50"] = 7,
+ }
+
+ local shades_wallmounted = {
+ [""] = 1,
+ ["medium"] = 2,
+ ["dark"] = 3
+ }
+
+ if string.sub(color,1,4) == "dye:" then
+ color = string.sub(color,5,-1)
+ elseif string.sub(color,1,12) == "unifieddyes:" then
+ color = string.sub(color,13,-1)
+ else
+ return
+ end
+
+ color = aliases[color] or color
+ local idx
+
+ if is_color_fdir == "wallmounted" then
+ if grayscale_wallmounted[color] then
+ return (grayscale_wallmounted[color] * 8), 0
+ end
+ elseif is_color_fdir then
+ if grayscale[color] then
+ return (grayscale[color] * 32), 0
+ end
+ else
+ if grayscale[color] then
+ return grayscale[color], 0
+ end
+ end
+
+ local shade = ""
+ if string.sub(color,1,6) == "light_" then
+ shade = "light"
+ color = string.sub(color,7,-1)
+ elseif string.sub(color,1,7) == "medium_" then
+ shade = "medium"
+ color = string.sub(color,8,-1)
+ elseif string.sub(color,1,5) == "dark_" then
+ shade = "dark"
+ color = string.sub(color,6,-1)
+ end
+ if string.sub(color,-4,-1) == "_s50" then
+ shade = shade.."s50"
+ color = string.sub(color,1,-5)
+ end
+
+ if is_color_fdir == "wallmounted" then
+ if shade == "dark" and color == "orange" then return 48,1 -- brown
+ elseif shade == "light" and color == "red" then return 56,7 -- pink
+ elseif hues_wallmounted[color] and shades_wallmounted[shade] then
+ return (shades_wallmounted[shade] * 64 + hues_wallmounted[color] * 8), hues_wallmounted[color]
+ end
+ elseif hues[color] and shades[shade] then
+ if is_color_fdir then
+ return (shades[shade] * 32), hues[color]
+ else
+ return (hues[color] * 8 + shades[shade]), hues[color]
+ end
+ end
+end
+
+function unifieddyes.after_dig_node(pos, oldnode, oldmetadata, digger)
+ local prevdye
+
+ if oldmetadata and oldmetadata.fields then
+ prevdye = oldmetadata.fields.dye
+ end
+
+ local inv = digger:get_inventory()
+
+ if prevdye and not (inv:contains_item("main", prevdye) and creative_mode) and minetest.registered_items[prevdye] then
+ if inv:room_for_item("main", prevdye) then
+ inv:add_item("main", prevdye)
+ else
+ minetest.add_item(pos, prevdye)
+ end
+ end
+end
+
+function unifieddyes.on_rightclick(pos, node, player, stack, pointed_thing, newnode, is_color_fdir)
+ local name = player:get_player_name()
+ if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then
+ minetest.record_protection_violation(pos,name)
+ return stack
+ end
+ local name = stack:get_name()
+ local pos2 = unifieddyes.select_node(pointed_thing)
+ local paletteidx, hue = unifieddyes.getpaletteidx(name, is_color_fdir)
+
+ print(dump(paletteidx))
+
+ if paletteidx then
+
+ local meta = minetest.get_meta(pos)
+ local prevdye = meta:get_string("dye")
+ local inv = player:get_inventory()
+
+ if not (inv:contains_item("main", prevdye) and creative_mode) and minetest.registered_items[prevdye] then
+ if inv:room_for_item("main", prevdye) then
+ inv:add_item("main", prevdye)
+ else
+ minetest.add_item(pos, prevdye)
+ end
+ end
+
+ meta:set_string("dye", name)
+ if not creative_mode and prevdye ~= name then
+ stack:take_item()
+ end
+ node.param2 = paletteidx
+
+ local oldpaletteidx, oldhuenum = unifieddyes.getpaletteidx(prevdye, is_color_fdir)
+
+ local oldnode = minetest.get_node(pos)
+
+ local oldhue = nil
+ for _, i in ipairs(HUES) do
+ if string.find(oldnode.name, "_"..i) and not
+ ( string.find(oldnode.name, "_redviolet") and i == "red" ) then
+ oldhue = i
+ break
+ end
+ end
+
+ if newnode then -- this path is used when the calling mod want to supply a replacement node
+ if is_color_fdir == "wallmounted" then
+ node.param2 = paletteidx + (minetest.get_node(pos).param2 % 8)
+ elseif is_color_fdir then -- we probably need to change the hue of the node too
+ if oldhue ~=0 then -- it's colored, not grey
+ if oldhue ~= nil then -- it's been painted before
+ if hue ~= 0 then -- the player's wielding a colored dye
+ newnode = string.gsub(newnode, "_"..oldhue, "_"..HUES[hue])
+ else -- it's a greyscale dye
+ newnode = string.gsub(newnode, "_"..oldhue, "_grey")
+ end
+ else -- it's never had a color at all
+ if hue ~= 0 then -- and if the wield is greyscale, don't change the node name
+ newnode = string.gsub(newnode, "_grey", "_"..HUES[hue])
+ end
+ end
+ else
+ if hue ~= 0 then -- greyscale dye on greyscale node = no hue change
+ newnode = string.gsub(newnode, "_grey", "_"..HUES[hue])
+ end
+ end
+ node.param2 = paletteidx + (minetest.get_node(pos).param2 % 32)
+ else
+ node.param2 = paletteidx
+ end
+ node.name = newnode
+ minetest.swap_node(pos, node)
+ else -- this path is used when you're just painting an existing node, rather than replacing one.
+ newnode = oldnode -- note that here, newnode/oldnode are a full node, not just the name.
+ if is_color_fdir == "wallmounted" then
+ newnode.param2 = paletteidx + (minetest.get_node(pos).param2 % 8)
+ elseif is_color_fdir then
+ if oldhue then
+ if hue ~= 0 then
+ newnode.name = string.gsub(newnode.name, "_"..oldhue, "_"..HUES[hue])
+ else
+ newnode.name = string.gsub(newnode.name, "_"..oldhue, "_grey")
+ end
+ elseif string.find(minetest.get_node(pos).name, "_grey") and hue ~= 0 then
+ newnode.name = string.gsub(newnode.name, "_grey", "_"..HUES[hue])
+ end
+ newnode.param2 = paletteidx + (minetest.get_node(pos).param2 % 32)
+ else
+ newnode.param2 = paletteidx
+ end
+ minetest.swap_node(pos, newnode)
+ end
+ else -- here is where a node is just being placed, not something being colored
+ if unifieddyes.is_buildable_to(player:get_player_name(), pos2) and
+ minetest.registered_nodes[name] then
+ local placeable_node = minetest.registered_nodes[stack:get_name()]
+
+ local fdir = 0
+
+ if is_color_fdir == "wallmounted" then
+ local yaw = player:get_look_yaw()
+ local dir = minetest.yaw_to_dir(yaw-1.5)
+ fdir = minetest.dir_to_wallmounted(dir)
+ elseif is_color_fdir then
+ local yaw = player:get_look_yaw()
+ local dir = minetest.yaw_to_dir(yaw-1.5)
+ fdir = minetest.dir_to_facedir(dir)
+ end
+
+ minetest.set_node(pos2, { name = placeable_node.name, param2 = fdir })
+ if not creative_mode then
+ stack:take_item()
+ end
+ return stack
+ end
+ end
+end
+
-- Items/recipes needed to generate the few base colors that are not
-- provided by the standard dyes mod.
@@ -179,36 +531,6 @@ minetest.register_craft( {
-- Brightness levels in the textures are 33% ("dark"), 66% ("medium"),
-- 100% ("full", but not so-named), and 150% ("light").
-local HUES = {
- "red",
- "orange",
- "yellow",
- "lime",
- "green",
- "aqua",
- "cyan",
- "skyblue",
- "blue",
- "violet",
- "magenta",
- "redviolet"
-}
-
-local HUES2 = {
- "Red",
- "Orange",
- "Yellow",
- "Lime",
- "Green",
- "Aqua",
- "Cyan",
- "Sky-blue",
- "Blue",
- "Violet",
- "Magenta",
- "Red-violet"
-}
-
for i = 1, 12 do
@@ -361,8 +683,15 @@ for i = 1, 12 do
minetest.register_alias("unifieddyes:pigment_"..hue, "dye:"..hue)
end
-minetest.register_alias("unifieddyes:light_red", "dye:pink")
+minetest.register_alias("unifieddyes:light_red", "dye:pink")
minetest.register_alias("unifieddyes:dark_green", "dye:dark_green")
+minetest.register_alias("unifieddyes:black", "dye:black")
+minetest.register_alias("unifieddyes:darkgrey", "dye:dark_grey")
+minetest.register_alias("unifieddyes:dark_grey", "dye:dark_grey")
+minetest.register_alias("unifieddyes:grey", "dye:grey")
+minetest.register_alias("unifieddyes:lightgrey", "dye:light_grey")
+minetest.register_alias("unifieddyes:light_grey", "dye:light_grey")
+minetest.register_alias("unifieddyes:white", "dye:white")
minetest.register_alias("unifieddyes:white_paint", "dye:white")
minetest.register_alias("unifieddyes:titanium_dioxide", "dye:white")
diff --git a/unifieddyes/textures/unifieddyes_palette.png b/unifieddyes/textures/unifieddyes_palette.png
new file mode 100644
index 0000000..1d7c485
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_palette.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_palette_aquas.png b/unifieddyes/textures/unifieddyes_palette_aquas.png
new file mode 100644
index 0000000..85dcab5
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_palette_aquas.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_palette_blues.png b/unifieddyes/textures/unifieddyes_palette_blues.png
new file mode 100644
index 0000000..496dc34
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_palette_blues.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_palette_colorwallmounted.png b/unifieddyes/textures/unifieddyes_palette_colorwallmounted.png
new file mode 100644
index 0000000..18c83b4
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_palette_colorwallmounted.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_palette_cyans.png b/unifieddyes/textures/unifieddyes_palette_cyans.png
new file mode 100644
index 0000000..38d8ee3
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_palette_cyans.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_palette_greens.png b/unifieddyes/textures/unifieddyes_palette_greens.png
new file mode 100644
index 0000000..e38a459
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_palette_greens.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_palette_greys.png b/unifieddyes/textures/unifieddyes_palette_greys.png
new file mode 100644
index 0000000..1fa5292
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_palette_greys.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_palette_limes.png b/unifieddyes/textures/unifieddyes_palette_limes.png
new file mode 100644
index 0000000..ebfd703
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_palette_limes.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_palette_magentas.png b/unifieddyes/textures/unifieddyes_palette_magentas.png
new file mode 100644
index 0000000..7c398b7
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_palette_magentas.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_palette_oranges.png b/unifieddyes/textures/unifieddyes_palette_oranges.png
new file mode 100644
index 0000000..0986014
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_palette_oranges.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_palette_reds.png b/unifieddyes/textures/unifieddyes_palette_reds.png
new file mode 100644
index 0000000..85b8e5a
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_palette_reds.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_palette_redviolets.png b/unifieddyes/textures/unifieddyes_palette_redviolets.png
new file mode 100644
index 0000000..76e79e4
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_palette_redviolets.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_palette_skyblues.png b/unifieddyes/textures/unifieddyes_palette_skyblues.png
new file mode 100644
index 0000000..638025d
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_palette_skyblues.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_palette_violets.png b/unifieddyes/textures/unifieddyes_palette_violets.png
new file mode 100644
index 0000000..f71b90f
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_palette_violets.png
Binary files differ
diff --git a/unifieddyes/textures/unifieddyes_palette_yellows.png b/unifieddyes/textures/unifieddyes_palette_yellows.png
new file mode 100644
index 0000000..862ac4f
--- /dev/null
+++ b/unifieddyes/textures/unifieddyes_palette_yellows.png
Binary files differ
diff --git a/vines/functions.lua b/vines/functions.lua
index db120a6..26e7cc4 100644
--- a/vines/functions.lua
+++ b/vines/functions.lua
@@ -32,7 +32,7 @@ vines.register_vine = function( name, defs, biome )
sunlight_propagates = true,
paramtype = "light",
paramtype2 = "wallmounted",
- buildable_to = true,
+ buildable_to = false,
tiles = { vine_image_end },
drawtype = drawtype,
inventory_image = vine_image_end,
@@ -70,7 +70,7 @@ vines.register_vine = function( name, defs, biome )
sunlight_propagates = true,
paramtype = "light",
paramtype2 = "wallmounted",
- buildable_to = true,
+ buildable_to = false,
tiles = { vine_image_middle },
wield_image = vine_image_middle,
drawtype = drawtype,
@@ -82,8 +82,10 @@ vines.register_vine = function( name, defs, biome )
local node = minetest.get_node( pos )
local bottom = {x=pos.x, y=pos.y-1, z=pos.z}
local bottom_node = minetest.get_node( bottom )
- if minetest.get_item_group( bottom_node.name, "vines") then
- minetest.remove_node( bottom )
+ if minetest.get_item_group( bottom_node.name, "vines") > 0 then
+ -- Calling `remove_node` directly would cause
+ -- a stack overflow for really long vines.
+ minetest.after( 0, minetest.remove_node, bottom )
end
end,
after_dig_node = function( pos, node, oldmetadata, user )
diff --git a/worldedit/init.lua b/worldedit/init.lua
index 343a1e4..0305c4d 100644
--- a/worldedit/init.lua
+++ b/worldedit/init.lua
@@ -36,7 +36,6 @@ load_module(path .. "/visualization.lua")
load_module(path .. "/serialization.lua")
load_module(path .. "/code.lua")
load_module(path .. "/compatibility.lua")
-load_module(path .. "/wand.lua")
load_module(path .. "/cuboid.lua")
diff --git a/worldedit/manipulations.lua b/worldedit/manipulations.lua
index cf95517..57c7a76 100644
--- a/worldedit/manipulations.lua
+++ b/worldedit/manipulations.lua
@@ -575,14 +575,11 @@ end
function worldedit.fixlight(pos1, pos2)
local pos1, pos2 = worldedit.sort_pos(pos1, pos2)
- worldedit.keep_loaded(pos1, pos2)
+ local vmanip = minetest.get_voxel_manip(pos1, pos2)
+ vmanip:write_to_map()
+ vmanip:update_map() -- this updates the lighting
- local nodes = minetest.find_nodes_in_area(pos1, pos2, "air")
- local dig_node = minetest.dig_node
- for _, pos in ipairs(nodes) do
- dig_node(pos)
- end
- return #nodes
+ return worldedit.volume(pos1, pos2)
end
diff --git a/worldedit_commands/init.lua b/worldedit_commands/init.lua
index b9313cc..d47c6e2 100644
--- a/worldedit_commands/init.lua
+++ b/worldedit_commands/init.lua
@@ -12,6 +12,7 @@ end
dofile(minetest.get_modpath("worldedit_commands") .. "/cuboid.lua")
dofile(minetest.get_modpath("worldedit_commands") .. "/mark.lua")
+dofile(minetest.get_modpath("worldedit_commands") .. "/wand.lua")
local safe_region, check_region = dofile(minetest.get_modpath("worldedit_commands") .. "/safe.lua")
local function get_position(name) --position 1 retrieval function for when not using `safe_region`
@@ -92,6 +93,56 @@ minetest.register_chatcommand("/about", {
end,
})
+-- mostly copied from builtin/chatcommands.lua with minor modifications
+minetest.register_chatcommand("/help", {
+ privs = {},
+ params = "[all/<cmd>]",
+ description = "Get help for WorldEdit commands",
+ func = function(name, param)
+ local function is_we_command(cmd)
+ return cmd:sub(0, 1) == "/"
+ end
+ local function format_help_line(cmd, def)
+ local msg = minetest.colorize("#00ffff", "/"..cmd)
+ if def.params and def.params ~= "" then
+ msg = msg .. " " .. def.params
+ end
+ if def.description and def.description ~= "" then
+ msg = msg .. ": " .. def.description
+ end
+ return msg
+ end
+
+ if not minetest.check_player_privs(name, "worldedit") then
+ return false, "You are not allowed to use any WorldEdit commands."
+ end
+ if param == "" then
+ local msg = ""
+ local cmds = {}
+ for cmd, def in pairs(minetest.chatcommands) do
+ if is_we_command(cmd) and minetest.check_player_privs(name, def.privs) then
+ cmds[#cmds + 1] = cmd:sub(2) -- strip the /
+ end
+ end
+ table.sort(cmds)
+ return true, "Available commands: " .. table.concat(cmds, " ") .. "\n"
+ .. "Use '//help <cmd>' to get more information,"
+ .. " or '//help all' to list everything."
+ elseif param == "all" then
+ local cmds = {}
+ for cmd, def in pairs(minetest.chatcommands) do
+ if is_we_command(cmd) and minetest.check_player_privs(name, def.privs) then
+ cmds[#cmds + 1] = format_help_line(cmd, def)
+ end
+ end
+ table.sort(cmds)
+ return true, "Available commands:\n"..table.concat(cmds, "\n")
+ else
+ return minetest.chatcommands["help"].func(name, "/" .. param)
+ end
+ end,
+})
+
minetest.register_chatcommand("/inspect", {
params = "on/off/1/0/true/false/yes/no/enable/disable/<blank>",
description = "Enable or disable node inspection",
@@ -114,13 +165,9 @@ minetest.register_chatcommand("/inspect", {
minetest.register_on_punchnode(function(pos, node, puncher)
local name = puncher:get_player_name()
if worldedit.inspect[name] then
- if minetest.check_player_privs(name, {worldedit=true}) then
- local axis, sign = worldedit.player_axis(name)
- message = string.format("inspector: %s at %s (param1=%d, param2=%d) punched by %s facing the %s axis",
- node.name, minetest.pos_to_string(pos), node.param1, node.param2, name, axis .. (sign > 0 and "+" or "-"))
- else
- message = "inspector: worldedit privileges required"
- end
+ local axis, sign = worldedit.player_axis(name)
+ message = string.format("inspector: %s at %s (param1=%d, param2=%d, light=%d) punched facing the %s axis",
+ node.name, minetest.pos_to_string(pos), node.param1, node.param2, minetest.get_node_light(pos), axis .. (sign > 0 and "+" or "-"))
worldedit.player_notify(name, message)
end
end)
diff --git a/worldedit_commands/mark.lua b/worldedit_commands/mark.lua
index 7f880ea..9d41bda 100644
--- a/worldedit_commands/mark.lua
+++ b/worldedit_commands/mark.lua
@@ -58,8 +58,19 @@ worldedit.mark_region = function(name)
end
worldedit.marker_region[name] = nil
end
+
if pos1 ~= nil and pos2 ~= nil then
local pos1, pos2 = worldedit.sort_pos(pos1, pos2)
+
+ local vec = vector.subtract(pos2, pos1)
+ local maxside = math.max(vec.x, math.max(vec.y, vec.z))
+ local limit = tonumber(minetest.setting_get("active_object_send_range_blocks")) * 16
+ if maxside > limit * 1.5 then
+ -- The client likely won't be able to see the plane markers as intended anyway,
+ -- thus don't place them and also don't load the area into memory
+ return
+ end
+
local thickness = 0.2
local sizex, sizey, sizez = (1 + pos2.x - pos1.x) / 2, (1 + pos2.y - pos1.y) / 2, (1 + pos2.z - pos1.z) / 2
@@ -72,24 +83,28 @@ worldedit.mark_region = function(name)
--XY plane markers
for _, z in ipairs({pos1.z - 0.5, pos2.z + 0.5}) do
local marker = minetest.add_entity({x=pos1.x + sizex - 0.5, y=pos1.y + sizey - 0.5, z=z}, "worldedit:region_cube")
- marker:set_properties({
- visual_size={x=sizex * 2, y=sizey * 2},
- collisionbox = {-sizex, -sizey, -thickness, sizex, sizey, thickness},
- })
- marker:get_luaentity().player_name = name
- table.insert(markers, marker)
+ if marker ~= nil then
+ marker:set_properties({
+ visual_size={x=sizex * 2, y=sizey * 2},
+ collisionbox = {-sizex, -sizey, -thickness, sizex, sizey, thickness},
+ })
+ marker:get_luaentity().player_name = name
+ table.insert(markers, marker)
+ end
end
--YZ plane markers
for _, x in ipairs({pos1.x - 0.5, pos2.x + 0.5}) do
local marker = minetest.add_entity({x=x, y=pos1.y + sizey - 0.5, z=pos1.z + sizez - 0.5}, "worldedit:region_cube")
- marker:set_properties({
- visual_size={x=sizez * 2, y=sizey * 2},
- collisionbox = {-thickness, -sizey, -sizez, thickness, sizey, sizez},
- })
- marker:setyaw(math.pi / 2)
- marker:get_luaentity().player_name = name
- table.insert(markers, marker)
+ if marker ~= nil then
+ marker:set_properties({
+ visual_size={x=sizez * 2, y=sizey * 2},
+ collisionbox = {-thickness, -sizey, -sizez, thickness, sizey, sizez},
+ })
+ marker:setyaw(math.pi / 2)
+ marker:get_luaentity().player_name = name
+ table.insert(markers, marker)
+ end
end
worldedit.marker_region[name] = markers
diff --git a/worldedit_commands/wand.lua b/worldedit_commands/wand.lua
new file mode 100644
index 0000000..79d9eb2
--- /dev/null
+++ b/worldedit_commands/wand.lua
@@ -0,0 +1,34 @@
+minetest.register_tool(":worldedit:wand", {
+ description = "WorldEdit Wand tool, Left-click to set 1st position, right-click to set 2nd",
+ inventory_image = "worldedit_wand.png",
+ stack_max = 1, -- there is no need to have more than one
+ liquids_pointable = true, -- ground with only water on can be selected as well
+ -- the tool_capabilities are completely irrelevant here - no need to dig
+ tool_capabilities = {
+ full_punch_interval = 1.0,
+ max_drop_level = 0,
+ groupcaps={
+ fleshy={times={[2]=0.80, [3]=0.40}, maxwear=0.05, maxlevel=1},
+ snappy={times={[2]=0.80, [3]=0.40}, maxwear=0.05, maxlevel=1},
+ choppy={times={[3]=0.90}, maxwear=0.05, maxlevel=0}
+ }
+ },
+
+ on_use = function(itemstack, placer, pointed_thing)
+ if placer ~= nil and pointed_thing ~= nil and pointed_thing.type == "node" then
+ local name = placer:get_player_name()
+ worldedit.pos1[name] = pointed_thing.under
+ worldedit.mark_pos1(name)
+ end
+ return itemstack -- nothing consumed, nothing changed
+ end,
+
+ on_place = function(itemstack, placer, pointed_thing) -- Left Click
+ if placer ~= nil and pointed_thing ~= nil and pointed_thing.type == "node" then
+ local name = placer:get_player_name()
+ worldedit.pos2[name] = pointed_thing.under
+ worldedit.mark_pos2(name)
+ end
+ return itemstack -- nothing consumed, nothing changed
+ end,
+})
diff --git a/xban2/init.lua b/xban2/init.lua
index d8b20e7..b3c42a6 100644
--- a/xban2/init.lua
+++ b/xban2/init.lua
@@ -361,10 +361,10 @@ local function load_db()
WARNING("Unable to load database: %s", "Read failed")
return
end
- local t = minetest.deserialize(cont)
+ local t, e = minetest.deserialize(cont)
if not t then
WARNING("Unable to load database: %s",
- "Deserialization failed")
+ "Deserialization failed: "..(e or "unknown error"))
return
end
db = t