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

Compare commits

...

83 Commits

Author SHA1 Message Date
4980844320 use airbrush_replacement_node instead of ud_replacement_node in shutter 2018-09-13 10:31:29 -04:00
fc781daca0 get rid of old 89->256 color LBMs 2018-09-12 23:03:41 -04:00
5b631142aa take colored banisted "pseudo nodes" out of creative inv 2018-09-12 22:43:05 -04:00
eb6089a03e make wooden banister colorable via Unified Dyes 2018-09-12 20:34:11 -04:00
41455647a2 lrfurn i18n fix 2018-09-11 06:19:31 -04:00
55fea4f6ca make doors and gates respond to vertical mesecon two nodes below
using pressure plate rules
2018-08-28 23:26:08 -04:00
a8729575ab switch to colored itemstacks
with full crafting recipes
(requires Unified Dyes commit 2a816534 or later)

known issues:

standing lamp bypasses vertical stack check
bed expansion changes the color of the first-placed bed
to match the second when creating a king bed.
2018-08-22 05:09:55 -04:00
9e69a6db73 more set_int fixes 2018-06-11 14:06:37 -04:00
54ce73b616 fix the fix ;) 2018-06-07 10:57:19 -04:00
8a5bc0e038 fix #2 2018-06-07 10:22:52 -04:00
d6ff137657 Add moreblocks:slab_wood for table_lamp (#418) 2018-05-20 00:49:02 -04:00
a4ca53cc05 fix players in bed count for multiplayer (#404) 2018-05-14 13:28:36 -04:00
017326dbed replace print with verbose logging (#409)
* remove debug log
2018-05-14 00:00:29 -04:00
31bf6b8c40 add translation for log message 2018-05-13 23:59:22 -04:00
b526ec1714 add disabled coin crafting logging 2018-05-13 23:59:22 -04:00
7e98534179 add prefix to settings key 2018-05-13 23:59:22 -04:00
8132cfc6f8 add setting disable_coin_crafting to make coins not available for crafting 2018-05-13 23:59:22 -04:00
Foz
39984c356b Resolve itemframe entity duplication Fixes #405.
The ABM that replaces deleted entities in itemframes and pedestals can sometimes add multiple copies of each entity due to a race condition in which the ABM runs either before the server loads the entities or after they have been removed due to the map block being unloaded.  Due to limitations in determining when all entities have been loaded, this race condition cannot be fully avoided.  This commit converts the ABM, which ran every fifteen seconds, into and LBM that runs on every load and adds a check to the entities when they are loaded such that only the first loaded entity will be kept and any additional copies delete themselves during the loading process.
2018-05-13 09:34:18 -04:00
eb2b3d7980 add optional support for skinsdb in wardrobe
- All skins are registered in skinsdb, including skins format
- But the skins are not in inventory skins list, still available trough wardrobe only
- If selected, the skins metadata and preview is shown in inventory
- Use skinsdb method to set the skin
- Note: skinsdb manages the 3d_armor if both mods found
2018-05-13 09:31:27 -04:00
08bbd0f592 Computer Remove local 2018-05-11 09:20:44 -04:00
3597c2c1aa Proper handle stairs groups
fix #410
2018-05-11 09:09:25 -04:00
5db791deb4 refactor code 2018-05-11 09:02:45 -04:00
8ccbe6abc4 add skin_updates table (somehow got lost) 2018-05-11 09:02:45 -04:00
cafba3bc53 load skin when player has joined the game 2018-05-11 09:02:45 -04:00
ac10702849 prepare code to be reused later 2018-05-11 09:02:45 -04:00
fe2acaaa1e replace player_set_textures with new API (fallback to old API) 2018-05-11 09:02:45 -04:00
bfda7c49fd fix ceiling lamp recipes (#403)
There is no homedecor:glowlight_small, homedecor:glowlight_small_cube only
2018-02-13 13:31:01 -05:00
4d9c4c2410 Update init.lua (#400)
tweak sizes of chain selection boxes and adjust light levels of chandeliers.
2017-12-21 01:45:30 -05:00
1471a0cba9 depend on mt_game 'creative' mod
as some of its functions are used to check if players have creative mode
2017-12-15 20:10:42 -05:00
eabd237252 Luacheck: make this a bit more useful by adding common symbols. 2017-12-06 21:16:40 -08:00
9d4ac9bd9a Fix books: enforce book ownership, strict access checking.
Fixes #399
2017-12-06 21:15:58 -08:00
5efa9af1b7 Building_blocks Alias (#398)
Alias for old node Tar cut by moreblocks.
2017-11-20 12:26:57 -05:00
7d40724d39 Update Malay translation (#396)
* Update Malay translation
2017-11-13 22:22:45 -05:00
5e6307ea3a Change sounds for the "Itemframe" and "Pedestal (#395) 2017-09-29 23:39:15 -04:00
8882ab8e19 Building blocks add glass for stairplus (#394)
* Building Blocks Add all glass for stairsplus

-Smoothglass
-WoodGlass

(plus some style fixes)
2017-09-29 11:58:55 -04:00
3021248538 Building Blocks add sound (#393)
- Grate
- Firefplace
- Roofing
2017-09-29 01:05:53 -04:00
4eaf265e65 allow sleeping in beds!
fixed by using some code from mt_game, with changes
2017-09-29 01:03:05 -04:00
228e25e123 get rid of inventorycube() calls
they're obsolete and annoying in combo with current inventory hover animations
2017-09-28 06:22:53 -04:00
ddcb08fe62 Building Blocks node_stairs layout
- Glasslike
- RailLike
- Nodebox
- Node
And fix one tabulation with fakegrass.
2017-09-27 18:47:58 +02:00
972d30dd38 Building Blocks layout all file 2017-09-27 17:05:20 +02:00
cc9276841e Building Blocks Delete return to the line 2017-09-27 16:26:44 +02:00
f2f49a3aac Building Blocks Create file recipes 2017-09-27 16:02:54 +02:00
b92c9e065b Building Blocks Create file others 2017-09-27 15:58:04 +02:00
ea77ac32ea Building Blocks Create file node_stairs 2017-09-27 15:44:33 +02:00
14697ef71b Building Blocks create file alias 2017-09-27 15:29:20 +02:00
9921efeeef Building Blocks Revert capital lettre
45-48 and 352-353 : Marble and Tar not use capital lettre for stairs.
Alias and node name revert.
2017-09-27 14:14:40 +02:00
87e3c9f9ce Building Blocks add alias for moreblocks 2017-09-26 17:19:51 +02:00
095e34ad7f Building Blocks Add Alias for bbstairs 2017-09-26 16:48:20 +02:00
6c9da755f3 Building Blocks moreblocks and stairs
Simplify integration moreblocks
Replace bb stairs by Stairs
2017-09-26 15:43:47 +02:00
c786e3ae05 Building Blocks simplify name for stairs 2017-09-26 15:17:16 +02:00
48be7ddef1 brain-o in banister placement. fixes #388
there was no reason to explicitly check whether to place a horizontal
next to another horizontal after all the other checks were done.
2017-09-25 23:53:18 -04:00
2c5be0735a Russian locale (#386)
* Russian locale

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

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

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

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

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

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

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

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

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

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

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

View File

@ -4,7 +4,9 @@ allow_defined_top = true
read_globals = { read_globals = {
"DIR_DELIM", "DIR_DELIM",
"minetest", "core", "minetest", "core",
"unpack",
"dump", "dump",
table = { fields = { "copy", "getn" } },
"vector", "nodeupdate", "vector", "nodeupdate",
"VoxelManip", "VoxelArea", "VoxelManip", "VoxelArea",
"PseudoRandom", "ItemStack", "PseudoRandom", "ItemStack",
@ -17,6 +19,7 @@ read_globals = {
"mesecon", "mesecon",
"unifieddyes", "unifieddyes",
"creative", "creative",
"homedecor_i18n",
} }
globals = { globals = {

57
building_blocks/alias.lua Normal file
View File

@ -0,0 +1,57 @@
local S = homedecor_i18n.gettext
if minetest.get_modpath("moreblocks") or minetest.get_modpath("stairs") then
minetest.register_alias("building_blocks:slab_tar", "stairs:slab_Tar")
minetest.register_alias("building_blocks:stair_tar", "stairs:stair_Tar")
minetest.register_alias("building_blocks:slab_marble", "stairs:slab_Marble")
minetest.register_alias("building_blocks:stair_marble", "stairs:stair_Marble")
end
if minetest.get_modpath("moreblocks") then
stairsplus:register_alias_all("building_blocks", "tar", "building_blocks", "Tar")
stairsplus:register_alias_all("building_blocks", "marble", "building_blocks", "Marble")
for _, i in ipairs(stairsplus.shapes_list) do
local class = i[1]
local cut = i[2]
minetest.unregister_item("moreblocks:"..class.."tar"..cut)
minetest.register_alias("moreblocks:"..class.."tar"..cut, "building_blocks:"..class.."tar"..cut)
end
minetest.unregister_item("moreblocks:tar")
minetest.register_alias("moreblocks:tar", "building_blocks:Tar")
stairsplus:register_alias_all("moreblocks", "tar", "building_blocks", "Tar")
end
minetest.register_alias("adobe", "building_blocks:Adobe")
minetest.register_alias("fakegrass", "building_blocks:fakegrass")
minetest.register_alias("hardwood", "building_blocks:hardwood")
minetest.register_alias("tar_knife", "building_blocks:knife")
minetest.register_alias("marble", "building_blocks:Marble")
minetest.register_alias("building_blocks_roofing", "building_blocks:Roofing")
minetest.register_alias("sticks", "building_blocks:sticks")
minetest.register_alias("building_blocks:faggot", "building_blocks:sticks")
minetest.register_alias("tar", "building_blocks:Tar")
if not minetest.get_modpath("technic") then
minetest.register_node( ":technic: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",
recipe = {
{ "group:tar_block", "group:marble", "group:tar_block" },
{ "group:marble", "group:tar_block", "group:marble" },
{ "group:tar_block", "group:marble", "group:tar_block" }
},
})
if minetest.get_modpath("moreblocks") then
stairsplus:register_all("technic", "granite", "technic:granite", {
description=S("Granite"),
groups={cracky=1, not_in_creative_inventory=1},
tiles={"technic_granite.png"},
})
end
end

View File

@ -1,3 +1,4 @@
default default
homedecor_i18n homedecor_i18n
moreblocks? moreblocks?
stairs?

View File

@ -1,633 +1,7 @@
local S = homedecor_i18n.gettext local S = homedecor_i18n.gettext
local modpath = minetest.get_modpath("building_blocks")
minetest.register_node("building_blocks:Adobe", { dofile(modpath.."/alias.lua")
tiles = {"building_blocks_Adobe.png"}, dofile(modpath.."/node_stairs.lua")
description = S("Adobe"), dofile(modpath.."/others.lua")
is_ground_content = true, dofile(modpath.."/recipes.lua")
groups = {crumbly=3},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("building_blocks:Roofing", {
tiles = {"building_blocks_Roofing.png"},
is_ground_content = true,
description = S("Roof block"),
groups = {snappy=3},
})
minetest.register_craft({
output = 'building_blocks:terrycloth_towel 2',
recipe = {
{"farming:string", "farming:string", "farming:string"},
}
})
minetest.register_craft({
output = 'building_blocks:Tarmac_spread 4',
recipe = {
{"group:tar_block", "group:tar_block"},
}
})
minetest.register_craft({
output = 'building_blocks:gravel_spread 4',
recipe = {
{"default:gravel", "default:gravel", "default:gravel"},
}
})
minetest.register_craft({
output = 'building_blocks:brobble_spread 4',
recipe = {
{"default:brick", "default:cobble", "default:brick"},
}
})
minetest.register_craft({
output = 'building_blocks:Fireplace 1',
recipe = {
{"default:steel_ingot", "building_blocks:sticks", "default:steel_ingot"},
}
})
minetest.register_craft({
output = 'building_blocks:Adobe 3',
recipe = {
{"default:sand"},
{"default:clay"},
{"group:stick"},
}
})
minetest.register_craft({
output = 'building_blocks:Roofing 10',
recipe = {
{"building_blocks:Adobe", "building_blocks:Adobe"},
{"building_blocks:Adobe", "building_blocks:Adobe"},
}
})
minetest.register_craft({
output = 'building_blocks:BWtile 10',
recipe = {
{"group:marble", "group:tar_block"},
{"group:tar_block", "group:marble"},
}
})
minetest.register_craft({
output = 'building_blocks:grate 1',
recipe = {
{"default:steel_ingot", "default:steel_ingot"},
{"default:glass", "default:glass"},
}
})
minetest.register_craft({
output = 'building_blocks:woodglass 1',
recipe = {
{"default:wood"},
{"default:glass"},
}
})
minetest.register_craft({
output = 'building_blocks:hardwood 2',
recipe = {
{"default:wood", "default:junglewood"},
{"default:junglewood", "default:wood"},
}
})
minetest.register_craft({
output = 'building_blocks:hardwood 2',
recipe = {
{"default:junglewood", "default:wood"},
{"default:wood", "default:junglewood"},
}
})
if minetest.get_modpath("moreblocks") then
minetest.register_craft({
output = 'building_blocks:sticks 2',
recipe = {
{'group:stick', '' , 'group:stick'},
{'group:stick', 'group:stick', 'group:stick'},
{'group:stick', 'group:stick', 'group:stick'},
}
})
else
minetest.register_craft({
output = 'building_blocks:sticks',
recipe = {
{'group:stick', 'group:stick'},
{'group:stick', 'group:stick'},
}
})
end
minetest.register_craft({
output = 'default:stick 4',
recipe = {
{'building_blocks:sticks'},
}
})
minetest.register_craft({
output = 'building_blocks:fakegrass 2',
recipe = {
{'default:leaves'},
{"default:dirt"},
}
})
minetest.register_craft({
output = 'building_blocks:tar_base 4',
recipe = {
{"default:coal_lump", "default:gravel"},
{"default:gravel", "default:coal_lump"}
}
})
minetest.register_craft({
output = 'building_blocks:tar_base 4',
recipe = {
{"default:gravel", "default:coal_lump"},
{"default:coal_lump", "default:gravel"}
}
})
minetest.register_craft({
type = "cooking",
output = "building_blocks:smoothglass",
recipe = "default:glass"
})
minetest.register_node("building_blocks:smoothglass", {
drawtype = "glasslike",
description = S("Streak Free Glass"),
tiles = {"building_blocks_sglass.png"},
inventory_image = minetest.inventorycube("building_blocks_sglass.png"),
paramtype = "light",
sunlight_propagates = true,
is_ground_content = true,
groups = {snappy=3,cracky=3,oddly_breakable_by_hand=3},
sounds = default.node_sound_glass_defaults(),
})
minetest.register_node("building_blocks:grate", {
drawtype = "glasslike",
description = S("Grate"),
tiles = {"building_blocks_grate.png"},
inventory_image = minetest.inventorycube("building_blocks_grate.png"),
paramtype = "light",
sunlight_propagates = true,
is_ground_content = true,
groups = {cracky=1},
})
minetest.register_node("building_blocks:Fireplace", {
description = S("Fireplace"),
tiles = {
"building_blocks_cast_iron.png",
"building_blocks_cast_iron.png",
"building_blocks_cast_iron.png",
"building_blocks_cast_iron_fireplace.png"
},
paramtype = "light",
paramtype2 = "facedir",
light_source = default.LIGHT_MAX,
sunlight_propagates = true,
is_ground_content = true,
groups = {cracky=2},
})
minetest.register_node("building_blocks:woodglass", {
drawtype = "glasslike",
description = S("Wood Framed Glass"),
tiles = {"building_blocks_wglass.png"},
inventory_image = minetest.inventorycube("building_blocks_wglass.png"),
paramtype = "light",
sunlight_propagates = true,
is_ground_content = true,
groups = {snappy=3,cracky=3,oddly_breakable_by_hand=3},
sounds = default.node_sound_glass_defaults(),
})
minetest.register_node("building_blocks:terrycloth_towel", {
drawtype = "raillike",
description = S("Terrycloth towel"),
tiles = {"building_blocks_towel.png"},
inventory_image = "building_blocks_towel_inv.png",
paramtype = "light",
walkable = false,
selection_box = {
type = "fixed",
-- but how to specify the dimensions for curved and sideways rails?
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
sunlight_propagates = true,
is_ground_content = true,
groups = {crumbly=3},
})
minetest.register_node("building_blocks:Tarmac_spread", {
drawtype = "raillike",
description = S("Tarmac Spread"),
tiles = {"building_blocks_tar.png"},
inventory_image = "building_blocks_tar_spread_inv.png",
paramtype = "light",
walkable = false,
selection_box = {
type = "fixed",
-- but how to specify the dimensions for curved and sideways rails?
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
sunlight_propagates = true,
is_ground_content = true,
groups = {cracky=3},
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("building_blocks:BWtile", {
drawtype = "raillike",
description = S("Chess board tiling"),
tiles = {"building_blocks_BWtile.png"},
inventory_image = "building_blocks_bwtile_inv.png",
paramtype = "light",
walkable = false,
selection_box = {
type = "fixed",
-- but how to specify the dimensions for curved and sideways rails?
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
sunlight_propagates = true,
is_ground_content = true,
groups = {crumbly=3},
})
minetest.register_node("building_blocks:brobble_spread", {
drawtype = "raillike",
-- 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",
walkable = false,
selection_box = {
type = "fixed",
-- but how to specify the dimensions for curved and sideways rails?
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
sunlight_propagates = true,
is_ground_content = true,
groups = {crumbly=3},
})
minetest.register_node("building_blocks:gravel_spread", {
drawtype = "raillike",
description = S("Gravel Spread"),
tiles = {"default_gravel.png"},
inventory_image = "building_blocks_gravel_spread_inv.png",
paramtype = "light",
walkable = false,
selection_box = {
type = "fixed",
-- but how to specify the dimensions for curved and sideways rails?
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
sunlight_propagates = true,
is_ground_content = true,
groups = {crumbly=2},
sounds = default.node_sound_dirt_defaults({
footstep = {name="default_gravel_footstep", gain=0.5},
dug = {name="default_gravel_footstep", gain=1.0},
}),
})
minetest.register_node("building_blocks:hardwood", {
tiles = {"building_blocks_hardwood.png"},
is_ground_content = true,
description = S("Hardwood"),
groups = {choppy=1,flammable=1},
sounds = default.node_sound_wood_defaults(),
})
if minetest.get_modpath("moreblocks") then
stairsplus:register_all(
"building_blocks",
"marble",
"building_blocks:Marble",
{
description = "Marble",
tiles = {"building_blocks_marble.png"},
groups = {cracky=3},
sounds = default.node_sound_stone_defaults(),
}
)
stairsplus:register_all(
"building_blocks",
"hardwood",
"building_blocks:hardwood",
{
description = "Hardwood",
tiles = {"building_blocks_hardwood.png"},
groups = {choppy=1,flammable=1},
sounds = default.node_sound_wood_defaults(),
}
)
stairsplus:register_all(
"building_blocks",
"fakegrass",
"building_blocks:fakegrass",
{
description = "Grass",
tiles = {"default_grass.png"},
groups = {crumbly=3},
sounds = default.node_sound_dirt_defaults({
footstep = {name="default_grass_footstep", gain=0.4},
}),
}
)
for _, i in ipairs(stairsplus.shapes_list) do
local class = i[1]
local cut = i[2]
minetest.unregister_item("moreblocks:"..class.."tar"..cut)
minetest.register_alias("moreblocks:"..class.."tar"..cut, "building_blocks:"..class.."tar"..cut)
end
minetest.unregister_item("moreblocks:tar")
minetest.register_alias("moreblocks:tar", "building_blocks:Tar")
stairsplus:register_all(
"building_blocks",
"tar",
"building_blocks:Tar",
{
description = "Tar",
tiles = {"building_blocks_tar.png"},
groups = {crumbly=1},
sounds = default.node_sound_stone_defaults(),
}
)
stairsplus:register_all(
"building_blocks",
"grate",
"building_blocks:grate",
{
description = "Grate",
tiles = {"building_blocks_grate.png"},
groups = {cracky=1},
sounds = default.node_sound_stone_defaults(),
}
)
stairsplus:register_all(
"building_blocks",
"Adobe",
"building_blocks:Adobe",
{
description = "Adobe",
tiles = {"building_blocks_Adobe.png"},
groups = {crumbly=3},
sounds = default.node_sound_stone_defaults(),
}
)
stairsplus:register_all(
"building_blocks",
"Roofing",
"building_blocks:Roofing",
{
description = "Roofing",
tiles = {"building_blocks_Roofing.png"},
groups = {snappy=3},
sounds = default.node_sound_stone_defaults(),
}
)
else
bb_stairs = {}
-- Node will be called stairs:stair_<subname>
function bb_stairs.register_stair(subname, recipeitem, groups, images, description)
minetest.register_node("building_blocks:stair_" .. subname, {
description = description,
drawtype = "nodebox",
tiles = images,
paramtype = "light",
paramtype2 = "facedir",
is_ground_content = true,
groups = groups,
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
{-0.5, 0, 0, 0.5, 0.5, 0.5},
},
},
})
minetest.register_craft({
output = 'building_blocks:stair_' .. subname .. ' 4',
recipe = {
{recipeitem, "", ""},
{recipeitem, recipeitem, ""},
{recipeitem, recipeitem, recipeitem},
},
})
-- Flipped recipe for the silly minecrafters
minetest.register_craft({
output = 'building_blocks:stair_' .. subname .. ' 4',
recipe = {
{"", "", recipeitem},
{"", recipeitem, recipeitem},
{recipeitem, recipeitem, recipeitem},
},
})
end
-- Node will be called stairs:slab_<subname>
function bb_stairs.register_slab(subname, recipeitem, groups, images, description)
minetest.register_node("building_blocks:slab_" .. subname, {
description = description,
drawtype = "nodebox",
tiles = images,
paramtype = "light",
is_ground_content = true,
groups = groups,
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
},
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
},
})
minetest.register_craft({
output = 'building_blocks:slab_' .. subname .. ' 3',
recipe = {
{recipeitem, recipeitem, recipeitem},
},
})
end
-- Nodes will be called stairs:{stair,slab}_<subname>
function bb_stairs.register_stair_and_slab(subname, recipeitem, groups, images, desc_stair, desc_slab)
bb_stairs.register_stair(subname, recipeitem, groups, images, desc_stair)
bb_stairs.register_slab(subname, recipeitem, groups, images, desc_slab)
end
bb_stairs.register_stair_and_slab("marble","building_blocks:Marble",
{cracky=3},
{"building_blocks_marble.png"},
S("Marble stair"),
S("Marble slab")
)
bb_stairs.register_stair_and_slab("hardwood","building_blocks:hardwood",
{choppy=1,flammable=1},
{"building_blocks_hardwood.png"},
S("Hardwood stair"),
S("Hardwood slab")
)
bb_stairs.register_stair_and_slab("fakegrass","building_blocks:fakegrass",
{crumbly=3},
{"default_grass.png"},
S("Grass stair"),
S("Grass slab")
)
bb_stairs.register_stair_and_slab("tar","building_blocks:Tar",
{crumbly=1},
{"building_blocks_tar.png"},
S("Tar stair"),
S("Tar slab")
)
bb_stairs.register_stair_and_slab("grate","building_blocks:grate",
{cracky=1},
{"building_blocks_grate.png"},
S("Grate Stair"),
S("Grate Slab")
)
bb_stairs.register_stair_and_slab("Adobe", "building_blocks:Adobe",
{crumbly=3},
{"building_blocks_Adobe.png"},
S("Adobe stair"),
S("Adobe slab")
)
bb_stairs.register_stair_and_slab("Roofing", "building_blocks:Roofing",
{snappy=3},
{"building_blocks_Roofing.png"},
S("Roofing stair"),
S("Roofing slab")
)
end
minetest.register_craft({
type = "fuel",
recipe = "building_blocks:hardwood",
burntime = 28,
})
minetest.register_node("building_blocks:fakegrass", {
tiles = {"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"},
description = S("Fake Grass"),
is_ground_content = true,
groups = {crumbly=3},
sounds = default.node_sound_dirt_defaults({
footstep = {name="default_grass_footstep", gain=0.4},
}),
})
minetest.register_craftitem("building_blocks: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 = S("Tar base"),
image = "building_blocks_tar_base.png",
})
--Tar
minetest.register_craft({
output = 'building_blocks:knife 1',
recipe = {
{"group:tar_block"},
{"group:stick"},
}
})
minetest.register_alias("tar", "building_blocks:Tar")
minetest.register_alias("fakegrass", "building_blocks:fakegrass")
minetest.register_alias("tar_knife", "building_blocks:knife")
minetest.register_alias("adobe", "building_blocks:Adobe")
minetest.register_alias("building_blocks_roofing", "building_blocks:Roofing")
minetest.register_alias("hardwood", "building_blocks:hardwood")
minetest.register_alias("sticks", "building_blocks:sticks")
minetest.register_alias("building_blocks:faggot", "building_blocks:sticks")
minetest.register_alias("marble", "building_blocks:Marble")
minetest.register_node("building_blocks: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 = S("Marble"),
tiles = {"building_blocks_marble.png"},
is_ground_content = true,
groups = {cracky=3, marble = 1},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_craft({
type = "fuel",
recipe = "building_blocks:sticks",
burntime = 5,
})
minetest.register_craft({
type = "fuel",
recipe = "building_blocks:Tar",
burntime = 40,
})
minetest.register_craft({
type = "cooking",
output = "building_blocks:Tar",
recipe = "building_blocks:tar_base",
})
minetest.register_tool("building_blocks:knife", {
description = S("Tar Knife"),
inventory_image = "building_blocks_knife.png",
tool_capabilities = {
max_drop_level=0,
groupcaps={
choppy={times={[2]=7.50, [3]=2.80}, uses=100, maxlevel=1},
fleshy={times={[2]=5.50, [3]=2.80}, uses=100, maxlevel=1}
}
},
})
minetest.register_craft({
output = "building_blocks:Marble 9",
recipe = {
{"default:clay", "group:tar_block", "default:clay"},
{"group:tar_block","default:clay", "group:tar_block"},
{"default:clay", "group:tar_block","default:clay"},
}
})
if not minetest.get_modpath("technic") then
minetest.register_node( ":technic: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",
recipe = {
{ "group:tar_block", "group:marble", "group:tar_block" },
{ "group:marble", "group:tar_block", "group:marble" },
{ "group:tar_block", "group:marble", "group:tar_block" }
},
})
if minetest.get_modpath("moreblocks") then
stairsplus:register_all("technic", "granite", "technic:granite", {
description=S("Granite"),
groups={cracky=1, not_in_creative_inventory=1},
tiles={"technic_granite.png"},
})
end
end

View File

@ -0,0 +1,226 @@
local S = homedecor_i18n.gettext
local stairs_groups_names = {"cracky","choppy","flammable","crumbly","snappy"}
local function building_blocks_stairs(nodename, def)
minetest.register_node(nodename, def)
if minetest.get_modpath("moreblocks") or minetest.get_modpath("stairs") then
local mod, name = nodename:match("(.*):(.*)")
minetest.register_alias(mod .. ":slab_" .. name, "stairs:slab_" .. name)
minetest.register_alias(mod .. ":stair_" .. name, "stairs:stair_" .. name)
local stairs_groups = {}
for _, groupname in ipairs(stairs_groups_names) do
stairs_groups[groupname] = def.groups[groupname]
end
if minetest.get_modpath("moreblocks") then
stairsplus:register_all(
mod,
name,
nodename,
{
description = def.description,
tiles = def.tiles,
groups = stairs_groups,
sounds = def.sounds,
}
)
else
stairs.register_stair_and_slab(name,nodename,
stairs_groups,
def.tiles,
("%s Stair"):format(def.description),
("%s Slab"):format(def.description),
def.sounds
)
end
end
end
building_blocks_stairs("building_blocks:grate", {
drawtype = "glasslike",
description = S("Grate"),
tiles = {"building_blocks_grate.png"},
paramtype = "light",
sunlight_propagates = true,
is_ground_content = true,
groups = {cracky=1},
sounds = default.node_sound_metal_defaults(),
})
building_blocks_stairs("building_blocks:smoothglass", {
drawtype = "glasslike",
description = S("Streak Free Glass"),
tiles = {"building_blocks_sglass.png"},
paramtype = "light",
sunlight_propagates = true,
is_ground_content = true,
groups = {snappy=3,cracky=3,oddly_breakable_by_hand=3},
sounds = default.node_sound_glass_defaults(),
})
building_blocks_stairs("building_blocks:woodglass", {
drawtype = "glasslike",
description = S("Wood Framed Glass"),
tiles = {"building_blocks_wglass.png"},
paramtype = "light",
sunlight_propagates = true,
is_ground_content = true,
groups = {snappy=3,cracky=3,oddly_breakable_by_hand=3},
sounds = default.node_sound_glass_defaults(),
})
building_blocks_stairs("building_blocks:Adobe", {
tiles = {"building_blocks_Adobe.png"},
description = S("Adobe"),
is_ground_content = true,
groups = {crumbly=3},
sounds = default.node_sound_stone_defaults(),
})
building_blocks_stairs("building_blocks:fakegrass", {
tiles = {"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"},
description = S("Fake Grass"),
is_ground_content = true,
groups = {crumbly=3},
sounds = default.node_sound_dirt_defaults({
footstep = {name="default_grass_footstep", gain=0.4},
}),
})
building_blocks_stairs("building_blocks:hardwood", {
tiles = {"building_blocks_hardwood.png"},
is_ground_content = true,
description = S("Hardwood"),
groups = {choppy=1,flammable=1},
sounds = default.node_sound_wood_defaults(),
})
building_blocks_stairs("building_blocks:Roofing", {
tiles = {"building_blocks_Roofing.png"},
is_ground_content = true,
description = S("Roof block"),
groups = {snappy=3},
sounds = default.node_sound_stone_defaults(),
})
building_blocks_stairs("building_blocks: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(),
})
building_blocks_stairs("building_blocks:Marble", {
description = S("Marble"),
tiles = {"building_blocks_marble.png"},
is_ground_content = true,
groups = {cracky=3, marble = 1},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("building_blocks:brobble_spread", {
drawtype = "raillike",
-- 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",
walkable = false,
selection_box = {
type = "fixed",
-- but how to specify the dimensions for curved and sideways rails?
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
sunlight_propagates = true,
is_ground_content = true,
groups = {crumbly=3},
})
minetest.register_node("building_blocks:gravel_spread", {
drawtype = "raillike",
description = S("Gravel Spread"),
tiles = {"default_gravel.png"},
inventory_image = "building_blocks_gravel_spread_inv.png",
paramtype = "light",
walkable = false,
selection_box = {
type = "fixed",
-- but how to specify the dimensions for curved and sideways rails?
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
sunlight_propagates = true,
is_ground_content = true,
groups = {crumbly=2},
sounds = default.node_sound_dirt_defaults({
footstep = {name="default_gravel_footstep", gain=0.5},
dug = {name="default_gravel_footstep", gain=1.0},
}),
})
minetest.register_node("building_blocks:Tarmac_spread", {
drawtype = "raillike",
description = S("Tarmac Spread"),
tiles = {"building_blocks_tar.png"},
inventory_image = "building_blocks_tar_spread_inv.png",
paramtype = "light",
walkable = false,
selection_box = {
type = "fixed",
-- but how to specify the dimensions for curved and sideways rails?
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
sunlight_propagates = true,
is_ground_content = true,
groups = {cracky=3},
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("building_blocks:terrycloth_towel", {
drawtype = "raillike",
description = S("Terrycloth towel"),
tiles = {"building_blocks_towel.png"},
inventory_image = "building_blocks_towel_inv.png",
paramtype = "light",
walkable = false,
selection_box = {
type = "fixed",
-- but how to specify the dimensions for curved and sideways rails?
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
sunlight_propagates = true,
is_ground_content = true,
groups = {crumbly=3},
})
minetest.register_node("building_blocks:BWtile", {
drawtype = "nodebox",
description = S("Chess board tiling"),
tiles = {
"building_blocks_BWtile.png",
"building_blocks_BWtile.png^[transformR90",
"building_blocks_BWtile.png^[transformR90",
"building_blocks_BWtile.png^[transformR90",
"building_blocks_BWtile.png",
"building_blocks_BWtile.png"
},
inventory_image = "building_blocks_bwtile_inv.png",
paramtype = "light",
walkable = false,
node_box = {
type = "fixed",
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
sunlight_propagates = true,
is_ground_content = true,
groups = {crumbly=3},
})
minetest.register_node("building_blocks:Fireplace", {
description = S("Fireplace"),
tiles = {
"building_blocks_cast_iron.png",
"building_blocks_cast_iron.png",
"building_blocks_cast_iron.png",
"building_blocks_cast_iron_fireplace.png"
},
paramtype = "light",
paramtype2 = "facedir",
light_source = default.LIGHT_MAX,
sunlight_propagates = true,
is_ground_content = true,
groups = {cracky=2},
sounds = default.node_sound_stone_defaults(),
})

View File

@ -0,0 +1,23 @@
local S = homedecor_i18n.gettext
minetest.register_craftitem("building_blocks: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 = S("Tar base"),
image = "building_blocks_tar_base.png",
})
minetest.register_tool("building_blocks:knife", {
description = S("Tar Knife"),
inventory_image = "building_blocks_knife.png",
tool_capabilities = {
max_drop_level=0,
groupcaps={
choppy={times={[2]=7.50, [3]=2.80}, uses=100, maxlevel=1},
fleshy={times={[2]=5.50, [3]=2.80}, uses=100, maxlevel=1}
}
},
})

170
building_blocks/recipes.lua Normal file
View File

@ -0,0 +1,170 @@
local S = homedecor_i18n.gettext
if minetest.get_modpath("moreblocks") then
minetest.register_craft({
output = 'building_blocks:sticks 2',
recipe = {
{'group:stick', '' , 'group:stick'},
{'group:stick', 'group:stick', 'group:stick'},
{'group:stick', 'group:stick', 'group:stick'},
}
})
else
minetest.register_craft({
output = 'building_blocks:sticks',
recipe = {
{'group:stick', 'group:stick'},
{'group:stick', 'group:stick'},
}
})
end
minetest.register_craft({
output = 'building_blocks:Adobe 3',
recipe = {
{"default:sand"},
{"default:clay"},
{"group:stick"},
}
})
minetest.register_craft({
output = 'building_blocks:brobble_spread 4',
recipe = {
{"default:brick", "default:cobble", "default:brick"},
}
})
minetest.register_craft({
output = 'building_blocks:BWtile 10',
recipe = {
{"group:marble", "group:tar_block"},
{"group:tar_block", "group:marble"},
}
})
minetest.register_craft({
output = 'building_blocks:fakegrass 2',
recipe = {
{'default:leaves'},
{"default:dirt"},
}
})
minetest.register_craft({
output = 'building_blocks:Fireplace 1',
recipe = {
{"default:steel_ingot", "building_blocks:sticks", "default:steel_ingot"},
}
})
minetest.register_craft({
output = 'building_blocks:grate 1',
recipe = {
{"default:steel_ingot", "default:steel_ingot"},
{"default:glass", "default:glass"},
}
})
minetest.register_craft({
output = 'building_blocks:gravel_spread 4',
recipe = {
{"default:gravel", "default:gravel", "default:gravel"},
}
})
minetest.register_craft({
output = 'building_blocks:hardwood 2',
recipe = {
{"default:wood", "default:junglewood"},
{"default:junglewood", "default:wood"},
}
})
minetest.register_craft({
output = 'building_blocks:hardwood 2',
recipe = {
{"default:junglewood", "default:wood"},
{"default:wood", "default:junglewood"},
}
})
minetest.register_craft({
output = 'building_blocks:knife 1',
recipe = {
{"group:tar_block"},
{"group:stick"},
}
})
minetest.register_craft({
output = "building_blocks:Marble 9",
recipe = {
{"default:clay", "group:tar_block", "default:clay"},
{"group:tar_block","default:clay", "group:tar_block"},
{"default:clay", "group:tar_block","default:clay"},
}
})
minetest.register_craft({
output = 'building_blocks:Roofing 10',
recipe = {
{"building_blocks:Adobe", "building_blocks:Adobe"},
{"building_blocks:Adobe", "building_blocks:Adobe"},
}
})
minetest.register_craft({
output = 'default:stick 4',
recipe = {
{'building_blocks:sticks'},
}
})
minetest.register_craft({
output = 'building_blocks:tar_base 4',
recipe = {
{"default:coal_lump", "default:gravel"},
{"default:gravel", "default:coal_lump"}
}
})
minetest.register_craft({
output = 'building_blocks:tar_base 4',
recipe = {
{"default:gravel", "default:coal_lump"},
{"default:coal_lump", "default:gravel"}
}
})
minetest.register_craft({
output = 'building_blocks:Tarmac_spread 4',
recipe = {
{"group:tar_block", "group:tar_block"},
}
})
minetest.register_craft({
output = 'building_blocks:terrycloth_towel 2',
recipe = {
{"farming:string", "farming:string", "farming:string"},
}
})
minetest.register_craft({
output = 'building_blocks:woodglass 1',
recipe = {
{"default:wood"},
{"default:glass"},
}
})
minetest.register_craft({
type = "cooking",
output = "building_blocks:smoothglass",
recipe = "default:glass"
})
minetest.register_craft({
type = "cooking",
output = "building_blocks:Tar",
recipe = "building_blocks:tar_base",
})
minetest.register_craft({
type = "fuel",
recipe = "building_blocks:hardwood",
burntime = 28,
})
minetest.register_craft({
type = "fuel",
recipe = "building_blocks:sticks",
burntime = 5,
})
minetest.register_craft({
type = "fuel",
recipe = "building_blocks:Tar",
burntime = 40,
})

View File

@ -3,14 +3,14 @@ local S = homedecor_i18n.gettext
local chains_sbox = { local chains_sbox = {
type = "fixed", type = "fixed",
fixed = { -0.1, -0.625, -0.1, 0.1, 0.5, 0.1 } fixed = { -0.1, -0.5, -0.1, 0.1, 0.5, 0.1 }
} }
local topchains_sbox = { local topchains_sbox = {
type = "fixed", type = "fixed",
fixed = { fixed = {
{ -0.25, 0.35, -0.25, 0.25, 0.5, 0.25 }, { -0.25, 0.35, -0.25, 0.25, 0.5, 0.25 },
{ -0.1, -0.625, -0.1, 0.1, 0.4, 0.1 } { -0.1, -0.5, -0.1, 0.1, 0.4, 0.1 }
} }
} }
@ -73,7 +73,7 @@ minetest.register_node("chains:chain_top_brass", {
minetest.register_node("chains:chandelier", { minetest.register_node("chains:chandelier", {
description = S("Chandelier (wrought iron)"), description = S("Chandelier (wrought iron)"),
paramtype = "light", paramtype = "light",
light_source = default.LIGHT_MAX-2, light_source = 12,
walkable = false, walkable = false,
climbable = true, climbable = true,
sunlight_propagates = true, sunlight_propagates = true,
@ -99,7 +99,7 @@ minetest.register_node("chains:chandelier", {
minetest.register_node("chains:chandelier_brass", { minetest.register_node("chains:chandelier_brass", {
description = S("Chandelier (brass)"), description = S("Chandelier (brass)"),
paramtype = "light", paramtype = "light",
light_source = default.LIGHT_MAX-2, light_source = 12,
walkable = false, walkable = false,
climbable = true, climbable = true,
sunlight_propagates = true, sunlight_propagates = true,

View File

@ -1,6 +0,0 @@
# Language: Español
# Author: Diego Martínez <lkaezadl3@gmail.com>
Plastic sheet = Placa de Plastico
Unprocessed Plastic base = Base de Plastico No Procesada

View File

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

View File

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

View File

@ -4,52 +4,49 @@ local S = homedecor_i18n.gettext
minetest.register_node("homedecor:bathroom_tiles_dark", { minetest.register_node("homedecor:bathroom_tiles_dark", {
description = S("Bathroom/kitchen tiles (dark)"), description = S("Bathroom/kitchen tiles (dark)"),
tiles = { tiles = {
{ name = "homedecor_bathroom_tiles_bg.png", color = 0xff606060 }, "homedecor_bathroom_tiles_bg.png"
"homedecor_bathroom_tiles_fg.png" },
overlay_tiles = {
{ name = "homedecor_bathroom_tiles_fg.png", color = 0xff606060 },
}, },
drawtype = "mesh",
mesh = "homedecor_block_with_overlay.obj",
paramtype = "light", paramtype = "light",
paramtype2 = "color", paramtype2 = "color",
palette = "unifieddyes_palette_extended.png", palette = "unifieddyes_palette_extended.png",
place_param2 = 240,
groups = {cracky=3, ud_param2_colorable = 1}, groups = {cracky=3, ud_param2_colorable = 1},
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
after_dig_node = unifieddyes.after_dig_node on_construct = unifieddyes.on_construct,
}) })
minetest.register_node("homedecor:bathroom_tiles_medium", { minetest.register_node("homedecor:bathroom_tiles_medium", {
description = S("Bathroom/kitchen tiles (medium)"), description = S("Bathroom/kitchen tiles (medium)"),
tiles = { tiles = {
{ name = "homedecor_bathroom_tiles_bg.png", color = 0xffc0c0c0 }, "homedecor_bathroom_tiles_bg.png"
"homedecor_bathroom_tiles_fg.png" },
overlay_tiles = {
{ name = "homedecor_bathroom_tiles_fg.png", color = 0xffc0c0c0 },
}, },
drawtype = "mesh",
mesh = "homedecor_block_with_overlay.obj",
paramtype = "light", paramtype = "light",
paramtype2 = "color", paramtype2 = "color",
palette = "unifieddyes_palette_extended.png", palette = "unifieddyes_palette_extended.png",
place_param2 = 240,
groups = {cracky=3, ud_param2_colorable = 1}, groups = {cracky=3, ud_param2_colorable = 1},
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
after_dig_node = unifieddyes.after_dig_node on_construct = unifieddyes.on_construct,
}) })
minetest.register_node("homedecor:bathroom_tiles_light", { minetest.register_node("homedecor:bathroom_tiles_light", {
description = S("Bathroom/kitchen tiles (light)"), description = S("Bathroom/kitchen tiles (light)"),
tiles = { tiles = {
{ name = "homedecor_bathroom_tiles_bg.png", color = 0xffffffff }, "homedecor_bathroom_tiles_bg.png"
"homedecor_bathroom_tiles_fg.png" },
overlay_tiles = {
{ name = "homedecor_bathroom_tiles_fg.png", color = 0xffffffff },
}, },
drawtype = "mesh",
mesh = "homedecor_block_with_overlay.obj",
paramtype = "light", paramtype = "light",
paramtype2 = "color", paramtype2 = "color",
palette = "unifieddyes_palette_extended.png", palette = "unifieddyes_palette_extended.png",
place_param2 = 240,
groups = {cracky=3, ud_param2_colorable = 1}, groups = {cracky=3, ud_param2_colorable = 1},
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
after_dig_node = unifieddyes.after_dig_node on_construct = unifieddyes.on_construct,
}) })
local tr_cbox = { local tr_cbox = {
@ -167,21 +164,3 @@ minetest.register_lbm({
meta:set_string("palette", "ext") meta:set_string("palette", "ext")
end end
}) })
minetest.register_lbm({
name = "homedecor:recolor_bathroom_tiles",
label = "Convert bathroom tiles to use UD extended palette",
run_at_every_load = false,
nodenames = {
"homedecor:bathroom_tiles_light",
"homedecor:bathroom_tiles_medium",
"homedecor:bathroom_tiles_dark",
},
action = function(pos, node)
local meta = minetest.get_meta(pos)
if meta:get_string("palette") ~= "ext" then
minetest.swap_node(pos, { name = node.name, param2 = unifieddyes.convert_classic_palette[node.param2] })
meta:set_string("palette", "ext")
end
end
})

View File

@ -56,7 +56,7 @@ homedecor.register("bed_regular", {
return homedecor.bed_expansion(pos, placer, itemstack, pointed_thing) return homedecor.bed_expansion(pos, placer, itemstack, pointed_thing)
end end
end, end,
after_dig_node = function(pos) after_dig_node = function(pos, oldnode, oldmetadata, digger)
homedecor.unextend_bed(pos) homedecor.unextend_bed(pos)
end, end,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
@ -65,9 +65,7 @@ homedecor.register("bed_regular", {
homedecor.bed_expansion(pos, clicker, itemstack, pointed_thing, true) homedecor.bed_expansion(pos, clicker, itemstack, pointed_thing, true)
return itemstack return itemstack
else else
-- if minetest.get_modpath("beds") then homedecor.beds_on_rightclick(pos, node, clicker)
-- beds.on_rightclick(pos, clicker)
-- end
return itemstack return itemstack
end end
end end
@ -91,16 +89,13 @@ homedecor.register("bed_extended", {
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
expand = { forward = "air" }, expand = { forward = "air" },
on_rotate = screwdriver.disallow, on_rotate = screwdriver.disallow,
after_dig_node = function(pos) after_dig_node = function(pos, oldnode, oldmetadata, digger)
homedecor.unextend_bed(pos) homedecor.unextend_bed(pos)
end, end,
-- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
-- local itemname = itemstack:get_name() homedecor.beds_on_rightclick(pos, node, clicker)
-- if minetest.get_modpath("beds") then return itemstack
-- beds.on_rightclick(pos, clicker) end,
-- end
-- return itemstack
-- end,
drop = "homedecor:bed_regular" drop = "homedecor:bed_regular"
}) })
@ -123,21 +118,20 @@ homedecor.register("bed_kingsize", {
node_box = kbed_cbox, node_box = kbed_cbox,
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
on_rotate = screwdriver.disallow, on_rotate = screwdriver.disallow,
after_place_node = unifieddyes.fix_rotation_nsew, after_place_node = function(pos, placer, itemstack, pointed_thing)
unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger) after_dig_node = function(pos, oldnode, oldmetadata, digger)
local inv = digger:get_inventory() local inv = digger:get_inventory()
if digger:get_player_control().sneak and inv:room_for_item("main", "bed_regular 1") then if digger:get_player_control().sneak and inv:room_for_item("main", "homedecor:bed_regular 2") then
inv:remove_item("main", "homedecor:bed_kingsize 1") inv:remove_item("main", "homedecor:bed_kingsize 1")
inv:add_item("main", "homedecor:bed_regular 2") inv:add_item("main", "homedecor:bed_regular 2")
end end
end, end,
-- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
-- local itemname = itemstack:get_name() homedecor.beds_on_rightclick(pos, node, clicker)
-- if minetest.get_modpath("beds") then return itemstack
-- beds.on_rightclick(pos, clicker) end,
-- end
-- return itemstack
-- end
}) })
for _, w in pairs({ N_("mahogany"), N_("oak") }) do for _, w in pairs({ N_("mahogany"), N_("oak") }) do

View File

@ -1,11 +1,24 @@
local S = homedecor_i18n.gettext local S = homedecor_i18n.gettext
local function N_(x) return x end
local bookcolors = {
{ N_("red"), 0xffd26466 },
{ N_("green"), 0xff62aa66 },
{ N_("blue"), 0xff8686d7 },
{ N_("violet"), 0xff9c65a7 },
{ N_("grey"), 0xff757579 },
{ N_("brown"), 0xff896958 }
}
local BOOK_FORMNAME = "homedecor:book_form" local BOOK_FORMNAME = "homedecor:book_form"
local player_current_book = { } local player_current_book = { }
local function book_dig(pos, node, digger) for _, c in ipairs(bookcolors) do
local color, hue = unpack(c)
local function book_dig(pos, node, digger)
if minetest.is_protected(pos, digger:get_player_name()) then return end if minetest.is_protected(pos, digger:get_player_name()) then return end
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local data = minetest.serialize({ local data = minetest.serialize({
@ -15,7 +28,7 @@ local function book_dig(pos, node, digger)
_recover = meta:get_string("_recover") or "", _recover = meta:get_string("_recover") or "",
}) })
local stack = ItemStack({ local stack = ItemStack({
name = "homedecor:book", name = "homedecor:book_"..color,
metadata = data, metadata = data,
}) })
stack = digger:get_inventory():add_item("main", stack) stack = digger:get_inventory():add_item("main", stack)
@ -23,29 +36,25 @@ local function book_dig(pos, node, digger)
minetest.item_drop(stack, digger, pos) minetest.item_drop(stack, digger, pos)
end end
minetest.remove_node(pos) minetest.remove_node(pos)
end end
local inv_img = "homedecor_book_inv.png^homedecor_book_trim_inv.png" homedecor.register("book_"..color, {
description = S("Writable Book (@1)", S(color)),
homedecor.register("book", {
description = S("Writable Book"),
mesh = "homedecor_book.obj", mesh = "homedecor_book.obj",
tiles = { tiles = {
"homedecor_book_cover.png", { name = "homedecor_book_cover.png", color = hue },
{ name = "homedecor_book_edges.png", color = 0xffffffff }, { name = "homedecor_book_edges.png", color = "white" }
{ name = "homedecor_book_cover_trim.png", color = 0xffffffff }
}, },
inventory_image = inv_img, overlay_tiles = {
wield_image = inv_img, { name = "homedecor_book_cover_trim.png", color = "white" },
groups = { snappy=3, oddly_breakable_by_hand=3, book=1, ud_param2_colorable = 1 }, ""
},
groups = { snappy=3, oddly_breakable_by_hand=3, book=1 },
walkable = false, walkable = false,
paramtype2 = "colorwallmounted",
palette = "unifieddyes_palette_colorwallmounted.png",
after_dig_node = unifieddyes.after_dig_node,
stack_max = 1, stack_max = 1,
on_punch = function(pos, node, puncher, pointed_thing) on_punch = function(pos, node, puncher, pointed_thing)
local fdir = node.param2 local fdir = node.param2
minetest.swap_node(pos, { name = "homedecor:book_open", param2 = fdir }) minetest.swap_node(pos, { name = "homedecor:book_open_"..color, param2 = fdir })
end, end,
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
local plname = placer:get_player_name() local plname = placer:get_player_name()
@ -61,7 +70,7 @@ homedecor.register("book", {
if minetest.is_protected(pos, plname) then return itemstack end if minetest.is_protected(pos, plname) then return itemstack end
local fdir = minetest.dir_to_facedir(placer:get_look_dir()) local fdir = minetest.dir_to_facedir(placer:get_look_dir())
minetest.set_node(pos, { minetest.set_node(pos, {
name = "homedecor:book", name = "homedecor:book_"..color,
param2 = fdir, param2 = fdir,
}) })
local text = itemstack:get_metadata() or "" local text = itemstack:get_metadata() or ""
@ -80,35 +89,28 @@ homedecor.register("book", {
if data.title and data.title ~= "" then if data.title and data.title ~= "" then
meta:set_string("infotext", data.title) meta:set_string("infotext", data.title)
end end
if not homedecor.expect_infinite_stacks then if not creative.is_enabled_for(plname) then
itemstack:take_item() itemstack:take_item()
end end
unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
return itemstack return itemstack
end, end,
on_rotate = unifieddyes.fix_after_screwdriver_nsew,
on_dig = book_dig, on_dig = book_dig,
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = {-0.2, -0.5, -0.25, 0.2, -0.35, 0.25} fixed = {-0.2, -0.5, -0.25, 0.2, -0.35, 0.25}
} }
}) })
homedecor.register("book_open", { homedecor.register("book_open_"..color, {
mesh = "homedecor_book_open.obj", mesh = "homedecor_book_open.obj",
tiles = { tiles = {
"homedecor_book_cover.png", { name = "homedecor_book_cover.png", color = hue },
{ name = "homedecor_book_edges.png", color = 0xffffffff }, { name = "homedecor_book_edges.png", color = "white" },
{ name = "homedecor_book_pages.png", color = 0xffffffff } { name = "homedecor_book_pages.png", color = "white" }
}, },
groups = { snappy=3, oddly_breakable_by_hand=3, not_in_creative_inventory=1, ud_param2_colorable = 1 }, groups = { snappy=3, oddly_breakable_by_hand=3, not_in_creative_inventory=1 },
drop = "homedecor:book", drop = "homedecor:book_"..color,
walkable = false, walkable = false,
paramtype2 = "colorwallmounted",
palette = "unifieddyes_palette_colorwallmounted.png",
after_place_node = unifieddyes.fix_rotation_nsew,
after_dig_node = unifieddyes.after_dig_node,
on_rotate = unifieddyes.fix_after_screwdriver_nsew,
on_dig = book_dig, on_dig = book_dig,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
@ -138,7 +140,7 @@ homedecor.register("book_open", {
end, end,
on_punch = function(pos, node, puncher, pointed_thing) on_punch = function(pos, node, puncher, pointed_thing)
local fdir = node.param2 local fdir = node.param2
minetest.swap_node(pos, { name = "homedecor:book", param2 = fdir }) minetest.swap_node(pos, { name = "homedecor:book_"..color, param2 = fdir })
minetest.sound_play("homedecor_book_close", { minetest.sound_play("homedecor_book_close", {
pos=pos, pos=pos,
max_hear_distance = 3, max_hear_distance = 3,
@ -149,16 +151,25 @@ homedecor.register("book_open", {
type = "fixed", type = "fixed",
fixed = {-0.35, -0.5, -0.25, 0.35, -0.4, 0.25} fixed = {-0.35, -0.5, -0.25, 0.35, -0.4, 0.25}
} }
}) })
end
minetest.register_on_player_receive_fields(function(player, form_name, fields) minetest.register_on_player_receive_fields(function(player, form_name, fields)
if form_name ~= BOOK_FORMNAME or not fields.save then if form_name ~= BOOK_FORMNAME then
return return false
end end
local player_name = player:get_player_name() local player_name = player:get_player_name()
local pos = player_current_book[player_name] local pos = player_current_book[player_name]
if not pos then return end if not pos then
return true
end
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local owner = meta:get_string("owner")
if owner ~= "" and player_name ~= owner or not fields.save then
player_current_book[player_name] = nil
return true
end
meta:set_string("title", fields.title or "") meta:set_string("title", fields.title or "")
meta:set_string("text", fields.text or "") meta:set_string("text", fields.text or "")
meta:set_string("owner", player_name) meta:set_string("owner", player_name)
@ -167,69 +178,10 @@ minetest.register_on_player_receive_fields(function(player, form_name, fields)
end end
minetest.log("action", S("@1 has written in a book (title: \"@2\"): \"@3\" at location @4", 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()))) player:get_player_name(), fields.title, fields.text, minetest.pos_to_string(player:getpos())))
player_current_book[player_name] = nil
return true
end) end)
-- convert old static nodes to param2 minetest.register_alias("homedecor:book", "homedecor:book_grey")
minetest.register_alias("homedecor:book_open", "homedecor:book_open_grey")
local bookcolors = {
"red",
"green",
"blue",
"violet",
"grey",
"brown"
}
homedecor.old_static_books = {}
for _, color in ipairs(bookcolors) do
table.insert(homedecor.old_static_books, "homedecor:book_"..color)
table.insert(homedecor.old_static_books, "homedecor:book_open_"..color)
end
minetest.register_lbm({
name = "homedecor:convert_books",
label = "Convert homedecor books to use param2 color",
run_at_every_load = false,
nodenames = homedecor.old_static_books,
action = function(pos, node)
local name = node.name
local color = string.sub(name, string.find(name, "_", -7)+1)
local newname = "homedecor:book"
if string.find(name, "open") then
newname = "homedecor:book_open"
end
local old_fdir = math.floor(node.param2 % 32)
local new_fdir = 3
if old_fdir == 0 then
new_fdir = 3
elseif old_fdir == 1 then
new_fdir = 4
elseif old_fdir == 2 then
new_fdir = 2
elseif old_fdir == 3 then
new_fdir = 5
end
if color == "grey" then
color = "dark_grey"
elseif color == "violet" then
color = "dark_magenta"
elseif color == "brown" then
color = "dark_orange"
elseif color == "blue" then
color = "light_blue"
else
color = "medium_"..color
end
local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
local param2 = paletteidx + new_fdir
minetest.swap_node(pos, { name = newname, param2 = param2 })
local meta = minetest.get_meta(pos)
meta:set_string("dye", "unifieddyes:"..color)
end
})

View File

@ -25,7 +25,6 @@ minetest.register_entity("homedecor:mesh_desk_fan", {
}) })
local add_mesh_desk_fan_entity = function(pos) local add_mesh_desk_fan_entity = function(pos)
print("in add_mesh_desk_fan_entity()")
local param2 = minetest.get_node(pos).param2 local param2 = minetest.get_node(pos).param2
local entity = minetest.add_entity(pos, "homedecor:mesh_desk_fan") local entity = minetest.add_entity(pos, "homedecor:mesh_desk_fan")
if param2 == 0 then if param2 == 0 then

View File

@ -546,6 +546,17 @@ minetest.register_craft( {
}, },
}) })
unifieddyes.register_color_craft({
output = "homedecor:shutter_colored",
palette = "wallmounted",
type = "shapeless",
neutral_node = "homedecor:shutter",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft({ minetest.register_craft({
type = "fuel", type = "fuel",
recipe = "homedecor:shutter_oak", recipe = "homedecor:shutter_oak",
@ -867,6 +878,28 @@ minetest.register_craft( {
}, },
}) })
unifieddyes.register_color_craft({
output = "homedecor:curtain_closed",
palette = "wallmounted",
type = "shapeless",
neutral_node = "homedecor:curtain_closed",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
unifieddyes.register_color_craft({
output = "homedecor:curtain_open",
palette = "wallmounted",
type = "shapeless",
neutral_node = "homedecor:curtain_open",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
local mats = { local mats = {
{ "brass", "homedecor:pole_brass" }, { "brass", "homedecor:pole_brass" },
{ "wrought_iron", "homedecor:pole_wrought_iron" }, { "wrought_iron", "homedecor:pole_wrought_iron" },
@ -1195,7 +1228,6 @@ minetest.register_craft( {
minetest.register_craft({ minetest.register_craft({
output = "homedecor:glowlight_half 6", output = "homedecor:glowlight_half 6",
recipe = { recipe = {
{ "dye:white", "dye:white", "dye:white" },
{ "default:glass", "homedecor:power_crystal", "default:glass", }, { "default:glass", "homedecor:power_crystal", "default:glass", },
} }
}) })
@ -1203,11 +1235,38 @@ minetest.register_craft({
minetest.register_craft({ minetest.register_craft({
output = "homedecor:glowlight_half 6", output = "homedecor:glowlight_half 6",
recipe = { recipe = {
{ "dye:white", "dye:white", "dye:white" },
{"moreblocks:super_glow_glass", "moreblocks:glow_glass", "moreblocks:super_glow_glass", }, {"moreblocks:super_glow_glass", "moreblocks:glow_glass", "moreblocks:super_glow_glass", },
} }
}) })
minetest.register_craft({
output = "homedecor:glowlight_half",
recipe = {
{"homedecor:glowlight_small_cube","homedecor:glowlight_small_cube"},
{"homedecor:glowlight_small_cube","homedecor:glowlight_small_cube"}
}
})
minetest.register_craft({
output = "homedecor:glowlight_half",
type = "shapeless",
recipe = {
"homedecor:glowlight_quarter",
"homedecor:glowlight_quarter"
}
})
unifieddyes.register_color_craft({
output = "homedecor:glowlight_half",
palette = "wallmounted",
type = "shapeless",
neutral_node = "homedecor:glowlight_half",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft({ minetest.register_craft({
output = "homedecor:glowlight_quarter 6", output = "homedecor:glowlight_quarter 6",
recipe = { recipe = {
@ -1215,6 +1274,17 @@ minetest.register_craft({
} }
}) })
unifieddyes.register_color_craft({
output = "homedecor:glowlight_quarter",
palette = "wallmounted",
type = "shapeless",
neutral_node = "homedecor:glowlight_quarter",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft({ minetest.register_craft({
output = "homedecor:glowlight_small_cube 8", output = "homedecor:glowlight_small_cube 8",
recipe = { recipe = {
@ -1239,20 +1309,14 @@ minetest.register_craft({
} }
}) })
minetest.register_craft({ unifieddyes.register_color_craft({
output = "homedecor:glowlight_half", output = "homedecor:glowlight_small_cube",
recipe = { palette = "wallmounted",
{"homedecor:glowlight_small_cube","homedecor:glowlight_small_cube"},
{"homedecor:glowlight_small_cube","homedecor:glowlight_small_cube"}
}
})
minetest.register_craft({
output = "homedecor:glowlight_half",
type = "shapeless", type = "shapeless",
neutral_node = "homedecor:glowlight_small_cube",
recipe = { recipe = {
"homedecor:glowlight_quarter", "NEUTRAL_NODE",
"homedecor:glowlight_quarter" "MAIN_DYE"
} }
}) })
@ -1298,15 +1362,7 @@ minetest.register_craft( {
-- other types of fences -- other types of fences
minetest.register_craft( { minetest.register_craft( {
output = "homedecor:fence_wrought_iron_2 2", output = "homedecor:fence_wrought_iron_2 4",
recipe = {
{ "homedecor:pole_wrought_iron", "default:iron_lump" },
{ "homedecor:pole_wrought_iron", "default:iron_lump" },
},
})
minetest.register_craft( {
output = "homedecor:fence_wrought_iron_2 2",
recipe = { recipe = {
{ "homedecor:pole_wrought_iron", "default:iron_lump" }, { "homedecor:pole_wrought_iron", "default:iron_lump" },
{ "homedecor:pole_wrought_iron", "default:iron_lump" }, { "homedecor:pole_wrought_iron", "default:iron_lump" },
@ -2235,6 +2291,17 @@ minetest.register_craft( {
}, },
}) })
unifieddyes.register_color_craft({
output = "homedecor:bathroom_tiles_light",
palette = "extended",
type = "shapeless",
neutral_node = "homedecor:bathroom_tiles_light",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft( { minetest.register_craft( {
output = "homedecor:bathroom_tiles_medium 4", output = "homedecor:bathroom_tiles_medium 4",
recipe = { recipe = {
@ -2243,6 +2310,17 @@ minetest.register_craft( {
}, },
}) })
unifieddyes.register_color_craft({
output = "homedecor:bathroom_tiles_medium",
palette = "extended",
type = "shapeless",
neutral_node = "homedecor:bathroom_tiles_medium",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft( { minetest.register_craft( {
output = "homedecor:bathroom_tiles_dark 4", output = "homedecor:bathroom_tiles_dark 4",
recipe = { recipe = {
@ -2251,6 +2329,17 @@ minetest.register_craft( {
}, },
}) })
unifieddyes.register_color_craft({
output = "homedecor:bathroom_tiles_dark",
palette = "extended",
type = "shapeless",
neutral_node = "homedecor:bathroom_tiles_dark",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
-- misc electrical -- misc electrical
minetest.register_craft( { minetest.register_craft( {
@ -2484,6 +2573,17 @@ minetest.register_craft( {
}, },
}) })
unifieddyes.register_color_craft({
output = "homedecor:bed_regular",
palette = "wallmounted",
type = "shapeless",
neutral_node = "homedecor:bed_regular",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft( { minetest.register_craft( {
output = "homedecor:bed_kingsize", output = "homedecor:bed_kingsize",
recipe = { recipe = {
@ -2491,6 +2591,29 @@ minetest.register_craft( {
}, },
}) })
unifieddyes.register_color_craft({
output = "homedecor:bed_kingsize",
palette = "wallmounted",
type = "shapeless",
neutral_node = "homedecor:bed_kingsize",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
unifieddyes.register_color_craft({
output = "homedecor:bed_kingsize",
palette = "wallmounted",
type = "shapeless",
neutral_node = "homedecor:bed_regular",
recipe = {
"NEUTRAL_NODE",
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft( { minetest.register_craft( {
output = "homedecor:bottle_green", output = "homedecor:bottle_green",
recipe = { recipe = {
@ -2851,6 +2974,17 @@ minetest.register_craft({
}, },
}) })
unifieddyes.register_color_craft({
output = "homedecor:desk_lamp",
palette = "wallmounted",
type = "shapeless",
neutral_node = "homedecor:desk_lamp",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft({ minetest.register_craft({
output = "homedecor:hanging_lantern 2", output = "homedecor:hanging_lantern 2",
recipe = { recipe = {
@ -2928,7 +3062,7 @@ minetest.register_craft({
recipe = { recipe = {
{ "", "technic:brass_ingot", ""}, { "", "technic:brass_ingot", ""},
{ "", "homedecor:chainlink_brass", ""}, { "", "homedecor:chainlink_brass", ""},
{ "default:glass", "homedecor:glowlight_small", "default:glass"} { "default:glass", "homedecor:glowlight_small_cube", "default:glass"}
}, },
}) })
@ -2936,7 +3070,7 @@ minetest.register_craft({
output = "homedecor:ceiling_lamp", output = "homedecor:ceiling_lamp",
recipe = { recipe = {
{ "", "chains:chain_top_brass", ""}, { "", "chains:chain_top_brass", ""},
{ "default:glass", "homedecor:glowlight_small", "default:glass"} { "default:glass", "homedecor:glowlight_small_cube", "default:glass"}
}, },
}) })
@ -2958,23 +3092,29 @@ minetest.register_craft({
}, },
}) })
minetest.register_craft({ if minetest.settings:get_bool("homedecor.disable_coin_crafting") == false then
minetest.register_craft({
type = "shapeless", type = "shapeless",
output = "homedecor:coin 5", output = "homedecor:coin 5",
recipe = {"moreblocks:micro_goldblock_1", "default:sword_stone"} recipe = {"moreblocks:micro_goldblock_1", "default:sword_stone"}
}) })
minetest.register_craft({ minetest.register_craft({
type = "shapeless", type = "shapeless",
output = "homedecor:coin 15", output = "homedecor:coin 15",
recipe = {"default:gold_ingot", "default:sword_steel"} recipe = {"default:gold_ingot", "default:sword_steel"}
}) })
minetest.register_craft({ minetest.register_craft({
type = "shapeless", type = "shapeless",
output = "homedecor:coin 50", output = "homedecor:coin 50",
recipe = {"default:goldblock", "default:sword_mese"} recipe = {"default:goldblock", "default:sword_mese"}
}) })
else
if minetest.settings:get("log_mods") then
minetest.log("[HomeDecor] " .. S("coin crafting is disabled!"))
end
end
minetest.register_craft({ minetest.register_craft({
output = "homedecor:lattice_wood 8", output = "homedecor:lattice_wood 8",
@ -3022,10 +3162,28 @@ minetest.register_craft({
}) })
minetest.register_craft({ minetest.register_craft({
output = "homedecor:stained_glass", output = "homedecor:stained_glass 3",
recipe = { recipe = {
{"", "dye:blue", ""}, {"", "dye:blue", ""},
{"dye:red", "xpanes:pane", "dye:green"}, {"dye:red", "xpanes:pane_flat", "dye:green"},
{"", "dye:yellow", ""},
},
})
minetest.register_craft({
output = "homedecor:stained_glass 2",
recipe = {
{"", "dye:blue", ""},
{"dye:red", "cottages:glass_pane_side", "dye:green"},
{"", "dye:yellow", ""},
},
})
minetest.register_craft({
output = "homedecor:stained_glass 2",
recipe = {
{"", "dye:blue", ""},
{"dye:red", "cottages:glass_pane", "dye:green"},
{"", "dye:yellow", ""}, {"", "dye:yellow", ""},
}, },
}) })
@ -3115,6 +3273,19 @@ for i in ipairs(homedecor.banister_materials) do
}) })
end end
unifieddyes.register_color_craft({
output = "",
palette = "split",
neutral_node = "homedecor:banister_wood_horizontal",
type = "shapeless",
output_prefix = "homedecor:banister_wood_horizontal_",
output_suffix = "",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE",
}
})
if (minetest.get_modpath("technic") and minetest.get_modpath("dye") and minetest.get_modpath("bees")) then 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"} }) technic.register_separating_recipe({ input = {"bees:wax 1"}, output = {"homedecor:oil_extract 2","dye:yellow 1"} })
end end

View File

@ -1,6 +1,7 @@
default default
unifieddyes unifieddyes
homedecor_i18n homedecor_i18n
creative
building_blocks? building_blocks?
signs_lib? signs_lib?
moreblocks? moreblocks?
@ -11,3 +12,5 @@ bucket?
beds? beds?
flowers? flowers?
3d_armor? 3d_armor?
skinsdb?
mesecons?

View File

@ -4,6 +4,8 @@ local S = homedecor_i18n.gettext
local function N_(x) return x end local function N_(x) return x end
local m_rules = mesecon and mesecon.rules and mesecon.rules.pplate
-- doors -- doors
local function isSolid(pos, adjust) local function isSolid(pos, adjust)
@ -264,6 +266,7 @@ for i, side in ipairs(sides) do
drop = "homedecor:door_"..doorname.."_left", drop = "homedecor:door_"..doorname.."_left",
mesecons = { mesecons = {
effector = { effector = {
rules = m_rules,
action_on = function(pos,node) action_on = function(pos,node)
local isClosed = getClosed(pos) local isClosed = getClosed(pos)
if isClosed then if isClosed then
@ -405,6 +408,7 @@ for i, g in ipairs(gate_list) do
end, end,
mesecons = { mesecons = {
effector = { effector = {
rules = m_rules,
action_on = function(pos,node) homedecor.flip_gate(pos,node,nil,gate, "closed") end action_on = function(pos,node) homedecor.flip_gate(pos,node,nil,gate, "closed") end
} }
} }
@ -433,6 +437,7 @@ for i, g in ipairs(gate_list) do
return itemstack return itemstack
end end
def.mesecons.effector = { def.mesecons.effector = {
rules = m_rules,
action_off = function(pos,node) homedecor.flip_gate(pos,node,nil,gate, "open") end action_off = function(pos,node) homedecor.flip_gate(pos,node,nil,gate, "open") end
} }

View File

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

View File

@ -81,8 +81,9 @@ homedecor.register("kitchen_chair_padded", {
collision_box = kc_cbox, collision_box = kc_cbox,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, ud_param2_colorable = 1}, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, ud_param2_colorable = 1},
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
after_place_node = unifieddyes.fix_rotation_nsew, after_place_node = function(pos, placer, itemstack, pointed_thing)
after_dig_node = unifieddyes.after_dig_node, unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
end,
on_rotate = unifieddyes.fix_after_screwdriver_nsew, on_rotate = unifieddyes.fix_after_screwdriver_nsew,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
pos.y = pos.y+0 -- where do I put my ass ? pos.y = pos.y+0 -- where do I put my ass ?
@ -105,8 +106,9 @@ homedecor.register("armchair", {
groups = {snappy=3, ud_param2_colorable = 1}, groups = {snappy=3, ud_param2_colorable = 1},
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
node_box = ac_cbox, node_box = ac_cbox,
after_place_node = unifieddyes.fix_rotation_nsew, after_place_node = function(pos, placer, itemstack, pointed_thing)
after_dig_node = unifieddyes.after_dig_node, unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
end,
on_rotate = unifieddyes.fix_after_screwdriver_nsew, on_rotate = unifieddyes.fix_after_screwdriver_nsew,
}) })
@ -162,7 +164,25 @@ minetest.register_alias('armchair', 'homedecor:armchair')
homedecor.old_static_chairs = {} homedecor.old_static_chairs = {}
for _, color in ipairs(lrfurn.colors) do local chair_colors = {
"black",
"brown",
"blue",
"cyan",
"dark_grey",
"dark_green",
"green",
"grey",
"magenta",
"orange",
"pink",
"red",
"violet",
"white",
"yellow",
}
for _, color in ipairs(chair_colors) do
table.insert(homedecor.old_static_chairs, "homedecor:chair_"..color) table.insert(homedecor.old_static_chairs, "homedecor:chair_"..color)
table.insert(homedecor.old_static_chairs, "homedecor:armchair_"..color) table.insert(homedecor.old_static_chairs, "homedecor:armchair_"..color)
end end
@ -211,8 +231,6 @@ minetest.register_lbm({
local param2 = paletteidx + new_fdir local param2 = paletteidx + new_fdir
local newname = "homedecor:armchair" local newname = "homedecor:armchair"
print(name, dump(a), dump(b), dump(color).."("..dump(paletteidx)..")", dump(param2))
if node.name == "homedecor:chair" then if node.name == "homedecor:chair" then
newname = "homedecor:kitchen_chair_wood" newname = "homedecor:kitchen_chair_wood"
elseif string.find(node.name, "homedecor:chair_") then elseif string.find(node.name, "homedecor:chair_") then

View File

@ -70,6 +70,17 @@ minetest.register_craft({
}, },
}) })
unifieddyes.register_color_craft({
output = "homedecor:armchair",
palette = "wallmounted",
type = "shapeless",
neutral_node = "homedecor:armchair",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft({ minetest.register_craft({
type = "shapeless", type = "shapeless",
output = "homedecor:kitchen_chair_padded", output = "homedecor:kitchen_chair_padded",
@ -79,6 +90,17 @@ minetest.register_craft({
}, },
}) })
unifieddyes.register_color_craft({
output = "homedecor:kitchen_chair_padded",
palette = "wallmounted",
type = "shapeless",
neutral_node = "homedecor:kitchen_chair_padded",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft({ minetest.register_craft({
type = "fuel", type = "fuel",
recipe = "homedecor:kitchen_chair_wood", recipe = "homedecor:kitchen_chair_wood",
@ -106,6 +128,17 @@ minetest.register_craft({
}, },
}) })
unifieddyes.register_color_craft({
output = "homedecor:standing_lamp_off",
palette = "extended",
type = "shapeless",
neutral_node = "homedecor:standing_lamp_off",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft({ minetest.register_craft({
type = "fuel", type = "fuel",
recipe = "homedecor:table_lamp_off", recipe = "homedecor:table_lamp_off",
@ -131,14 +164,34 @@ minetest.register_craft({
}) })
minetest.register_craft({ minetest.register_craft({
output = "homedecor:standing_lamp_off", output = "homedecor:table_lamp_off",
recipe = { recipe = {
{ "homedecor:table_lamp_off"}, { "wool:white", "default:torch", "wool:white"},
{ "group:stick"}, { "", "group:stick", ""},
{ "group:stick"}, { "", "moreblocks:slab_wood", "" },
}, },
}) })
minetest.register_craft({
output = "homedecor:table_lamp_off",
recipe = {
{ "cottages:wool", "default:torch", "cottages:wool"},
{ "", "group:stick", ""},
{ "", "moreblocks:slab_wood", "" },
},
})
unifieddyes.register_color_craft({
output = "homedecor:table_lamp_off",
palette = "extended",
type = "shapeless",
neutral_node = "homedecor:table_lamp_off",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
minetest.register_craft({ minetest.register_craft({
output = "homedecor:toilet", output = "homedecor:toilet",
recipe = { recipe = {

View File

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

View File

@ -53,18 +53,8 @@ homedecor.wall_fdir_to_fwd = {
{ -1, 0 }, { -1, 0 },
} }
local placeholder_node = "homedecor:expansion_placeholder" local placeholder_node = "air"
minetest.register_node(placeholder_node, { minetest.register_alias("homedecor:expansion_placeholder", "air")
description = S("Expansion placeholder (you hacker you!)"),
groups = { not_in_creative_inventory=1 },
drawtype = "airlike",
paramtype = "light",
walkable = false,
selection_box = { type = "fixed", fixed = { 0, 0, 0, 0, 0, 0 } },
is_ground_content = false,
sunlight_propagates = true,
buildable_to = false,
})
--- select which node was pointed at based on it being known, not ignored, buildable_to --- select which node was pointed at based on it being known, not ignored, buildable_to
-- returns nil if no node could be selected -- returns nil if no node could be selected
@ -94,7 +84,7 @@ local function is_buildable_to(placer_name, ...)
end end
-- place one or two nodes if and only if both can be placed -- place one or two nodes if and only if both can be placed
local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2) local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2, pointed_thing)
local placer_name = placer:get_player_name() or "" local placer_name = placer:get_player_name() or ""
if is_buildable_to(placer_name, pos, pos2) then if is_buildable_to(placer_name, pos, pos2) then
local lfdir = fdir or minetest.dir_to_facedir(placer:get_look_dir()) local lfdir = fdir or minetest.dir_to_facedir(placer:get_look_dir())
@ -111,10 +101,10 @@ local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2)
-- call after_place_node of the placed node if available -- call after_place_node of the placed node if available
local ctrl_node_def = minetest.registered_nodes[node1] local ctrl_node_def = minetest.registered_nodes[node1]
if ctrl_node_def and ctrl_node_def.after_place_node then if ctrl_node_def and ctrl_node_def.after_place_node then
ctrl_node_def.after_place_node(pos, placer) ctrl_node_def.after_place_node(pos, placer, itemstack, pointed_thing)
end end
if not homedecor.expect_infinite_stacks then if not creative.is_enabled_for(placer_name) then
itemstack:take_item() itemstack:take_item()
end end
end end
@ -140,7 +130,7 @@ function homedecor.stack_vertically(itemstack, placer, pointed_thing, node1, nod
local top_pos = { x=pos.x, y=pos.y+1, z=pos.z } local top_pos = { x=pos.x, y=pos.y+1, z=pos.z }
return stack(itemstack, placer, nil, pos, def, top_pos, node1, node2) return stack(itemstack, placer, nil, pos, def, top_pos, node1, node2, pointed_thing)
end end
-- Stack one door node above another -- Stack one door node above another
@ -162,7 +152,7 @@ function homedecor.stack_wing(itemstack, placer, pointed_thing, node1, node2, no
end end
local top_pos = { x=pos.x, y=pos.y+1, z=pos.z } local top_pos = { x=pos.x, y=pos.y+1, z=pos.z }
return stack(itemstack, placer, fdir, pos, def, top_pos, node1, node2) return stack(itemstack, placer, fdir, pos, def, top_pos, node1, node2, pointed_thing)
end end
function homedecor.stack_sideways(itemstack, placer, pointed_thing, node1, node2, dir) function homedecor.stack_sideways(itemstack, placer, pointed_thing, node1, node2, dir)
@ -177,13 +167,14 @@ function homedecor.stack_sideways(itemstack, placer, pointed_thing, node1, node2
local pos2 = { x = pos.x + fdir_transform[fdir+1][1], y=pos.y, z = pos.z + fdir_transform[fdir+1][2] } local pos2 = { x = pos.x + fdir_transform[fdir+1][1], y=pos.y, z = pos.z + fdir_transform[fdir+1][2] }
return stack(itemstack, placer, fdir, pos, def, pos2, node1, node2) return stack(itemstack, placer, fdir, pos, def, pos2, node1, node2, pointed_thing)
end end
function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, trybunks) function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, trybunks)
local thisnode = minetest.get_node(pos) local thisnode = minetest.get_node(pos)
local fdir = thisnode.param2 local param2 = thisnode.param2
local fdir = param2 % 8
local fxd = homedecor.wall_fdir_to_fwd[fdir+1][1] local fxd = homedecor.wall_fdir_to_fwd[fdir+1][1]
local fzd = homedecor.wall_fdir_to_fwd[fdir+1][2] local fzd = homedecor.wall_fdir_to_fwd[fdir+1][2]
@ -219,14 +210,22 @@ function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, trybunks
local rightpos = {x=pos.x+rxd, y=pos.y, z=pos.z+rzd} local rightpos = {x=pos.x+rxd, y=pos.y, z=pos.z+rzd}
local rightnode = minetest.get_node(rightpos) local rightnode = minetest.get_node(rightpos)
local inv = placer:get_inventory()
if leftnode.name == "homedecor:bed_regular" then if leftnode.name == "homedecor:bed_regular" then
local newname = string.gsub(thisnode.name, "_regular", "_kingsize") local newname = string.gsub(thisnode.name, "_regular", "_kingsize")
local meta = minetest.get_meta(pos)
local leftmeta = minetest.get_meta(leftpos)
minetest.set_node(pos, {name = "air"}) minetest.set_node(pos, {name = "air"})
minetest.set_node(leftpos, { name = newname, param2 = fdir}) minetest.swap_node(leftpos, { name = newname, param2 = param2})
elseif rightnode.name == "homedecor:bed_regular" then elseif rightnode.name == "homedecor:bed_regular" then
local newname = string.gsub(thisnode.name, "_regular", "_kingsize") local newname = string.gsub(thisnode.name, "_regular", "_kingsize")
local meta = minetest.get_meta(pos)
local rightmeta = minetest.get_meta(rightpos)
minetest.set_node(rightpos, {name = "air"}) minetest.set_node(rightpos, {name = "air"})
minetest.set_node(pos, { name = newname, param2 = fdir}) minetest.swap_node(pos, { name = newname, param2 = param2})
end end
local toppos = {x=pos.x, y=pos.y+1.0, z=pos.z} local toppos = {x=pos.x, y=pos.y+1.0, z=pos.z}
@ -234,18 +233,19 @@ function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, trybunks
if trybunks and is_buildable_to(placer_name, toppos, topposfwd) then if trybunks and is_buildable_to(placer_name, toppos, topposfwd) then
local newname = string.gsub(thisnode.name, "_regular", "_extended") local newname = string.gsub(thisnode.name, "_regular", "_extended")
minetest.set_node(toppos, { name = thisnode.name, param2 = fdir}) local newparam2 = param2 % 8
minetest.set_node(pos, { name = newname, param2 = fdir}) minetest.swap_node(toppos, { name = thisnode.name, param2 = param2})
minetest.swap_node(pos, { name = newname, param2 = param2})
itemstack:take_item() itemstack:take_item()
end end
end end
function homedecor.unextend_bed(pos) function homedecor.unextend_bed(pos)
local bottomnode = minetest.get_node({x=pos.x, y=pos.y-1.0, z=pos.z}) local bottomnode = minetest.get_node({x=pos.x, y=pos.y-1.0, z=pos.z})
local fdir = bottomnode.param2 local param2 = bottomnode.param2
if bottomnode.name == "homedecor:bed_extended" then if bottomnode.name == "homedecor:bed_extended" then
local newname = string.gsub(bottomnode.name, "_extended", "_regular") local newname = string.gsub(bottomnode.name, "_extended", "_regular")
minetest.set_node({x=pos.x, y=pos.y-1.0, z=pos.z}, { name = newname, param2 = fdir}) minetest.swap_node({x=pos.x, y=pos.y-1.0, z=pos.z}, { name = newname, param2 = param2})
end end
end end
@ -257,6 +257,8 @@ function homedecor.place_banister(itemstack, placer, pointed_thing)
if not pos then return itemstack end if not pos then return itemstack end
local fdir = minetest.dir_to_facedir(placer:get_look_dir()) local fdir = minetest.dir_to_facedir(placer:get_look_dir())
local meta = itemstack:get_meta()
local pindex = meta:get_int("palette_index")
local abovepos = { x=pos.x, y=pos.y+1, z=pos.z } local abovepos = { x=pos.x, y=pos.y+1, z=pos.z }
local abovenode = minetest.get_node(abovepos) local abovenode = minetest.get_node(abovepos)
@ -360,14 +362,6 @@ function homedecor.place_banister(itemstack, placer, pointed_thing)
fdir = right_fwd_node.param2 fdir = right_fwd_node.param2
pos = fwd_pos pos = fwd_pos
new_place_name = string.gsub(right_fwd_node.name, "_diagonal_.-$", "_horizontal") new_place_name = string.gsub(right_fwd_node.name, "_diagonal_.-$", "_horizontal")
-- try to follow a horizontal with another of the same
elseif left_node and string.find(left_node.name, "homedecor:banister_.*_horizontal") then
fdir = left_node.param2
new_place_name = left_node.name
elseif right_node and string.find(right_node.name, "homedecor:banister_.*_horizontal") then
fdir = right_node.param2
new_place_name = right_node.name
end end
-- manually invert left-right orientation -- manually invert left-right orientation
@ -379,7 +373,7 @@ function homedecor.place_banister(itemstack, placer, pointed_thing)
end end
end end
minetest.set_node(pos, {name = new_place_name, param2 = fdir}) minetest.set_node(pos, {name = new_place_name, param2 = fdir+pindex})
itemstack:take_item() itemstack:take_item()
return itemstack return itemstack
end end

View File

@ -19,4 +19,6 @@ dofile(handlerpath.."registration.lua")
-- some nodes have particle spawners -- some nodes have particle spawners
dofile(handlerpath.."water_particles.lua") dofile(handlerpath.."water_particles.lua")
dofile(handlerpath.."mt_game_beds_functions.lua")
dofile(handlerpath.."sit.lua") dofile(handlerpath.."sit.lua")

View File

@ -0,0 +1,175 @@
-- This file is a partial copy of functions.lua from minetest_game's beds mod
-- with changes needed for homedecor's beds.
local pi = math.pi
local is_sp = minetest.is_singleplayer()
local enable_respawn = minetest.settings:get_bool("enable_bed_respawn")
if enable_respawn == nil then
enable_respawn = true
end
-- Helper functions
local function get_look_yaw(pos)
local n = minetest.get_node(pos)
local fdir = n.param2 % 4
if fdir == 0 then
return pi / 2, fdir
elseif fdir == 1 then
return -pi / 2, fdir
elseif fdir == 3 then
return pi, fdir
else
return 0, fdir
end
end
local function is_night_skip_enabled()
local enable_night_skip = minetest.settings:get_bool("enable_bed_night_skip")
if enable_night_skip == nil then
enable_night_skip = true
end
return enable_night_skip
end
local function check_in_beds(players)
local in_bed = beds.player
if not players then
players = minetest.get_connected_players()
end
for n, player in ipairs(players) do
local name = player:get_player_name()
if not in_bed[name] then
return false
end
end
return #players > 0
end
local function get_player_in_bed()
local player_in_bed = 0
for k,v in pairs(beds.player) do
player_in_bed = player_in_bed + 1
end
return player_in_bed
end
local function lay_down(player, pos, bed_pos, state, skip)
local name = player:get_player_name()
local hud_flags = player:hud_get_flags()
if not player or not name then
return
end
-- stand up
if state ~= nil and not state then
local p = beds.pos[name] or nil
if beds.player[name] ~= nil then
beds.player[name] = nil
end
-- skip here to prevent sending player specific changes (used for leaving players)
if skip then
return
end
if p then
player:setpos(p)
end
-- physics, eye_offset, etc
player:set_eye_offset({x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0})
player:set_look_horizontal(math.random(1, 180) / 100)
default.player_attached[name] = false
player:set_physics_override(1, 1, 1)
hud_flags.wielditem = true
default.player_set_animation(player, "stand" , 30)
-- lay down
else
beds.player[name] = 1
beds.pos[name] = pos
-- physics, eye_offset, etc
player:set_eye_offset({x = 0, y = -13, z = 0}, {x = 0, y = 0, z = 0})
local yaw, fdir = get_look_yaw(bed_pos)
player:set_look_horizontal(yaw)
local offsets = {
[0] = {0.5, 0},
[1] = {-0.5, 0},
[2] = {0, -0.5},
[3] = {0, 0.5}
}
local p = {x = bed_pos.x + offsets[fdir][1], y = bed_pos.y, z = bed_pos.z + offsets[fdir][2]}
player:set_physics_override(0, 0, 0)
player:setpos(p)
default.player_attached[name] = true
hud_flags.wielditem = false
default.player_set_animation(player, "lay" , 0)
end
player:hud_set_flags(hud_flags)
end
local function update_formspecs(finished)
local ges = #minetest.get_connected_players()
local player_in_bed = get_player_in_bed()
local form_n
local is_majority = (ges / 2) < player_in_bed
if finished then
form_n = beds.formspec .. "label[2.7,11; Good morning.]"
else
form_n = beds.formspec .. "label[2.2,11;" .. tostring(player_in_bed) ..
" of " .. tostring(ges) .. " players are in bed]"
if is_majority and is_night_skip_enabled() then
form_n = form_n .. "button_exit[2,8;4,0.75;force;Force night skip]"
end
end
for name,_ in pairs(beds.player) do
minetest.show_formspec(name, "beds_form", form_n)
end
end
-- Public functions
function homedecor.beds_on_rightclick(pos, node, player)
local name = player:get_player_name()
local ppos = player:getpos()
local tod = minetest.get_timeofday()
if tod > 0.2 and tod < 0.805 then
if beds.player[name] then
lay_down(player, nil, nil, false)
end
minetest.chat_send_player(name, "You can only sleep at night.")
return
end
-- move to bed
if not beds.player[name] then
lay_down(player, ppos, pos)
beds.set_spawns() -- save respawn positions when entering bed
else
lay_down(player, nil, nil, false)
end
if not is_sp then
update_formspecs(false)
end
-- skip the night and let all players stand up
if check_in_beds() then
minetest.after(2, function()
if not is_sp then
update_formspecs(is_night_skip_enabled())
end
if is_night_skip_enabled() then
beds.skip_night()
beds.kick_players()
end
end)
end
end

View File

@ -30,8 +30,8 @@ function homedecor.start_particle_spawner(pos, node, particledef, soundname)
end, s_handle) end, s_handle)
end end
minetest.delete_particlespawner(id) minetest.delete_particlespawner(id)
this_spawner_meta:set_int("active", nil) this_spawner_meta:set_int("active", 0)
this_spawner_meta:set_int("sound", nil) this_spawner_meta:set_int("sound", 0)
return return
end end
@ -109,6 +109,6 @@ function homedecor.stop_particle_spawner(pos)
end, s_handle) end, s_handle)
end end
this_spawner_meta:set_int("active", nil) this_spawner_meta:set_int("active", 0)
this_spawner_meta:set_int("sound", nil) this_spawner_meta:set_int("sound", 0)
end end

View File

@ -11,12 +11,8 @@ local modpath = minetest.get_modpath("homedecor")
local S = homedecor_i18n.gettext local S = homedecor_i18n.gettext
homedecor = { homedecor = {}
modpath = modpath, homedecor.modpath = modpath
-- infinite stacks
expect_infinite_stacks = minetest.setting_getbool("creative_mode") and not minetest.get_modpath("unified_inventory")
}
-- Determine if the item being pointed at is the underside of a node (e.g a ceiling) -- Determine if the item being pointed at is the underside of a node (e.g a ceiling)
function homedecor.find_ceiling(itemstack, placer, pointed_thing) function homedecor.find_ceiling(itemstack, placer, pointed_thing)
@ -123,4 +119,6 @@ dofile(modpath.."/wardrobe.lua")
dofile(modpath.."/crafts.lua") dofile(modpath.."/crafts.lua")
print("[HomeDecor] " .. S("Loaded!")) if minetest.settings:get_bool("log_mod") then
minetest.log("action", "[HomeDecor] " .. S("Loaded!"))
end

View File

@ -21,6 +21,15 @@ minetest.register_node("homedecor:glowlight_half", {
"homedecor_glowlight_thick_sides.png", "homedecor_glowlight_thick_sides.png",
"homedecor_glowlight_thick_sides.png" "homedecor_glowlight_thick_sides.png"
}, },
overlay_tiles = {
{ name = "homedecor_glowlight_top_overlay.png", color = "white"},
"",
{ name = "homedecor_glowlight_thick_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_thick_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_thick_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_thick_sides_overlay.png", color = "white"},
},
use_texture_alpha = true,
drawtype = "nodebox", drawtype = "nodebox",
paramtype = "light", paramtype = "light",
paramtype2 = "colorwallmounted", paramtype2 = "colorwallmounted",
@ -35,8 +44,9 @@ minetest.register_node("homedecor:glowlight_half", {
groups = { snappy = 3, ud_param2_colorable = 1 }, groups = { snappy = 3, ud_param2_colorable = 1 },
light_source = default.LIGHT_MAX, light_source = default.LIGHT_MAX,
sounds = default.node_sound_glass_defaults(), sounds = default.node_sound_glass_defaults(),
after_place_node = unifieddyes.fix_rotation, after_place_node = function(pos, placer, itemstack, pointed_thing)
after_dig_node = unifieddyes.after_dig_node unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
end,
}) })
minetest.register_node("homedecor:glowlight_quarter", { minetest.register_node("homedecor:glowlight_quarter", {
@ -49,6 +59,15 @@ minetest.register_node("homedecor:glowlight_quarter", {
"homedecor_glowlight_thin_sides.png", "homedecor_glowlight_thin_sides.png",
"homedecor_glowlight_thin_sides.png" "homedecor_glowlight_thin_sides.png"
}, },
overlay_tiles = {
{ name = "homedecor_glowlight_top_overlay.png", color = "white"},
"",
{ name = "homedecor_glowlight_thin_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_thin_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_thin_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_thin_sides_overlay.png", color = "white"},
},
use_texture_alpha = true,
drawtype = "nodebox", drawtype = "nodebox",
paramtype = "light", paramtype = "light",
paramtype2 = "colorwallmounted", paramtype2 = "colorwallmounted",
@ -63,8 +82,9 @@ minetest.register_node("homedecor:glowlight_quarter", {
groups = { snappy = 3, ud_param2_colorable = 1 }, groups = { snappy = 3, ud_param2_colorable = 1 },
light_source = default.LIGHT_MAX-1, light_source = default.LIGHT_MAX-1,
sounds = default.node_sound_glass_defaults(), sounds = default.node_sound_glass_defaults(),
after_place_node = unifieddyes.fix_rotation, after_place_node = function(pos, placer, itemstack, pointed_thing)
after_dig_node = unifieddyes.after_dig_node unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
end,
}) })
minetest.register_node("homedecor:glowlight_small_cube", { minetest.register_node("homedecor:glowlight_small_cube", {
@ -77,6 +97,15 @@ minetest.register_node("homedecor:glowlight_small_cube", {
"homedecor_glowlight_cube_sides.png", "homedecor_glowlight_cube_sides.png",
"homedecor_glowlight_cube_sides.png" "homedecor_glowlight_cube_sides.png"
}, },
overlay_tiles = {
{ name = "homedecor_glowlight_cube_tb_overlay.png", color = "white"},
{ name = "homedecor_glowlight_cube_tb_overlay.png", color = "white"},
{ name = "homedecor_glowlight_cube_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_cube_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_cube_sides_overlay.png", color = "white"},
{ name = "homedecor_glowlight_cube_sides_overlay.png", color = "white"},
},
use_texture_alpha = true,
paramtype = "light", paramtype = "light",
paramtype2 = "colorwallmounted", paramtype2 = "colorwallmounted",
drawtype = "nodebox", drawtype = "nodebox",
@ -91,15 +120,17 @@ minetest.register_node("homedecor:glowlight_small_cube", {
groups = { snappy = 3, ud_param2_colorable = 1 }, groups = { snappy = 3, ud_param2_colorable = 1 },
light_source = default.LIGHT_MAX-1, light_source = default.LIGHT_MAX-1,
sounds = default.node_sound_glass_defaults(), sounds = default.node_sound_glass_defaults(),
after_place_node = unifieddyes.fix_rotation, after_place_node = function(pos, placer, itemstack, pointed_thing)
after_dig_node = unifieddyes.after_dig_node unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
end,
}) })
homedecor.register("plasma_lamp", { homedecor.register("plasma_lamp", {
description = S("Plasma Lamp"), description = S("Plasma Lamp"),
drawtype = "glasslike_framed", drawtype = "mesh",
tiles = {"default_gold_block.png","homedecor_glass_face_clean.png"}, mesh = "plasma_lamp.obj",
special_tiles = { tiles = {
"default_gold_block.png",
{ {
name="homedecor_plasma_storm.png", name="homedecor_plasma_storm.png",
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0}, animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0},
@ -110,16 +141,13 @@ homedecor.register("plasma_lamp", {
sunlight_propagates = true, sunlight_propagates = true,
groups = {cracky=3,oddly_breakable_by_hand=3}, groups = {cracky=3,oddly_breakable_by_hand=3},
sounds = default.node_sound_glass_defaults(), sounds = default.node_sound_glass_defaults(),
after_place_node = function(pos, placer, itemstack, pointed_thing)
minetest.swap_node(pos, {name = "homedecor:plasma_lamp", param2 = 255})
end
}) })
homedecor.register("plasma_ball", { homedecor.register("plasma_ball", {
description = S("Plasma Ball"), description = S("Plasma Ball"),
mesh = "homedecor_plasma_ball.obj", mesh = "homedecor_plasma_ball.obj",
tiles = { tiles = {
"homedecor_generic_plastic.png", { name = "homedecor_generic_plastic.png", color = homedecor.color_black },
{ {
name = "homedecor_plasma_ball_streamers.png", name = "homedecor_plasma_ball_streamers.png",
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0}, animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0},
@ -415,7 +443,6 @@ local function reg_lamp(suffix, nxt, light, brightness)
paramtype = "light", paramtype = "light",
paramtype2 = "color", paramtype2 = "color",
palette = "unifieddyes_palette_extended.png", palette = "unifieddyes_palette_extended.png",
place_param2 = 240,
walkable = false, walkable = false,
light_source = light, light_source = light,
selection_box = tlamp_cbox, selection_box = tlamp_cbox,
@ -423,12 +450,17 @@ local function reg_lamp(suffix, nxt, light, brightness)
groups = {cracky=2,oddly_breakable_by_hand=1, ud_param2_colorable = 1, groups = {cracky=2,oddly_breakable_by_hand=1, ud_param2_colorable = 1,
not_in_creative_inventory=((light ~= nil) and 1) or nil, not_in_creative_inventory=((light ~= nil) and 1) or nil,
}, },
drop = "homedecor:table_lamp_off",
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
node.name = "homedecor:table_lamp_"..repl[suffix] node.name = "homedecor:table_lamp_"..repl[suffix]
minetest.set_node(pos, node) minetest.set_node(pos, node)
end, end,
after_dig_node = unifieddyes.after_dig_node on_construct = unifieddyes.on_construct,
drop = {
items = {
{items = {"homedecor:table_lamp_off"}, inherit_color = true },
}
}
}) })
homedecor.register("standing_lamp_"..suffix, { homedecor.register("standing_lamp_"..suffix, {
@ -444,7 +476,6 @@ local function reg_lamp(suffix, nxt, light, brightness)
paramtype = "light", paramtype = "light",
paramtype2 = "color", paramtype2 = "color",
palette = "unifieddyes_palette_extended.png", palette = "unifieddyes_palette_extended.png",
place_param2 = 240,
walkable = false, walkable = false,
light_source = light, light_source = light,
groups = {cracky=2,oddly_breakable_by_hand=1, ud_param2_colorable = 1, groups = {cracky=2,oddly_breakable_by_hand=1, ud_param2_colorable = 1,
@ -457,8 +488,13 @@ local function reg_lamp(suffix, nxt, light, brightness)
node.name = "homedecor:standing_lamp_"..repl[suffix] node.name = "homedecor:standing_lamp_"..repl[suffix]
minetest.set_node(pos, node) minetest.set_node(pos, node)
end, end,
after_dig_node = unifieddyes.after_dig_node, on_construct = unifieddyes.on_construct,
expand = { top="placeholder" }, --expand = { top="air" },
drop = {
items = {
{items = {"homedecor:standing_lamp_off"}, inherit_color = true },
}
}
}) })
-- for old maps that had the original 3dforniture mod -- for old maps that had the original 3dforniture mod
@ -495,8 +531,9 @@ homedecor.register("desk_lamp", {
node_box = dlamp_cbox, node_box = dlamp_cbox,
walkable = false, walkable = false,
groups = {snappy=3, ud_param2_colorable = 1}, groups = {snappy=3, ud_param2_colorable = 1},
after_place_node = unifieddyes.fix_rotation_nsew, after_place_node = function(pos, placer, itemstack, pointed_thing)
after_dig_node = unifieddyes.after_dig_node, unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
end,
on_rotate = unifieddyes.fix_after_screwdriver_nsew on_rotate = unifieddyes.fix_after_screwdriver_nsew
}) })
@ -698,28 +735,3 @@ minetest.register_lbm({
meta:set_string("dye", "unifieddyes:"..color) meta:set_string("dye", "unifieddyes:"..color)
end end
}) })
minetest.register_lbm({
name = "homedecor:recolor_lighting",
label = "Convert some kinds of lights to use UD extended palette",
run_at_every_load = false,
nodenames = {
"homedecor:table_lamp_off",
"homedecor:table_lamp_low",
"homedecor:table_lamp_med",
"homedecor:table_lamp_hi",
"homedecor:table_lamp_max",
"homedecor:standing_lamp_off",
"homedecor:standing_lamp_low",
"homedecor:standing_lamp_med",
"homedecor:standing_lamp_hi",
"homedecor:standing_lamp_max",
},
action = function(pos, node)
local meta = minetest.get_meta(pos)
if meta:get_string("palette") ~= "ext" then
minetest.swap_node(pos, { name = node.name, param2 = unifieddyes.convert_classic_palette[node.param2] })
meta:set_string("palette", "ext")
end
end
})

View File

@ -396,7 +396,7 @@ local n = { 1, 2 }
for _, i in ipairs(n) do for _, i in ipairs(n) do
homedecor.register("picture_frame"..i, { homedecor.register("picture_frame"..i, {
description = S("Picture Frame"), description = S("Picture Frame "..i),
mesh = "homedecor_picture_frame.obj", mesh = "homedecor_picture_frame.obj",
tiles = { tiles = {
"homedecor_picture_frame_image"..i..".png", "homedecor_picture_frame_image"..i..".png",
@ -483,23 +483,19 @@ for _, side in ipairs({"diagonal_left", "diagonal_right", "horizontal"}) do
local name, matdesc, tile1, tile2 = unpack(mat) local name, matdesc, tile1, tile2 = unpack(mat)
local nodename = "banister_"..name.."_"..side local nodename = "banister_"..name.."_"..side
local groups = { snappy = 3, not_in_creative_inventory = 1 }
local cbox = { local cbox = {
type = "fixed", type = "fixed",
fixed = { -9/16, -3/16, 5/16, 9/16, 24/16, 8/16 } fixed = { -9/16, -3/16, 5/16, 9/16, 24/16, 8/16 }
} }
if side == "horizontal" then if side == "horizontal" then
groups = { snappy = 3 }
cbox = { cbox = {
type = "fixed", type = "fixed",
fixed = { -8/16, -8/16, 5/16, 8/16, 8/16, 8/16 } fixed = { -8/16, -8/16, 5/16, 8/16, 8/16, 8/16 }
} }
else
minetest.register_alias(string.gsub("homedecor:"..nodename, "diagonal_", ""), "homedecor:"..nodename)
end end
homedecor.register(nodename, { local def = {
description = S("Banister for Stairs (@1, @2)", matdesc, sidedesc), description = S("Banister for Stairs (@1, @2)", matdesc, sidedesc),
mesh = "homedecor_banister_"..side..".obj", mesh = "homedecor_banister_"..side..".obj",
tiles = { tiles = {
@ -507,12 +503,36 @@ for _, side in ipairs({"diagonal_left", "diagonal_right", "horizontal"}) do
tile2, tile2,
}, },
inventory_image = "homedecor_banister_"..name.."_inv.png", inventory_image = "homedecor_banister_"..name.."_inv.png",
groups = groups,
selection_box = cbox, selection_box = cbox,
collision_box = cbox, collision_box = cbox,
groups = { snappy = 3},
on_place = homedecor.place_banister, on_place = homedecor.place_banister,
drop = "homedecor:banister_"..name.."_horizontal", drop = "homedecor:banister_"..name.."_horizontal",
}) }
if side ~= "horizontal" then
def.groups.not_in_creative_inventory = 1
end
if name == "wood" then
def.airbrush_replacement_node = "homedecor:banister_wood_"..side.."_grey"
def.groups.ud_param2_colorable = 1
def.paramtype2 = "colorfacedir"
end
homedecor.register(nodename, def)
if name == "wood" then
local nn = "homedecor:"..nodename
local def2 = table.copy(minetest.registered_items[nn])
def2.tiles = {
homedecor.white_wood,
homedecor.white_wood
}
def2.inventory_image = "homedecor_banister_wood_colored_inv.png"
def2.groups.not_in_creative_inventory = 1
unifieddyes.generate_split_palette_nodes(nn, def2, "homedecor:banister_"..name.."_horizontal")
end
end end
end end

View File

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

View File

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

View File

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

View File

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

View File

@ -32,14 +32,16 @@ homedecor.register("shutter", {
description = S("Wooden Shutter"), description = S("Wooden Shutter"),
inventory_image = inv, inventory_image = inv,
wield_image = inv, wield_image = inv,
paramtype2 = "wallmounted", paramtype2 = "colorwallmounted",
ud_replacement_node = "homedecor:shutter_colored", palette = "unifieddyes_palette_colorwallmounted.png",
airbrush_replacement_node = "homedecor:shutter_colored",
groups = { snappy = 3, ud_param2_colorable = 1 }, groups = { snappy = 3, ud_param2_colorable = 1 },
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
selection_box = shutter_cbox, selection_box = shutter_cbox,
node_box = shutter_cbox, node_box = shutter_cbox,
after_place_node = unifieddyes.fix_rotation, after_place_node = function(pos, placer, itemstack, pointed_thing)
after_dig_node = unifieddyes.after_dig_node unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
end,
}) })
homedecor.register("shutter_colored", { homedecor.register("shutter_colored", {
@ -54,9 +56,9 @@ homedecor.register("shutter_colored", {
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
selection_box = shutter_cbox, selection_box = shutter_cbox,
node_box = shutter_cbox, node_box = shutter_cbox,
after_place_node = unifieddyes.fix_rotation, after_place_node = function(pos, placer, itemstack, pointed_thing)
after_dig_node = unifieddyes.after_dig_node, unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
drop = "homedecor:shutter" end,
}) })
minetest.register_alias("homedecor:shutter_purple", "homedecor:shutter_violet") minetest.register_alias("homedecor:shutter_purple", "homedecor:shutter_violet")

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 B

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 259 B

After

Width:  |  Height:  |  Size: 248 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 B

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 B

After

Width:  |  Height:  |  Size: 94 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 B

After

Width:  |  Height:  |  Size: 95 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 B

After

Width:  |  Height:  |  Size: 96 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 B

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 B

View File

@ -6,6 +6,75 @@ local wd_cbox = {
fixed = { -0.5, -0.5, -0.5, 0.5, 1.5, 0.5 } fixed = { -0.5, -0.5, -0.5, 0.5, 1.5, 0.5 }
} }
-- cache set_textures function (fallback to old version)
-- default.player_set_textures is deprecated and will be removed in future
local set_player_textures =
minetest.get_modpath("player_api") and player_api.set_textures
or default.player_set_textures
local armor_mod_path = minetest.get_modpath("3d_armor")
local skinslist = {"male1", "male2", "male3", "male4", "male5"}
local default_skin = "character.png"
local skinsdb_mod_path = minetest.get_modpath("skinsdb")
if skinsdb_mod_path then
for _, shrt in ipairs(skinslist) do
for _, prefix in ipairs({"", "fe"}) do
local skin_name = prefix..shrt
local skin_obj = skins.new("homedecor_clothes_"..skin_name..".png") -- Texture PNG file as key to be compatible in set_player_skin
skin_obj:set_preview("homedecor_clothes_"..skin_name.."_preview.png")
skin_obj:set_texture("homedecor_clothes_"..skin_name..".png")
skin_obj:set_meta("name", "Wardrobe "..skin_name)
skin_obj:set_meta("author", 'Calinou and Jordach')
skin_obj:set_meta("license", 'WTFPL')
local file = io.open(homedecor.modpath.."/textures/homedecor_clothes_"..skin_name..".png", "r")
skin_obj:set_meta("format", skins.get_skin_format(file))
file:close()
skin_obj:set_meta("in_inventory_list", false)
end
end
end
function homedecor.get_player_skin(player)
local skin = player:get_attribute("homedecor:player_skin")
if not skin or skin == "" then
return default_skin, true
end
return skin, false
end
function homedecor.set_player_skin(player, skin, save)
skin = skin or default_skin
if skinsdb_mod_path then
skins.set_player_skin(player, skin)
elseif armor_mod_path then -- if 3D_armor's installed, let it set the skin
armor.textures[player:get_player_name()].skin = skin
armor:update_player_visuals(player)
else
set_player_textures(player, { skin })
end
if save then
if skin == default_skin then
skin = "default"
player:set_attribute("homedecor:player_skin", "")
else
player:set_attribute("homedecor:player_skin", skin)
end
if save == "player" then -- if player action
minetest.log("verbose",
S("player @1 sets skin to @2", player:get_player_name(), skin) ..
(armor_mod_path and ' [3d_armor]' or '')
)
end
end
end
function homedecor.unset_player_skin(player)
homedecor.set_player_skin(player, nil, true)
end
homedecor.register("wardrobe", { homedecor.register("wardrobe", {
mesh = "homedecor_bedroom_wardrobe.obj", mesh = "homedecor_bedroom_wardrobe.obj",
tiles = { tiles = {
@ -27,16 +96,16 @@ homedecor.register("wardrobe", {
}, },
on_construct = function(pos) on_construct = function(pos)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local skins = {"male1", "male2", "male3", "male4", "male5"}
-- textures made by the Minetest community (mostly Calinou and Jordach) -- textures made by the Minetest community (mostly Calinou and Jordach)
local clothes_strings = "" local clothes_strings = ""
for i = 1,5 do for i = 1,5 do
clothes_strings = clothes_strings.. clothes_strings = clothes_strings..
"image_button_exit["..(i-1)..".5,0;1.1,2;homedecor_clothes_"..skins[i].."_preview.png;"..skins[i]..";]".. "image_button_exit["..(i-1)..".5,0;1.1,2;homedecor_clothes_"..skinslist[i].."_preview.png;"..skinslist[i]..";]"..
"image_button_exit["..(i-1)..".5,2;1.1,2;homedecor_clothes_fe"..skins[i].."_preview.png;fe"..skins[i]..";]" "image_button_exit["..(i-1)..".5,2;1.1,2;homedecor_clothes_fe"..skinslist[i].."_preview.png;fe"..skinslist[i]..";]"
end end
meta:set_string("formspec", "size[5.5,8.5]"..default.gui_bg..default.gui_bg_img..default.gui_slots.. meta:set_string("formspec", "size[5.5,8.5]"..default.gui_bg..default.gui_bg_img..default.gui_slots..
"vertlabel[0,0.5;"..minetest.formspec_escape(S("Clothes")).."]".. "vertlabel[0,0.5;"..minetest.formspec_escape(S("Clothes")).."]"..
"button_exit[0,3.29;0.6,0.6;default;x]"..
clothes_strings.. clothes_strings..
"vertlabel[0,5.2;"..minetest.formspec_escape(S("Storage")).."]".. "vertlabel[0,5.2;"..minetest.formspec_escape(S("Storage")).."]"..
"list[current_name;main;0.5,4.5;5,2;]".. "list[current_name;main;0.5,4.5;5,2;]"..
@ -44,26 +113,17 @@ homedecor.register("wardrobe", {
"listring[]") "listring[]")
end, end,
on_receive_fields = function(pos, formname, fields, sender) on_receive_fields = function(pos, formname, fields, sender)
local skins = {"male1", "male2", "male3", "male4", "male5"} if fields.default then
local playerName = sender:get_player_name() homedecor.set_player_skin(sender, nil, "player")
local armor_mod = minetest.get_modpath("3d_armor") return
end
for i = 1,5 do for i = 1,5 do
if fields[skins[i]] then if fields[skinslist[i]] then
if armor_mod then -- if 3D_armor's installed, let it set the skin homedecor.set_player_skin(sender, "homedecor_clothes_"..skinslist[i]..".png", "player")
armor.textures[playerName].skin = "homedecor_clothes_"..skins[i]..".png"
armor:update_player_visuals(sender)
break break
end elseif fields["fe"..skinslist[i]] then
default.player_set_textures(sender, { "homedecor_clothes_"..skins[i]..".png" }) homedecor.set_player_skin(sender, "homedecor_clothes_fe"..skinslist[i]..".png", "player")
break
elseif fields["fe"..skins[i]] then
if armor_mod then
armor.textures[playerName].skin = "homedecor_clothes_fe"..skins[i]..".png"
armor:update_player_visuals(sender)
break
end
default.player_set_textures(sender, { skin = "homedecor_clothes_fe"..skins[i]..".png" })
break break
end end
end end
@ -72,3 +132,14 @@ homedecor.register("wardrobe", {
minetest.register_alias("homedecor:wardrobe_bottom", "homedecor:wardrobe") minetest.register_alias("homedecor:wardrobe_bottom", "homedecor:wardrobe")
minetest.register_alias("homedecor:wardrobe_top", "air") minetest.register_alias("homedecor:wardrobe_top", "air")
minetest.register_on_joinplayer(function(player)
local skin = player:get_attribute("homedecor:player_skin")
if skin and skin ~= "" then
-- setting player skin on connect has no effect, so delay skin change
minetest.after(1, function(player, skin)
homedecor.set_player_skin(player, skin)
end, player, skin)
end
end)

View File

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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1595
homedecor_i18n/locale/ru.po Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

@ -32,6 +32,25 @@ minetest.register_entity("itemframes:item",{
if self.nodename == "itemframes:pedestal" then if self.nodename == "itemframes:pedestal" then
self.object:set_properties({automatic_rotate = 1}) self.object:set_properties({automatic_rotate = 1})
end end
if self.texture ~= nil and self.nodename ~= nil then
local entity_pos = vector.round(self.object:get_pos())
local objs = minetest.get_objects_inside_radius(entity_pos, 0.5)
for _, obj in ipairs(objs) do
if obj ~= self.object and
obj:get_luaentity() and
obj:get_luaentity().name == "itemframes:item" and
obj:get_luaentity().nodename == self.nodename and
obj:get_properties() and
obj:get_properties().textures and
obj:get_properties().textures[1] == self.texture then
minetest.log("action","[itemframes] Removing extra " ..
self.texture .. " found in " .. self.nodename .. " at " ..
minetest.pos_to_string(entity_pos))
self.object:remove()
break
end
end
end
end, end,
get_staticdata = function(self) get_staticdata = function(self)
if self.nodename ~= nil and self.texture ~= nil then if self.nodename ~= nil and self.texture ~= nil then
@ -119,7 +138,7 @@ minetest.register_node("itemframes:frame",{
sunlight_propagates = true, sunlight_propagates = true,
groups = {choppy = 2, dig_immediate = 2}, groups = {choppy = 2, dig_immediate = 2},
legacy_wallmounted = true, legacy_wallmounted = true,
sounds = default.node_sound_defaults(), sounds = default.node_sound_wood_defaults(),
on_rotate = screwdriver.disallow, on_rotate = screwdriver.disallow,
after_place_node = function(pos, placer, itemstack) after_place_node = function(pos, placer, itemstack)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
@ -182,7 +201,7 @@ minetest.register_node("itemframes:pedestal",{
tiles = {"itemframes_pedestal.png"}, tiles = {"itemframes_pedestal.png"},
paramtype = "light", paramtype = "light",
groups = {cracky = 3}, groups = {cracky = 3},
sounds = default.node_sound_defaults(), sounds = default.node_sound_stone_defaults(),
on_rotate = screwdriver.disallow, on_rotate = screwdriver.disallow,
after_place_node = function(pos, placer, itemstack) after_place_node = function(pos, placer, itemstack)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
@ -228,25 +247,32 @@ minetest.register_node("itemframes:pedestal",{
-- automatically restore entities lost from frames/pedestals -- automatically restore entities lost from frames/pedestals
-- due to /clearobjects or similar -- due to /clearobjects or similar
minetest.register_lbm({
minetest.register_abm({ label = "Maintain itemframe and pedestal entities",
name = "itemframes:maintain_entities",
nodenames = {"itemframes:frame", "itemframes:pedestal"}, nodenames = {"itemframes:frame", "itemframes:pedestal"},
interval = 15, run_at_every_load = true,
chance = 1, action = function(pos, node)
action = function(pos, node, active_object_count, active_object_count_wider) minetest.after(0,
local num function(pos, node)
local meta = minetest.get_meta(pos)
if node.name == "itemframes:frame" then local itemstring = meta:get_string("item")
num = #minetest.get_objects_inside_radius(pos, 0.5) if itemstring ~= "" then
elseif node.name == "itemframes:pedestal" then local entity_pos = pos
pos.y = pos.y + 1 if node.name == "itemframes:pedestal" then
num = #minetest.get_objects_inside_radius(pos, 0.5) entity_pos = {x=pos.x,y=pos.y+1,z=pos.z}
pos.y = pos.y - 1
end end
local objs = minetest.get_objects_inside_radius(entity_pos, 0.5)
if num > 0 then return end if #objs == 0 then
minetest.log("action","[itemframes] Replacing missing " ..
itemstring .. " in " .. node.name .. " at " ..
minetest.pos_to_string(pos))
update_item(pos, node) update_item(pos, node)
end end
end
end,
pos, node)
end
}) })
-- crafts -- crafts

View File

@ -8,7 +8,11 @@ minetest.register_node("lavalamp:lavalamp", {
drawtype = "mesh", drawtype = "mesh",
mesh = "lavalamp.obj", mesh = "lavalamp.obj",
tiles = { tiles = {
{ name = "lavalamp_metal.png", color = 0xffffffff}, { name = "lavalamp_metal.png", color = "white" },
{ name = "lavalamp_lamp_liquid.png", color = "white" },
},
overlay_tiles = {
"",
{ {
name="lavalamp_lamp_anim.png", name="lavalamp_lamp_anim.png",
animation={ animation={
@ -19,11 +23,11 @@ minetest.register_node("lavalamp:lavalamp", {
}, },
}, },
}, },
use_texture_alpha = true,
inventory_image = "lavalamp_lamp_inv.png", inventory_image = "lavalamp_lamp_inv.png",
paramtype = "light", paramtype = "light",
paramtype2 = "color", paramtype2 = "color",
palette = "unifieddyes_palette_extended.png", palette = "unifieddyes_palette_extended.png",
place_param2 = 240,
sunlight_propagates = true, sunlight_propagates = true,
walkable = false, walkable = false,
light_source = 14, light_source = 14,
@ -33,7 +37,7 @@ minetest.register_node("lavalamp:lavalamp", {
}, },
groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, ud_param2_colorable = 1}, groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, ud_param2_colorable = 1},
sounds = default.node_sound_glass_defaults(), sounds = default.node_sound_glass_defaults(),
after_dig_node = unifieddyes.after_dig_node, on_construct = unifieddyes.on_construct,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
node.name = "lavalamp:lavalamp_off" node.name = "lavalamp:lavalamp_off"
minetest.swap_node(pos, node) minetest.swap_node(pos, node)
@ -52,7 +56,6 @@ minetest.register_node("lavalamp:lavalamp_off", {
paramtype = "light", paramtype = "light",
paramtype2 = "color", paramtype2 = "color",
palette = "unifieddyes_palette_extended.png", palette = "unifieddyes_palette_extended.png",
place_param2 = 240,
sunlight_propagates = true, sunlight_propagates = true,
walkable = false, walkable = false,
selection_box = { selection_box = {
@ -62,12 +65,17 @@ minetest.register_node("lavalamp:lavalamp_off", {
groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, not_in_creative_inventory=1}, groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, not_in_creative_inventory=1},
sounds = default.node_sound_glass_defaults(), sounds = default.node_sound_glass_defaults(),
drop = "lavalamp:lavalamp", drop = "lavalamp:lavalamp",
after_dig_node = unifieddyes.after_dig_node, on_construct = unifieddyes.on_construct,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
node.name = "lavalamp:lavalamp" node.name = "lavalamp:lavalamp"
minetest.swap_node(pos, node) minetest.swap_node(pos, node)
return itemstack return itemstack
end, end,
drop = {
items = {
{items = {"lavalamp:lavalamp"}, inherit_color = true },
}
}
}) })
minetest.register_craft({ minetest.register_craft({
@ -79,6 +87,17 @@ minetest.register_craft({
} }
}) })
unifieddyes.register_color_craft({
output = "lavalamp:lavalamp",
palette = "extended",
type = "shapeless",
neutral_node = "lavalamp:lavalamp",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
-- convert to param2 coloring -- convert to param2 coloring
local colors = { local colors = {
@ -127,20 +146,3 @@ minetest.register_lbm({
end end
}) })
minetest.register_lbm({
name = "lavalamp:recolor",
label = "Convert 89-color lamps to use UD extended palette",
run_at_every_load = false,
nodenames = {
"lavalamp:lavalamp",
"lavalamp:lavalamp_off"
},
action = function(pos, node)
local meta = minetest.get_meta(pos)
if meta:get_string("palette") ~= "ext" then
minetest.swap_node(pos, { name = node.name, param2 = unifieddyes.convert_classic_palette[node.param2] })
meta:set_string("palette", "ext")
end
end
})

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 B

View File

@ -23,8 +23,9 @@ minetest.register_node("lrfurn:armchair", {
groups = {snappy=3, ud_param2_colorable = 1}, groups = {snappy=3, ud_param2_colorable = 1},
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
node_box = armchair_cbox, node_box = armchair_cbox,
after_place_node = unifieddyes.fix_rotation_nsew, after_place_node = function(pos, placer, itemstack, pointed_thing)
after_dig_node = unifieddyes.after_dig_node, unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
end,
on_rotate = unifieddyes.fix_after_screwdriver_nsew, on_rotate = unifieddyes.fix_after_screwdriver_nsew,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
if not clicker:is_player() then if not clicker:is_player() then
@ -55,13 +56,23 @@ minetest.register_craft({
} }
}) })
unifieddyes.register_color_craft({
output = "lrfurn:armchair",
palette = "wallmounted",
type = "shapeless",
neutral_node = "lrfurn:armchair",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
-- convert old static nodes to param2 color -- convert old static nodes to param2 color
lrfurn.old_static_armchairs = {} lrfurn.old_static_armchairs = {}
for _, color in ipairs(lrfurn.colors) do for _, color in ipairs(lrfurn.colors) do
table.insert(lrfurn.old_static_armchairs, "lrfurn:armchair_"..color) table.insert(lrfurn.old_static_armchairs, "lrfurn:armchair_"..color)
print("lrfurn:armchair_"..color)
end end
minetest.register_lbm({ minetest.register_lbm({
@ -105,6 +116,6 @@ minetest.register_lbm({
end end
}) })
if minetest.setting_get("log_mods") then if minetest.settings:get("log_mods") then
minetest.log("action", "[lrfurn/armchairs] "..S("Loaded!")) minetest.log("action", "[lrfurn/armchairs] "..S("Loaded!"))
end end

View File

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

View File

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

View File

@ -1,3 +1,4 @@
local S = homedecor_i18n.gettext
lrfurn = {} lrfurn = {}
screwdriver = screwdriver or {} screwdriver = screwdriver or {}
@ -38,9 +39,9 @@ function lrfurn.check_right(pos, fdir, long, placer)
return false return false
elseif minetest.is_protected(pos2, placer:get_player_name()) then elseif minetest.is_protected(pos2, placer:get_player_name()) then
if not long then if not long then
minetest.chat_send_player(placer:get_player_name(), "Someone else owns the spot where other end goes!") minetest.chat_send_player(placer:get_player_name(), S("Someone else owns the spot where other end goes!"))
else else
minetest.chat_send_player(placer:get_player_name(), "Someone else owns the spot where the middle or far end goes!") minetest.chat_send_player(placer:get_player_name(), S("Someone else owns the spot where the middle or far end goes!"))
end end
return false return false
end end
@ -50,7 +51,7 @@ function lrfurn.check_right(pos, fdir, long, placer)
if node3 and node3.name ~= "air" then if node3 and node3.name ~= "air" then
return false return false
elseif minetest.is_protected(pos3, placer:get_player_name()) then elseif minetest.is_protected(pos3, placer:get_player_name()) then
minetest.chat_send_player(placer:get_player_name(), "Someone else owns the spot where the other end goes!") minetest.chat_send_player(placer:get_player_name(), S("Someone else owns the spot where the other end goes!"))
return false return false
end end
end end
@ -60,10 +61,11 @@ end
function lrfurn.fix_sofa_rotation_nsew(pos, placer, itemstack, pointed_thing) function lrfurn.fix_sofa_rotation_nsew(pos, placer, itemstack, pointed_thing)
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
local colorbits = node.param2 - (node.param2 % 8)
local yaw = placer:get_look_yaw() local yaw = placer:get_look_yaw()
local dir = minetest.yaw_to_dir(yaw-1.5) local dir = minetest.yaw_to_dir(yaw-1.5)
local fdir = minetest.dir_to_wallmounted(dir) local fdir = minetest.dir_to_wallmounted(dir)
minetest.swap_node(pos, { name = node.name, param2 = fdir }) minetest.swap_node(pos, { name = node.name, param2 = fdir+colorbits })
end end
dofile(minetest.get_modpath("lrfurn").."/longsofas.lua") dofile(minetest.get_modpath("lrfurn").."/longsofas.lua")

View File

@ -41,7 +41,6 @@ minetest.register_node("lrfurn:longsofa", {
end end
return itemstack return itemstack
end, end,
after_dig_node = unifieddyes.after_dig_node,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
if not clicker:is_player() then if not clicker:is_player() then
return itemstack return itemstack
@ -71,6 +70,17 @@ minetest.register_craft({
} }
}) })
unifieddyes.register_color_craft({
output = "lrfurn:longsofa",
palette = "wallmounted",
type = "shapeless",
neutral_node = "lrfurn:longsofa",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
-- convert old static nodes to param2 colorization -- convert old static nodes to param2 colorization
lrfurn.old_static_longsofas = {} lrfurn.old_static_longsofas = {}
@ -121,6 +131,6 @@ minetest.register_lbm({
end end
}) })
if minetest.setting_get("log_mods") then if minetest.settings:get("log_mods") then
minetest.log("action", "[lrfurn/longsofas] "..S("Loaded!")) minetest.log("action", "[lrfurn/longsofas] "..S("Loaded!"))
end end

View File

@ -41,7 +41,6 @@ minetest.register_node("lrfurn:sofa", {
end end
return itemstack return itemstack
end, end,
after_dig_node = unifieddyes.after_dig_node,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
if not clicker:is_player() then if not clicker:is_player() then
return itemstack return itemstack
@ -71,6 +70,17 @@ minetest.register_craft({
} }
}) })
unifieddyes.register_color_craft({
output = "lrfurn:sofa",
palette = "wallmounted",
type = "shapeless",
neutral_node = "lrfurn:sofa",
recipe = {
"NEUTRAL_NODE",
"MAIN_DYE"
}
})
-- convert old static nodes to param2 color -- convert old static nodes to param2 color
lrfurn.old_static_sofas = {} lrfurn.old_static_sofas = {}
@ -121,6 +131,6 @@ minetest.register_lbm({
end end
}) })
if minetest.setting_get("log_mods") then if minetest.settings:get("log_mods") then
minetest.log("action", "[lrfurn/sofas] "..S("Loaded!")) minetest.log("action", "[lrfurn/sofas] "..S("Loaded!"))
end end