From bf3179bfd36901eb7a899e73231e5ee0de4b1eaf Mon Sep 17 00:00:00 2001 From: poikilos <7557867+poikilos@users.noreply.github.com> Date: Tue, 6 Feb 2018 15:02:04 -0500 Subject: [PATCH] working on automatic patching --- .../game-install-ENLIVEN | 117 +- .../mods/bones/init-0.4.15 or lower.lua | 248 ++ patches/subgame-basis/mods/bones/init.lua | 249 ++ .../homedecor_modpack-0.4.15 or lower/LICENSE | 199 + .../homedecor/crafts.lua | 3340 ++++++++++++++++ .../homedecor/gastronomy.lua | 207 + .../homedecor/models/homedecor_beer_mug.obj | 421 +++ .../homedecor/textures/homedecor_beer_mug.png | Bin 0 -> 1300 bytes .../textures/homedecor_beer_mug_inv.png | Bin 0 -> 5489 bytes .../mods/homedecor_modpack/homedecor/LICENSE | 199 + .../homedecor_modpack/homedecor/crafts.lua | 3130 +++++++++++++++ .../homedecor/gastronomy.lua | 236 ++ .../homedecor/models/homedecor_beer_mug.obj | 421 +++ .../homedecor/textures/homedecor_beer_mug.png | Bin 0 -> 1300 bytes .../textures/homedecor_beer_mug_inv.png | Bin 0 -> 5489 bytes .../mods/bones/init-0.4.15 or lower.lua | 258 ++ patches/subgame/mods/bones/init.lua | 9 +- .../homedecor/crafts.lua | 3343 +++++++++++++++++ .../homedecor/gastronomy.lua | 209 ++ .../homedecor/models/homedecor_beer_mug.obj | 421 +++ .../homedecor/textures/homedecor_beer_mug.png | Bin 0 -> 1516 bytes .../textures/homedecor_beer_mug_inv.png | Bin 0 -> 5603 bytes .../mods/homedecor_modpack/homedecor/LICENSE | 199 + .../homedecor_modpack/homedecor/crafts.lua | 347 +- .../homedecor/gastronomy.lua | 92 +- 25 files changed, 13300 insertions(+), 345 deletions(-) create mode 100644 patches/subgame-basis/mods/bones/init-0.4.15 or lower.lua create mode 100644 patches/subgame-basis/mods/bones/init.lua create mode 100644 patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/LICENSE create mode 100644 patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/crafts.lua create mode 100644 patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/gastronomy.lua create mode 100644 patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/models/homedecor_beer_mug.obj create mode 100644 patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/textures/homedecor_beer_mug.png create mode 100644 patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/textures/homedecor_beer_mug_inv.png create mode 100644 patches/subgame-basis/mods/homedecor_modpack/homedecor/LICENSE create mode 100644 patches/subgame-basis/mods/homedecor_modpack/homedecor/crafts.lua create mode 100644 patches/subgame-basis/mods/homedecor_modpack/homedecor/gastronomy.lua create mode 100644 patches/subgame-basis/mods/homedecor_modpack/homedecor/models/homedecor_beer_mug.obj create mode 100644 patches/subgame-basis/mods/homedecor_modpack/homedecor/textures/homedecor_beer_mug.png create mode 100644 patches/subgame-basis/mods/homedecor_modpack/homedecor/textures/homedecor_beer_mug_inv.png create mode 100644 patches/subgame/mods/bones/init-0.4.15 or lower.lua create mode 100644 patches/subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/crafts.lua create mode 100644 patches/subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/gastronomy.lua create mode 100644 patches/subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/models/homedecor_beer_mug.obj create mode 100644 patches/subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/textures/homedecor_beer_mug.png create mode 100644 patches/subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/textures/homedecor_beer_mug_inv.png create mode 100644 patches/subgame/mods/homedecor_modpack/homedecor/LICENSE diff --git a/etc/change_hardcoded_world_name_first/game-install-ENLIVEN b/etc/change_hardcoded_world_name_first/game-install-ENLIVEN index 858826c..277cd55 100755 --- a/etc/change_hardcoded_world_name_first/game-install-ENLIVEN +++ b/etc/change_hardcoded_world_name_first/game-install-ENLIVEN @@ -10,23 +10,40 @@ # * Git version uses /home/*/minetest/games and /usr/local/share/minetest/games but the latter is used for minetestserver (minetest-server package) -# Known Issues: -Uberi=`ls /usr/share/minetest/games/ENLIVEN/mods/worldedit | grep Uberi` -if [ ! -z "$Uberi" ]; then - # /usr/share/minetest/games/ENLIVEN/mods/worldedit/Uberi-Minetest-WorldEdit-3322ef9 - rm -Rf /usr/share/minetest/games/ENLIVEN/mods/worldedit -fi -if [ -d /usr/share/minetest/games/ENLIVEN/mods/mesecons/mesecons-master ]; then - rm -Rf /usr/share/minetest/games/ENLIVEN/mods/mesecons -fi + # (Ubuntu 14.04 Trusty Tahr Server) folders were found using: # cd / # sudo find -name 'worlds' (worlds folder is in $HOME/.minetest) # sudo find -name 'minimal' (stable build [such as 0.4.9 games folder is /usr/share/games/minetest/games, but git version games folder is /usr/local/share/minetest/games) -sudo echo "cached password." -# NOTE: minetest mods are ALWAYS ONLY installed on server +# Absolute path to this script, e.g. /home/user/bin/foo.sh +SCRIPT=$(readlink -f "$0") +# Absolute path this script is in, thus /home/user/bin +SCRIPTPATH=$(dirname "$SCRIPT") +REPO_PATH=$(dirname "$SCRIPTPATH") + +#endregion paste this part into terminal to get some great environment variables + +PATCHES_PATH="$REPO_PATH/patches" + +if [ ! -d "$PATCHES_PATH" ]; then + # maybe moved somewhere or this code was pasted + PATCHES_PATH=$HOME/GitHub/EnlivenMinetest/patches +fi +if [ ! -d "$PATCHES_PATH" ]; then + # maybe running from root of repo + PATCHES_PATH="patches" +fi +if [ ! -d "$PATCHES_PATH" ]; then + # should work if ran from folder where exists + PATCHES_PATH="../patches" +fi +if [ ! -d "$PATCHES_PATH" ]; then + echo "ERROR: could not find patches such as in $PATCHES_PATH" + exit 1 +fi +# NOTE: minetest mods (other than 0.4.16 client-side mods) are ALWAYS ONLY installed on server, unless you need them for singleplayer mtgame_name="minetest_game" USR_SHARE_MINETEST=/usr/share/games/minetest try_path="/usr/share/minetest" @@ -54,7 +71,7 @@ MT_MYWORLD_NAME=FCAGameAWorld MT_MYWORLD_DIR=$HOME/.minetest/worlds/$MT_MYWORLD_NAME err_txt=$HOME/err-enliven.txt - +#endregion paste this part into terminal to get some great environment variables # BACKUP THE WORLD: @@ -1012,6 +1029,9 @@ fi wget https://github.com/minetest-mods/mesecons/archive/master.zip mv $MTMOD_DL_ZIP $MTMOD_SRC_ZIP unzip $MTMOD_SRC_ZIP +if [ -d "$MTMOD_DEST_PATH" ]; then + rm -Rf "$MTMOD_DEST_PATH" +fi sudo mv -f $MTMOD_UNZ_NAME "$MTMOD_DEST_PATH" if [ ! -d "$MTMOD_DEST_PATH" ]; then echo "ERROR: failed to create $MTMOD_DEST_PATH, so cannot continue." > $err_txt @@ -1345,6 +1365,9 @@ rm -Rvf $MTMOD_UNZ_NAME wget https://github.com/Uberi/MineTest-WorldEdit/zipball/master mv $MTMOD_DL_ZIP "$MTMOD_SRC_ZIP" unzip "$MTMOD_SRC_ZIP" +if [ -d "$MTMOD_DEST_PATH" ]; then + rm -Rf "$MTMOD_DEST_PATH" +fi sudo mv -f $MTMOD_UNZ_NAME "$MTMOD_DEST_PATH" if [ ! -d "$MTMOD_DEST_PATH" ]; then echo "ERROR: failed to unzip $MTMOD_DEST_PATH, so cannot continue." > $err_txt @@ -1719,6 +1742,7 @@ if [ -f $MTMOD_SRC_ZIP ]; then rm -f $MTMOD_SRC_ZIP fi if [ -d "$MTMOD_DEST_PATH" ]; then + # remove old copy, or remove minetest_game's farming sudo rm -Rf "$MTMOD_DEST_PATH" fi wget https://github.com/tenplus1/farming/archive/master.zip @@ -1888,29 +1912,62 @@ fi echo echo echo -echo "adding the following necessary integration mods:" -ls ~/GitHub/EnlivenMinetest/patches/mods-integration/ -sudo cp -R ~/GitHub/EnlivenMinetest/patches/mods-integration/* "$MT_MYGAME_MODS_PATH/" -echo -echo "adding the following multiplayer mods:" -ls ~/GitHub/EnlivenMinetest/patches/mods-multiplayer/ -sudo cp -R ~/GitHub/EnlivenMinetest/patches/mods-multiplayer/* "$MT_MYGAME_MODS_PATH/" +if [ -d "$PATCHES_PATH" ]; then + echo "adding the following necessary integration mods:" + ls $PATCHES_PATH/mods-integration/ + sudo cp -R $PATCHES_PATH/mods-integration/* "$MT_MYGAME_MODS_PATH/" + echo + echo "adding the following multiplayer mods:" + ls $PATCHES_PATH/mods-multiplayer/ + sudo cp -R $PATCHES_PATH/mods-multiplayer/* "$MT_MYGAME_MODS_PATH/" + echo "adding non-manual patches to subgame (vs minetest_game and downloaded mods):" + sudo cp -f $PATCHES_PATH/subgame/* "$MT_MYGAME_DIR/" + sudo cp -f $PATCHES_PATH/subgame/menu/* "$MT_MYGAME_DIR/menu/" + sudo cp -f $PATCHES_PATH/subgame/mods/mobs/textures/* "$MT_MYGAME_DIR/mods/mobs/textures/" + sudo cp -f $PATCHES_PATH/subgame/mods/mobs_monster/textures/* "$MT_MYGAME_DIR/mods/mobs_monster/textures/" + echo "mods affected: mobs mobs_monsters" + PATCHED_FLAG="" + BASIS_PATH=$PATCHES_PATH/subgame-basis/mods/bones/init.lua + MTMOD_DEST_NAME=bones + MTMOD_DEST_PATH=$MT_MYGAME_MODS_PATH/bones + TARGET_PATH=$MTMOD_DEST_PATH/init.lua + TRY_DIFF="`diff $BASIS_PATH $TARGET_PATH`" + if [ -z "$TRY_DIFF" ]; then + sudo cp -f $BASIS_PATH "$MT_MYGAME_DIR/mods/bones/" + else + echo "FAILED to patch $MTMOD_DEST_NAME since $TARGET_PATH differs from known" + fi + BASIS_PATH=$PATCHES_PATH/subgame-basis/mods/homedecor_modpack/homedecor/gastronomy.lua + TARGET_PATH=$MT_MYGAME_MODS_PATH/homedecor_modpack/homedecor/gastronomy.lua + MTMOD_DEST_NAME=homedecor_modpack + MTMOD_DEST_PATH=$MT_MYGAME_MODS_PATH/homedecor_modpack/homedecor + TRY_DIFF="`diff $BASIS_PATH $TARGET_PATH`" + if [ -z "$TRY_DIFF" ]; then + sudo cp -f $TARGET_PATH "$MTMOD_DEST_PATH/" + else + echo "FAILED to patch $MTMOD_DEST_NAME since $TARGET_PATH differs from known" + fi + BASIS_PATH=$PATCHES_PATH/subgame-basis/mods/homedecor_modpack/homedecor/crafts.lua + TARGET_PATH=$MT_MYGAME_MODS_PATH/homedecor_modpack/homedecor/crafts.lua + MTMOD_DEST_NAME=homedecor_modpack + TRY_DIFF="`diff $BASIS_PATH $TARGET_PATH`" + if [ -z "$TRY_DIFF" ]; then + sudo cp -f $TARGET_PATH "$MTMOD_DEST_PATH/" + else + echo "FAILED to patch $MTMOD_DEST_NAME since $TARGET_PATH differs from known" + fi +else + echo "did not find $PATCHES_PATH, so skipped automatic patching which is partially implemented" +fi echo echo "# remove not available on 0.4.16 stable (is only avail on 0.4.16-dev or higher)" echo "sudo rm -Rf /usr/share/games/minetest/games/ENLIVEN/mods/worldedit/worldedit_brush" echo "# not recommended:" -echo "sudo cp -R ~/GitHub/EnlivenMinetest/patches/mods-stopgap/* $MT_MYGAME_MODS_PATH/" +echo "sudo cp -R $PATCHES_PATH/mods-stopgap/* $MT_MYGAME_MODS_PATH/" echo "sudo rm -Rf $MT_MYGAME_MODS_PATH/1.nonworking" - echo echo -echo "adding non-manual patches to subgame (vs minetest_game and downloaded mods):" -sudo cp -f ~/GitHub/EnlivenMinetest/patches/subgame/* "$MT_MYGAME_DIR/" -sudo cp -f ~/GitHub/EnlivenMinetest/patches/subgame/menu/* "$MT_MYGAME_DIR/menu/" -sudo cp -f ~/GitHub/EnlivenMinetest/patches/subgame/mods/mobs/textures/* "$MT_MYGAME_DIR/mods/mobs/textures/" -sudo cp -f ~/GitHub/EnlivenMinetest/patches/subgame/mods/mobs_monster/textures/* "$MT_MYGAME_DIR/mods/mobs_monster/textures/" -echo "mods affected: mobs" echo echo "#### $MT_MYWORLD_DIR/world.mt: ####" cat "$MT_MYWORLD_DIR/world.mt" @@ -1937,12 +1994,12 @@ echo " * for invhack, remember to do: /giveme invhack:tool" echo " * uncomment columns in lapis mod" echo " * Make sure client (server done already above) minetest.conf has secure.trusted_mods = advanced_npc" echo " * Make sure writable minetest conf was successfully written" -echo " over /usr/local/share/minetest/games/enliven/minetest.conf with:" +echo " over $MT_MYGAME_DIR/minetest.conf with (NOTE: protector_drop is deprecated):" echo "protector_radius = 7" echo "protector_pvp = true" echo "protector_pvp_spawn = 10" -echo "protector_drop = true" -echo "protector_hurt = 1" +echo "protector_drop = false" +echo "protector_hurt = 3" echo "" echo "default_privs = interact,shout,home" echo "max_users = 50" diff --git a/patches/subgame-basis/mods/bones/init-0.4.15 or lower.lua b/patches/subgame-basis/mods/bones/init-0.4.15 or lower.lua new file mode 100644 index 0000000..9542cab --- /dev/null +++ b/patches/subgame-basis/mods/bones/init-0.4.15 or lower.lua @@ -0,0 +1,248 @@ +-- Minetest 0.4 mod: bones +-- See README.txt for licensing and other information. + +local function is_owner(pos, name) + local owner = minetest.get_meta(pos):get_string("owner") + if owner == "" or owner == name or minetest.check_player_privs(name, "protection_bypass") then + return true + end + return false +end + +local bones_formspec = + "size[8,9]" .. + default.gui_bg .. + default.gui_bg_img .. + default.gui_slots .. + "list[current_name;main;0,0.3;8,4;]" .. + "list[current_player;main;0,4.85;8,1;]" .. + "list[current_player;main;0,6.08;8,3;8]" .. + "listring[current_name;main]" .. + "listring[current_player;main]" .. + default.get_hotbar_bg(0,4.85) + +local share_bones_time = tonumber(minetest.setting_get("share_bones_time")) or 1200 +local share_bones_time_early = tonumber(minetest.setting_get("share_bones_time_early")) or share_bones_time / 4 + +minetest.register_node("bones:bones", { + description = "Bones", + tiles = { + "bones_top.png^[transform2", + "bones_bottom.png", + "bones_side.png", + "bones_side.png", + "bones_rear.png", + "bones_front.png" + }, + paramtype2 = "facedir", + groups = {dig_immediate = 2}, + sounds = default.node_sound_gravel_defaults(), + + can_dig = function(pos, player) + local inv = minetest.get_meta(pos):get_inventory() + local name = "" + if player then + name = player:get_player_name() + end + return is_owner(pos, name) and inv:is_empty("main") + end, + + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + if is_owner(pos, player:get_player_name()) then + return count + end + return 0 + end, + + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + return 0 + end, + + allow_metadata_inventory_take = function(pos, listname, index, stack, player) + if is_owner(pos, player:get_player_name()) then + return stack:get_count() + end + return 0 + end, + + on_metadata_inventory_take = function(pos, listname, index, stack, player) + local meta = minetest.get_meta(pos) + if meta:get_inventory():is_empty("main") then + minetest.remove_node(pos) + end + end, + + on_punch = function(pos, node, player) + if not is_owner(pos, player:get_player_name()) then + return + end + + if minetest.get_meta(pos):get_string("infotext") == "" then + return + end + + local inv = minetest.get_meta(pos):get_inventory() + local player_inv = player:get_inventory() + local has_space = true + + for i = 1, inv:get_size("main") do + local stk = inv:get_stack("main", i) + if player_inv:room_for_item("main", stk) then + inv:set_stack("main", i, nil) + player_inv:add_item("main", stk) + else + has_space = false + break + end + end + + -- remove bones if player emptied them + if has_space then + if player_inv:room_for_item("main", {name = "bones:bones"}) then + player_inv:add_item("main", {name = "bones:bones"}) + else + minetest.add_item(pos,"bones:bones") + end + minetest.remove_node(pos) + end + end, + + on_timer = function(pos, elapsed) + local meta = minetest.get_meta(pos) + local time = meta:get_int("time") + elapsed + if time >= share_bones_time then + meta:set_string("infotext", meta:get_string("owner") .. "'s old bones") + meta:set_string("owner", "") + else + meta:set_int("time", time) + return true + end + end, + on_blast = function(pos) + end, +}) + +local function may_replace(pos, player) + local node_name = minetest.get_node(pos).name + local node_definition = minetest.registered_nodes[node_name] + + -- if the node is unknown, we return false + if not node_definition then + return false + end + + -- allow replacing air and liquids + if node_name == "air" or node_definition.liquidtype ~= "none" then + return true + end + + -- don't replace filled chests and other nodes that don't allow it + local can_dig_func = node_definition.can_dig + if can_dig_func and not can_dig_func(pos, player) then + return false + end + + -- default to each nodes buildable_to; if a placed block would replace it, why shouldn't bones? + -- flowers being squished by bones are more realistical than a squished stone, too + -- exception are of course any protected buildable_to + return node_definition.buildable_to and not minetest.is_protected(pos, player:get_player_name()) +end + +local drop = function(pos, itemstack) + local obj = minetest.add_item(pos, itemstack:take_item(itemstack:get_count())) + if obj then + obj:setvelocity({ + x = math.random(-10, 10) / 9, + y = 5, + z = math.random(-10, 10) / 9, + }) + end +end + +minetest.register_on_dieplayer(function(player) + + local bones_mode = minetest.setting_get("bones_mode") or "bones" + if bones_mode ~= "bones" and bones_mode ~= "drop" and bones_mode ~= "keep" then + bones_mode = "bones" + end + + -- return if keep inventory set or in creative mode + if bones_mode == "keep" or minetest.setting_getbool("creative_mode") then + return + end + + local player_inv = player:get_inventory() + if player_inv:is_empty("main") and + player_inv:is_empty("craft") then + return + end + + local pos = vector.round(player:getpos()) + local player_name = player:get_player_name() + + -- check if it's possible to place bones, if not find space near player + if bones_mode == "bones" and not may_replace(pos, player) then + local air = minetest.find_node_near(pos, 1, {"air"}) + if air and not minetest.is_protected(air, player_name) then + pos = air + else + bones_mode = "drop" + end + end + + if bones_mode == "drop" then + + -- drop inventory items + for i = 1, player_inv:get_size("main") do + drop(pos, player_inv:get_stack("main", i)) + end + player_inv:set_list("main", {}) + + -- drop crafting grid items + for i = 1, player_inv:get_size("craft") do + drop(pos, player_inv:get_stack("craft", i)) + end + player_inv:set_list("craft", {}) + + drop(pos, ItemStack("bones:bones")) + return + end + + local param2 = minetest.dir_to_facedir(player:get_look_dir()) + minetest.set_node(pos, {name = "bones:bones", param2 = param2}) + + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_size("main", 8 * 4) + inv:set_list("main", player_inv:get_list("main")) + + for i = 1, player_inv:get_size("craft") do + local stack = player_inv:get_stack("craft", i) + if inv:room_for_item("main", stack) then + inv:add_item("main", stack) + else + --drop if no space left + drop(pos, stack) + end + end + + player_inv:set_list("main", {}) + player_inv:set_list("craft", {}) + + meta:set_string("formspec", bones_formspec) + meta:set_string("owner", player_name) + + if share_bones_time ~= 0 then + meta:set_string("infotext", player_name .. "'s fresh bones") + + if share_bones_time_early == 0 or not minetest.is_protected(pos, player_name) then + meta:set_int("time", 0) + else + meta:set_int("time", (share_bones_time - share_bones_time_early)) + end + + minetest.get_node_timer(pos):start(10) + else + meta:set_string("infotext", player_name.."'s bones") + end +end) diff --git a/patches/subgame-basis/mods/bones/init.lua b/patches/subgame-basis/mods/bones/init.lua new file mode 100644 index 0000000..9583bc2 --- /dev/null +++ b/patches/subgame-basis/mods/bones/init.lua @@ -0,0 +1,249 @@ +-- Minetest 0.4 mod: bones +-- See README.txt for licensing and other information. + +local function is_owner(pos, name) + local owner = minetest.get_meta(pos):get_string("owner") + if owner == "" or owner == name or minetest.check_player_privs(name, "protection_bypass") then + return true + end + return false +end + +local bones_formspec = + "size[8,9]" .. + default.gui_bg .. + default.gui_bg_img .. + default.gui_slots .. + "list[current_name;main;0,0.3;8,4;]" .. + "list[current_player;main;0,4.85;8,1;]" .. + "list[current_player;main;0,6.08;8,3;8]" .. + "listring[current_name;main]" .. + "listring[current_player;main]" .. + default.get_hotbar_bg(0,4.85) + +local share_bones_time = tonumber(minetest.settings:get("share_bones_time")) or 1200 +local share_bones_time_early = tonumber(minetest.settings:get("share_bones_time_early")) or share_bones_time / 4 + +minetest.register_node("bones:bones", { + description = "Bones", + tiles = { + "bones_top.png^[transform2", + "bones_bottom.png", + "bones_side.png", + "bones_side.png", + "bones_rear.png", + "bones_front.png" + }, + paramtype2 = "facedir", + groups = {dig_immediate = 2}, + sounds = default.node_sound_gravel_defaults(), + + can_dig = function(pos, player) + local inv = minetest.get_meta(pos):get_inventory() + local name = "" + if player then + name = player:get_player_name() + end + return is_owner(pos, name) and inv:is_empty("main") + end, + + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + if is_owner(pos, player:get_player_name()) then + return count + end + return 0 + end, + + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + return 0 + end, + + allow_metadata_inventory_take = function(pos, listname, index, stack, player) + if is_owner(pos, player:get_player_name()) then + return stack:get_count() + end + return 0 + end, + + on_metadata_inventory_take = function(pos, listname, index, stack, player) + local meta = minetest.get_meta(pos) + if meta:get_inventory():is_empty("main") then + minetest.remove_node(pos) + end + end, + + on_punch = function(pos, node, player) + if not is_owner(pos, player:get_player_name()) then + return + end + + if minetest.get_meta(pos):get_string("infotext") == "" then + return + end + + local inv = minetest.get_meta(pos):get_inventory() + local player_inv = player:get_inventory() + local has_space = true + + for i = 1, inv:get_size("main") do + local stk = inv:get_stack("main", i) + if player_inv:room_for_item("main", stk) then + inv:set_stack("main", i, nil) + player_inv:add_item("main", stk) + else + has_space = false + break + end + end + + -- remove bones if player emptied them + if has_space then + if player_inv:room_for_item("main", {name = "bones:bones"}) then + player_inv:add_item("main", {name = "bones:bones"}) + else + minetest.add_item(pos,"bones:bones") + end + minetest.remove_node(pos) + end + end, + + on_timer = function(pos, elapsed) + local meta = minetest.get_meta(pos) + local time = meta:get_int("time") + elapsed + if time >= share_bones_time then + meta:set_string("infotext", meta:get_string("owner") .. "'s old bones") + meta:set_string("owner", "") + else + meta:set_int("time", time) + return true + end + end, + on_blast = function(pos) + end, +}) + +local function may_replace(pos, player) + local node_name = minetest.get_node(pos).name + local node_definition = minetest.registered_nodes[node_name] + + -- if the node is unknown, we return false + if not node_definition then + return false + end + + -- allow replacing air and liquids + if node_name == "air" or node_definition.liquidtype ~= "none" then + return true + end + + -- don't replace filled chests and other nodes that don't allow it + local can_dig_func = node_definition.can_dig + if can_dig_func and not can_dig_func(pos, player) then + return false + end + + -- default to each nodes buildable_to; if a placed block would replace it, why shouldn't bones? + -- flowers being squished by bones are more realistical than a squished stone, too + -- exception are of course any protected buildable_to + return node_definition.buildable_to and not minetest.is_protected(pos, player:get_player_name()) +end + +local drop = function(pos, itemstack) + local obj = minetest.add_item(pos, itemstack:take_item(itemstack:get_count())) + if obj then + obj:setvelocity({ + x = math.random(-10, 10) / 9, + y = 5, + z = math.random(-10, 10) / 9, + }) + end +end + +minetest.register_on_dieplayer(function(player) + + local bones_mode = minetest.settings:get("bones_mode") or "bones" + if bones_mode ~= "bones" and bones_mode ~= "drop" and bones_mode ~= "keep" then + bones_mode = "bones" + end + + -- return if keep inventory set or in creative mode + if bones_mode == "keep" or (creative and creative.is_enabled_for + and creative.is_enabled_for(player:get_player_name())) then + return + end + + local player_inv = player:get_inventory() + if player_inv:is_empty("main") and + player_inv:is_empty("craft") then + return + end + + local pos = vector.round(player:getpos()) + local player_name = player:get_player_name() + + -- check if it's possible to place bones, if not find space near player + if bones_mode == "bones" and not may_replace(pos, player) then + local air = minetest.find_node_near(pos, 1, {"air"}) + if air and not minetest.is_protected(air, player_name) then + pos = air + else + bones_mode = "drop" + end + end + + if bones_mode == "drop" then + + -- drop inventory items + for i = 1, player_inv:get_size("main") do + drop(pos, player_inv:get_stack("main", i)) + end + player_inv:set_list("main", {}) + + -- drop crafting grid items + for i = 1, player_inv:get_size("craft") do + drop(pos, player_inv:get_stack("craft", i)) + end + player_inv:set_list("craft", {}) + + drop(pos, ItemStack("bones:bones")) + return + end + + local param2 = minetest.dir_to_facedir(player:get_look_dir()) + minetest.set_node(pos, {name = "bones:bones", param2 = param2}) + + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_size("main", 8 * 4) + inv:set_list("main", player_inv:get_list("main")) + + for i = 1, player_inv:get_size("craft") do + local stack = player_inv:get_stack("craft", i) + if inv:room_for_item("main", stack) then + inv:add_item("main", stack) + else + --drop if no space left + drop(pos, stack) + end + end + + player_inv:set_list("main", {}) + player_inv:set_list("craft", {}) + + meta:set_string("formspec", bones_formspec) + meta:set_string("owner", player_name) + + if share_bones_time ~= 0 then + meta:set_string("infotext", player_name .. "'s fresh bones") + + if share_bones_time_early == 0 or not minetest.is_protected(pos, player_name) then + meta:set_int("time", 0) + else + meta:set_int("time", (share_bones_time - share_bones_time_early)) + end + + minetest.get_node_timer(pos):start(10) + else + meta:set_string("infotext", player_name.."'s bones") + end +end) diff --git a/patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/LICENSE b/patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/LICENSE new file mode 100644 index 0000000..0a3df5e --- /dev/null +++ b/patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/LICENSE @@ -0,0 +1,199 @@ +For the Lua code: LGPL 3.0 or higher +For all models, all textures, and all sounds: CC-by-SA 3.0 or higher +For everything else: WTFPL + +Exceptions to the above: + +Fancy mesh fire model and texture by NathanS (CC-0). + +=============================================================================== + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + +=============================================================================== + +This work is licensed under the Creative Commons Attribution-ShareAlike +4.0 International License. To view a copy of this license, visit +http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to +Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. + +=============================================================================== + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. + diff --git a/patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/crafts.lua b/patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/crafts.lua new file mode 100644 index 0000000..5153761 --- /dev/null +++ b/patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/crafts.lua @@ -0,0 +1,3340 @@ +-- Crafting for homedecor mod (includes folding) by Vanessa Ezekowitz +-- +-- Mostly my own code; overall template borrowed from game default + +local S = homedecor_i18n.gettext + +-- misc craftitems + +minetest.register_craftitem("homedecor:terracotta_base", { + description = S("Uncooked Terracotta Base"), + inventory_image = "homedecor_terracotta_base.png", +}) + +minetest.register_craftitem("homedecor:roof_tile_terracotta", { + description = S("Terracotta Roof Tile"), + inventory_image = "homedecor_roof_tile_terracotta.png", +}) + +minetest.register_craftitem("homedecor:oil_extract", { + description = S("Oil extract"), + inventory_image = "homedecor_oil_extract.png", +}) + +minetest.register_craftitem("homedecor:paraffin", { + description = S("Unprocessed paraffin"), + inventory_image = "homedecor_paraffin.png", +}) + +minetest.register_alias("homedecor:plastic_base", "homedecor:paraffin") + +minetest.register_craftitem("homedecor:plastic_sheeting", { + description = S("Plastic sheet"), + inventory_image = "homedecor_plastic_sheeting.png", +}) + +minetest.register_craftitem("homedecor:plastic_strips", { + description = S("Plastic strips"), + inventory_image = "homedecor_plastic_strips.png", +}) + +minetest.register_craftitem("homedecor:drawer_small", { + description = S("Small Wooden Drawer"), + inventory_image = "homedecor_drawer_small.png", +}) + +minetest.register_craftitem("homedecor:ic", { + description = S("Simple Integrated Circuit"), + inventory_image = "homedecor_ic.png", +}) + +minetest.register_craftitem("homedecor:heating_element", { + description = S("Heating element"), + inventory_image = "homedecor_heating_element.png", +}) + +minetest.register_craftitem("homedecor:motor", { + description = S("Motor"), + inventory_image = "homedecor_motor.png", +}) + +minetest.register_craftitem("homedecor:power_crystal", { + description = S("Power Crystal"), + inventory_image = "homedecor_power_crystal.png", +}) + +minetest.register_craftitem("homedecor:blank_canvas", { + description = S("Blank Canvas"), + inventory_image = "homedecor_blank_canvas.png" +}) + +minetest.register_craftitem("homedecor:vcr", { + description = S("VCR"), + inventory_image = "homedecor_vcr.png" +}) + +minetest.register_craftitem("homedecor:dvd_player", { + description = S("DVD Player"), + inventory_image = "homedecor_dvd_player.png" +}) + +minetest.register_craftitem("homedecor:copper_wire", { + description = S("Spool of copper wire"), + inventory_image = "homedecor_copper_wire.png" +}) + +minetest.register_craftitem("homedecor:steel_wire", { + description = S("Spool of steel wire"), + inventory_image = "homedecor_steel_wire.png" +}) + +minetest.register_craftitem("homedecor:speaker_driver", { + description = S("Speaker driver"), + inventory_image = "homedecor_speaker_driver_inv.png" +}) + +minetest.register_craftitem("homedecor:fan_blades", { + description = S("Fan blades"), + inventory_image = "homedecor_fan_blades.png" +}) + +minetest.register_craftitem("homedecor:copper_strip", { + description = S("Copper Strip"), + inventory_image = "homedecor_copper_strip.png" +}) + +minetest.register_craftitem("homedecor:steel_strip", { + description = S("Steel Strip"), + inventory_image = "homedecor_steel_strip.png" +}) + +minetest.register_craftitem(":glooptest:chainlink", { + description = S("Steel chainlink"), + inventory_image = "homedecor_chainlink_steel.png" +}) + +minetest.register_craftitem("homedecor:chainlink_brass", { + description = S("Brass chainlink"), + inventory_image = "homedecor_chainlink_brass.png" +}) + +minetest.register_craftitem("homedecor:soda_can", { + description = S("Soda Can"), + inventory_image = "homedecor_soda_can.png", + on_use = minetest.item_eat(2), +}) + +minetest.register_craftitem("homedecor:coin", { + description = S("Gold Coin (for soda vending machine)"), + inventory_image = "homedecor_coin.png", +}) + +-- alternate crafting if mesecons is/isn't installed + +if not minetest.get_modpath("mesecons") then + + minetest.register_craftitem(":mesecons_materials:silicon", { + description = S("Silicon lump"), + inventory_image = "homedecor_silicon.png", + }) + + minetest.register_craft( { + output = "mesecons_materials:silicon 4", + recipe = { + { "default:sand", "default:sand" }, + { "default:sand", "default:steel_ingot" }, + }, + }) + +end + +-- alternate crafting if technic is/isn't installed +if not minetest.get_modpath("technic") then + minetest.register_craftitem(":technic:brass_ingot", { + description = S("Brass Ingot"), + inventory_image = "homedecor_brass_ingot.png", + }) + + if minetest.get_modpath("moreores") then + minetest.register_craft( { + type = "shapeless", + output = "technic:brass_ingot 2", + recipe = { + "moreores:silver_ingot", + "default:copper_ingot", + }, + }) + else + minetest.register_craft( { + type = "shapeless", + output = "technic:brass_ingot 3", + recipe = { + "default:steel_ingot", + "default:copper_ingot", + "default:gold_ingot", + }, + }) + end +end + +minetest.register_alias("homedecor:brass_ingot", "technic:brass_ingot") + +-- the actual crafts + +minetest.register_craft( { + output = "homedecor:copper_strip 12", + recipe = { + { "", "default:copper_ingot", "" }, + { "default:copper_ingot", "", "" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:steel_strip 12", + recipe = { + { "", "default:steel_ingot", "" }, + { "default:steel_ingot", "", "" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:fan_blades 2", + recipe = { + { "", "homedecor:plastic_sheeting", "" }, + { "", "default:steel_ingot", "" }, + { "homedecor:plastic_sheeting", "", "homedecor:plastic_sheeting" } + }, +}) + +minetest.register_craft( { + output = "homedecor:steel_wire 4", + recipe = { + { "", "homedecor:plastic_sheeting", "" }, + { "default:steel_ingot", "homedecor:plastic_sheeting", "default:steel_ingot" }, + { "", "homedecor:plastic_sheeting", "" } + }, +}) + +minetest.register_craft( { + output = "homedecor:copper_wire 4", + recipe = { + { "", "homedecor:plastic_sheeting", "" }, + { "default:copper_ingot", "homedecor:plastic_sheeting", "default:copper_ingot" }, + { "", "homedecor:plastic_sheeting", "" } + }, +}) + +minetest.register_craft( { + output = "homedecor:plastic_strips 3", + recipe = { + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" } + }, +}) + +minetest.register_craft( { + output = "homedecor:heating_element 2", + recipe = { + { "default:copper_ingot", "default:mese_crystal_fragment", "default:copper_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:motor 2", + recipe = { + { "default:mese_crystal_fragment", "homedecor:copper_wire", "homedecor:plastic_sheeting" }, + { "default:copper_ingot", "default:steel_ingot", "default:steel_ingot" }, + { "default:mese_crystal_fragment", "homedecor:copper_wire", "homedecor:plastic_sheeting" } + }, +}) + +minetest.register_craft({ + --type = "shapeless", + output = "homedecor:power_crystal 2", + recipe = { + { "default:mese_crystal_fragment", "default:torch", "default:mese_crystal_fragment" }, + { "default:diamond", "default:gold_ingot", "default:diamond" } + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:power_crystal", + burntime = 50, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:terracotta_base 8", + recipe = { + "default:dirt", + "default:clay_lump", + "bucket:bucket_water" + }, + replacements = { {"bucket:bucket_water", "bucket:bucket_empty"}, }, +}) + +minetest.register_craft({ + type = "cooking", + output = "homedecor:roof_tile_terracotta", + recipe = "homedecor:terracotta_base", +}) + +minetest.register_craft( { + output = "homedecor:shingles_terracotta", + recipe = { + { "homedecor:roof_tile_terracotta", "homedecor:roof_tile_terracotta"}, + { "homedecor:roof_tile_terracotta", "homedecor:roof_tile_terracotta"}, + }, +}) + +minetest.register_craft( { + output = "homedecor:roof_tile_terracotta 8", + recipe = { + { "homedecor:shingles_terracotta", "homedecor:shingles_terracotta" } + } +}) + +minetest.register_craft( { + output = "homedecor:flower_pot_terracotta", + recipe = { + { "homedecor:roof_tile_terracotta", "default:dirt", "homedecor:roof_tile_terracotta" }, + { "homedecor:roof_tile_terracotta", "homedecor:roof_tile_terracotta", "homedecor:roof_tile_terracotta" }, + }, +}) + +-- + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:oil_extract 4", + recipe = { + "group:leaves", + "group:leaves", + "group:leaves", + "group:leaves", + "group:leaves", + "group:leaves" + } +}) + +minetest.register_craft({ + type = "cooking", + output = "homedecor:paraffin", + recipe = "homedecor:oil_extract", +}) + +minetest.register_craft({ + type = "cooking", + output = "homedecor:plastic_sheeting", + recipe = "homedecor:paraffin", +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:oil_extract", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:paraffin", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:plastic_sheeting", + burntime = 30, +}) + +minetest.register_craft( { + output = "homedecor:flower_pot_green", + recipe = { + { "", "dye:dark_green", "" }, + { "homedecor:plastic_sheeting", "default:dirt", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:flower_pot_black", + recipe = { + { "dye:black", "dye:black", "dye:black" }, + { "homedecor:plastic_sheeting", "default:dirt", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + }, +}) + +-- + +minetest.register_craft( { + output = "homedecor:projection_screen 3", + recipe = { + { "", "default:glass", "" }, + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:projection_screen", + burntime = 30, +}) + +-- + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:ceiling_paint 20", + recipe = { + "dye:white", + "dye:white", + "default:sand", + "bucket:bucket_water", + }, + replacements = { { "bucket:bucket_water","bucket:bucket_empty" } } +}) + +minetest.register_craft( { + output = "homedecor:ceiling_tile 10", + recipe = { + { "", "dye:white", "" }, + { "default:steel_ingot", "default:stone", "default:steel_ingot" }, + + }, +}) + + +-- ======================================================= +-- Items/recipes not requiring smelting of anything new + +minetest.register_craft( { + output = "homedecor:glass_table_small_round_b 15", + recipe = { + { "", "default:glass", "" }, + { "default:glass", "default:glass", "default:glass" }, + { "", "default:glass", "" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:glass_table_small_square_b 2", + recipe = { + {"homedecor:glass_table_small_round", "homedecor:glass_table_small_round" }, + } +}) + +minetest.register_craft( { + output = "homedecor:glass_table_large_b 2", + recipe = { + { "homedecor:glass_table_small_square", "homedecor:glass_table_small_square" }, + } +}) + +-- + +minetest.register_craft( { + output = "homedecor:wood_table_small_round_b 15", + recipe = { + { "", "group:wood", "" }, + { "group:wood", "group:wood", "group:wood" }, + { "", "group:wood", "" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:wood_table_small_square_b 2", + recipe = { + { "homedecor:wood_table_small_round","homedecor:wood_table_small_round" }, + } +}) + +minetest.register_craft( { + output = "homedecor:wood_table_large_b 2", + recipe = { + { "homedecor:wood_table_small_square", "homedecor:wood_table_small_square" }, + } +}) + +-- + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:wood_table_small_round_b", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:wood_table_small_square_b", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:wood_table_large_b", + burntime = 30, +}) + +-- + +minetest.register_craft( { + output = "homedecor:shingles_asphalt 6", + recipe = { + { "building_blocks:gravel_spread", "dye:black", "building_blocks:gravel_spread" }, + { "group:sand", "dye:black", "group:sand" }, + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + }, +}) + +-- + +minetest.register_craft( { + output = "homedecor:shingles_wood 12", + recipe = { + { "group:stick", "group:wood"}, + { "group:wood", "group:stick"}, + }, +}) + +minetest.register_craft( { + output = "homedecor:shingles_wood 12", + recipe = { + { "group:wood", "group:stick"}, + { "group:stick", "group:wood"}, + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shingles_wood", + burntime = 30, +}) + +-- + +minetest.register_craft( { + output = "homedecor:skylight 4", + recipe = { + { "homedecor:glass_table_large", "homedecor:glass_table_large" }, + { "homedecor:glass_table_large", "homedecor:glass_table_large" }, + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:skylight_frosted", + recipe = { + "dye:white", + "homedecor:skylight" + }, +}) + +minetest.register_craft({ + type = "cooking", + output = "homedecor:skylight", + recipe = "homedecor:skylight_frosted", +}) + +-- Various colors of shutters + +minetest.register_craft( { + output = "homedecor:shutter_oak 2", + recipe = { + { "group:stick", "group:stick" }, + { "group:stick", "group:stick" }, + { "group:stick", "group:stick" }, + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_oak", + burntime = 30, +}) + +-- + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:shutter_black 4", + recipe = { + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "dye:black" + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_black", + burntime = 30, +}) + +-- + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:shutter_dark_grey 4", + recipe = { + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "dye:dark_grey" + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_dark_grey", + burntime = 30, +}) + +-- + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:shutter_grey 4", + recipe = { + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "dye:grey" + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_grey", + burntime = 30, +}) + +-- + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:shutter_white 4", + recipe = { + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "dye:white" + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_white", + burntime = 30, +}) + +-- + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:shutter_mahogany 4", + recipe = { + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "dye:brown" + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_mahogany", + burntime = 30, +}) +minetest.register_craft( { + type = "shapeless", + output = "homedecor:shutter_red 4", + recipe = { + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "dye:red" + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_red", + burntime = 30, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:shutter_yellow 4", + recipe = { + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "dye:yellow" + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_yellow", + burntime = 30, +}) + +-- + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:shutter_forest_green 4", + recipe = { + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "dye:dark_green" + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_forest_green", + burntime = 30, +}) + +-- + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:shutter_light_blue 4", + recipe = { + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "unifieddyes:light_blue" + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_light_blue", + burntime = 30, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:shutter_violet 4", + recipe = { + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "dye:violet" + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_violet", + burntime = 30, +}) + +-- + +minetest.register_craft( { + output = "homedecor:drawer_small", + recipe = { + { "group:wood", "default:steel_ingot", "group:wood" }, + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:drawer_small", + burntime = 30, +}) + +-- + +minetest.register_craft( { + output = "homedecor:nightstand_oak_one_drawer", + recipe = { + { "homedecor:drawer_small" }, + { "group:wood" }, + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:nightstand_oak_one_drawer", + burntime = 30, +}) + +minetest.register_craft( { + output = "homedecor:nightstand_oak_two_drawers", + recipe = { + { "homedecor:drawer_small" }, + { "homedecor:drawer_small" }, + { "group:wood" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:nightstand_oak_two_drawers", + recipe = { + { "homedecor:nightstand_oak_one_drawer" }, + { "homedecor:drawer_small" }, + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:nightstand_oak_two_drawers", + burntime = 30, +}) + +-- + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:nightstand_mahogany_one_drawer", + recipe = { + "homedecor:nightstand_oak_one_drawer", + "dye:brown", + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:nightstand_mahogany_one_drawer", + burntime = 30, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:nightstand_mahogany_two_drawers", + recipe = { + "homedecor:nightstand_oak_two_drawers", + "dye:brown", + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:nightstand_mahogany_two_drawers", + burntime = 30, +}) + +-- Table legs + +minetest.register_craft( { + output = "homedecor:table_legs_wrought_iron 3", + recipe = { + { "", "default:iron_lump", "" }, + { "", "default:iron_lump", "" }, + { "default:iron_lump", "default:iron_lump", "default:iron_lump" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:table_legs_brass 3", + recipe = { + { "", "technic:brass_ingot", "" }, + { "", "technic:brass_ingot", "" }, + { "technic:brass_ingot", "technic:brass_ingot", "technic:brass_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:utility_table_legs", + recipe = { + { "group:stick", "group:stick", "group:stick" }, + { "group:stick", "", "group:stick" }, + { "group:stick", "", "group:stick" }, + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:utility_table_legs", + burntime = 30, +}) + +-- vertical poles/lampposts + +minetest.register_craft( { + output = "homedecor:pole_brass 4", + recipe = { + { "", "technic:brass_ingot", "" }, + { "", "technic:brass_ingot", "" }, + { "", "technic:brass_ingot", "" } + }, +}) + +minetest.register_craft( { + output = "homedecor:pole_wrought_iron 4", + recipe = { + { "default:iron_lump", }, + { "default:iron_lump", }, + { "default:iron_lump", }, + }, +}) + +-- Home electronics + +minetest.register_craft( { + output = "homedecor:ic 4", + recipe = { + { "mesecons_materials:silicon", "mesecons_materials:silicon" }, + { "mesecons_materials:silicon", "default:copper_ingot" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:television", + recipe = { + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "moreblocks:glow_glass", "homedecor:plastic_sheeting" }, + { "homedecor:ic", "homedecor:ic", "homedecor:ic" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:television", + recipe = { + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "default:glass", "homedecor:plastic_sheeting" }, + { "homedecor:ic", "homedecor:power_crystal", "homedecor:ic" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:stereo", + recipe = { + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:ic", "homedecor:plastic_sheeting" }, + { "default:steel_ingot", "homedecor:ic", "default:steel_ingot" }, + }, +}) + +-- =========================================================== +-- Recipes that require materials from wool (cotton alternate) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:rug_small 8", + recipe = { + "wool:red", + "wool:yellow", + "wool:blue", + "wool:black" + }, +}) + +minetest.register_craft( { + output = "homedecor:rug_persian 8", + recipe = { + { "", "wool:yellow", "" }, + { "wool:red", "wool:blue", "wool:red" }, + { "", "wool:yellow", "" } + }, +}) + +-- cotton versions: + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:rug_small 8", + recipe = { + "cotton:red", + "cotton:yellow", + "cotton:blue", + "cotton:black" + }, +}) + +minetest.register_craft( { + output = "homedecor:rug_persian 8", + recipe = { + { "", "cotton:yellow", "" }, + { "cotton:red", "cotton:blue", "cotton:red" }, + { "", "cotton:yellow", "" } + }, +}) + +-- fuel recipes for same + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:rug_small", + burntime = 30, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:rug_large 2", + recipe = { + "homedecor:rug_small", + "homedecor:rug_small", + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:rug_large", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:rug_persian", + burntime = 30, +}) + +-- Speakers + +minetest.register_craft( { + output = "homedecor:speaker_driver 2", + recipe = { + { "", "default:steel_ingot", "" }, + { "default:paper", "homedecor:copper_wire", "default:iron_lump" }, + { "", "default:steel_ingot", "" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:speaker_small", + recipe = { + { "wool:black", "homedecor:speaker_driver", "group:wood" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:speaker", + recipe = { + { "wool:black", "homedecor:speaker_driver", "group:wood" }, + { "wool:black", "homedecor:speaker_driver", "group:wood" }, + { "wool:black", "group:wood", "group:wood" }, + }, +}) + +-- cotton version + +minetest.register_craft( { + output = "homedecor:speaker_small", + recipe = { + { "cotton:black", "homedecor:speaker_driver", "group:wood" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:speaker", + recipe = { + { "cotton:black", "homedecor:speaker_driver", "group:wood" }, + { "cotton:black", "homedecor:speaker_driver", "group:wood" }, + { "cotton:black", "group:wood", "group:wood" }, + }, +}) + +-- Curtains + +minetest.register_craft( { + output = "homedecor:curtain_closed 4", + recipe = { + { "wool:white", "", ""}, + { "wool:white", "", ""}, + { "wool:white", "", ""}, + }, +}) + +minetest.register_craft( { + output = "homedecor:curtain_closed 4", + recipe = { + { "cottages:wool", "", ""}, + { "cottages:wool", "", ""}, + { "cottages:wool", "", ""}, + }, +}) + +local mats = { + { "brass", "homedecor:pole_brass" }, + { "wrought_iron", "homedecor:pole_wrought_iron" }, + { "wood", "group:stick" } +} + +for i in ipairs(mats) do + local material = mats[i][1] + local ingredient = mats[i][2] + minetest.register_craft( { + output = "homedecor:curtainrod_"..material.." 3", + recipe = { + { ingredient, ingredient, ingredient }, + }, + }) +end + +-- Recycling recipes + +-- Some glass objects recycle via the glass fragments item/recipe in the Vessels mod. + +minetest.register_craft({ + type = "shapeless", + output = "vessels:glass_fragments", + recipe = { + "homedecor:glass_table_small_round", + "homedecor:glass_table_small_round", + "homedecor:glass_table_small_round" + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "vessels:glass_fragments", + recipe = { + "homedecor:glass_table_small_square", + "homedecor:glass_table_small_square", + "homedecor:glass_table_small_square" + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "vessels:glass_fragments", + recipe = { + "homedecor:glass_table_large", + "homedecor:glass_table_large", + "homedecor:glass_table_large" + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "vessels:glass_fragments 2", + recipe = { + "homedecor:skylight", + "homedecor:skylight", + "homedecor:skylight", + "homedecor:skylight", + "homedecor:skylight", + "homedecor:skylight" + } +}) + +-- Wooden tabletops can turn into sticks + +minetest.register_craft({ + type = "shapeless", + output = "default:stick 4", + recipe = { + "homedecor:wood_table_small_round", + "homedecor:wood_table_small_round", + "homedecor:wood_table_small_round" + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "default:stick 4", + recipe = { + "homedecor:wood_table_small_square", + "homedecor:wood_table_small_square", + "homedecor:wood_table_small_square" + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "default:stick 4", + recipe = { + "homedecor:wood_table_large", + "homedecor:wood_table_large", + "homedecor:wood_table_large" + } +}) + +-- Kitchen stuff + +minetest.register_craft({ + output = "homedecor:oven_steel", + recipe = { + {"homedecor:heating_element", "default:steel_ingot", "homedecor:heating_element", }, + {"default:steel_ingot", "moreblocks:iron_glass", "default:steel_ingot", }, + {"default:steel_ingot", "homedecor:heating_element", "default:steel_ingot", }, + } +}) + +minetest.register_craft({ + output = "homedecor:oven_steel", + recipe = { + {"homedecor:heating_element", "default:steel_ingot", "homedecor:heating_element", }, + {"default:steel_ingot", "default:glass", "default:steel_ingot", }, + {"default:steel_ingot", "homedecor:heating_element", "default:steel_ingot", }, + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:oven", + recipe = { + "homedecor:oven_steel", + "dye:white", + "dye:white", + } +}) + +minetest.register_craft({ + output = "homedecor:microwave_oven 2", + recipe = { + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot", }, + {"default:steel_ingot", "moreblocks:iron_glass", "homedecor:ic", }, + {"default:steel_ingot", "default:copper_ingot", "homedecor:power_crystal", }, + } +}) + +minetest.register_craft({ + output = "homedecor:microwave_oven 2", + recipe = { + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot", }, + {"default:steel_ingot", "default:glass", "homedecor:ic", }, + {"default:steel_ingot", "default:copper_ingot", "homedecor:power_crystal", }, + } +}) + +minetest.register_craft({ + output = "homedecor:refrigerator_steel", + recipe = { + {"default:steel_ingot", "homedecor:glowlight_small_cube", "default:steel_ingot", }, + {"default:steel_ingot", "default:copperblock", "default:steel_ingot", }, + {"default:steel_ingot", "default:clay", "default:steel_ingot", }, + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:refrigerator_white", + recipe = { + "homedecor:refrigerator_steel", + "dye:white", + "dye:white", + "dye:white", + } +}) + +minetest.register_craft({ + output = "homedecor:kitchen_cabinet", + recipe = { + {"group:wood", "group:stick", "group:wood", }, + {"group:wood", "group:stick", "group:wood", }, + {"group:wood", "group:stick", "group:wood", }, + } +}) + +minetest.register_craft({ + output = "homedecor:kitchen_cabinet_steel", + recipe = { + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"", "homedecor:kitchen_cabinet", ""}, + } +}) + +minetest.register_craft({ + output = "homedecor:kitchen_cabinet_steel", + recipe = { + {"moreblocks:slab_steelblock_1"}, + { "homedecor:kitchen_cabinet" }, + } +}) + +minetest.register_craft({ + output = "homedecor:kitchen_cabinet_marble", + recipe = { + {"building_blocks:slab_marble"}, + {"homedecor:kitchen_cabinet"}, + } +}) + +minetest.register_craft({ + output = "homedecor:kitchen_cabinet_marble", + recipe = { + {"technic:slab_marble_1"}, + {"homedecor:kitchen_cabinet"}, + } +}) + +minetest.register_craft({ + output = "homedecor:kitchen_cabinet_granite", + recipe = { + {"technic:slab_granite_1"}, + {"homedecor:kitchen_cabinet"}, + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:kitchen_cabinet_half 2", + recipe = { "homedecor:kitchen_cabinet" } +}) + +minetest.register_craft({ + output = "homedecor:kitchen_cabinet_with_sink", + recipe = { + {"group:wood", "default:steel_ingot", "group:wood", }, + {"group:wood", "default:steel_ingot", "group:wood", }, + {"group:wood", "group:stick", "group:wood", }, + } +}) + +------- Lighting + +-- candles + +minetest.register_craft({ + output = "homedecor:candle_thin 4", + recipe = { + {"farming:string" }, + {"homedecor:paraffin" } + } +}) + +minetest.register_craft({ + output = "homedecor:candle 2", + recipe = { + {"farming:string" }, + {"homedecor:paraffin" }, + {"homedecor:paraffin" } + } +}) + +minetest.register_craft({ + output = "homedecor:wall_sconce 2", + recipe = { + {"default:iron_lump", "", ""}, + {"default:iron_lump", "homedecor:candle", ""}, + {"default:iron_lump", "", ""}, + } +}) + +minetest.register_craft({ + output = "homedecor:candlestick_wrought_iron", + recipe = { + {""}, + {"homedecor:candle_thin"}, + {"default:iron_lump"}, + } +}) + +minetest.register_craft({ + output = "homedecor:candlestick_brass", + recipe = { + {""}, + {"homedecor:candle_thin"}, + {"technic:brass_ingot"}, + } +}) + +minetest.register_craft({ + output = "homedecor:oil_lamp", + recipe = { + { "", "vessels:glass_bottle", "" }, + { "", "farming:string", "" }, + { "default:steel_ingot", "homedecor:oil_extract", "default:steel_ingot" } + } +}) + +minetest.register_craft({ + output = "homedecor:oil_lamp_tabletop", + recipe = { + { "", "vessels:glass_bottle", "" }, + { "", "farming:string", "" }, + { "default:iron_lump", "homedecor:oil_extract", "default:iron_lump" } + } +}) + +-- Wrought-iron wall latern + +minetest.register_craft({ + output = "homedecor:ground_lantern", + recipe = { + { "default:iron_lump", "default:iron_lump", "default:iron_lump" }, + { "default:iron_lump", "default:torch", "default:iron_lump" }, + { "", "default:iron_lump", "" } + } +}) + +-- wood-lattice lamps + +minetest.register_craft( { + output = "homedecor:lattice_lantern_large 2", + recipe = { + { "dye:black", "dye:yellow", "dye:black" }, + { "group:stick", "building_blocks:woodglass", "group:stick" }, + { "group:stick", "homedecor:power_crystal", "group:stick" } + }, +}) + +minetest.register_craft( { + output = "homedecor:lattice_lantern_small 8", + recipe = { + { "homedecor:lattice_lantern_large" }, + }, +}) + +-- glowlights + +minetest.register_craft({ + output = "homedecor:glowlight_half 6", + recipe = { + { "dye:white", "dye:white", "dye:white" }, + { "default:glass", "homedecor:power_crystal", "default:glass", }, + } +}) + +minetest.register_craft({ + output = "homedecor:glowlight_half 6", + recipe = { + { "dye:white", "dye:white", "dye:white" }, + {"moreblocks:super_glow_glass", "moreblocks:glow_glass", "moreblocks:super_glow_glass", }, + } +}) + +minetest.register_craft({ + output = "homedecor:glowlight_quarter 6", + recipe = { + {"homedecor:glowlight_half", "homedecor:glowlight_half", "homedecor:glowlight_half", }, + } +}) + +minetest.register_craft({ + output = "homedecor:glowlight_small_cube 8", + recipe = { + { "dye:white" }, + { "default:glass" }, + { "homedecor:power_crystal" }, + } +}) + +minetest.register_craft({ + output = "homedecor:glowlight_small_cube 8", + recipe = { + {"dye:white" }, + {"moreblocks:super_glow_glass" }, + } +}) + +minetest.register_craft({ + output = "homedecor:glowlight_small_cube 4", + recipe = { + {"homedecor:glowlight_half" }, + } +}) + +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" + } +}) + +---- + +minetest.register_craft({ + output = "homedecor:plasma_lamp", + recipe = { + {"", "default:glass", ""}, + {"default:glass", "homedecor:power_crystal", "default:glass"}, + {"", "default:glass", ""} + } +}) + +minetest.register_craft({ + output = "homedecor:plasma_ball 2", + recipe = { + {"", "default:glass", ""}, + {"default:glass", "default:copper_ingot", "default:glass"}, + {"homedecor:plastic_sheeting", "homedecor:power_crystal", "homedecor:plastic_sheeting"} + } +}) + +-- Brass/wrought iron fences + + +minetest.register_craft( { + output = "homedecor:fence_brass 6", + recipe = { + { "technic:brass_ingot", "technic:brass_ingot", "technic:brass_ingot" }, + { "technic:brass_ingot", "technic:brass_ingot", "technic:brass_ingot" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:fence_wrought_iron 6", + recipe = { + { "default:iron_lump","default:iron_lump","default:iron_lump" }, + { "default:iron_lump","default:iron_lump","default:iron_lump" }, + }, +}) + +-- other types of fences + +minetest.register_craft( { + output = "homedecor:fence_wrought_iron_2 2", + 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 = { + { "homedecor:pole_wrought_iron", "default:iron_lump" }, + { "homedecor:pole_wrought_iron", "default:iron_lump" }, + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_wrought_iron_2_corner", + recipe = { + "homedecor:fence_wrought_iron_2", + "homedecor:fence_wrought_iron_2" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_wrought_iron_2 2", + recipe = { + "homedecor:fence_wrought_iron_2_corner", + }, +}) + +-- + +minetest.register_craft( { + output = "homedecor:fence_picket 6", + recipe = { + { "group:stick", "group:stick", "group:stick" }, + { "group:stick", "", "group:stick" }, + { "group:stick", "group:stick", "group:stick" } + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_picket_corner", + recipe = { + "homedecor:fence_picket", + "homedecor:fence_picket" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_picket 2", + recipe = { + "homedecor:fence_picket_corner" + }, +}) + +-- + + +minetest.register_craft( { + output = "homedecor:fence_picket_white 6", + recipe = { + { "group:stick", "group:stick", "group:stick" }, + { "group:stick", "dye:white", "group:stick" }, + { "group:stick", "group:stick", "group:stick" } + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_picket_corner_white", + recipe = { + "homedecor:fence_picket_white", + "homedecor:fence_picket_white" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_picket_white 2", + recipe = { + "homedecor:fence_picket_corner_white" + }, +}) + +-- + + +minetest.register_craft( { + output = "homedecor:fence_privacy 6", + recipe = { + { "group:wood", "group:stick", "group:wood" }, + { "group:wood", "", "group:wood" }, + { "group:wood", "group:stick", "group:wood" } + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_privacy_corner", + recipe = { + "homedecor:fence_privacy", + "homedecor:fence_privacy" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_privacy 2", + recipe = { + "homedecor:fence_privacy_corner" + }, +}) + +-- + + +minetest.register_craft( { + output = "homedecor:fence_barbed_wire 6", + recipe = { + { "group:stick", "homedecor:steel_wire", "group:stick" }, + { "group:stick", "", "group:stick" }, + { "group:stick", "homedecor:steel_wire", "group:stick" } + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_barbed_wire_corner", + recipe = { "homedecor:fence_barbed_wire", "homedecor:fence_barbed_wire" }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_barbed_wire 2", + recipe = { "homedecor:fence_barbed_wire_corner" }, +}) + +-- + + +minetest.register_craft( { + output = "homedecor:fence_chainlink 9", + recipe = { + { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }, + { "homedecor:steel_wire", "homedecor:steel_wire", "default:steel_ingot" }, + { "homedecor:steel_wire", "homedecor:steel_wire", "default:steel_ingot" } + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_chainlink_corner", + recipe = { "homedecor:fence_chainlink", "homedecor:fence_chainlink" }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_chainlink 2", + recipe = { "homedecor:fence_chainlink_corner" }, +}) + + +-- Gates + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:gate_picket_white_closed", + recipe = { + "homedecor:fence_picket_white" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_picket_white", + recipe = { + "homedecor:gate_picket_white_closed" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:gate_picket_closed", + recipe = { + "homedecor:fence_picket" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_picket", + recipe = { + "homedecor:gate_picket_closed" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:gate_barbed_wire_closed", + recipe = { + "homedecor:fence_barbed_wire" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_barbed_wire", + recipe = { + "homedecor:gate_barbed_wire_closed" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:gate_chainlink_closed", + recipe = { + "homedecor:fence_chainlink" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_chainlink", + recipe = { + "homedecor:gate_chainlink_closed" + }, +}) + +------ Doors + +-- plain wood, non-windowed + +minetest.register_craft( { + output = "homedecor:door_wood_plain_left 2", + recipe = { + { "group:wood", "group:wood", "" }, + { "group:wood", "group:wood", "default:steel_ingot" }, + { "group:wood", "group:wood", "" }, + }, +}) + +-- fancy exterior + +minetest.register_craft( { + output = "homedecor:door_exterior_fancy_left 2", + recipe = { + { "group:wood", "default:glass" }, + { "group:wood", "group:wood" }, + { "group:wood", "group:wood" }, + }, +}) + +-- wood and glass (grid style) + +-- bare + +minetest.register_craft( { + output = "homedecor:door_wood_glass_oak_left 2", + recipe = { + { "default:glass", "group:wood" }, + { "group:wood", "default:glass" }, + { "default:glass", "group:wood" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:door_wood_glass_oak_left 2", + recipe = { + { "group:wood", "default:glass" }, + { "default:glass", "group:wood" }, + { "group:wood", "default:glass" }, + }, +}) + +-- mahogany + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:door_wood_glass_mahogany_left 2", + recipe = { + "default:dirt", + "default:coal_lump", + "homedecor:door_wood_glass_oak_left", + "homedecor:door_wood_glass_oak_left" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:door_wood_glass_mahogany_left 2", + recipe = { + "dye:brown", + "homedecor:door_wood_glass_oak_left", + "homedecor:door_wood_glass_oak_left" + }, +}) + +-- white + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:door_wood_glass_white_left 2", + recipe = { + "dye:white", + "homedecor:door_wood_glass_oak_left", + "homedecor:door_wood_glass_oak_left" + }, +}) + +-- Solid glass with metal handle + +minetest.register_craft( { + output = "homedecor:door_glass_left 2", + recipe = { + { "default:glass", "default:glass" }, + { "default:glass", "default:steel_ingot" }, + { "default:glass", "default:glass" }, + }, +}) + +-- Closet doors + +-- oak + +minetest.register_craft( { + output = "homedecor:door_closet_oak_left 2", + recipe = { + { "", "group:stick", "group:stick" }, + { "default:steel_ingot", "group:stick", "group:stick" }, + { "", "group:stick", "group:stick" }, + }, +}) + +-- mahogany + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:door_closet_mahogany_left 2", + recipe = { + "homedecor:door_closet_oak_left", + "homedecor:door_closet_oak_left", + "default:dirt", + "default:coal_lump", + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:door_closet_mahogany_left 2", + recipe = { + "homedecor:door_closet_oak_left", + "homedecor:door_closet_oak_left", + "dye:brown" + }, +}) + +-- wrought fence-like door + +minetest.register_craft( { + output = "homedecor:door_wrought_iron_left 2", + recipe = { + { "homedecor:pole_wrought_iron", "default:iron_lump" }, + { "homedecor:pole_wrought_iron", "default:iron_lump" }, + { "homedecor:pole_wrought_iron", "default:iron_lump" } + }, +}) + +-- bedroom door + +minetest.register_craft( { + output = "homedecor:door_bedroom_left", + recipe = { + { "dye:white", "dye:white", "" }, + { "homedecor:door_wood_plain_left", "technic:brass_ingot", "" }, + { "", "", "" }, + }, +}) + +-- woodglass door + +minetest.register_craft( { + output = "homedecor:door_woodglass_left", + recipe = { + { "group:wood", "default:glass", "" }, + { "group:wood", "default:glass", "technic:brass_ingot" }, + { "group:wood", "group:wood", "" }, + }, +}) + +-- woodglass door type 2 + +minetest.register_craft( { + output = "homedecor:door_woodglass2_left", + recipe = { + { "default:glass", "default:glass", "" }, + { "group:wood", "group:wood", "default:iron_lump" }, + { "group:wood", "group:wood", "" }, + }, +}) + +-- laundry stuff + +minetest.register_craft( { + output = "homedecor:washing_machine", + recipe = { + { "default:steel_ingot", "default:steel_ingot", "homedecor:ic" }, + { "default:steel_ingot", "bucket:bucket_water", "default:steel_ingot" }, + { "default:steel_ingot", "homedecor:motor", "default:steel_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:washing_machine", + recipe = { + { "default:steel_ingot", "default:steel_ingot", "homedecor:ic" }, + { "default:steel_ingot", "bucket:bucket_water", "default:steel_ingot" }, + { "default:steel_ingot", "technic:motor", "default:steel_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:dryer", + recipe = { + { "default:steel_ingot", "default:steel_ingot", "homedecor:ic" }, + { "default:steel_ingot", "bucket:bucket_empty", "homedecor:motor" }, + { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:dryer", + recipe = { + { "default:steel_ingot", "default:steel_ingot", "homedecor:ic" }, + { "default:steel_ingot", "bucket:bucket_empty", "technic:motor" }, + { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:ironing_board", + recipe = { + { "wool:grey", "wool:grey", "wool:grey"}, + { "", "default:steel_ingot", "" }, + { "default:steel_ingot", "", "default:steel_ingot" } + }, +}) + +-- dishwashers + +minetest.register_craft( { + output = "homedecor:dishwasher", + recipe = { + { "homedecor:ic", "homedecor:fence_chainlink", "default:steel_ingot", }, + { "default:steel_ingot", "homedecor:shower_head", "homedecor:motor" }, + { "default:steel_ingot", "homedecor:heating_element", "bucket:bucket_water" } + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher", + recipe = { + { "homedecor:ic", "homedecor:fence_chainlink", "default:steel_ingot", }, + { "default:steel_ingot", "homedecor:shower_head", "technic:motor" }, + { "default:steel_ingot", "homedecor:heating_element", "bucket:bucket_water" } + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_wood", + recipe = { + { "stairs:slab_wood" }, + { "homedecor:dishwasher" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_wood", + recipe = { + { "moreblocks:slab_wood" }, + { "homedecor:dishwasher" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_wood", + recipe = { + { "moreblocks:slab_wood_1" }, + { "homedecor:dishwasher" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_steel", + recipe = { + { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }, + { "", "homedecor:dishwasher", "" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_steel", + recipe = { + { "moreblocks:slab_steelblock_1" }, + { "homedecor:dishwasher" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_marble", + recipe = { + { "building_blocks:slab_marble" }, + { "homedecor:dishwasher" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_marble", + recipe = { + { "technic:slab_marble_1" }, + { "homedecor:dishwasher" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_granite", + recipe = { + { "technic:slab_granite_1" }, + { "homedecor:dishwasher" }, + }, +}) + +-- paintings + +minetest.register_craft({ + output = "homedecor:blank_canvas", + recipe = { + { "", "group:stick", "" }, + { "group:stick", "wool:white", "group:stick" }, + { "", "group:stick", "" }, + } +}) + +local painting_patterns = { + [1] = { { "brown", "red", "brown" }, + { "dark_green", "red", "green" } }, + + [2] = { { "green", "yellow", "green" }, + { "green", "yellow", "green" } }, + + [3] = { { "green", "pink", "green" }, + { "brown", "pink", "brown" } }, + + [4] = { { "black", "orange", "grey" }, + { "dark_green", "orange", "orange" } }, + + [5] = { { "blue", "orange", "yellow" }, + { "green", "red", "brown" } }, + + [6] = { { "green", "red", "orange" }, + { "orange", "yellow", "green" } }, + + [7] = { { "blue", "dark_green", "dark_green" }, + { "green", "grey", "green" } }, + + [8] = { { "blue", "blue", "blue" }, + { "green", "green", "green" } }, + + [9] = { { "blue", "blue", "dark_green" }, + { "green", "grey", "dark_green" } }, + + [10] = { { "green", "white", "green" }, + { "dark_green", "white", "dark_green" } }, + + [11] = { { "blue", "white", "blue" }, + { "blue", "grey", "dark_green" } }, + + [12] = { { "green", "green", "green" }, + { "grey", "grey", "green" } }, + + [13] = { { "blue", "blue", "grey" }, + { "dark_green", "white", "white" } }, + + [14] = { { "red", "yellow", "blue" }, + { "blue", "green", "violet" } }, + + [15] = { { "blue", "yellow", "blue" }, + { "black", "black", "black" } }, + + [16] = { { "red", "orange", "blue" }, + { "black", "dark_grey", "grey" } }, + + [17] = { { "orange", "yellow", "orange" }, + { "black", "black", "black" } }, + + [18] = { { "grey", "dark_green", "grey" }, + { "white", "white", "white" } }, + + [19] = { { "white", "brown", "green" }, + { "green", "brown", "brown" } }, + + [20] = { { "blue", "blue", "blue" }, + { "red", "brown", "grey" } } +} + +for i,recipe in pairs(painting_patterns) do + + local item1 = "dye:"..recipe[1][1] + local item2 = "dye:"..recipe[1][2] + local item3 = "dye:"..recipe[1][3] + local item4 = "dye:"..recipe[2][1] + local item5 = "dye:"..recipe[2][2] + local item6 = "dye:"..recipe[2][3] + + minetest.register_craft({ + output = "homedecor:painting_"..i, + recipe = { + { item1, item2, item3 }, + { item4, item5, item6 }, + {"", "homedecor:blank_canvas", "" } + } + }) +end + +-- more misc stuff here + +minetest.register_craft({ + output = "homedecor:chimney 2", + recipe = { + { "default:clay_brick", "", "default:clay_brick" }, + { "default:clay_brick", "", "default:clay_brick" }, + { "default:clay_brick", "", "default:clay_brick" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:fishtank", + recipe = { + { "homedecor:plastic_sheeting", "homedecor:glowlight_small_cube", "homedecor:plastic_sheeting" }, + { "default:glass", "bucket:bucket_water", "default:glass" }, + { "default:glass", "building_blocks:gravel_spread", "default:glass" }, + }, + replacements = { {"bucket:bucket_water", "bucket:bucket_empty"} } +}) + +minetest.register_craft({ + output = "homedecor:towel_rod", + recipe = { + { "group:wood", "group:stick", "group:wood" }, + { "", "building_blocks:terrycloth_towel", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:toilet_paper", + recipe = { + { "", "default:paper", "default:paper" }, + { "group:wood", "group:stick", "default:paper" }, + { "", "default:paper", "default:paper" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:medicine_cabinet", + recipe = { + { "group:stick", "default:glass", "group:stick" }, + { "group:stick", "default:glass", "group:stick" }, + { "group:stick", "default:glass", "group:stick" } + }, +}) + +minetest.register_craft({ + output = "homedecor:cardboard_box 2", + recipe = { + { "default:paper", "", "default:paper" }, + { "default:paper", "default:paper", "default:paper" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:cardboard_box_big 2", + recipe = { + { "default:paper", "", "default:paper" }, + { "default:paper", "", "default:paper" }, + { "default:paper", "default:paper", "default:paper" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:desk", + recipe = { + { "stairs:slab_wood", "stairs:slab_wood", "stairs:slab_wood" }, + { "homedecor:drawer_small", "default:wood", "default:wood" }, + { "homedecor:drawer_small", "", "default:wood" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:desk", + recipe = { + { "moreblocks:slab_wood", "moreblocks:slab_wood", "moreblocks:slab_wood" }, + { "homedecor:drawer_small", "default:wood", "default:wood" }, + { "homedecor:drawer_small", "", "default:wood" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:filing_cabinet", + recipe = { + { "", "default:wood", "" }, + { "default:wood", "homedecor:drawer_small", "default:wood" }, + { "", "default:wood", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:analog_clock_plastic 2", + recipe = { + { "homedecor:plastic_sheeting", "dye:black", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:ic", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "dye:black", "homedecor:plastic_sheeting" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:analog_clock_wood 2", + recipe = { + { "group:stick", "dye:black", "group:stick" }, + { "group:stick", "homedecor:ic", "group:stick" }, + { "group:stick", "dye:black", "group:stick" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:digital_clock 2", + recipe = { + { "homedecor:plastic_sheeting", "default:paper", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:ic", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:power_crystal", "homedecor:plastic_sheeting" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:alarm_clock", + recipe = { + { "homedecor:plastic_sheeting", "homedecor:speaker_driver", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:digital_clock", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:power_crystal", "homedecor:plastic_sheeting" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:air_conditioner", + recipe = { + { "default:steel_ingot", "building_blocks:grate", "default:steel_ingot" }, + { "default:steel_ingot", "homedecor:fan_blades", "homedecor:motor" }, + { "default:steel_ingot", "homedecor:motor", "default:steel_ingot" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:air_conditioner", + recipe = { + { "default:steel_ingot", "building_blocks:grate", "default:steel_ingot" }, + { "default:steel_ingot", "technic:motor", "default:steel_ingot" }, + { "default:steel_ingot", "technic:motor", "default:steel_ingot" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:ceiling_fan", + recipe = { + { "homedecor:motor" }, + { "homedecor:fan_blades" }, + { "homedecor:glowlight_small_cube" } + } +}) + +minetest.register_craft({ + output = "homedecor:ceiling_fan", + recipe = { + { "technic:motor" }, + { "homedecor:fan_blades" }, + { "homedecor:glowlight_small_cube" } + } +}) + +minetest.register_craft({ + output = "homedecor:welcome_mat_grey 2", + recipe = { + { "", "dye:black", "" }, + { "wool:grey", "wool:grey", "wool:grey" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:welcome_mat_brown 2", + recipe = { + { "", "dye:black", "" }, + { "wool:brown", "wool:brown", "wool:brown" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:welcome_mat_green 2", + recipe = { + { "", "dye:white", "" }, + { "wool:dark_green", "wool:dark_green", "wool:dark_green" }, + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:window_plain 8", + recipe = { + "dye:white", + "dye:white", + "dye:white", + "dye:white", + "building_blocks:woodglass" + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:window_quartered", + recipe = { + "dye:white", + "group:stick", + "group:stick", + "homedecor:window_plain" + } +}) + +minetest.register_craft({ + output = "homedecor:vcr 2", + recipe = { + { "homedecor:ic", "default:steel_ingot", "homedecor:plastic_sheeting" }, + { "default:iron_lump", "default:iron_lump", "default:iron_lump" }, + { "homedecor:plastic_sheeting", "", "homedecor:plastic_sheeting" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:dvd_player 2", + recipe = { + { "", "homedecor:plastic_sheeting", "" }, + { "default:obsidian_glass", "homedecor:motor", "homedecor:motor" }, + { "default:mese_crystal_fragment", "homedecor:ic", "homedecor:power_crystal" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:dvd_player 2", + recipe = { + { "", "homedecor:plastic_sheeting", "" }, + { "default:obsidian_glass", "technic:motor", "technic:motor" }, + { "default:mese_crystal_fragment", "homedecor:ic", "homedecor:power_crystal" }, + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:dvd_vcr", + recipe = { + "homedecor:vcr", + "homedecor:dvd_player" + }, +}) + +minetest.register_craft({ + output = "homedecor:blinds_thin", + recipe = { + { "group:stick", "homedecor:plastic_sheeting", "group:stick" }, + { "farming:string", "homedecor:plastic_strips", "" }, + { "", "homedecor:plastic_strips", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:blinds_thick", + recipe = { + { "group:stick", "homedecor:plastic_sheeting", "group:stick" }, + { "farming:string", "homedecor:plastic_strips", "homedecor:plastic_strips" }, + { "", "homedecor:plastic_strips", "homedecor:plastic_strips" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:openframe_bookshelf", + recipe = { + {"group:wood", "", "group:wood"}, + {"default:book", "default:book", "default:book"}, + {"group:wood", "", "group:wood"}, + }, +}) + +minetest.register_craft( { + output = "homedecor:desk_fan", + recipe = { + {"default:steel_ingot", "homedecor:fan_blades", "homedecor:motor"}, + {"", "default:steel_ingot", ""} + }, +}) + +minetest.register_craft( { + output = "homedecor:space_heater", + recipe = { + {"homedecor:plastic_sheeting", "homedecor:heating_element", "homedecor:plastic_sheeting"}, + {"homedecor:plastic_sheeting", "homedecor:fan_blades", "homedecor:motor"}, + {"homedecor:plastic_sheeting", "homedecor:heating_element", "homedecor:plastic_sheeting"} + }, +}) + +minetest.register_craft( { + output = "homedecor:radiator", + recipe = { + { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" }, + { "homedecor:ic", "homedecor:heating_element", "" }, + { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" } + }, +}) + +-- bathroom/kitchen tiles + +local color_pairings = { + { "grey", "white", "1" }, + { "dark_grey", "white", "2" }, + { "black", "white", "3" }, + { "black", "dark_grey", "4" }, + { "red", "white", "red" }, + { "green", "white", "green" }, + { "blue", "white", "blue" }, + { "yellow", "white", "yellow" }, + { "brown", "white", "tan" } +} + +for i in ipairs(color_pairings) do + local dye1 = color_pairings[i][1] + local dye2 = color_pairings[i][2] + local result = color_pairings[i][3] + minetest.register_craft( { + output = "homedecor:tiles_"..result.." 2", + recipe = { + { "group:marble", "dye:"..dye1 }, + { "group:marble", "dye:"..dye2 } + }, + }) +end + +-- misc electrical + +minetest.register_craft( { + output = "homedecor:power_outlet", + recipe = { + {"homedecor:plastic_sheeting", "homedecor:copper_strip"}, + {"homedecor:plastic_sheeting", ""}, + {"homedecor:plastic_sheeting", "homedecor:copper_strip"} + }, +}) + +minetest.register_craft( { + output = "homedecor:light_switch", + recipe = { + {"", "homedecor:plastic_sheeting", "homedecor:copper_strip"}, + {"homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:copper_strip"}, + {"", "homedecor:plastic_sheeting", "homedecor:copper_strip"} + }, +}) + +-- doghouse + +minetest.register_craft( { + output = "homedecor:doghouse", + recipe = { + {"homedecor:shingles_terracotta", "homedecor:shingles_terracotta", "homedecor:shingles_terracotta"}, + {"group:wood", "", "group:wood"}, + {"group:wood", "building_blocks:terrycloth_towel", "group:wood"} + }, +}) + +-- japanese walls and mat + +minetest.register_craft( { + output = "homedecor:japanese_wall_top", + recipe = { + {"group:stick", "default:paper"}, + {"default:paper", "group:stick"}, + {"group:stick", "default:paper"} + }, +}) + +minetest.register_craft( { + output = "homedecor:japanese_wall_top", + recipe = { + {"default:paper", "group:stick"}, + {"group:stick", "default:paper"}, + {"default:paper", "group:stick"} + }, +}) + +minetest.register_craft( { + output = "homedecor:japanese_wall_middle", + recipe = { + {"homedecor:japanese_wall_top"} + }, +}) + +minetest.register_craft( { + output = "homedecor:japanese_wall_bottom", + recipe = { + {"homedecor:japanese_wall_middle"} + }, +}) + +minetest.register_craft( { + output = "homedecor:japanese_wall_top", + recipe = { + {"homedecor:japanese_wall_bottom"} + }, +}) + +minetest.register_craft( { + output = "homedecor:tatami_mat", + recipe = { + {"farming:wheat", "farming:wheat", "farming:wheat"} + }, +}) + +minetest.register_craft( { + output = "homedecor:wardrobe", + recipe = { + { "homedecor:drawer_small", "homedecor:kitchen_cabinet" }, + { "homedecor:drawer_small", "default:wood" }, + { "homedecor:drawer_small", "default:wood" } + }, +}) + +minetest.register_craft( { + output = "homedecor:pool_table", + recipe = { + { "wool:dark_green", "wool:dark_green", "wool:dark_green" }, + { "building_blocks:hardwood", "building_blocks:hardwood", "building_blocks:hardwood" }, + { "building_blocks:slab_hardwood", "", "building_blocks:slab_hardwood" } + }, +}) + +minetest.register_craft( { + output = "homedecor:trash_can 3", + recipe = { + { "homedecor:steel_wire", "", "homedecor:steel_wire" }, + { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:telephone", + recipe = { + { "homedecor:speaker_driver", "homedecor:copper_wire", "homedecor:speaker_driver" }, + { "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting" }, + { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:cobweb_corner 5", + recipe = { + { "farming:string", "", "farming:string" }, + { "", "farming:string", "" }, + { "farming:string", "", "farming:string" } + }, +}) + +minetest.register_craft( { + output = "homedecor:well", + recipe = { + { "homedecor:shingles_wood", "homedecor:shingles_wood", "homedecor:shingles_wood" }, + { "group:wood", "group:stick", "group:wood" }, + { "group:stone", "", "group:stone" } + }, +}) + +minetest.register_craft( { + output = "homedecor:coat_tree", + recipe = { + { "group:stick", "group:stick", "group:stick" }, + { "", "group:stick", "" }, + { "", "group:wood", "" } + }, +}) + +minetest.register_craft( { + output = "homedecor:coatrack_wallmount", + recipe = { + { "group:stick", "homedecor:curtainrod_wood", "group:stick" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:doorbell", + recipe = { + { "homedecor:light_switch", "homedecor:power_crystal", "homedecor:speaker_driver" } + }, +}) + + +minetest.register_craft( { + output = "homedecor:bench_large_1", + recipe = { + { "group:wood", "group:wood", "group:wood" }, + { "group:wood", "group:wood", "group:wood" }, + { "homedecor:pole_wrought_iron", "", "homedecor:pole_wrought_iron" } + }, +}) + +minetest.register_craft( { + output = "homedecor:bench_large_2_left", + recipe = { + { "homedecor:shutter_oak", "homedecor:shutter_oak", "homedecor:shutter_oak" }, + { "group:wood", "group:wood", "group:wood" }, + { "stairs:slab_wood", "", "stairs:slab_wood" } + }, +}) + +minetest.register_craft( { + output = "homedecor:bench_large_2_left", + recipe = { + { "homedecor:shutter_oak", "homedecor:shutter_oak", "homedecor:shutter_oak" }, + { "group:wood", "group:wood", "group:wood" }, + { "moreblocks:slab_wood", "", "moreblocks:slab_wood" } + }, +}) + +minetest.register_craft( { + output = "homedecor:kitchen_faucet", + recipe = { + { "", "default:steel_ingot" }, + { "default:steel_ingot", "" }, + { "homedecor:taps", "" } + }, +}) + +minetest.register_craft( { + output = "homedecor:cutlery_set", + recipe = { + { "", "vessels:drinking_glass", "" }, + { "homedecor:steel_strip", "building_blocks:slab_marble", "homedecor:steel_strip" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:cutlery_set", + recipe = { + { "", "vessels:drinking_glass", "" }, + { "homedecor:steel_strip", "building_blocks:micro_marble_1", "homedecor:steel_strip" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:simple_bench", + recipe = { + { "stairs:slab_wood", "stairs:slab_wood", "stairs:slab_wood" }, + { "stairs:slab_wood", "", "stairs:slab_wood" } + }, +}) + +minetest.register_craft( { + output = "homedecor:simple_bench", + recipe = { + { "moreblocks:slab_wood", "moreblocks:slab_wood", "moreblocks:slab_wood" }, + { "moreblocks:slab_wood", "", "moreblocks:slab_wood" } + }, +}) + +local bedcolors = { + { "red", "red"}, + { "orange", "orange" }, + { "yellow", "yellow"}, + { "green", "dark_green"}, + { "blue", "blue"}, + { "violet", "violet"}, + { "pink", "pink"}, + { "darkgrey", "dark_grey"}, + { "brown", "brown" }, +} + +for c in ipairs(bedcolors) do + local color = bedcolors[c][1] + local woolcolor = bedcolors[c][2] + + minetest.register_craft( { + output = "homedecor:bed_"..color.."_regular", + recipe = { + { "group:stick", "", "group:stick" }, + { "wool:white", "wool:"..woolcolor, "wool:"..woolcolor }, + { "group:wood", "", "group:wood" }, + }, + }) + + minetest.register_craft( { + output = "homedecor:bed_"..color.."_kingsize", + recipe = { + { "homedecor:bed_"..color.."_regular", "homedecor:bed_"..color.."_regular" } + }, + }) + +end + +minetest.register_craft( { + output = "homedecor:bottle_green", + recipe = { + { "vessels:glass_bottle", "dye:green" } + }, +}) + +minetest.register_craft( { + output = "homedecor:bottle_brown", + recipe = { + { "vessels:glass_bottle", "dye:brown" } + }, +}) + +if not minetest.get_modpath("glooptest") then + + minetest.register_craft({ + output = "glooptest:chainlink 12", + recipe = { + {"", "default:steel_ingot", "default:steel_ingot"}, + { "default:steel_ingot", "", "default:steel_ingot" }, + { "default:steel_ingot", "default:steel_ingot", "" }, + }, + }) + +end + +minetest.register_alias("homedecor:chainlink_steel", "glooptest:chainlink") + +minetest.register_craft({ + output = "homedecor:chains 4", + recipe = { + { "default:steel_ingot", "", "default:steel_ingot"}, + { "glooptest:chainlink", "", "glooptest:chainlink" }, + { "glooptest:chainlink", "", "glooptest:chainlink" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:chainlink_brass 12", + recipe = { + {"", "technic:brass_ingot", "technic:brass_ingot"}, + { "technic:brass_ingot", "", "technic:brass_ingot" }, + { "technic:brass_ingot", "technic:brass_ingot", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:coffee_maker", + recipe = { + {"homedecor:plastic_sheeting", "bucket:bucket_water", "homedecor:plastic_sheeting"}, + {"homedecor:plastic_sheeting", "default:glass", "homedecor:plastic_sheeting"}, + {"homedecor:plastic_sheeting", "homedecor:heating_element", "homedecor:plastic_sheeting"} + }, +}) + +minetest.register_craft({ + output = "homedecor:dartboard", + recipe = { + {"dye:black", "homedecor:plastic_sheeting", "dye:white"}, + {"homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting"}, + {"dye:dark_green", "homedecor:plastic_sheeting", "dye:red"} + }, +}) + +minetest.register_craft({ + output = "homedecor:piano", + recipe = { + { "", "homedecor:steel_wire", "building_blocks:hardwood" }, + { "homedecor:plastic_strips", "homedecor:steel_wire", "building_blocks:hardwood" }, + { "technic:brass_ingot", "default:steelblock", "building_blocks:hardwood" } + }, +}) + +minetest.register_craft({ + output = "homedecor:toaster", + recipe = { + { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" }, + { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" } + }, +}) + +minetest.register_craft({ + output = "homedecor:deckchair", + recipe = { + { "group:stick", "building_blocks:terrycloth_towel", "group:stick" }, + { "group:stick", "building_blocks:terrycloth_towel", "group:stick" }, + { "group:stick", "building_blocks:terrycloth_towel", "group:stick" } + }, +}) + +minetest.register_craft({ + output = "homedecor:deckchair_striped_blue", + type = "shapeless", + recipe = { + "homedecor:deckchair", + "dye:blue" + } +}) + +minetest.register_craft({ + output = "homedecor:office_chair_basic", + recipe = { + { "", "", "wool:black" }, + { "", "wool:black", "default:steel_ingot" }, + { "group:stick", "homedecor:pole_wrought_iron", "group:stick" } + }, +}) + +minetest.register_craft({ + output = "homedecor:office_chair_upscale", + recipe = { + { "dye:black", "building_blocks:sticks", "group:wool" }, + { "homedecor:plastic_sheeting", "group:wool", "default:steel_ingot" }, + { "building_blocks:sticks", "homedecor:pole_wrought_iron", "building_blocks:sticks" } + }, +}) + +minetest.register_craft({ + output = "homedecor:wall_shelf 2", + recipe = { + { "homedecor:wood_table_small_square", "homedecor:curtainrod_wood", "homedecor:curtainrod_wood" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:trophy 3", + recipe = { + { "default:gold_ingot","","default:gold_ingot" }, + { "","default:gold_ingot","" }, + { "group:wood","default:gold_ingot","group:wood" } + }, +}) + +minetest.register_craft({ + output = "homedecor:grandfather_clock", + recipe = { + { "building_blocks:slab_hardwood","homedecor:analog_clock_wood","building_blocks:slab_hardwood" }, + { "building_blocks:slab_hardwood","technic:brass_ingot","building_blocks:slab_hardwood" }, + { "building_blocks:slab_hardwood","technic:brass_ingot","building_blocks:slab_hardwood" } + }, +}) + +minetest.register_craft({ + output = "homedecor:sportbench", + recipe = { + { "stairs:slab_steelblock","homedecor:pole_wrought_iron","stairs:slab_steelblock" }, + { "default:steel_ingot","wool:black","default:steel_ingot" }, + { "default:steel_ingot","wool:black","default:steel_ingot" } + }, +}) + +minetest.register_craft({ + output = "homedecor:skateboard", + recipe = { + { "dye:yellow","dye:green","dye:blue" }, + { "homedecor:wood_table_small_square","homedecor:wood_table_small_square","homedecor:wood_table_small_square" }, + { "default:steel_ingot","","default:steel_ingot" } + }, +}) + +minetest.register_craft({ + output = "homedecor:copper_pans", + recipe = { + { "homedecor:copper_strip","","homedecor:copper_strip" }, + { "default:copper_ingot","","default:copper_ingot" }, + { "default:copper_ingot","","default:copper_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:window_flowerbox", + recipe = { + { "homedecor:roof_tile_terracotta", "default:dirt", "homedecor:roof_tile_terracotta" }, + { "", "homedecor:roof_tile_terracotta", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:paper_towel", + recipe = { + { "homedecor:toilet_paper", "homedecor:toilet_paper" } + }, +}) + +minetest.register_craft({ + output = "homedecor:stonepath 16", + recipe = { + { "stairs:slab_stone","","stairs:slab_stone" }, + { "","stairs:slab_stone","" }, + { "stairs:slab_stone","","stairs:slab_stone" } + }, +}) + +minetest.register_craft({ + output = "homedecor:stonepath 16", + recipe = { + { "moreblocks:slab_stone","","moreblocks:slab_stone" }, + { "","moreblocks:slab_stone","" }, + { "moreblocks:slab_stone","","moreblocks:slab_stone" } + }, +}) + +minetest.register_craft({ + output = "homedecor:stonepath 3", + recipe = { + { "moreblocks:micro_stone_1","","moreblocks:micro_stone_1" }, + { "","moreblocks:micro_stone_1","" }, + { "moreblocks:micro_stone_1","","moreblocks:micro_stone_1" } + }, +}) + +minetest.register_craft({ + output = "homedecor:barbecue", + recipe = { + { "","homedecor:fence_chainlink","" }, + { "default:steel_ingot","fake_fire:embers","default:steel_ingot" }, + { "homedecor:pole_wrought_iron","default:steel_ingot","homedecor:pole_wrought_iron" } + }, +}) + +minetest.register_craft({ + output = "homedecor:beer_tap", + recipe = { + { "group:stick","default:steel_ingot","group:stick" }, + { "homedecor:kitchen_faucet","default:steel_ingot","homedecor:kitchen_faucet" }, + { "default:steel_ingot","default:steel_ingot","default:steel_ingot" } + }, +}) + +minetest.register_craft({ + output = "homedecor:swing", + recipe = { + { "farming:string","","farming:string" }, + { "farming:string","","farming:string" }, + { "farming:string","stairs:slab_wood","farming:string" } + }, +}) + +minetest.register_craft({ + output = "homedecor:swing", + recipe = { + { "farming:string","","farming:string" }, + { "farming:string","","farming:string" }, + { "farming:string","moreblocks:slab_wood","farming:string" } + }, +}) + +minetest.register_craft({ + output = "homedecor:swing", + recipe = { + { "farming:string","","farming:string" }, + { "farming:string","","farming:string" }, + { "farming:string","moreblocks:panel_wood_1","farming:string" } + }, +}) + +local bookcolors = { + "red", + "green", + "blue", + "violet", + "grey", + "brown" +} + +for _, color in ipairs(bookcolors) do + minetest.register_craft({ + type = "shapeless", + output = "homedecor:book_"..color, + recipe = { + "dye:"..color, + "default:book" + }, + }) +end + +minetest.register_craft({ + output = "homedecor:door_japanese_closed", + recipe = { + { "homedecor:japanese_wall_top" }, + { "homedecor:japanese_wall_bottom" } + }, +}) + +minetest.register_craft({ + output = "homedecor:calendar", + recipe = { + { "","dye:red","" }, + { "","dye:black","" }, + { "","default:paper","" } + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:4_bottles_brown", + recipe = { + "homedecor:bottle_brown", + "homedecor:bottle_brown", + "homedecor:bottle_brown", + "homedecor:bottle_brown" + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:4_bottles_green", + recipe = { + "homedecor:bottle_green", + "homedecor:bottle_green", + "homedecor:bottle_green", + "homedecor:bottle_green" + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:4_bottles_multi", + recipe = { + "homedecor:bottle_brown", + "homedecor:bottle_brown", + "homedecor:bottle_green", + "homedecor:bottle_green", + }, +}) + +minetest.register_craft({ + output = "homedecor:wine_rack", + recipe = { + { "homedecor:4_bottles_brown", "group:wood", "homedecor:4_bottles_brown" }, + { "homedecor:4_bottles_brown", "group:wood", "homedecor:4_bottles_brown" }, + { "homedecor:4_bottles_brown", "group:wood", "homedecor:4_bottles_brown" }, + }, +}) + +local picture_dyes = { + {"dye:brown", "dye:green"}, -- the figure sitting by the tree, wielding a pick + {"dye:green", "dye:blue"} -- the "family photo" +} + +for i in ipairs(picture_dyes) do + minetest.register_craft({ + output = "homedecor:picture_frame"..i, + recipe = { + { picture_dyes[i][1], picture_dyes[i][2] }, + { "homedecor:blank_canvas", "group:stick" }, + }, + }) +end + +local dlamp_colors = { "red","blue","green","violet" } + +for _, color in ipairs(dlamp_colors) do + minetest.register_craft({ + output = "homedecor:desk_lamp_"..color, + recipe = { + { "", "homedecor:steel_strip", "homedecor:glowlight_small_cube" }, + { "", "homedecor:copper_wire", "" }, + { "homedecor:plastic_sheeting", "dye:"..color, "homedecor:plastic_sheeting" }, + }, + }) +end + +minetest.register_craft({ + output = "homedecor:hanging_lantern 2", + recipe = { + { "default:iron_lump", "default:iron_lump", "" }, + { "default:iron_lump", "homedecor:lattice_lantern_large", "" }, + { "default:iron_lump", "", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:ceiling_lantern 2", + recipe = { + { "default:iron_lump", "default:iron_lump", "default:iron_lump" }, + { "default:iron_lump", "homedecor:lattice_lantern_large", "default:iron_lump" }, + { "", "default:iron_lump", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:wall_lamp 2", + recipe = { + { "", "homedecor:lattice_lantern_large", "" }, + { "default:iron_lump", "group:stick", "" }, + { "default:iron_lump", "group:stick", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:desk_globe", + recipe = { + { "group:stick", "homedecor:plastic_sheeting", "dye:green" }, + { "group:stick", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + { "group:stick", "stairs:slab_wood", "dye:blue" } + }, +}) + +minetest.register_craft({ + output = "homedecor:desk_globe", + recipe = { + { "group:stick", "homedecor:plastic_sheeting", "dye:green" }, + { "group:stick", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + { "group:stick", "moreblocks:slab_wood", "dye:blue" } + }, +}) + +minetest.register_craft({ + output = "homedecor:tool_cabinet", + recipe = { + { "homedecor:motor", "default:axe_steel", "default:pick_steel" }, + { "default:steel_ingot", "homedecor:drawer_small", "default:steel_ingot" }, + { "default:steel_ingot", "homedecor:drawer_small", "default:steel_ingot" } + }, +}) + +minetest.register_craft({ + output = "homedecor:bathroom_set", + recipe = { + { "", "homedecor:glass_table_small_round", "" }, + { "homedecor:plastic_sheeting", "homedecor:glass_table_small_round", "homedecor:plastic_sheeting" }, + { "group:stick", "homedecor:plastic_sheeting", "group:stick" } + }, +}) + +minetest.register_craft({ + output = "homedecor:trash_can_green", + recipe = { + { "homedecor:plastic_sheeting", "", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "dye:green", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" } + }, +}) + +minetest.register_craft({ + output = "homedecor:ceiling_lamp", + recipe = { + { "", "technic:brass_ingot", ""}, + { "", "homedecor:chainlink_brass", ""}, + { "default:glass", "homedecor:glowlight_small", "default:glass"} + }, +}) + +minetest.register_craft({ + output = "homedecor:ceiling_lamp", + recipe = { + { "", "chains:chain_top_brass", ""}, + { "default:glass", "homedecor:glowlight_small", "default:glass"} + }, +}) + +minetest.register_craft({ + output = "homedecor:spiral_staircase", + recipe = { + { "default:steelblock", "homedecor:pole_wrought_iron", "" }, + { "", "homedecor:pole_wrought_iron", "default:steelblock" }, + { "default:steelblock", "homedecor:pole_wrought_iron", "" } + }, +}) + +minetest.register_craft({ + output = "homedecor:soda_machine", + recipe = { + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "dye:red", "default:steel_ingot"}, + {"default:steel_ingot", "default:copperblock", "default:steel_ingot"}, + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:coin 5", + recipe = {"moreblocks:micro_goldblock_1", "default:sword_stone"} +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:coin 15", + recipe = {"default:gold_ingot", "default:sword_steel"} +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:coin 50", + recipe = {"default:goldblock", "default:sword_mese"} +}) + +minetest.register_craft({ + output = "homedecor:lattice_wood 8", + recipe = { + {"group:stick", "group:wood", "group:stick"}, + {"group:wood", "", "group:wood"}, + {"group:stick", "group:wood", "group:stick"}, + }, +}) + +minetest.register_craft({ + output = "homedecor:lattice_white_wood 8", + recipe = { + {"group:stick", "group:wood", "group:stick"}, + {"group:wood", "dye:white", "group:wood"}, + {"group:stick", "group:wood", "group:stick"}, + }, +}) + +minetest.register_craft({ + output = "homedecor:lattice_wood_vegetal 8", + recipe = { + {"group:stick", "group:wood", "group:stick"}, + {"group:wood", "group:leaves", "group:wood"}, + {"group:stick", "group:wood", "group:stick"}, + }, +}) + +minetest.register_craft({ + output = "homedecor:lattice_white_wood_vegetal 8", + recipe = { + {"group:stick", "group:wood", "group:stick"}, + {"group:wood", "group:leaves", "group:wood"}, + {"group:stick", "dye:white", "group:stick"}, + }, +}) + +minetest.register_craft({ + output = "homedecor:stained_glass 8", + recipe = { + {"", "dye:blue", ""}, + {"dye:red", "default:glass", "dye:green"}, + {"", "dye:yellow", ""}, + }, +}) + +minetest.register_craft({ + output = "homedecor:stained_glass", + recipe = { + {"", "dye:blue", ""}, + {"dye:red", "xpanes:pane", "dye:green"}, + {"", "dye:yellow", ""}, + }, +}) + +minetest.register_craftitem("homedecor:flower_pot_small", { + description = S("Small Flower Pot"), + inventory_image = "homedecor_flowerpot_small_inv.png" +}) + +minetest.register_craft( { + output = "homedecor:flower_pot_small", + recipe = { + { "default:clay_brick", "", "default:clay_brick" }, + { "", "default:clay_brick", "" } + } +}) + +minetest.register_craft( { + output = "homedecor:flower_pot_small 3", + recipe = { { "homedecor:flower_pot_terracotta" } } +}) + +minetest.register_craft({ + output = "homedecor:shrubbery_green 3", + recipe = { + { "group:leaves", "group:leaves", "group:leaves" }, + { "group:leaves", "group:leaves", "group:leaves" }, + { "group:stick", "group:stick", "group:stick" } + } +}) + +for _, color in ipairs(homedecor.shrub_colors) do + + minetest.register_craft({ + type = "shapeless", + output = "homedecor:shrubbery_large_"..color, + recipe = { + "homedecor:shrubbery_"..color + } + }) + + minetest.register_craft({ + type = "shapeless", + output = "homedecor:shrubbery_"..color, + recipe = { + "homedecor:shrubbery_large_"..color + } + }) + + if color ~= "green" then + minetest.register_craft({ + type = "shapeless", + output = "homedecor:shrubbery_large_"..color, + recipe = { + "homedecor:shrubbery_large_green", + "dye:"..color + } + }) + + minetest.register_craft({ + type = "shapeless", + output = "homedecor:shrubbery_"..color, + recipe = { + "homedecor:shrubbery_green", + "dye:"..color + } + }) + + end +end + +for i in ipairs(homedecor.banister_materials) do + + local name = homedecor.banister_materials[i][1] + local topmat = homedecor.banister_materials[i][5] + local vertmat = homedecor.banister_materials[i][6] + local dye1 = homedecor.banister_materials[i][7] + local dye2 = homedecor.banister_materials[i][8] + + minetest.register_craft({ + output = "homedecor:banister_"..name.."_horizontal 2", + recipe = { + { topmat, "", dye1 }, + { vertmat, topmat, "" }, + { dye2, vertmat, topmat } + }, + }) +end + +if (minetest.get_modpath("technic") and minetest.get_modpath("dye") and minetest.get_modpath("bees")) then + technic.register_separating_recipe({ input = {"bees:wax 1"}, output = {"homedecor:oil_extract 2","dye:yellow 1"} }) +end diff --git a/patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/gastronomy.lua b/patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/gastronomy.lua new file mode 100644 index 0000000..052e526 --- /dev/null +++ b/patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/gastronomy.lua @@ -0,0 +1,207 @@ + +local cutlery_cbox = { + type = "fixed", + fixed = { + { -5/16, -8/16, -6/16, 5/16, -7/16, 2/16 }, + { -2/16, -8/16, 2/16, 2/16, -4/16, 6/16 } + } +} + +homedecor.register("cutlery_set", { + drawtype = "mesh", + mesh = "homedecor_cutlery_set.obj", + tiles = { "homedecor_cutlery_set.png" }, + inventory_image = "homedecor_cutlery_set_inv.png", + description = "Cutlery set", + groups = {snappy=3}, + selection_box = cutlery_cbox, + walkable = false, + sounds = default.node_sound_glass_defaults(), +}) + +local bottle_cbox = { + type = "fixed", + fixed = { + { -0.125, -0.5, -0.125, 0.125, 0, 0.125} + } +} + +local fbottle_cbox = { + type = "fixed", + fixed = { + { -0.375, -0.5, -0.3125, 0.375, 0, 0.3125 } + } +} + +local bottle_colors = {"brown", "green"} + +for _, b in ipairs(bottle_colors) do + + homedecor.register("bottle_"..b, { + tiles = { "homedecor_bottle_"..b..".png" }, + inventory_image = "homedecor_bottle_"..b.."_inv.png", + description = "Bottle ("..b..")", + mesh = "homedecor_bottle.obj", + walkable = false, + groups = {snappy=3}, + sounds = default.node_sound_glass_defaults(), + selection_box = bottle_cbox + }) + + -- 4-bottle sets + + homedecor.register("4_bottles_"..b, { + tiles = { + "homedecor_bottle_"..b..".png", + "homedecor_bottle_"..b..".png" + }, + inventory_image = "homedecor_4_bottles_"..b.."_inv.png", + description = "Four "..b.." bottles", + mesh = "homedecor_4_bottles.obj", + walkable = false, + groups = {snappy=3}, + sounds = default.node_sound_glass_defaults(), + selection_box = fbottle_cbox + }) +end + +homedecor.register("4_bottles_multi", { + tiles = { + "homedecor_bottle_brown.png", + "homedecor_bottle_green.png" + }, + inventory_image = "homedecor_4_bottles_multi_inv.png", + description = "Four misc brown/green bottles", + mesh = "homedecor_4_bottles.obj", + groups = {snappy=3}, + walkable = false, + sounds = default.node_sound_glass_defaults(), + selection_box = fbottle_cbox +}) + +local wine_cbox = homedecor.nodebox.slab_z(-0.75) +homedecor.register("wine_rack", { + description = "Wine Rack", + mesh = "homedecor_wine_rack.obj", + tiles = { + "homedecor_generic_wood_red.png", + "homedecor_bottle_brown.png", + "homedecor_bottle_brown2.png", + "homedecor_bottle_brown3.png", + "homedecor_bottle_brown4.png" + }, + inventory_image = "homedecor_wine_rack_inv.png", + groups = {choppy=2}, + selection_box = wine_cbox, + collision_box = wine_cbox, + sounds = default.node_sound_defaults(), +}) + +homedecor.register("dartboard", { + description = "Dartboard", + mesh = "homedecor_dartboard.obj", + tiles = { "homedecor_dartboard.png" }, + inventory_image = "homedecor_dartboard_inv.png", + wield_image = "homedecor_dartboard_inv.png", + paramtype2 = "wallmounted", + walkable = false, + selection_box = { + type = "wallmounted", + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_wood_defaults(), +}) + +homedecor.register("beer_tap", { + description = "Beer tap", + mesh = "homedecor_beer_taps.obj", + tiles = { + "homedecor_generic_metal_bright.png", + { name = "homedecor_generic_metal.png", color = homedecor.color_black } + }, + inventory_image = "homedecor_beertap_inv.png", + groups = { snappy=3 }, + walkable = false, + selection_box = { + type = "fixed", + fixed = { -0.25, -0.5, -0.4375, 0.25, 0.235, 0 } + }, + on_punch = function(pos, node, puncher, pointed_thing) + local wielditem = puncher:get_wielded_item() + local inv = puncher:get_inventory() + + local wieldname = wielditem:get_name() + if wieldname == "vessels:drinking_glass" then + if inv:room_for_item("main", "homedecor:beer_mug 1") then + wielditem:take_item() + puncher:set_wielded_item(wielditem) + inv:add_item("main", "homedecor:beer_mug 1") + minetest.chat_send_player(puncher:get_player_name(), "Ahh, a frosty cold beer - look in your inventory for it!") + else + minetest.chat_send_player(puncher:get_player_name(), "No room in your inventory to add a beer mug!") + end + end + end +}) + +minetest.register_craft({ + output = "homedecor:beer_tap", + recipe = { + { "group:stick","default:steel_ingot","group:stick" }, + { "homedecor:kitchen_faucet","default:steel_ingot","homedecor:kitchen_faucet" }, + { "default:steel_ingot","default:steel_ingot","default:steel_ingot" } + }, +}) + +local beer_cbox = { + type = "fixed", + fixed = { -5/32, -8/16, -9/32 , 7/32, -2/16, 1/32 } +} + +homedecor.register("beer_mug", { + description = "Beer mug", + drawtype = "mesh", + mesh = "homedecor_beer_mug.obj", + tiles = { "homedecor_beer_mug.png" }, + inventory_image = "homedecor_beer_mug_inv.png", + groups = { snappy=3, oddly_breakable_by_hand=3 }, + walkable = false, + sounds = default.node_sound_glass_defaults(), + selection_box = beer_cbox, + on_use = minetest.item_eat(2) +}) + +local svm_cbox = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 1.5, 0.5} +} + +homedecor.register("soda_machine", { + description = "Soda Vending Machine", + mesh = "homedecor_soda_machine.obj", + tiles = {"homedecor_soda_machine.png"}, + groups = {snappy=3}, + selection_box = svm_cbox, + collision_box = svm_cbox, + expand = { top="placeholder" }, + sounds = default.node_sound_wood_defaults(), + on_rotate = screwdriver.rotate_simple, + on_punch = function(pos, node, puncher, pointed_thing) + local wielditem = puncher:get_wielded_item() + local wieldname = wielditem:get_name() + local fdir_to_fwd = { {0, -1}, {-1, 0}, {0, 1}, {1, 0} } + 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] } + if wieldname == "homedecor:coin" then + wielditem:take_item() + puncher:set_wielded_item(wielditem) + minetest.spawn_item(pos_drop, "homedecor:soda_can") + minetest.sound_play("insert_coin", { + pos=pos, max_hear_distance = 5 + }) + else + minetest.chat_send_player(puncher:get_player_name(), "Please insert a coin in the machine.") + end + end +}) diff --git a/patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/models/homedecor_beer_mug.obj b/patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/models/homedecor_beer_mug.obj new file mode 100644 index 0000000..4e1d6e7 --- /dev/null +++ b/patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/models/homedecor_beer_mug.obj @@ -0,0 +1,421 @@ +# Blender v2.73 (sub 0) OBJ File: 'beer_mug.blend' +# www.blender.org +o Torus.001 +v -0.200872 -0.271336 -0.101373 +v 0.027435 -0.500000 0.013804 +v 0.078127 -0.500000 -0.007193 +v -0.213731 -0.262707 -0.113186 +v 0.116925 -0.500000 -0.045991 +v 0.137922 -0.500000 -0.096683 +v -0.201779 -0.214262 -0.136814 +v 0.137922 -0.500000 -0.151551 +v 0.116925 -0.500000 -0.202243 +v -0.190840 -0.230675 -0.148627 +v 0.078127 -0.500000 -0.241041 +v 0.027435 -0.500000 -0.262038 +v -0.179901 -0.247087 -0.136814 +v -0.027433 -0.500000 -0.262038 +v -0.078125 -0.500000 -0.241041 +v -0.179901 -0.247087 -0.113186 +v -0.116923 -0.500000 -0.202243 +v -0.137920 -0.500000 -0.151551 +v -0.190840 -0.230675 -0.101373 +v -0.137920 -0.500000 -0.096682 +v -0.116923 -0.500000 -0.045991 +v -0.201779 -0.214262 -0.113186 +v -0.078125 -0.500000 -0.007193 +v -0.027433 -0.500000 0.013804 +v -0.183162 -0.175815 -0.136814 +v 0.024062 -0.166667 -0.003152 +v 0.068522 -0.166667 -0.021568 +v -0.175215 -0.198406 -0.148627 +v 0.102550 -0.166667 -0.055596 +v 0.120966 -0.166667 -0.100055 +v -0.167267 -0.220996 -0.136814 +v 0.120966 -0.166667 -0.148178 +v 0.102550 -0.166667 -0.192638 +v -0.167267 -0.220996 -0.113186 +v 0.068522 -0.166667 -0.226666 +v 0.024062 -0.166667 -0.245082 +v -0.175215 -0.198406 -0.101373 +v -0.024061 -0.166667 -0.245082 +v -0.068520 -0.166667 -0.226666 +v -0.183162 -0.175815 -0.113186 +v -0.102548 -0.166667 -0.192638 +v -0.120964 -0.166667 -0.148178 +v -0.159704 -0.151131 -0.136814 +v -0.120964 -0.166667 -0.100055 +v -0.102548 -0.166667 -0.055596 +v -0.155526 -0.177688 -0.148627 +v -0.068520 -0.166667 -0.021568 +v -0.024060 -0.166667 -0.003152 +v -0.151348 -0.204244 -0.136814 +v 0.027435 -0.125001 0.013804 +v 0.078127 -0.125001 -0.007193 +v -0.151348 -0.204244 -0.113186 +v 0.116925 -0.125001 -0.045991 +v 0.137922 -0.125001 -0.096683 +v -0.155526 -0.177688 -0.101373 +v 0.137922 -0.125001 -0.151551 +v 0.116925 -0.125001 -0.202243 +v -0.159704 -0.151131 -0.113186 +v 0.078127 -0.125001 -0.241041 +v 0.027435 -0.125001 -0.262038 +v -0.133701 -0.142626 -0.136814 +v -0.027433 -0.125001 -0.262038 +v -0.078125 -0.125001 -0.241041 +v -0.133701 -0.170549 -0.148627 +v -0.116923 -0.125001 -0.202243 +v -0.137921 -0.125001 -0.151551 +v -0.133701 -0.198472 -0.136814 +v -0.137921 -0.125001 -0.096682 +v -0.116923 -0.125001 -0.045991 +v -0.133701 -0.198472 -0.113186 +v -0.078125 -0.125001 -0.007193 +v -0.027433 -0.125001 0.013804 +v -0.133701 -0.170549 -0.101373 +v 0.024062 -0.125001 -0.003152 +v 0.068522 -0.125001 -0.021568 +v -0.133701 -0.142626 -0.113186 +v 0.102550 -0.125001 -0.055596 +v 0.120966 -0.125001 -0.100055 +v -0.133701 -0.490192 -0.136814 +v 0.120966 -0.125001 -0.148178 +v 0.102550 -0.125001 -0.192638 +v -0.133701 -0.462269 -0.148627 +v 0.068522 -0.125001 -0.226666 +v 0.024062 -0.125001 -0.245082 +v -0.133701 -0.434346 -0.136814 +v -0.024061 -0.125001 -0.245082 +v -0.068520 -0.125001 -0.226666 +v -0.133701 -0.434346 -0.113186 +v -0.102548 -0.125001 -0.192638 +v -0.120964 -0.125001 -0.148178 +v -0.133701 -0.462269 -0.101373 +v -0.120964 -0.125001 -0.100055 +v -0.102548 -0.125001 -0.055596 +v -0.133701 -0.490192 -0.113186 +v -0.068520 -0.125001 -0.021568 +v -0.024061 -0.125001 -0.003152 +v -0.188013 -0.279964 -0.113186 +v -0.188013 -0.279964 -0.136814 +v -0.200872 -0.271336 -0.148627 +v -0.213731 -0.262707 -0.136814 +v -0.217850 -0.316409 -0.113186 +v -0.204329 -0.316409 -0.101373 +v -0.190808 -0.316409 -0.113186 +v -0.190808 -0.316409 -0.136814 +v -0.204329 -0.316409 -0.148627 +v -0.217850 -0.316409 -0.136814 +v -0.213731 -0.370111 -0.113186 +v -0.200872 -0.361482 -0.101373 +v -0.188013 -0.352853 -0.113186 +v -0.188013 -0.352853 -0.136814 +v -0.200872 -0.361482 -0.148627 +v -0.213731 -0.370111 -0.136814 +v -0.201779 -0.418556 -0.113186 +v -0.190840 -0.402143 -0.101373 +v -0.179901 -0.385730 -0.113186 +v -0.179901 -0.385730 -0.136814 +v -0.190840 -0.402143 -0.148627 +v -0.201779 -0.418556 -0.136814 +v -0.183162 -0.457002 -0.113186 +v -0.175215 -0.434412 -0.101373 +v -0.167268 -0.411822 -0.113186 +v -0.167268 -0.411822 -0.136814 +v -0.175215 -0.434412 -0.148627 +v -0.183162 -0.457002 -0.136814 +v -0.159704 -0.481686 -0.113186 +v -0.155526 -0.455130 -0.101373 +v -0.151348 -0.428574 -0.113186 +v -0.151348 -0.428574 -0.136814 +v -0.155526 -0.455130 -0.148627 +v -0.159704 -0.481686 -0.136814 +vt 0.156250 0.218750 +vt 0.156250 0.187500 +vt 0.218750 0.187500 +vt 0.218750 0.218750 +vt 0.465889 0.405864 +vt 0.537350 0.405864 +vt 0.603372 0.433211 +vt 0.653903 0.483742 +vt 0.681251 0.549764 +vt 0.681251 0.621226 +vt 0.653904 0.687248 +vt 0.603372 0.737779 +vt 0.537350 0.765126 +vt 0.465889 0.765126 +vt 0.399867 0.737779 +vt 0.349335 0.687248 +vt 0.321988 0.621226 +vt 0.321988 0.549764 +vt 0.349335 0.483742 +vt 0.399867 0.433211 +vt 0.625000 0.906250 +vt 0.687500 0.906250 +vt 0.687500 0.937500 +vt 0.625000 0.937500 +vt 0.937500 0.906250 +vt 1.000000 0.906250 +vt 1.000000 0.937500 +vt 0.937500 0.937500 +vt 0.250000 0.906250 +vt 0.312500 0.906250 +vt 0.312500 0.937500 +vt 0.250000 0.937500 +vt 0.562500 0.906250 +vt 0.562500 0.937500 +vt 0.875000 0.906250 +vt 0.875000 0.937500 +vt 0.187500 0.906250 +vt 0.187500 0.937500 +vt 0.812500 0.906250 +vt 0.812500 0.937500 +vt 0.437500 0.906250 +vt 0.500000 0.906250 +vt 0.500000 0.937500 +vt 0.437500 0.937500 +vt 0.125000 0.906250 +vt 0.125000 0.937500 +vt 0.750000 0.906250 +vt 0.750000 0.937500 +vt 0.375000 0.906250 +vt 0.375000 0.937500 +vt 0.062500 0.906250 +vt 0.062500 0.937500 +vt -0.000000 0.906250 +vt -0.000000 0.937500 +vt 0.281250 0.312500 +vt 0.281250 0.281250 +vt 0.343750 0.281250 +vt 0.343750 0.312500 +vt 0.093750 0.218750 +vt 0.156250 0.250000 +vt 0.093750 0.250000 +vt 0.375000 1.000000 +vt 0.312500 1.000000 +vt 0.281250 0.250000 +vt 0.343750 0.250000 +vt 0.156250 0.312500 +vt 0.156250 0.281250 +vt 0.218750 0.281250 +vt 0.218750 0.312500 +vt 0.531250 0.187500 +vt 0.593750 0.187500 +vt 0.593750 0.218750 +vt 0.531250 0.218750 +vt 0.656250 0.187500 +vt 0.656250 0.218750 +vt 0.093750 0.187500 +vt 0.218750 0.250000 +vt 0.125000 0.406250 +vt 0.187500 0.406250 +vt 0.687500 1.000000 +vt 0.625000 1.000000 +vt 0.937500 0.406250 +vt 1.000000 0.406250 +vt 0.062500 1.000000 +vt 0.125000 1.000000 +vt 0.375000 0.406250 +vt 0.437500 0.406250 +vt 0.687500 0.406250 +vt 0.750000 0.406250 +vt 0.937500 1.000000 +vt 0.875000 1.000000 +vt 0.250000 0.406250 +vt 0.187500 1.000000 +vt 0.093750 0.343750 +vt 0.093750 0.312500 +vt 0.156250 0.343750 +vt 0.500000 0.406250 +vt 0.812500 0.406250 +vt 0.437500 1.000000 +vt 0.218750 0.156250 +vt 0.281250 0.156250 +vt 0.281250 0.187500 +vt 0.750000 1.000000 +vt 0.031250 0.250000 +vt 0.031250 0.218750 +vt 0.562500 0.406250 +vt -0.000000 0.406250 +vt 0.062500 0.406250 +vt 1.000000 1.000000 +vt 0.343750 0.187500 +vt 0.343750 0.156250 +vt 0.406250 0.156250 +vt 0.406250 0.187500 +vt 0.312500 0.406250 +vt 0.625000 0.406250 +vt 0.250000 1.000000 +vt 0.406250 0.343750 +vt 0.406250 0.312500 +vt 0.468750 0.312500 +vt 0.468750 0.343750 +vt 0.875000 0.406250 +vt 0.468750 0.156250 +vt 0.468750 0.187500 +vt 0.500000 1.000000 +vt 0.812500 1.000000 +vt 0.406250 0.281250 +vt 0.406250 0.250000 +vt 0.562500 1.000000 +vt -0.000000 1.000000 +vt 0.218750 0.343750 +vt 0.531250 0.312500 +vt 0.531250 0.281250 +vt 0.593750 0.281250 +vt 0.593750 0.312500 +vt 0.468750 0.281250 +vt 0.468750 0.250000 +vt 0.531250 0.250000 +vt 0.281250 0.343750 +vt 0.593750 0.250000 +vt 0.281250 0.218750 +vt 0.343750 0.218750 +vt 0.031250 0.156250 +vt 0.093750 0.156250 +vt 0.031250 0.187500 +vt 0.813063 0.373140 +vt 0.756333 0.349641 +vt 0.712914 0.306222 +vt 0.689415 0.249492 +vt 0.689415 0.188087 +vt 0.712914 0.131357 +vt 0.756333 0.087938 +vt 0.813063 0.064439 +vt 0.874467 0.064439 +vt 0.931197 0.087938 +vt 0.974617 0.131357 +vt 0.998115 0.188088 +vt 0.998115 0.249492 +vt 0.974617 0.306222 +vt 0.931197 0.349641 +vt 0.874467 0.373140 +vt 0.156250 0.156250 +vt 0.656250 0.250000 +vt 0.031250 0.312500 +vt 0.031250 0.281250 +vt 0.093750 0.281250 +vt 0.656250 0.281250 +vt 0.656250 0.312500 +vt 0.406250 0.218750 +vt 0.468750 0.218750 +vt 0.031250 0.343750 +vt 0.656250 0.343750 +vt 0.593750 0.343750 +vt 0.531250 0.343750 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.343750 0.343750 +vt 0.656250 0.156250 +s 1 +f 120/1 121/2 115/3 114/4 +f 2/5 24/6 23/7 21/8 20/9 18/10 17/11 15/12 14/13 12/14 11/15 9/16 8/17 6/18 5/19 3/20 +f 51/21 53/22 77/23 75/24 +f 59/25 60/26 84/27 83/28 +f 66/29 68/30 92/31 90/32 +f 50/33 51/21 75/24 74/34 +f 57/35 59/25 83/28 81/36 +f 65/37 66/29 90/32 89/38 +f 56/39 57/35 81/36 80/40 +f 71/41 72/42 96/43 95/44 +f 63/45 65/37 89/38 87/46 +f 54/47 56/39 80/40 78/48 +f 69/49 71/41 95/44 93/50 +f 62/51 63/45 87/46 86/52 +f 53/22 54/47 78/48 77/23 +f 60/53 62/51 86/52 84/54 +f 111/55 112/56 106/57 105/58 +f 72/42 50/33 74/34 96/43 +f 126/59 120/1 119/60 125/61 +f 45/62 44/63 92/31 93/50 +f 106/57 112/56 107/64 101/65 +f 123/66 124/67 118/68 117/69 +f 34/70 52/71 55/72 37/73 +f 55/72 52/71 70/74 73/75 +f 126/59 127/76 121/2 120/1 +f 112/56 118/68 113/77 107/64 +f 15/78 17/79 65/37 63/45 +f 29/80 27/81 75/24 77/23 +f 11/82 12/83 60/26 59/25 +f 38/84 86/52 87/46 39/85 +f 21/86 23/87 71/41 69/49 +f 5/88 6/89 54/47 53/22 +f 35/90 33/91 81/36 83/28 +f 17/79 18/92 66/29 65/37 +f 41/93 39/85 87/46 89/38 +f 128/94 129/95 123/66 122/96 +f 23/87 24/97 72/42 71/41 +f 6/89 8/98 56/39 54/47 +f 47/99 45/62 93/50 95/44 +f 115/3 116/100 110/101 109/102 +f 30/103 29/80 77/23 78/48 +f 94/104 91/105 126/59 125/61 +f 24/97 2/106 50/33 72/42 +f 12/107 14/108 62/51 60/53 +f 36/109 35/90 83/28 84/27 +f 103/110 104/111 98/112 97/113 +f 18/92 20/114 68/30 66/29 +f 2/106 3/115 51/21 50/33 +f 42/116 41/93 89/38 90/32 +f 98/117 99/118 10/119 13/120 +f 8/98 9/121 57/35 56/39 +f 97/113 98/112 13/122 16/123 +f 48/124 47/99 95/44 96/43 +f 32/125 30/103 78/48 80/40 +f 100/126 106/57 101/65 4/127 +f 14/108 15/78 63/45 62/51 +f 118/68 112/56 111/55 117/69 +f 26/128 48/124 96/43 74/34 +f 38/84 36/129 84/54 86/52 +f 20/114 21/86 69/49 68/30 +f 122/96 123/66 117/69 116/130 +f 3/115 5/88 53/22 51/21 +f 44/63 42/116 90/32 92/31 +f 27/81 26/128 74/34 75/24 +f 28/131 25/132 43/133 46/134 +f 9/121 11/82 59/25 57/35 +f 33/91 32/125 80/40 81/36 +f 25/132 7/135 22/136 40/137 +f 116/130 117/69 111/55 110/138 +f 40/137 37/73 55/72 58/139 +f 107/64 108/140 102/141 101/65 +f 105/58 106/57 100/126 99/118 +f 43/133 25/132 40/137 58/139 +f 85/142 128/143 127/76 88/144 +f 26/145 27/146 29/147 30/148 32/149 33/150 35/151 36/152 38/153 39/154 41/155 42/156 44/157 45/158 47/159 48/160 +f 68/30 69/49 93/50 92/31 +f 127/76 128/143 122/161 121/2 +f 55/72 73/75 76/162 58/139 +f 99/118 100/126 7/135 10/119 +f 82/163 79/164 130/165 129/95 +f 119/60 120/1 114/4 113/77 +f 118/68 124/67 119/60 113/77 +f 43/133 61/166 64/167 46/134 +f 10/119 7/135 25/132 28/131 +f 130/165 124/67 123/66 129/95 +f 4/127 1/168 19/169 22/136 +f 124/67 130/165 125/61 119/60 +f 61/166 43/133 58/139 76/162 +f 110/101 104/111 103/110 109/102 +f 108/140 109/102 103/110 102/141 +f 88/144 127/76 126/59 91/105 +f 97/113 16/123 19/169 1/168 +f 82/163 129/95 128/94 85/170 +f 19/169 16/123 34/70 37/73 +f 19/169 37/73 40/137 22/136 +f 46/134 64/167 67/171 49/172 +f 114/4 108/140 107/64 113/77 +f 115/3 109/102 108/140 114/4 +f 101/65 102/141 1/168 4/127 +f 10/119 28/131 31/173 13/120 +f 16/123 13/122 31/174 34/70 +f 102/141 103/110 97/113 1/168 +f 31/174 49/175 52/71 34/70 +f 111/55 105/58 104/176 110/138 +f 7/135 100/126 4/127 22/136 +f 122/161 116/100 115/3 121/2 +f 105/58 99/118 98/117 104/176 +f 31/173 28/131 46/134 49/172 +f 130/165 79/164 94/104 125/61 +f 52/71 49/175 67/177 70/74 diff --git a/patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/textures/homedecor_beer_mug.png b/patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/textures/homedecor_beer_mug.png new file mode 100644 index 0000000000000000000000000000000000000000..2a8092467764c967355400a816270821a6058f57 GIT binary patch literal 1300 zcmV+v1?&2WP)sxVgExy1Kf%y1Bc%yS%rnyt}%*yu7`+t-ZXvy}iA@y}Z7@zQ4MzzrMY{zrVns zOu)dv!Mv}*!NJ0!Ov1ge!=g>Yvx&u}PQ|59#-&fjrccJk#>b{k$EHumw~NT9PspfG z$f!`ss87kLP|3KA$;rvesZh$w%FC!w%c)SysZq(5_O@u2a#jQ_-(e(b3V;uT#>n zQ_|AX)38(1uvF8rRMXSb)Uj05)YR3nRMoOn)v{I9)z#LrRMxUp*0WXC*4EdvRoAmt z*R)mFv{u-(RoJvv*tJ&J*x1>%R@t>z+1c6JwpQA?}6S>U``;NallyIJA9 zS>fT~;=Nhoy;|bp;^V$rlq(=H}<;=jg&*=;-L_!d>a<>FVn0 z>+9?6?CkBvUG44d?(XjI@9*&N@bU5S^78WY^Yiuf_4fAm_xJbs`1twx`TP6({QUg= z{r&#_{{R2~4PCe%0008-NklQLVsKMam zYcfF5fSgjzU=-_==!_uH@-+lOg7~mOFlNjT8qnAMD?nlT-gWh})Hk{~f3PxX!j>Ef9+#FGl>l237~u$8I8F>^gejzhT+T&QIPI5(2*o{^YIjVF z3nvv$-fWZPRMjum;715kl#a)+|Ef zi@Ar<&e+;hIvFU$vpasQR!QH8-DJzZR^IHL$g&F+Xc+y)rjqC7It*){4}#Ez5<_9GbU;Ji&MR$MiTzuj@i8sBx@VEOWk^{1(TJWTv_ zbOIQ87z!pR;V58o0+hqUFl3cVnG_HN6;>`+NO*jKHB-VhR{#hde{FtJ8opC-zNd}* zY=yJd!gK%i#v8BL`>A;V2!90}{uag}n2d@h&K<|$R){bRNZ@J}6;O>VAJhrkAmo&< z2BoM-;jZudq)d4Bh9HpNyZ-u%_OD<6v{<%mi8?F_0Cztc4)5bRXlW}D3JsHpET}A7`8MWxF3aWeC@|>6S#{xsXa8{Bx~KRB7yMbv zA>mFwS$;D~ESvRV_T{iaBh(V zs#L11R4T)J5e+9=dM;!4P*4sNPo+y|oR$5z|1D}(74-HwbDTCsM;qx%twQCO> z92^3r)}m`gtZ>)$;2!Ou*bE#ytS6!p#=#hKFS_V#dB_#8X3fS|#>NU?MS$a6vpIA6 zU}ETsS@zk__OYIx4mNvsFYD|~oCqCbc(}|kUQr0oah8y^qZ z{{7>mj5av&YhODVo+BVk7sj_ z@4>+VAV80>ci-I#!YdLCM%@AKrjMM^a2zR zuW4&D)5>NUJLZ`A?7Z{NW!>G~v1eguffCT-c&E{WQGh#L#70*{(873p{q;A%RX-+y za8kKk8+gY&2$R`t?%ekHnqpCr2MrFENk~+V>-sS<@_mQAsk=K<_pGro1)(&;wr%?a zyrT%uu7ZLxDPSZ8DEL@~_}~4~ORpo_3J$3PBC6V;5Jd#1r>C2BbhJ~>M+*-OjKgF< zB2XJ0Er23=L8w`T?iM^3ESL{M3|U%CmV}fBVbf3d92gj)dzDHRP>K)A@xTM}QML(V ztgxxr_l4*Cylc~@=daD@Gi#ATA5stm67<`hJGY&LuHHyejy?8hP(oKkfNC@_#bIj0 z_r;>2!q(DOp=oYpKV!;7VSOKuE_sLv1rrW7<(d@e#MfhHK}EQ(gZy9se!Jxx-#F=? zUw-)wamp!QRtN0?3l}bWYxnM*Cn*)wd4ffI>mg<^!UUWw0wcaWC+;WWV+K_P|0 z3c<-9_F4P@B)w1=2X85n$3S?^?(OaQ*~X2V-vZ%(eMmqM+)rT4+PF*jyN+`@uwsT- zWQYrk-Zw9Dnui&u6r1K4youyC?(yEJWV}CO#K=g2ybW-I@7mQL?%liZ`Ntl6X3-&0 z0Lp=+1LJfez2yg{Y?v<#vnWwLDOPGnx40}cX1)SFZcKFUv>4>7s{Xfp9FNcG>goo{eH1X!MU;Be z3NYtM0OwgD@R7e+z51^CH{5WAK8Q4^1586<#9GWG1?2lh?8qbgh$syV41yv?!NOIt zjuA>up;tbkIby&sv9M7NS{SLcAb`X=pr>bcq-+V-I??wXfB|EXH(+T_Ug30fbZV$$ z{tBB(Ei0hb|Lp(r?3c(BPKVjbj^o19&~A zNkd_IoPAND5XNwiELju<#ew%m?6F>kx36%Y=;D0O!ayz8TO7b*hFTf@R62?JWDFfo}yP);_PqdoEj z7FBf$h|og19?Rh*n{aUJS#%wyL!{g0J}xNSr@A5uHH!}naA^VC{_*=kr7C@FSAaKg z6JjztUkfOjPU!8O*9Z6MM|;i~1GsQ>dGD`4MIBgl#mx`w{FuD$5E$VDQ4wkOm>xJO z8_U=)MCyzcT^5Kw9?@G2-k5tCEa0}{qwfvf&Qo!f1(w*=*~Y%u_t7Rmr|Uq`Jk3SS zeFBahlUy$Qol7r0x7HE}QZEDquWr8!{I61%i;=4K^z=Z{Gnaq~C)XIuRsjiq7@-m} zWl>+m*}}j=avxOC{P~}OXY`ofBA)ML+5QjLv$4G|zxVy?m;D^#{&Aa;khCFYVYuPF z9mo4o%UJ+HmB>Ia!fHG3VZp%DOa^1%89vi0j5Mu?2cX-}nl%sje=jKn>i`5T9G#t5 zH*__FS#o)7rj|NL(%@@g_2*bv?q|a5!Z|38 z9GbB`5swtn8p00nnj_HqW*~o|*|(+uG_DC@PSIf9QbZvzzVA&|EWgU20A%G50IudT zp8p)n%=!Xr>p7koPNSKV=GL()(bWaza{=DM-7Mp($b!NSCRG8zat9l)ZU-&Z$l`c2 z;kFw^X|f7@$%dmf1i5nMHG0*mUpxk%|Js5we9t2Vf4;?*7~^_kSde9PLT6|`7^7iW zWwm`Tv%=mN*ggsA%xh<^-yM6hmzzWQK}vDaTXHO{4FIm}Wq}@rkbxQ>LjlsE2jJ(q z88{O?$*F(7`M(DLm2fI3eDv!>Fs>upY3<^I4g4H{l0VmCN2va(=}8dv#Y#|{c9udM zz`g-Dbv$$03@QiXNk^$xsJj>7J}Ahc-W&JxCKKR#iz|%J>0qMrW9MW=n8QHqn%E;> zdClwK1>m*VE0Qka6B0y#k7HZP0xs}?No#UafJt>Bxi-94s>y75JOsKsD98>Dioy^u zG!IWv2}*Fyrp!(NG>b2Pv{?&mH%{H~52{X4zOI%Opm0U1K?8NU9=uaVv4GyD53tP0 z8-})Vg!$k07x?6jDxP?yvKl_)vPX48AM+&`j;SZ8Zon(DE%pQS5ZoiQYl3MdC_9U& z0V1hIuV&PD6C`*e`QcN~)L0*vo1UBGtluX^m5izd;s`TW0MHKPeYhq#!68Kyi72zu zQDrb7MnUyyL@sG zj9h#&ND@3Dt4g)7L@x}X;C0jBbtxFT#&#}on~k<6@ZD1@z^pi7IUt&~qo<<)X;O$t zd#jbxmY>=R(897LPje0I4McrFQY=q|k9z^|FXIc1o_FfS8~R^*;5%*;;LcgxfQk?^ zvk&)tucZ(uSHcmv&ptr?*>FSBqC|eISkwhJZmgQ1pK6R>KJhJH%Y?488oGaDGn6)D z2yV+|CkPY)V4#}9?w{Ig5Cft-zPGh30P!XxNgBJes0fRBnz5#UHF=R4GwQmcQ^a;o zJVTLZBnpuREDOykDlNWrBx@LiMi`#IYK;lHf;KCqfyH%r0~?IGKxw8klQhUv#3o7fijWN~4@FjV>j7Pmx`7t{f`Jq1@&sSn^np#k@PvE`0X z4g3w4_o%hx+IE-$Z)9*`&9tGFKJYpoo`cw7hoUUP38_&qRHdi~Gx|N_yUa;>o$(5` z(_qMi$9xGq)_HL)KggC8FuyGmYU*#XSP<)a65=(8 zHZ4rZ09r>#&XdukDvZ@3h*l++^W<{~C2bJOXdi&kkPa1uV;PqL?D;EJTot_b+N)>6 z+oO^8N89Zr7~!q+&p&-g+Xaf5D&WKuW~0ztrbvs8I~|dt5a@D1TzCqg6H_y`dPWpC zxT)V@I|PV1xr~EP8EVV8BN;a#5Klez=8<6Sr(s4l;{l$8`1fGyx8mpY2JaauV9UE@ zTK`iR=b?_>9BTx#5UN?)_&oZTUd*IgLh7c1Q!@ooJZ2M;L1 zC8dyc>j&0s%#GKyvvup1SEUSS*NjJhTIP_n-wmrwC|@)8WMj3-z&>ln~WcZPHwSu_Ib zs#vh-gt=ASbzQMoIeyQcU5)K9f-A88?fCi1EB|s@+h^SaY+or?0RZwjkNGg2Dk8Ei zm06k>G**)J;hfJoOs53{fqaZ@A5vCSS6i?&DUjEd*{Ix)cZY1;DYJ^&uPdSB36V{8 ze&ULE_wwZzJ$gv?2$}gxfhmuGj3*DWi#deW@GnCf8F*9HYXGl7OXTwri1H-*UEDPW zqp`nSs|Bo3$wGx%K_KR+G@V%9c7q%+%;~FF-z^TA0)Tb>kB6*6r8lCO&W(!Lh|Odk zOe&iZ_TPK$uT)1wcE@PC-Zw2JR$FUph%}~I~_Uz{vKcvq;knFG?vg($N;rc zsfb(lm#tiR^_Eg;Y(}(n$~1A~uB>B;tXzyK^7TGNnRkM%riPxV%vuLm~uLq_WK~jaPx$M zlw7r&D6Y8k&RgzdExac6fP4P_On%$_ZCDEzh8u5?>b zz?2?v??0S{f}aWkz0d%TL}FZ?gtpQN53s~8REd&AR8-*~d^l0KWTD!_86deLPz2@X z^DZ$z1j>BYC2)M_4+DDJ0ED=h$11v;mC7}zT#@gA2cGlb+IzRMgLq91f?8u*`7JYl z*QZ4U=9um(_~$QR4Z{!gB+F|i?lF6ybt`aw8IA@tqm9(*LP;3fi=az=Vo=&xsix=l zr>IFj`D0ZB^65bEj9(9t&(m%t6N!1n}U27ZTsK{5th7pyH8%{~xgY~dj;XLUL^7N*NRL96Jfkhk2lkZdhXwsYxlv!lz^Zh`|+u*BlyO51uizzLOia1b=r8*;yrGH3`P2a%wMuArF z73W>Q=_Js{E_N7Se5M!Nf6G|{l%Vdo=`>t-KLe`5tJ?G4SrHCaFu6yqCjp5-`z>E<<=i})Dmg=ek#QkIN^I{PE>+sz+{Pl1P-;xJ3zJ7Yc z*PV_wpI`ao&7mPsi~k%1!A%Lr5}A|oj{)eA8XkqugWTT@%64k$sgPwDml%F2Lw*29kr00000NkvXXu0mjf7)5X! literal 0 HcmV?d00001 diff --git a/patches/subgame-basis/mods/homedecor_modpack/homedecor/LICENSE b/patches/subgame-basis/mods/homedecor_modpack/homedecor/LICENSE new file mode 100644 index 0000000..0a3df5e --- /dev/null +++ b/patches/subgame-basis/mods/homedecor_modpack/homedecor/LICENSE @@ -0,0 +1,199 @@ +For the Lua code: LGPL 3.0 or higher +For all models, all textures, and all sounds: CC-by-SA 3.0 or higher +For everything else: WTFPL + +Exceptions to the above: + +Fancy mesh fire model and texture by NathanS (CC-0). + +=============================================================================== + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + +=============================================================================== + +This work is licensed under the Creative Commons Attribution-ShareAlike +4.0 International License. To view a copy of this license, visit +http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to +Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. + +=============================================================================== + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. + diff --git a/patches/subgame-basis/mods/homedecor_modpack/homedecor/crafts.lua b/patches/subgame-basis/mods/homedecor_modpack/homedecor/crafts.lua new file mode 100644 index 0000000..a0b9bfb --- /dev/null +++ b/patches/subgame-basis/mods/homedecor_modpack/homedecor/crafts.lua @@ -0,0 +1,3130 @@ +-- Crafting for homedecor mod (includes folding) by Vanessa Ezekowitz +-- +-- Mostly my own code; overall template borrowed from game default + +local S = homedecor_i18n.gettext + +-- misc craftitems + +minetest.register_craftitem("homedecor:terracotta_base", { + description = S("Uncooked Terracotta Base"), + inventory_image = "homedecor_terracotta_base.png", +}) + +minetest.register_craftitem("homedecor:roof_tile_terracotta", { + description = S("Terracotta Roof Tile"), + inventory_image = "homedecor_roof_tile_terracotta.png", +}) + +minetest.register_craftitem("homedecor:oil_extract", { + description = S("Oil extract"), + inventory_image = "homedecor_oil_extract.png", +}) + +minetest.register_craftitem("homedecor:paraffin", { + description = S("Unprocessed paraffin"), + inventory_image = "homedecor_paraffin.png", +}) + +minetest.register_alias("homedecor:plastic_base", "homedecor:paraffin") + +minetest.register_craftitem("homedecor:plastic_sheeting", { + description = S("Plastic sheet"), + inventory_image = "homedecor_plastic_sheeting.png", +}) + +minetest.register_craftitem("homedecor:plastic_strips", { + description = S("Plastic strips"), + inventory_image = "homedecor_plastic_strips.png", +}) + +minetest.register_craftitem("homedecor:drawer_small", { + description = S("Small Wooden Drawer"), + inventory_image = "homedecor_drawer_small.png", +}) + +minetest.register_craftitem("homedecor:ic", { + description = S("Simple Integrated Circuit"), + inventory_image = "homedecor_ic.png", +}) + +minetest.register_craftitem("homedecor:heating_element", { + description = S("Heating element"), + inventory_image = "homedecor_heating_element.png", +}) + +minetest.register_craftitem("homedecor:motor", { + description = S("Motor"), + inventory_image = "homedecor_motor.png", +}) + +minetest.register_craftitem("homedecor:power_crystal", { + description = S("Power Crystal"), + inventory_image = "homedecor_power_crystal.png", +}) + +minetest.register_craftitem("homedecor:blank_canvas", { + description = S("Blank Canvas"), + inventory_image = "homedecor_blank_canvas.png" +}) + +minetest.register_craftitem("homedecor:vcr", { + description = S("VCR"), + inventory_image = "homedecor_vcr.png" +}) + +minetest.register_craftitem("homedecor:dvd_player", { + description = S("DVD Player"), + inventory_image = "homedecor_dvd_player.png" +}) + +minetest.register_craftitem("homedecor:copper_wire", { + description = S("Spool of copper wire"), + inventory_image = "homedecor_copper_wire.png" +}) + +minetest.register_craftitem("homedecor:steel_wire", { + description = S("Spool of steel wire"), + inventory_image = "homedecor_steel_wire.png" +}) + +minetest.register_craftitem("homedecor:speaker_driver", { + description = S("Speaker driver"), + inventory_image = "homedecor_speaker_driver_inv.png" +}) + +minetest.register_craftitem("homedecor:fan_blades", { + description = S("Fan blades"), + inventory_image = "homedecor_fan_blades.png" +}) + +minetest.register_craftitem("homedecor:copper_strip", { + description = S("Copper Strip"), + inventory_image = "homedecor_copper_strip.png" +}) + +minetest.register_craftitem("homedecor:steel_strip", { + description = S("Steel Strip"), + inventory_image = "homedecor_steel_strip.png" +}) + +minetest.register_craftitem(":glooptest:chainlink", { + description = S("Steel chainlink"), + inventory_image = "homedecor_chainlink_steel.png" +}) + +minetest.register_craftitem("homedecor:chainlink_brass", { + description = S("Brass chainlink"), + inventory_image = "homedecor_chainlink_brass.png" +}) + +minetest.register_craftitem("homedecor:soda_can", { + description = S("Soda Can"), + inventory_image = "homedecor_soda_can.png", + on_use = minetest.item_eat(2), +}) + +minetest.register_craftitem("homedecor:coin", { + description = S("Gold Coin (for soda vending machine)"), + inventory_image = "homedecor_coin.png", +}) + +-- alternate crafting if mesecons is/isn't installed + +if not minetest.get_modpath("mesecons") then + + minetest.register_craftitem(":mesecons_materials:silicon", { + description = S("Silicon lump"), + inventory_image = "homedecor_silicon.png", + }) + + minetest.register_craft( { + output = "mesecons_materials:silicon 4", + recipe = { + { "default:sand", "default:sand" }, + { "default:sand", "default:steel_ingot" }, + }, + }) + +end + +-- alternate crafting if technic is/isn't installed +if not minetest.get_modpath("technic") then + minetest.register_craftitem(":technic:brass_ingot", { + description = S("Brass Ingot"), + inventory_image = "homedecor_brass_ingot.png", + }) + + if minetest.get_modpath("moreores") then + minetest.register_craft( { + type = "shapeless", + output = "technic:brass_ingot 2", + recipe = { + "moreores:silver_ingot", + "default:copper_ingot", + }, + }) + else + minetest.register_craft( { + type = "shapeless", + output = "technic:brass_ingot 3", + recipe = { + "default:steel_ingot", + "default:copper_ingot", + "default:gold_ingot", + }, + }) + end +end + +minetest.register_alias("homedecor:brass_ingot", "technic:brass_ingot") + +-- the actual crafts + +minetest.register_craft( { + output = "homedecor:copper_strip 12", + recipe = { + { "", "default:copper_ingot", "" }, + { "default:copper_ingot", "", "" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:steel_strip 12", + recipe = { + { "", "default:steel_ingot", "" }, + { "default:steel_ingot", "", "" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:fan_blades 2", + recipe = { + { "", "homedecor:plastic_sheeting", "" }, + { "", "default:steel_ingot", "" }, + { "homedecor:plastic_sheeting", "", "homedecor:plastic_sheeting" } + }, +}) + +minetest.register_craft( { + output = "homedecor:steel_wire 4", + recipe = { + { "", "homedecor:plastic_sheeting", "" }, + { "default:steel_ingot", "homedecor:plastic_sheeting", "default:steel_ingot" }, + { "", "homedecor:plastic_sheeting", "" } + }, +}) + +minetest.register_craft( { + output = "homedecor:copper_wire 4", + recipe = { + { "", "homedecor:plastic_sheeting", "" }, + { "default:copper_ingot", "homedecor:plastic_sheeting", "default:copper_ingot" }, + { "", "homedecor:plastic_sheeting", "" } + }, +}) + +minetest.register_craft( { + output = "homedecor:plastic_strips 3", + recipe = { + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" } + }, +}) + +minetest.register_craft( { + output = "homedecor:heating_element 2", + recipe = { + { "default:copper_ingot", "default:mese_crystal_fragment", "default:copper_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:motor 2", + recipe = { + { "default:mese_crystal_fragment", "homedecor:copper_wire", "homedecor:plastic_sheeting" }, + { "default:copper_ingot", "default:steel_ingot", "default:steel_ingot" }, + { "default:mese_crystal_fragment", "homedecor:copper_wire", "homedecor:plastic_sheeting" } + }, +}) + +minetest.register_craft({ + --type = "shapeless", + output = "homedecor:power_crystal 2", + recipe = { + { "default:mese_crystal_fragment", "default:torch", "default:mese_crystal_fragment" }, + { "default:diamond", "default:gold_ingot", "default:diamond" } + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:power_crystal", + burntime = 50, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:terracotta_base 8", + recipe = { + "default:dirt", + "default:clay_lump", + "bucket:bucket_water" + }, + replacements = { {"bucket:bucket_water", "bucket:bucket_empty"}, }, +}) + +minetest.register_craft({ + type = "cooking", + output = "homedecor:roof_tile_terracotta", + recipe = "homedecor:terracotta_base", +}) + +minetest.register_craft( { + output = "homedecor:shingles_terracotta", + recipe = { + { "homedecor:roof_tile_terracotta", "homedecor:roof_tile_terracotta"}, + { "homedecor:roof_tile_terracotta", "homedecor:roof_tile_terracotta"}, + }, +}) + +minetest.register_craft( { + output = "homedecor:roof_tile_terracotta 8", + recipe = { + { "homedecor:shingles_terracotta", "homedecor:shingles_terracotta" } + } +}) + +minetest.register_craft( { + output = "homedecor:flower_pot_terracotta", + recipe = { + { "homedecor:roof_tile_terracotta", "default:dirt", "homedecor:roof_tile_terracotta" }, + { "homedecor:roof_tile_terracotta", "homedecor:roof_tile_terracotta", "homedecor:roof_tile_terracotta" }, + }, +}) + +-- + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:oil_extract 4", + recipe = { + "group:leaves", + "group:leaves", + "group:leaves", + "group:leaves", + "group:leaves", + "group:leaves" + } +}) + +minetest.register_craft({ + type = "cooking", + output = "homedecor:paraffin", + recipe = "homedecor:oil_extract", +}) + +minetest.register_craft({ + type = "cooking", + output = "homedecor:plastic_sheeting", + recipe = "homedecor:paraffin", +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:oil_extract", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:paraffin", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:plastic_sheeting", + burntime = 30, +}) + +minetest.register_craft( { + output = "homedecor:flower_pot_green", + recipe = { + { "", "dye:dark_green", "" }, + { "homedecor:plastic_sheeting", "default:dirt", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:flower_pot_black", + recipe = { + { "dye:black", "dye:black", "dye:black" }, + { "homedecor:plastic_sheeting", "default:dirt", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + }, +}) + +-- + +minetest.register_craft( { + output = "homedecor:projection_screen 3", + recipe = { + { "", "default:glass", "" }, + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:projection_screen", + burntime = 30, +}) + +-- + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:ceiling_paint 20", + recipe = { + "dye:white", + "dye:white", + "default:sand", + "bucket:bucket_water", + }, + replacements = { { "bucket:bucket_water","bucket:bucket_empty" } } +}) + +minetest.register_craft( { + output = "homedecor:ceiling_tile 10", + recipe = { + { "", "dye:white", "" }, + { "default:steel_ingot", "default:stone", "default:steel_ingot" }, + + }, +}) + + +-- ======================================================= +-- Items/recipes not requiring smelting of anything new + +minetest.register_craft( { + output = "homedecor:glass_table_small_round_b 15", + recipe = { + { "", "default:glass", "" }, + { "default:glass", "default:glass", "default:glass" }, + { "", "default:glass", "" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:glass_table_small_square_b 2", + recipe = { + {"homedecor:glass_table_small_round", "homedecor:glass_table_small_round" }, + } +}) + +minetest.register_craft( { + output = "homedecor:glass_table_large_b 2", + recipe = { + { "homedecor:glass_table_small_square", "homedecor:glass_table_small_square" }, + } +}) + +-- + +minetest.register_craft( { + output = "homedecor:wood_table_small_round_b 15", + recipe = { + { "", "group:wood", "" }, + { "group:wood", "group:wood", "group:wood" }, + { "", "group:wood", "" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:wood_table_small_square_b 2", + recipe = { + { "homedecor:wood_table_small_round","homedecor:wood_table_small_round" }, + } +}) + +minetest.register_craft( { + output = "homedecor:wood_table_large_b 2", + recipe = { + { "homedecor:wood_table_small_square", "homedecor:wood_table_small_square" }, + } +}) + +-- + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:wood_table_small_round_b", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:wood_table_small_square_b", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:wood_table_large_b", + burntime = 30, +}) + +-- + +minetest.register_craft( { + output = "homedecor:shingles_asphalt 6", + recipe = { + { "building_blocks:gravel_spread", "dye:black", "building_blocks:gravel_spread" }, + { "group:sand", "dye:black", "group:sand" }, + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + }, +}) + +-- + +minetest.register_craft( { + output = "homedecor:shingles_wood 12", + recipe = { + { "group:stick", "group:wood"}, + { "group:wood", "group:stick"}, + }, +}) + +minetest.register_craft( { + output = "homedecor:shingles_wood 12", + recipe = { + { "group:wood", "group:stick"}, + { "group:stick", "group:wood"}, + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shingles_wood", + burntime = 30, +}) + +-- + +minetest.register_craft( { + output = "homedecor:skylight 4", + recipe = { + { "homedecor:glass_table_large", "homedecor:glass_table_large" }, + { "homedecor:glass_table_large", "homedecor:glass_table_large" }, + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:skylight_frosted", + recipe = { + "dye:white", + "homedecor:skylight" + }, +}) + +minetest.register_craft({ + type = "cooking", + output = "homedecor:skylight", + recipe = "homedecor:skylight_frosted", +}) + +minetest.register_craft( { + output = "homedecor:shutter 2", + recipe = { + { "group:stick", "group:stick" }, + { "group:stick", "group:stick" }, + { "group:stick", "group:stick" }, + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_oak", + burntime = 30, +}) + +minetest.register_craft( { + output = "homedecor:drawer_small", + recipe = { + { "group:wood", "default:steel_ingot", "group:wood" }, + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:drawer_small", + burntime = 30, +}) + +-- + +minetest.register_craft( { + output = "homedecor:nightstand_oak_one_drawer", + recipe = { + { "homedecor:drawer_small" }, + { "group:wood" }, + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:nightstand_oak_one_drawer", + burntime = 30, +}) + +minetest.register_craft( { + output = "homedecor:nightstand_oak_two_drawers", + recipe = { + { "homedecor:drawer_small" }, + { "homedecor:drawer_small" }, + { "group:wood" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:nightstand_oak_two_drawers", + recipe = { + { "homedecor:nightstand_oak_one_drawer" }, + { "homedecor:drawer_small" }, + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:nightstand_oak_two_drawers", + burntime = 30, +}) + +-- + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:nightstand_mahogany_one_drawer", + recipe = { + "homedecor:nightstand_oak_one_drawer", + "dye:brown", + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:nightstand_mahogany_one_drawer", + burntime = 30, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:nightstand_mahogany_two_drawers", + recipe = { + "homedecor:nightstand_oak_two_drawers", + "dye:brown", + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:nightstand_mahogany_two_drawers", + burntime = 30, +}) + +-- Table legs + +minetest.register_craft( { + output = "homedecor:table_legs_wrought_iron 3", + recipe = { + { "", "default:iron_lump", "" }, + { "", "default:iron_lump", "" }, + { "default:iron_lump", "default:iron_lump", "default:iron_lump" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:table_legs_brass 3", + recipe = { + { "", "technic:brass_ingot", "" }, + { "", "technic:brass_ingot", "" }, + { "technic:brass_ingot", "technic:brass_ingot", "technic:brass_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:utility_table_legs", + recipe = { + { "group:stick", "group:stick", "group:stick" }, + { "group:stick", "", "group:stick" }, + { "group:stick", "", "group:stick" }, + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:utility_table_legs", + burntime = 30, +}) + +-- vertical poles/lampposts + +minetest.register_craft( { + output = "homedecor:pole_brass 4", + recipe = { + { "", "technic:brass_ingot", "" }, + { "", "technic:brass_ingot", "" }, + { "", "technic:brass_ingot", "" } + }, +}) + +minetest.register_craft( { + output = "homedecor:pole_wrought_iron 4", + recipe = { + { "default:iron_lump", }, + { "default:iron_lump", }, + { "default:iron_lump", }, + }, +}) + +-- Home electronics + +minetest.register_craft( { + output = "homedecor:ic 4", + recipe = { + { "mesecons_materials:silicon", "mesecons_materials:silicon" }, + { "mesecons_materials:silicon", "default:copper_ingot" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:television", + recipe = { + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "moreblocks:glow_glass", "homedecor:plastic_sheeting" }, + { "homedecor:ic", "homedecor:ic", "homedecor:ic" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:television", + recipe = { + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "default:glass", "homedecor:plastic_sheeting" }, + { "homedecor:ic", "homedecor:power_crystal", "homedecor:ic" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:stereo", + recipe = { + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:ic", "homedecor:plastic_sheeting" }, + { "default:steel_ingot", "homedecor:ic", "default:steel_ingot" }, + }, +}) + +-- =========================================================== +-- Recipes that require materials from wool (cotton alternate) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:rug_small 8", + recipe = { + "wool:red", + "wool:yellow", + "wool:blue", + "wool:black" + }, +}) + +minetest.register_craft( { + output = "homedecor:rug_persian 8", + recipe = { + { "", "wool:yellow", "" }, + { "wool:red", "wool:blue", "wool:red" }, + { "", "wool:yellow", "" } + }, +}) + +-- cotton versions: + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:rug_small 8", + recipe = { + "cotton:red", + "cotton:yellow", + "cotton:blue", + "cotton:black" + }, +}) + +minetest.register_craft( { + output = "homedecor:rug_persian 8", + recipe = { + { "", "cotton:yellow", "" }, + { "cotton:red", "cotton:blue", "cotton:red" }, + { "", "cotton:yellow", "" } + }, +}) + +-- fuel recipes for same + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:rug_small", + burntime = 30, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:rug_large 2", + recipe = { + "homedecor:rug_small", + "homedecor:rug_small", + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:rug_large", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:rug_persian", + burntime = 30, +}) + +-- Speakers + +minetest.register_craft( { + output = "homedecor:speaker_driver 2", + recipe = { + { "", "default:steel_ingot", "" }, + { "default:paper", "homedecor:copper_wire", "default:iron_lump" }, + { "", "default:steel_ingot", "" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:speaker_small", + recipe = { + { "wool:black", "homedecor:speaker_driver", "group:wood" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:speaker", + recipe = { + { "wool:black", "homedecor:speaker_driver", "group:wood" }, + { "wool:black", "homedecor:speaker_driver", "group:wood" }, + { "wool:black", "group:wood", "group:wood" }, + }, +}) + +-- cotton version + +minetest.register_craft( { + output = "homedecor:speaker_small", + recipe = { + { "cotton:black", "homedecor:speaker_driver", "group:wood" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:speaker", + recipe = { + { "cotton:black", "homedecor:speaker_driver", "group:wood" }, + { "cotton:black", "homedecor:speaker_driver", "group:wood" }, + { "cotton:black", "group:wood", "group:wood" }, + }, +}) + +-- Curtains + +minetest.register_craft( { + output = "homedecor:curtain_closed 4", + recipe = { + { "wool:white", "", ""}, + { "wool:white", "", ""}, + { "wool:white", "", ""}, + }, +}) + +minetest.register_craft( { + output = "homedecor:curtain_closed 4", + recipe = { + { "cottages:wool", "", ""}, + { "cottages:wool", "", ""}, + { "cottages:wool", "", ""}, + }, +}) + +local mats = { + { "brass", "homedecor:pole_brass" }, + { "wrought_iron", "homedecor:pole_wrought_iron" }, + { "wood", "group:stick" } +} + +for i in ipairs(mats) do + local material = mats[i][1] + local ingredient = mats[i][2] + minetest.register_craft( { + output = "homedecor:curtainrod_"..material.." 3", + recipe = { + { ingredient, ingredient, ingredient }, + }, + }) +end + +-- Recycling recipes + +-- Some glass objects recycle via the glass fragments item/recipe in the Vessels mod. + +minetest.register_craft({ + type = "shapeless", + output = "vessels:glass_fragments", + recipe = { + "homedecor:glass_table_small_round", + "homedecor:glass_table_small_round", + "homedecor:glass_table_small_round" + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "vessels:glass_fragments", + recipe = { + "homedecor:glass_table_small_square", + "homedecor:glass_table_small_square", + "homedecor:glass_table_small_square" + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "vessels:glass_fragments", + recipe = { + "homedecor:glass_table_large", + "homedecor:glass_table_large", + "homedecor:glass_table_large" + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "vessels:glass_fragments 2", + recipe = { + "homedecor:skylight", + "homedecor:skylight", + "homedecor:skylight", + "homedecor:skylight", + "homedecor:skylight", + "homedecor:skylight" + } +}) + +-- Wooden tabletops can turn into sticks + +minetest.register_craft({ + type = "shapeless", + output = "default:stick 4", + recipe = { + "homedecor:wood_table_small_round", + "homedecor:wood_table_small_round", + "homedecor:wood_table_small_round" + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "default:stick 4", + recipe = { + "homedecor:wood_table_small_square", + "homedecor:wood_table_small_square", + "homedecor:wood_table_small_square" + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "default:stick 4", + recipe = { + "homedecor:wood_table_large", + "homedecor:wood_table_large", + "homedecor:wood_table_large" + } +}) + +-- Kitchen stuff + +minetest.register_craft({ + output = "homedecor:oven_steel", + recipe = { + {"homedecor:heating_element", "default:steel_ingot", "homedecor:heating_element", }, + {"default:steel_ingot", "moreblocks:iron_glass", "default:steel_ingot", }, + {"default:steel_ingot", "homedecor:heating_element", "default:steel_ingot", }, + } +}) + +minetest.register_craft({ + output = "homedecor:oven_steel", + recipe = { + {"homedecor:heating_element", "default:steel_ingot", "homedecor:heating_element", }, + {"default:steel_ingot", "default:glass", "default:steel_ingot", }, + {"default:steel_ingot", "homedecor:heating_element", "default:steel_ingot", }, + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:oven", + recipe = { + "homedecor:oven_steel", + "dye:white", + "dye:white", + } +}) + +minetest.register_craft({ + output = "homedecor:microwave_oven 2", + recipe = { + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot", }, + {"default:steel_ingot", "moreblocks:iron_glass", "homedecor:ic", }, + {"default:steel_ingot", "default:copper_ingot", "homedecor:power_crystal", }, + } +}) + +minetest.register_craft({ + output = "homedecor:microwave_oven 2", + recipe = { + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot", }, + {"default:steel_ingot", "default:glass", "homedecor:ic", }, + {"default:steel_ingot", "default:copper_ingot", "homedecor:power_crystal", }, + } +}) + +minetest.register_craft({ + output = "homedecor:refrigerator_steel", + recipe = { + {"default:steel_ingot", "homedecor:glowlight_small_cube", "default:steel_ingot", }, + {"default:steel_ingot", "default:copperblock", "default:steel_ingot", }, + {"default:steel_ingot", "default:clay", "default:steel_ingot", }, + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:refrigerator_white", + recipe = { + "homedecor:refrigerator_steel", + "dye:white", + "dye:white", + "dye:white", + } +}) + +minetest.register_craft({ + output = "homedecor:kitchen_cabinet", + recipe = { + {"group:wood", "group:stick", "group:wood", }, + {"group:wood", "group:stick", "group:wood", }, + {"group:wood", "group:stick", "group:wood", }, + } +}) + +minetest.register_craft({ + output = "homedecor:kitchen_cabinet_steel", + recipe = { + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"", "homedecor:kitchen_cabinet", ""}, + } +}) + +minetest.register_craft({ + output = "homedecor:kitchen_cabinet_steel", + recipe = { + {"moreblocks:slab_steelblock_1"}, + { "homedecor:kitchen_cabinet" }, + } +}) + +minetest.register_craft({ + output = "homedecor:kitchen_cabinet_marble", + recipe = { + {"building_blocks:slab_marble"}, + {"homedecor:kitchen_cabinet"}, + } +}) + +minetest.register_craft({ + output = "homedecor:kitchen_cabinet_marble", + recipe = { + {"technic:slab_marble_1"}, + {"homedecor:kitchen_cabinet"}, + } +}) + +minetest.register_craft({ + output = "homedecor:kitchen_cabinet_granite", + recipe = { + {"technic:slab_granite_1"}, + {"homedecor:kitchen_cabinet"}, + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:kitchen_cabinet_half 2", + recipe = { "homedecor:kitchen_cabinet" } +}) + +minetest.register_craft({ + output = "homedecor:kitchen_cabinet_with_sink", + recipe = { + {"group:wood", "default:steel_ingot", "group:wood", }, + {"group:wood", "default:steel_ingot", "group:wood", }, + {"group:wood", "group:stick", "group:wood", }, + } +}) + +------- Lighting + +-- candles + +minetest.register_craft({ + output = "homedecor:candle_thin 4", + recipe = { + {"farming:string" }, + {"homedecor:paraffin" } + } +}) + +minetest.register_craft({ + output = "homedecor:candle 2", + recipe = { + {"farming:string" }, + {"homedecor:paraffin" }, + {"homedecor:paraffin" } + } +}) + +minetest.register_craft({ + output = "homedecor:wall_sconce 2", + recipe = { + {"default:iron_lump", "", ""}, + {"default:iron_lump", "homedecor:candle", ""}, + {"default:iron_lump", "", ""}, + } +}) + +minetest.register_craft({ + output = "homedecor:candlestick_wrought_iron", + recipe = { + {""}, + {"homedecor:candle_thin"}, + {"default:iron_lump"}, + } +}) + +minetest.register_craft({ + output = "homedecor:candlestick_brass", + recipe = { + {""}, + {"homedecor:candle_thin"}, + {"technic:brass_ingot"}, + } +}) + +minetest.register_craft({ + output = "homedecor:oil_lamp", + recipe = { + { "", "vessels:glass_bottle", "" }, + { "", "farming:string", "" }, + { "default:steel_ingot", "homedecor:oil_extract", "default:steel_ingot" } + } +}) + +minetest.register_craft({ + output = "homedecor:oil_lamp_tabletop", + recipe = { + { "", "vessels:glass_bottle", "" }, + { "", "farming:string", "" }, + { "default:iron_lump", "homedecor:oil_extract", "default:iron_lump" } + } +}) + +-- Wrought-iron wall latern + +minetest.register_craft({ + output = "homedecor:ground_lantern", + recipe = { + { "default:iron_lump", "default:iron_lump", "default:iron_lump" }, + { "default:iron_lump", "default:torch", "default:iron_lump" }, + { "", "default:iron_lump", "" } + } +}) + +-- wood-lattice lamps + +minetest.register_craft( { + output = "homedecor:lattice_lantern_large 2", + recipe = { + { "dye:black", "dye:yellow", "dye:black" }, + { "group:stick", "building_blocks:woodglass", "group:stick" }, + { "group:stick", "homedecor:power_crystal", "group:stick" } + }, +}) + +minetest.register_craft( { + output = "homedecor:lattice_lantern_small 8", + recipe = { + { "homedecor:lattice_lantern_large" }, + }, +}) + +-- glowlights + +minetest.register_craft({ + output = "homedecor:glowlight_half 6", + recipe = { + { "dye:white", "dye:white", "dye:white" }, + { "default:glass", "homedecor:power_crystal", "default:glass", }, + } +}) + +minetest.register_craft({ + output = "homedecor:glowlight_half 6", + recipe = { + { "dye:white", "dye:white", "dye:white" }, + {"moreblocks:super_glow_glass", "moreblocks:glow_glass", "moreblocks:super_glow_glass", }, + } +}) + +minetest.register_craft({ + output = "homedecor:glowlight_quarter 6", + recipe = { + {"homedecor:glowlight_half", "homedecor:glowlight_half", "homedecor:glowlight_half", }, + } +}) + +minetest.register_craft({ + output = "homedecor:glowlight_small_cube 8", + recipe = { + { "dye:white" }, + { "default:glass" }, + { "homedecor:power_crystal" }, + } +}) + +minetest.register_craft({ + output = "homedecor:glowlight_small_cube 8", + recipe = { + {"dye:white" }, + {"moreblocks:super_glow_glass" }, + } +}) + +minetest.register_craft({ + output = "homedecor:glowlight_small_cube 4", + recipe = { + {"homedecor:glowlight_half" }, + } +}) + +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" + } +}) + +---- + +minetest.register_craft({ + output = "homedecor:plasma_lamp", + recipe = { + {"", "default:glass", ""}, + {"default:glass", "homedecor:power_crystal", "default:glass"}, + {"", "default:glass", ""} + } +}) + +minetest.register_craft({ + output = "homedecor:plasma_ball 2", + recipe = { + {"", "default:glass", ""}, + {"default:glass", "default:copper_ingot", "default:glass"}, + {"homedecor:plastic_sheeting", "homedecor:power_crystal", "homedecor:plastic_sheeting"} + } +}) + +-- Brass/wrought iron fences + + +minetest.register_craft( { + output = "homedecor:fence_brass 6", + recipe = { + { "technic:brass_ingot", "technic:brass_ingot", "technic:brass_ingot" }, + { "technic:brass_ingot", "technic:brass_ingot", "technic:brass_ingot" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:fence_wrought_iron 6", + recipe = { + { "default:iron_lump","default:iron_lump","default:iron_lump" }, + { "default:iron_lump","default:iron_lump","default:iron_lump" }, + }, +}) + +-- other types of fences + +minetest.register_craft( { + 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( { + type = "shapeless", + output = "homedecor:fence_wrought_iron_2_corner", + recipe = { + "homedecor:fence_wrought_iron_2", + "homedecor:fence_wrought_iron_2" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_wrought_iron_2 2", + recipe = { + "homedecor:fence_wrought_iron_2_corner", + }, +}) + +-- + +minetest.register_craft( { + output = "homedecor:fence_picket 6", + recipe = { + { "group:stick", "group:stick", "group:stick" }, + { "group:stick", "", "group:stick" }, + { "group:stick", "group:stick", "group:stick" } + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_picket_corner", + recipe = { + "homedecor:fence_picket", + "homedecor:fence_picket" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_picket 2", + recipe = { + "homedecor:fence_picket_corner" + }, +}) + +-- + + +minetest.register_craft( { + output = "homedecor:fence_picket_white 6", + recipe = { + { "group:stick", "group:stick", "group:stick" }, + { "group:stick", "dye:white", "group:stick" }, + { "group:stick", "group:stick", "group:stick" } + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_picket_corner_white", + recipe = { + "homedecor:fence_picket_white", + "homedecor:fence_picket_white" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_picket_white 2", + recipe = { + "homedecor:fence_picket_corner_white" + }, +}) + +-- + + +minetest.register_craft( { + output = "homedecor:fence_privacy 6", + recipe = { + { "group:wood", "group:stick", "group:wood" }, + { "group:wood", "", "group:wood" }, + { "group:wood", "group:stick", "group:wood" } + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_privacy_corner", + recipe = { + "homedecor:fence_privacy", + "homedecor:fence_privacy" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_privacy 2", + recipe = { + "homedecor:fence_privacy_corner" + }, +}) + +-- + + +minetest.register_craft( { + output = "homedecor:fence_barbed_wire 6", + recipe = { + { "group:stick", "homedecor:steel_wire", "group:stick" }, + { "group:stick", "", "group:stick" }, + { "group:stick", "homedecor:steel_wire", "group:stick" } + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_barbed_wire_corner", + recipe = { "homedecor:fence_barbed_wire", "homedecor:fence_barbed_wire" }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_barbed_wire 2", + recipe = { "homedecor:fence_barbed_wire_corner" }, +}) + +-- + + +minetest.register_craft( { + output = "homedecor:fence_chainlink 9", + recipe = { + { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }, + { "homedecor:steel_wire", "homedecor:steel_wire", "default:steel_ingot" }, + { "homedecor:steel_wire", "homedecor:steel_wire", "default:steel_ingot" } + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_chainlink_corner", + recipe = { "homedecor:fence_chainlink", "homedecor:fence_chainlink" }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_chainlink 2", + recipe = { "homedecor:fence_chainlink_corner" }, +}) + + +-- Gates + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:gate_picket_white_closed", + recipe = { + "homedecor:fence_picket_white" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_picket_white", + recipe = { + "homedecor:gate_picket_white_closed" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:gate_picket_closed", + recipe = { + "homedecor:fence_picket" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_picket", + recipe = { + "homedecor:gate_picket_closed" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:gate_barbed_wire_closed", + recipe = { + "homedecor:fence_barbed_wire" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_barbed_wire", + recipe = { + "homedecor:gate_barbed_wire_closed" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:gate_chainlink_closed", + recipe = { + "homedecor:fence_chainlink" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_chainlink", + recipe = { + "homedecor:gate_chainlink_closed" + }, +}) + +------ Doors + +-- plain wood, non-windowed + +minetest.register_craft( { + output = "homedecor:door_wood_plain_left 2", + recipe = { + { "group:wood", "group:wood", "" }, + { "group:wood", "group:wood", "default:steel_ingot" }, + { "group:wood", "group:wood", "" }, + }, +}) + +-- fancy exterior + +minetest.register_craft( { + output = "homedecor:door_exterior_fancy_left 2", + recipe = { + { "group:wood", "default:glass" }, + { "group:wood", "group:wood" }, + { "group:wood", "group:wood" }, + }, +}) + +-- wood and glass (grid style) + +-- bare + +minetest.register_craft( { + output = "homedecor:door_wood_glass_oak_left 2", + recipe = { + { "default:glass", "group:wood" }, + { "group:wood", "default:glass" }, + { "default:glass", "group:wood" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:door_wood_glass_oak_left 2", + recipe = { + { "group:wood", "default:glass" }, + { "default:glass", "group:wood" }, + { "group:wood", "default:glass" }, + }, +}) + +-- mahogany + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:door_wood_glass_mahogany_left 2", + recipe = { + "default:dirt", + "default:coal_lump", + "homedecor:door_wood_glass_oak_left", + "homedecor:door_wood_glass_oak_left" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:door_wood_glass_mahogany_left 2", + recipe = { + "dye:brown", + "homedecor:door_wood_glass_oak_left", + "homedecor:door_wood_glass_oak_left" + }, +}) + +-- white + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:door_wood_glass_white_left 2", + recipe = { + "dye:white", + "homedecor:door_wood_glass_oak_left", + "homedecor:door_wood_glass_oak_left" + }, +}) + +-- Solid glass with metal handle + +minetest.register_craft( { + output = "homedecor:door_glass_left 2", + recipe = { + { "default:glass", "default:glass" }, + { "default:glass", "default:steel_ingot" }, + { "default:glass", "default:glass" }, + }, +}) + +-- Closet doors + +-- oak + +minetest.register_craft( { + output = "homedecor:door_closet_oak_left 2", + recipe = { + { "", "group:stick", "group:stick" }, + { "default:steel_ingot", "group:stick", "group:stick" }, + { "", "group:stick", "group:stick" }, + }, +}) + +-- mahogany + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:door_closet_mahogany_left 2", + recipe = { + "homedecor:door_closet_oak_left", + "homedecor:door_closet_oak_left", + "default:dirt", + "default:coal_lump", + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:door_closet_mahogany_left 2", + recipe = { + "homedecor:door_closet_oak_left", + "homedecor:door_closet_oak_left", + "dye:brown" + }, +}) + +-- wrought fence-like door + +minetest.register_craft( { + output = "homedecor:door_wrought_iron_left 2", + recipe = { + { "homedecor:pole_wrought_iron", "default:iron_lump" }, + { "homedecor:pole_wrought_iron", "default:iron_lump" }, + { "homedecor:pole_wrought_iron", "default:iron_lump" } + }, +}) + +-- bedroom door + +minetest.register_craft( { + output = "homedecor:door_bedroom_left", + recipe = { + { "dye:white", "dye:white", "" }, + { "homedecor:door_wood_plain_left", "technic:brass_ingot", "" }, + { "", "", "" }, + }, +}) + +-- woodglass door + +minetest.register_craft( { + output = "homedecor:door_woodglass_left", + recipe = { + { "group:wood", "default:glass", "" }, + { "group:wood", "default:glass", "technic:brass_ingot" }, + { "group:wood", "group:wood", "" }, + }, +}) + +-- woodglass door type 2 + +minetest.register_craft( { + output = "homedecor:door_woodglass2_left", + recipe = { + { "default:glass", "default:glass", "" }, + { "group:wood", "group:wood", "default:iron_lump" }, + { "group:wood", "group:wood", "" }, + }, +}) + +-- laundry stuff + +minetest.register_craft( { + output = "homedecor:washing_machine", + recipe = { + { "default:steel_ingot", "default:steel_ingot", "homedecor:ic" }, + { "default:steel_ingot", "bucket:bucket_water", "default:steel_ingot" }, + { "default:steel_ingot", "homedecor:motor", "default:steel_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:washing_machine", + recipe = { + { "default:steel_ingot", "default:steel_ingot", "homedecor:ic" }, + { "default:steel_ingot", "bucket:bucket_water", "default:steel_ingot" }, + { "default:steel_ingot", "technic:motor", "default:steel_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:dryer", + recipe = { + { "default:steel_ingot", "default:steel_ingot", "homedecor:ic" }, + { "default:steel_ingot", "bucket:bucket_empty", "homedecor:motor" }, + { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:dryer", + recipe = { + { "default:steel_ingot", "default:steel_ingot", "homedecor:ic" }, + { "default:steel_ingot", "bucket:bucket_empty", "technic:motor" }, + { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:ironing_board", + recipe = { + { "wool:grey", "wool:grey", "wool:grey"}, + { "", "default:steel_ingot", "" }, + { "default:steel_ingot", "", "default:steel_ingot" } + }, +}) + +-- dishwashers + +minetest.register_craft( { + output = "homedecor:dishwasher", + recipe = { + { "homedecor:ic", "homedecor:fence_chainlink", "default:steel_ingot", }, + { "default:steel_ingot", "homedecor:shower_head", "homedecor:motor" }, + { "default:steel_ingot", "homedecor:heating_element", "bucket:bucket_water" } + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher", + recipe = { + { "homedecor:ic", "homedecor:fence_chainlink", "default:steel_ingot", }, + { "default:steel_ingot", "homedecor:shower_head", "technic:motor" }, + { "default:steel_ingot", "homedecor:heating_element", "bucket:bucket_water" } + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_wood", + recipe = { + { "stairs:slab_wood" }, + { "homedecor:dishwasher" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_wood", + recipe = { + { "moreblocks:slab_wood" }, + { "homedecor:dishwasher" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_wood", + recipe = { + { "moreblocks:slab_wood_1" }, + { "homedecor:dishwasher" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_steel", + recipe = { + { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }, + { "", "homedecor:dishwasher", "" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_steel", + recipe = { + { "moreblocks:slab_steelblock_1" }, + { "homedecor:dishwasher" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_marble", + recipe = { + { "building_blocks:slab_marble" }, + { "homedecor:dishwasher" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_marble", + recipe = { + { "technic:slab_marble_1" }, + { "homedecor:dishwasher" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_granite", + recipe = { + { "technic:slab_granite_1" }, + { "homedecor:dishwasher" }, + }, +}) + +-- paintings + +minetest.register_craft({ + output = "homedecor:blank_canvas", + recipe = { + { "", "group:stick", "" }, + { "group:stick", "wool:white", "group:stick" }, + { "", "group:stick", "" }, + } +}) + +local painting_patterns = { + [1] = { { "brown", "red", "brown" }, + { "dark_green", "red", "green" } }, + + [2] = { { "green", "yellow", "green" }, + { "green", "yellow", "green" } }, + + [3] = { { "green", "pink", "green" }, + { "brown", "pink", "brown" } }, + + [4] = { { "black", "orange", "grey" }, + { "dark_green", "orange", "orange" } }, + + [5] = { { "blue", "orange", "yellow" }, + { "green", "red", "brown" } }, + + [6] = { { "green", "red", "orange" }, + { "orange", "yellow", "green" } }, + + [7] = { { "blue", "dark_green", "dark_green" }, + { "green", "grey", "green" } }, + + [8] = { { "blue", "blue", "blue" }, + { "green", "green", "green" } }, + + [9] = { { "blue", "blue", "dark_green" }, + { "green", "grey", "dark_green" } }, + + [10] = { { "green", "white", "green" }, + { "dark_green", "white", "dark_green" } }, + + [11] = { { "blue", "white", "blue" }, + { "blue", "grey", "dark_green" } }, + + [12] = { { "green", "green", "green" }, + { "grey", "grey", "green" } }, + + [13] = { { "blue", "blue", "grey" }, + { "dark_green", "white", "white" } }, + + [14] = { { "red", "yellow", "blue" }, + { "blue", "green", "violet" } }, + + [15] = { { "blue", "yellow", "blue" }, + { "black", "black", "black" } }, + + [16] = { { "red", "orange", "blue" }, + { "black", "dark_grey", "grey" } }, + + [17] = { { "orange", "yellow", "orange" }, + { "black", "black", "black" } }, + + [18] = { { "grey", "dark_green", "grey" }, + { "white", "white", "white" } }, + + [19] = { { "white", "brown", "green" }, + { "green", "brown", "brown" } }, + + [20] = { { "blue", "blue", "blue" }, + { "red", "brown", "grey" } } +} + +for i,recipe in pairs(painting_patterns) do + + local item1 = "dye:"..recipe[1][1] + local item2 = "dye:"..recipe[1][2] + local item3 = "dye:"..recipe[1][3] + local item4 = "dye:"..recipe[2][1] + local item5 = "dye:"..recipe[2][2] + local item6 = "dye:"..recipe[2][3] + + minetest.register_craft({ + output = "homedecor:painting_"..i, + recipe = { + { item1, item2, item3 }, + { item4, item5, item6 }, + {"", "homedecor:blank_canvas", "" } + } + }) +end + +-- more misc stuff here + +minetest.register_craft({ + output = "homedecor:chimney 2", + recipe = { + { "default:clay_brick", "", "default:clay_brick" }, + { "default:clay_brick", "", "default:clay_brick" }, + { "default:clay_brick", "", "default:clay_brick" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:fishtank", + recipe = { + { "homedecor:plastic_sheeting", "homedecor:glowlight_small_cube", "homedecor:plastic_sheeting" }, + { "default:glass", "bucket:bucket_water", "default:glass" }, + { "default:glass", "building_blocks:gravel_spread", "default:glass" }, + }, + replacements = { {"bucket:bucket_water", "bucket:bucket_empty"} } +}) + +minetest.register_craft({ + output = "homedecor:towel_rod", + recipe = { + { "group:wood", "group:stick", "group:wood" }, + { "", "building_blocks:terrycloth_towel", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:toilet_paper", + recipe = { + { "", "default:paper", "default:paper" }, + { "group:wood", "group:stick", "default:paper" }, + { "", "default:paper", "default:paper" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:medicine_cabinet", + recipe = { + { "group:stick", "default:glass", "group:stick" }, + { "group:stick", "default:glass", "group:stick" }, + { "group:stick", "default:glass", "group:stick" } + }, +}) + +minetest.register_craft({ + output = "homedecor:cardboard_box 2", + recipe = { + { "default:paper", "", "default:paper" }, + { "default:paper", "default:paper", "default:paper" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:cardboard_box_big 2", + recipe = { + { "default:paper", "", "default:paper" }, + { "default:paper", "", "default:paper" }, + { "default:paper", "default:paper", "default:paper" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:desk", + recipe = { + { "stairs:slab_wood", "stairs:slab_wood", "stairs:slab_wood" }, + { "homedecor:drawer_small", "default:wood", "default:wood" }, + { "homedecor:drawer_small", "", "default:wood" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:desk", + recipe = { + { "moreblocks:slab_wood", "moreblocks:slab_wood", "moreblocks:slab_wood" }, + { "homedecor:drawer_small", "default:wood", "default:wood" }, + { "homedecor:drawer_small", "", "default:wood" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:filing_cabinet", + recipe = { + { "", "default:wood", "" }, + { "default:wood", "homedecor:drawer_small", "default:wood" }, + { "", "default:wood", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:analog_clock_plastic 2", + recipe = { + { "homedecor:plastic_sheeting", "dye:black", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:ic", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "dye:black", "homedecor:plastic_sheeting" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:analog_clock_wood 2", + recipe = { + { "group:stick", "dye:black", "group:stick" }, + { "group:stick", "homedecor:ic", "group:stick" }, + { "group:stick", "dye:black", "group:stick" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:digital_clock 2", + recipe = { + { "homedecor:plastic_sheeting", "default:paper", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:ic", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:power_crystal", "homedecor:plastic_sheeting" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:alarm_clock", + recipe = { + { "homedecor:plastic_sheeting", "homedecor:speaker_driver", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:digital_clock", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:power_crystal", "homedecor:plastic_sheeting" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:air_conditioner", + recipe = { + { "default:steel_ingot", "building_blocks:grate", "default:steel_ingot" }, + { "default:steel_ingot", "homedecor:fan_blades", "homedecor:motor" }, + { "default:steel_ingot", "homedecor:motor", "default:steel_ingot" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:air_conditioner", + recipe = { + { "default:steel_ingot", "building_blocks:grate", "default:steel_ingot" }, + { "default:steel_ingot", "technic:motor", "default:steel_ingot" }, + { "default:steel_ingot", "technic:motor", "default:steel_ingot" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:ceiling_fan", + recipe = { + { "homedecor:motor" }, + { "homedecor:fan_blades" }, + { "homedecor:glowlight_small_cube" } + } +}) + +minetest.register_craft({ + output = "homedecor:ceiling_fan", + recipe = { + { "technic:motor" }, + { "homedecor:fan_blades" }, + { "homedecor:glowlight_small_cube" } + } +}) + +minetest.register_craft({ + output = "homedecor:welcome_mat_grey 2", + recipe = { + { "", "dye:black", "" }, + { "wool:grey", "wool:grey", "wool:grey" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:welcome_mat_brown 2", + recipe = { + { "", "dye:black", "" }, + { "wool:brown", "wool:brown", "wool:brown" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:welcome_mat_green 2", + recipe = { + { "", "dye:white", "" }, + { "wool:dark_green", "wool:dark_green", "wool:dark_green" }, + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:window_plain 8", + recipe = { + "dye:white", + "dye:white", + "dye:white", + "dye:white", + "building_blocks:woodglass" + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:window_quartered", + recipe = { + "dye:white", + "group:stick", + "group:stick", + "homedecor:window_plain" + } +}) + +minetest.register_craft({ + output = "homedecor:vcr 2", + recipe = { + { "homedecor:ic", "default:steel_ingot", "homedecor:plastic_sheeting" }, + { "default:iron_lump", "default:iron_lump", "default:iron_lump" }, + { "homedecor:plastic_sheeting", "", "homedecor:plastic_sheeting" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:dvd_player 2", + recipe = { + { "", "homedecor:plastic_sheeting", "" }, + { "default:obsidian_glass", "homedecor:motor", "homedecor:motor" }, + { "default:mese_crystal_fragment", "homedecor:ic", "homedecor:power_crystal" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:dvd_player 2", + recipe = { + { "", "homedecor:plastic_sheeting", "" }, + { "default:obsidian_glass", "technic:motor", "technic:motor" }, + { "default:mese_crystal_fragment", "homedecor:ic", "homedecor:power_crystal" }, + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:dvd_vcr", + recipe = { + "homedecor:vcr", + "homedecor:dvd_player" + }, +}) + +minetest.register_craft({ + output = "homedecor:blinds_thin", + recipe = { + { "group:stick", "homedecor:plastic_sheeting", "group:stick" }, + { "farming:string", "homedecor:plastic_strips", "" }, + { "", "homedecor:plastic_strips", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:blinds_thick", + recipe = { + { "group:stick", "homedecor:plastic_sheeting", "group:stick" }, + { "farming:string", "homedecor:plastic_strips", "homedecor:plastic_strips" }, + { "", "homedecor:plastic_strips", "homedecor:plastic_strips" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:openframe_bookshelf", + recipe = { + {"group:wood", "", "group:wood"}, + {"default:book", "default:book", "default:book"}, + {"group:wood", "", "group:wood"}, + }, +}) + +minetest.register_craft( { + output = "homedecor:desk_fan", + recipe = { + {"default:steel_ingot", "homedecor:fan_blades", "homedecor:motor"}, + {"", "default:steel_ingot", ""} + }, +}) + +minetest.register_craft( { + output = "homedecor:space_heater", + recipe = { + {"homedecor:plastic_sheeting", "homedecor:heating_element", "homedecor:plastic_sheeting"}, + {"homedecor:plastic_sheeting", "homedecor:fan_blades", "homedecor:motor"}, + {"homedecor:plastic_sheeting", "homedecor:heating_element", "homedecor:plastic_sheeting"} + }, +}) + +minetest.register_craft( { + output = "homedecor:radiator", + recipe = { + { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" }, + { "homedecor:ic", "homedecor:heating_element", "" }, + { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" } + }, +}) + +-- bathroom/kitchen tiles + +minetest.register_craft( { + output = "homedecor:bathroom_tiles_light 4", + recipe = { + { "group:marble", "group:marble", "" }, + { "group:marble", "group:marble", "dye:white" } + }, +}) + +minetest.register_craft( { + output = "homedecor:bathroom_tiles_medium 4", + recipe = { + { "group:marble", "group:marble", "" }, + { "group:marble", "group:marble", "dye:grey" } + }, +}) + +minetest.register_craft( { + output = "homedecor:bathroom_tiles_dark 4", + recipe = { + { "group:marble", "group:marble", "" }, + { "group:marble", "group:marble", "dye:dark_grey" } + }, +}) + +-- misc electrical + +minetest.register_craft( { + output = "homedecor:power_outlet", + recipe = { + {"homedecor:plastic_sheeting", "homedecor:copper_strip"}, + {"homedecor:plastic_sheeting", ""}, + {"homedecor:plastic_sheeting", "homedecor:copper_strip"} + }, +}) + +minetest.register_craft( { + output = "homedecor:light_switch", + recipe = { + {"", "homedecor:plastic_sheeting", "homedecor:copper_strip"}, + {"homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:copper_strip"}, + {"", "homedecor:plastic_sheeting", "homedecor:copper_strip"} + }, +}) + +-- doghouse + +minetest.register_craft( { + output = "homedecor:doghouse", + recipe = { + {"homedecor:shingles_terracotta", "homedecor:shingles_terracotta", "homedecor:shingles_terracotta"}, + {"group:wood", "", "group:wood"}, + {"group:wood", "building_blocks:terrycloth_towel", "group:wood"} + }, +}) + +-- japanese walls and mat + +minetest.register_craft( { + output = "homedecor:japanese_wall_top", + recipe = { + {"group:stick", "default:paper"}, + {"default:paper", "group:stick"}, + {"group:stick", "default:paper"} + }, +}) + +minetest.register_craft( { + output = "homedecor:japanese_wall_top", + recipe = { + {"default:paper", "group:stick"}, + {"group:stick", "default:paper"}, + {"default:paper", "group:stick"} + }, +}) + +minetest.register_craft( { + output = "homedecor:japanese_wall_middle", + recipe = { + {"homedecor:japanese_wall_top"} + }, +}) + +minetest.register_craft( { + output = "homedecor:japanese_wall_bottom", + recipe = { + {"homedecor:japanese_wall_middle"} + }, +}) + +minetest.register_craft( { + output = "homedecor:japanese_wall_top", + recipe = { + {"homedecor:japanese_wall_bottom"} + }, +}) + +minetest.register_craft( { + output = "homedecor:tatami_mat", + recipe = { + {"farming:wheat", "farming:wheat", "farming:wheat"} + }, +}) + +minetest.register_craft( { + output = "homedecor:wardrobe", + recipe = { + { "homedecor:drawer_small", "homedecor:kitchen_cabinet" }, + { "homedecor:drawer_small", "default:wood" }, + { "homedecor:drawer_small", "default:wood" } + }, +}) + +minetest.register_craft( { + output = "homedecor:pool_table", + recipe = { + { "wool:dark_green", "wool:dark_green", "wool:dark_green" }, + { "building_blocks:hardwood", "building_blocks:hardwood", "building_blocks:hardwood" }, + { "building_blocks:slab_hardwood", "", "building_blocks:slab_hardwood" } + }, +}) + +minetest.register_craft( { + output = "homedecor:trash_can 3", + recipe = { + { "homedecor:steel_wire", "", "homedecor:steel_wire" }, + { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:telephone", + recipe = { + { "homedecor:speaker_driver", "homedecor:copper_wire", "homedecor:speaker_driver" }, + { "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting" }, + { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:cobweb_corner 5", + recipe = { + { "farming:string", "", "farming:string" }, + { "", "farming:string", "" }, + { "farming:string", "", "farming:string" } + }, +}) + +minetest.register_craft( { + output = "homedecor:well", + recipe = { + { "homedecor:shingles_wood", "homedecor:shingles_wood", "homedecor:shingles_wood" }, + { "group:wood", "group:stick", "group:wood" }, + { "group:stone", "", "group:stone" } + }, +}) + +minetest.register_craft( { + output = "homedecor:coat_tree", + recipe = { + { "group:stick", "group:stick", "group:stick" }, + { "", "group:stick", "" }, + { "", "group:wood", "" } + }, +}) + +minetest.register_craft( { + output = "homedecor:coatrack_wallmount", + recipe = { + { "group:stick", "homedecor:curtainrod_wood", "group:stick" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:doorbell", + recipe = { + { "homedecor:light_switch", "homedecor:power_crystal", "homedecor:speaker_driver" } + }, +}) + + +minetest.register_craft( { + output = "homedecor:bench_large_1", + recipe = { + { "group:wood", "group:wood", "group:wood" }, + { "group:wood", "group:wood", "group:wood" }, + { "homedecor:pole_wrought_iron", "", "homedecor:pole_wrought_iron" } + }, +}) + +minetest.register_craft( { + output = "homedecor:bench_large_2_left", + recipe = { + { "homedecor:shutter_oak", "homedecor:shutter_oak", "homedecor:shutter_oak" }, + { "group:wood", "group:wood", "group:wood" }, + { "stairs:slab_wood", "", "stairs:slab_wood" } + }, +}) + +minetest.register_craft( { + output = "homedecor:bench_large_2_left", + recipe = { + { "homedecor:shutter_oak", "homedecor:shutter_oak", "homedecor:shutter_oak" }, + { "group:wood", "group:wood", "group:wood" }, + { "moreblocks:slab_wood", "", "moreblocks:slab_wood" } + }, +}) + +minetest.register_craft( { + output = "homedecor:kitchen_faucet", + recipe = { + { "", "default:steel_ingot" }, + { "default:steel_ingot", "" }, + { "homedecor:taps", "" } + }, +}) + +minetest.register_craft( { + output = "homedecor:cutlery_set", + recipe = { + { "", "vessels:drinking_glass", "" }, + { "homedecor:steel_strip", "building_blocks:slab_marble", "homedecor:steel_strip" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:cutlery_set", + recipe = { + { "", "vessels:drinking_glass", "" }, + { "homedecor:steel_strip", "building_blocks:micro_marble_1", "homedecor:steel_strip" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:simple_bench", + recipe = { + { "stairs:slab_wood", "stairs:slab_wood", "stairs:slab_wood" }, + { "stairs:slab_wood", "", "stairs:slab_wood" } + }, +}) + +minetest.register_craft( { + output = "homedecor:simple_bench", + recipe = { + { "moreblocks:slab_wood", "moreblocks:slab_wood", "moreblocks:slab_wood" }, + { "moreblocks:slab_wood", "", "moreblocks:slab_wood" } + }, +}) + +minetest.register_craft( { + output = "homedecor:bed_regular", + recipe = { + { "group:stick", "", "group:stick" }, + { "wool:white", "wool:white", "wool:white" }, + { "group:wood", "", "group:wood" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:bed_kingsize", + recipe = { + { "homedecor:bed_regular", "homedecor:bed_regular" } + }, +}) + +minetest.register_craft( { + output = "homedecor:bottle_green", + recipe = { + { "vessels:glass_bottle", "dye:green" } + }, +}) + +minetest.register_craft( { + output = "homedecor:bottle_brown", + recipe = { + { "vessels:glass_bottle", "dye:brown" } + }, +}) + +if not minetest.get_modpath("glooptest") then + + minetest.register_craft({ + output = "glooptest:chainlink 12", + recipe = { + {"", "default:steel_ingot", "default:steel_ingot"}, + { "default:steel_ingot", "", "default:steel_ingot" }, + { "default:steel_ingot", "default:steel_ingot", "" }, + }, + }) + +end + +minetest.register_alias("homedecor:chainlink_steel", "glooptest:chainlink") + +minetest.register_craft({ + output = "homedecor:chains 4", + recipe = { + { "default:steel_ingot", "", "default:steel_ingot"}, + { "glooptest:chainlink", "", "glooptest:chainlink" }, + { "glooptest:chainlink", "", "glooptest:chainlink" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:chainlink_brass 12", + recipe = { + {"", "technic:brass_ingot", "technic:brass_ingot"}, + { "technic:brass_ingot", "", "technic:brass_ingot" }, + { "technic:brass_ingot", "technic:brass_ingot", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:coffee_maker", + recipe = { + {"homedecor:plastic_sheeting", "bucket:bucket_water", "homedecor:plastic_sheeting"}, + {"homedecor:plastic_sheeting", "default:glass", "homedecor:plastic_sheeting"}, + {"homedecor:plastic_sheeting", "homedecor:heating_element", "homedecor:plastic_sheeting"} + }, +}) + +minetest.register_craft({ + output = "homedecor:dartboard", + recipe = { + {"dye:black", "homedecor:plastic_sheeting", "dye:white"}, + {"homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting"}, + {"dye:dark_green", "homedecor:plastic_sheeting", "dye:red"} + }, +}) + +minetest.register_craft({ + output = "homedecor:piano", + recipe = { + { "", "homedecor:steel_wire", "building_blocks:hardwood" }, + { "homedecor:plastic_strips", "homedecor:steel_wire", "building_blocks:hardwood" }, + { "technic:brass_ingot", "default:steelblock", "building_blocks:hardwood" } + }, +}) + +minetest.register_craft({ + output = "homedecor:toaster", + recipe = { + { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" }, + { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" } + }, +}) + +minetest.register_craft({ + output = "homedecor:deckchair", + recipe = { + { "group:stick", "building_blocks:terrycloth_towel", "group:stick" }, + { "group:stick", "building_blocks:terrycloth_towel", "group:stick" }, + { "group:stick", "building_blocks:terrycloth_towel", "group:stick" } + }, +}) + +minetest.register_craft({ + output = "homedecor:deckchair_striped_blue", + type = "shapeless", + recipe = { + "homedecor:deckchair", + "dye:blue" + } +}) + +minetest.register_craft({ + output = "homedecor:office_chair_basic", + recipe = { + { "", "", "wool:black" }, + { "", "wool:black", "default:steel_ingot" }, + { "group:stick", "homedecor:pole_wrought_iron", "group:stick" } + }, +}) + +minetest.register_craft({ + output = "homedecor:office_chair_upscale", + recipe = { + { "dye:black", "building_blocks:sticks", "group:wool" }, + { "homedecor:plastic_sheeting", "group:wool", "default:steel_ingot" }, + { "building_blocks:sticks", "homedecor:pole_wrought_iron", "building_blocks:sticks" } + }, +}) + +minetest.register_craft({ + output = "homedecor:wall_shelf 2", + recipe = { + { "homedecor:wood_table_small_square", "homedecor:curtainrod_wood", "homedecor:curtainrod_wood" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:trophy 3", + recipe = { + { "default:gold_ingot","","default:gold_ingot" }, + { "","default:gold_ingot","" }, + { "group:wood","default:gold_ingot","group:wood" } + }, +}) + +minetest.register_craft({ + output = "homedecor:grandfather_clock", + recipe = { + { "building_blocks:slab_hardwood","homedecor:analog_clock_wood","building_blocks:slab_hardwood" }, + { "building_blocks:slab_hardwood","technic:brass_ingot","building_blocks:slab_hardwood" }, + { "building_blocks:slab_hardwood","technic:brass_ingot","building_blocks:slab_hardwood" } + }, +}) + +minetest.register_craft({ + output = "homedecor:sportbench", + recipe = { + { "stairs:slab_steelblock","homedecor:pole_wrought_iron","stairs:slab_steelblock" }, + { "default:steel_ingot","wool:black","default:steel_ingot" }, + { "default:steel_ingot","wool:black","default:steel_ingot" } + }, +}) + +minetest.register_craft({ + output = "homedecor:skateboard", + recipe = { + { "dye:yellow","dye:green","dye:blue" }, + { "homedecor:wood_table_small_square","homedecor:wood_table_small_square","homedecor:wood_table_small_square" }, + { "default:steel_ingot","","default:steel_ingot" } + }, +}) + +minetest.register_craft({ + output = "homedecor:copper_pans", + recipe = { + { "homedecor:copper_strip","","homedecor:copper_strip" }, + { "default:copper_ingot","","default:copper_ingot" }, + { "default:copper_ingot","","default:copper_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:window_flowerbox", + recipe = { + { "homedecor:roof_tile_terracotta", "default:dirt", "homedecor:roof_tile_terracotta" }, + { "", "homedecor:roof_tile_terracotta", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:paper_towel", + recipe = { + { "homedecor:toilet_paper", "homedecor:toilet_paper" } + }, +}) + +minetest.register_craft({ + output = "homedecor:stonepath 16", + recipe = { + { "stairs:slab_stone","","stairs:slab_stone" }, + { "","stairs:slab_stone","" }, + { "stairs:slab_stone","","stairs:slab_stone" } + }, +}) + +minetest.register_craft({ + output = "homedecor:stonepath 16", + recipe = { + { "moreblocks:slab_stone","","moreblocks:slab_stone" }, + { "","moreblocks:slab_stone","" }, + { "moreblocks:slab_stone","","moreblocks:slab_stone" } + }, +}) + +minetest.register_craft({ + output = "homedecor:stonepath 3", + recipe = { + { "moreblocks:micro_stone_1","","moreblocks:micro_stone_1" }, + { "","moreblocks:micro_stone_1","" }, + { "moreblocks:micro_stone_1","","moreblocks:micro_stone_1" } + }, +}) + +minetest.register_craft({ + output = "homedecor:barbecue", + recipe = { + { "","homedecor:fence_chainlink","" }, + { "default:steel_ingot","fake_fire:embers","default:steel_ingot" }, + { "homedecor:pole_wrought_iron","default:steel_ingot","homedecor:pole_wrought_iron" } + }, +}) + +minetest.register_craft({ + output = "homedecor:beer_tap", + recipe = { + { "group:stick","default:steel_ingot","group:stick" }, + { "homedecor:kitchen_faucet","default:steel_ingot","homedecor:kitchen_faucet" }, + { "default:steel_ingot","default:steel_ingot","default:steel_ingot" } + }, +}) + +minetest.register_craft({ + output = "homedecor:swing", + recipe = { + { "farming:string","","farming:string" }, + { "farming:string","","farming:string" }, + { "farming:string","stairs:slab_wood","farming:string" } + }, +}) + +minetest.register_craft({ + output = "homedecor:swing", + recipe = { + { "farming:string","","farming:string" }, + { "farming:string","","farming:string" }, + { "farming:string","moreblocks:slab_wood","farming:string" } + }, +}) + +minetest.register_craft({ + output = "homedecor:swing", + recipe = { + { "farming:string","","farming:string" }, + { "farming:string","","farming:string" }, + { "farming:string","moreblocks:panel_wood_1","farming:string" } + }, +}) + +local bookcolors = { + "red", + "green", + "blue", + "violet", + "grey", + "brown" +} + +for _, color in ipairs(bookcolors) do + minetest.register_craft({ + type = "shapeless", + output = "homedecor:book_"..color, + recipe = { + "dye:"..color, + "default:book" + }, + }) +end + +minetest.register_craft({ + output = "homedecor:door_japanese_closed", + recipe = { + { "homedecor:japanese_wall_top" }, + { "homedecor:japanese_wall_bottom" } + }, +}) + +minetest.register_craft({ + output = "homedecor:calendar", + recipe = { + { "","dye:red","" }, + { "","dye:black","" }, + { "","default:paper","" } + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:4_bottles_brown", + recipe = { + "homedecor:bottle_brown", + "homedecor:bottle_brown", + "homedecor:bottle_brown", + "homedecor:bottle_brown" + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:4_bottles_green", + recipe = { + "homedecor:bottle_green", + "homedecor:bottle_green", + "homedecor:bottle_green", + "homedecor:bottle_green" + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:4_bottles_multi", + recipe = { + "homedecor:bottle_brown", + "homedecor:bottle_brown", + "homedecor:bottle_green", + "homedecor:bottle_green", + }, +}) + +minetest.register_craft({ + output = "homedecor:wine_rack", + recipe = { + { "homedecor:4_bottles_brown", "group:wood", "homedecor:4_bottles_brown" }, + { "homedecor:4_bottles_brown", "group:wood", "homedecor:4_bottles_brown" }, + { "homedecor:4_bottles_brown", "group:wood", "homedecor:4_bottles_brown" }, + }, +}) + +local picture_dyes = { + {"dye:brown", "dye:green"}, -- the figure sitting by the tree, wielding a pick + {"dye:green", "dye:blue"} -- the "family photo" +} + +for i in ipairs(picture_dyes) do + minetest.register_craft({ + output = "homedecor:picture_frame"..i, + recipe = { + { picture_dyes[i][1], picture_dyes[i][2] }, + { "homedecor:blank_canvas", "group:stick" }, + }, + }) +end + +minetest.register_craft({ + output = "homedecor:desk_lamp 2", + recipe = { + { "", "default:steel_ingot", "homedecor:glowlight_small_cube" }, + { "", "homedecor:steel_strip", "" }, + { "homedecor:plastic_sheeting", "homedecor:copper_wire", "homedecor:plastic_sheeting" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:hanging_lantern 2", + recipe = { + { "default:iron_lump", "default:iron_lump", "" }, + { "default:iron_lump", "homedecor:lattice_lantern_large", "" }, + { "default:iron_lump", "", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:ceiling_lantern 2", + recipe = { + { "default:iron_lump", "default:iron_lump", "default:iron_lump" }, + { "default:iron_lump", "homedecor:lattice_lantern_large", "default:iron_lump" }, + { "", "default:iron_lump", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:wall_lamp 2", + recipe = { + { "", "homedecor:lattice_lantern_large", "" }, + { "default:iron_lump", "group:stick", "" }, + { "default:iron_lump", "group:stick", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:desk_globe", + recipe = { + { "group:stick", "homedecor:plastic_sheeting", "dye:green" }, + { "group:stick", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + { "group:stick", "stairs:slab_wood", "dye:blue" } + }, +}) + +minetest.register_craft({ + output = "homedecor:desk_globe", + recipe = { + { "group:stick", "homedecor:plastic_sheeting", "dye:green" }, + { "group:stick", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + { "group:stick", "moreblocks:slab_wood", "dye:blue" } + }, +}) + +minetest.register_craft({ + output = "homedecor:tool_cabinet", + recipe = { + { "homedecor:motor", "default:axe_steel", "default:pick_steel" }, + { "default:steel_ingot", "homedecor:drawer_small", "default:steel_ingot" }, + { "default:steel_ingot", "homedecor:drawer_small", "default:steel_ingot" } + }, +}) + +minetest.register_craft({ + output = "homedecor:bathroom_set", + recipe = { + { "", "homedecor:glass_table_small_round", "" }, + { "homedecor:plastic_sheeting", "homedecor:glass_table_small_round", "homedecor:plastic_sheeting" }, + { "group:stick", "homedecor:plastic_sheeting", "group:stick" } + }, +}) + +minetest.register_craft({ + output = "homedecor:trash_can_green", + recipe = { + { "homedecor:plastic_sheeting", "", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "dye:green", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" } + }, +}) + +minetest.register_craft({ + output = "homedecor:ceiling_lamp", + recipe = { + { "", "technic:brass_ingot", ""}, + { "", "homedecor:chainlink_brass", ""}, + { "default:glass", "homedecor:glowlight_small", "default:glass"} + }, +}) + +minetest.register_craft({ + output = "homedecor:ceiling_lamp", + recipe = { + { "", "chains:chain_top_brass", ""}, + { "default:glass", "homedecor:glowlight_small", "default:glass"} + }, +}) + +minetest.register_craft({ + output = "homedecor:spiral_staircase", + recipe = { + { "default:steelblock", "homedecor:pole_wrought_iron", "" }, + { "", "homedecor:pole_wrought_iron", "default:steelblock" }, + { "default:steelblock", "homedecor:pole_wrought_iron", "" } + }, +}) + +minetest.register_craft({ + output = "homedecor:soda_machine", + recipe = { + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "dye:red", "default:steel_ingot"}, + {"default:steel_ingot", "default:copperblock", "default:steel_ingot"}, + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:coin 5", + recipe = {"moreblocks:micro_goldblock_1", "default:sword_stone"} +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:coin 15", + recipe = {"default:gold_ingot", "default:sword_steel"} +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:coin 50", + recipe = {"default:goldblock", "default:sword_mese"} +}) + +minetest.register_craft({ + output = "homedecor:lattice_wood 8", + recipe = { + {"group:stick", "group:wood", "group:stick"}, + {"group:wood", "", "group:wood"}, + {"group:stick", "group:wood", "group:stick"}, + }, +}) + +minetest.register_craft({ + output = "homedecor:lattice_white_wood 8", + recipe = { + {"group:stick", "group:wood", "group:stick"}, + {"group:wood", "dye:white", "group:wood"}, + {"group:stick", "group:wood", "group:stick"}, + }, +}) + +minetest.register_craft({ + output = "homedecor:lattice_wood_vegetal 8", + recipe = { + {"group:stick", "group:wood", "group:stick"}, + {"group:wood", "group:leaves", "group:wood"}, + {"group:stick", "group:wood", "group:stick"}, + }, +}) + +minetest.register_craft({ + output = "homedecor:lattice_white_wood_vegetal 8", + recipe = { + {"group:stick", "group:wood", "group:stick"}, + {"group:wood", "group:leaves", "group:wood"}, + {"group:stick", "dye:white", "group:stick"}, + }, +}) + +minetest.register_craft({ + output = "homedecor:stained_glass 8", + recipe = { + {"", "dye:blue", ""}, + {"dye:red", "default:glass", "dye:green"}, + {"", "dye:yellow", ""}, + }, +}) + +minetest.register_craft({ + output = "homedecor:stained_glass 3", + recipe = { + {"", "dye:blue", ""}, + {"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", ""}, + }, +}) + +minetest.register_craftitem("homedecor:flower_pot_small", { + description = S("Small Flower Pot"), + inventory_image = "homedecor_flowerpot_small_inv.png" +}) + +minetest.register_craft( { + output = "homedecor:flower_pot_small", + recipe = { + { "default:clay_brick", "", "default:clay_brick" }, + { "", "default:clay_brick", "" } + } +}) + +minetest.register_craft( { + output = "homedecor:flower_pot_small 3", + recipe = { { "homedecor:flower_pot_terracotta" } } +}) + +minetest.register_craft({ + output = "homedecor:shrubbery_green 3", + recipe = { + { "group:leaves", "group:leaves", "group:leaves" }, + { "group:leaves", "group:leaves", "group:leaves" }, + { "group:stick", "group:stick", "group:stick" } + } +}) + +for _, color in ipairs(homedecor.shrub_colors) do + + minetest.register_craft({ + type = "shapeless", + output = "homedecor:shrubbery_large_"..color, + recipe = { + "homedecor:shrubbery_"..color + } + }) + + minetest.register_craft({ + type = "shapeless", + output = "homedecor:shrubbery_"..color, + recipe = { + "homedecor:shrubbery_large_"..color + } + }) + + if color ~= "green" then + minetest.register_craft({ + type = "shapeless", + output = "homedecor:shrubbery_large_"..color, + recipe = { + "homedecor:shrubbery_large_green", + "dye:"..color + } + }) + + minetest.register_craft({ + type = "shapeless", + output = "homedecor:shrubbery_"..color, + recipe = { + "homedecor:shrubbery_green", + "dye:"..color + } + }) + + end +end + +for i in ipairs(homedecor.banister_materials) do + + local name = homedecor.banister_materials[i][1] + local topmat = homedecor.banister_materials[i][5] + local vertmat = homedecor.banister_materials[i][6] + local dye1 = homedecor.banister_materials[i][7] + local dye2 = homedecor.banister_materials[i][8] + + minetest.register_craft({ + output = "homedecor:banister_"..name.."_horizontal 2", + recipe = { + { topmat, "", dye1 }, + { vertmat, topmat, "" }, + { dye2, vertmat, topmat } + }, + }) +end + +if (minetest.get_modpath("technic") and minetest.get_modpath("dye") and minetest.get_modpath("bees")) then + technic.register_separating_recipe({ input = {"bees:wax 1"}, output = {"homedecor:oil_extract 2","dye:yellow 1"} }) +end diff --git a/patches/subgame-basis/mods/homedecor_modpack/homedecor/gastronomy.lua b/patches/subgame-basis/mods/homedecor_modpack/homedecor/gastronomy.lua new file mode 100644 index 0000000..d261700 --- /dev/null +++ b/patches/subgame-basis/mods/homedecor_modpack/homedecor/gastronomy.lua @@ -0,0 +1,236 @@ + +local S = homedecor_i18n.gettext + +local cutlery_cbox = { + type = "fixed", + fixed = { + { -5/16, -8/16, -6/16, 5/16, -7/16, 2/16 }, + { -2/16, -8/16, 2/16, 2/16, -4/16, 6/16 } + } +} + +homedecor.register("cutlery_set", { + drawtype = "mesh", + mesh = "homedecor_cutlery_set.obj", + tiles = { "homedecor_cutlery_set.png" }, + inventory_image = "homedecor_cutlery_set_inv.png", + description = S("Cutlery set"), + groups = {snappy=3}, + selection_box = cutlery_cbox, + walkable = false, + sounds = default.node_sound_glass_defaults(), +}) + +local bottle_cbox = { + type = "fixed", + fixed = { + { -0.125, -0.5, -0.125, 0.125, 0, 0.125} + } +} + +local fbottle_cbox = { + type = "fixed", + fixed = { + { -0.375, -0.5, -0.3125, 0.375, 0, 0.3125 } + } +} + +local bottle_colors = { + { "brown", S("Brown bottle"), S("Four brown bottles") }, + { "green", S("Green bottle"), S("Four green bottles") }, +} + +for _, b in ipairs(bottle_colors) do + + local name, desc, desc4 = unpack(b) + + homedecor.register("bottle_"..name, { + tiles = { "homedecor_bottle_"..name..".png" }, + inventory_image = "homedecor_bottle_"..name.."_inv.png", + description = desc, + mesh = "homedecor_bottle.obj", + walkable = false, + groups = {snappy=3}, + sounds = default.node_sound_glass_defaults(), + selection_box = bottle_cbox + }) + + -- 4-bottle sets + + homedecor.register("4_bottles_"..name, { + tiles = { + "homedecor_bottle_"..name..".png", + "homedecor_bottle_"..name..".png" + }, + inventory_image = "homedecor_4_bottles_"..name.."_inv.png", + description = desc4, + mesh = "homedecor_4_bottles.obj", + walkable = false, + groups = {snappy=3}, + sounds = default.node_sound_glass_defaults(), + selection_box = fbottle_cbox + }) +end + +homedecor.register("4_bottles_multi", { + tiles = { + "homedecor_bottle_brown.png", + "homedecor_bottle_green.png" + }, + inventory_image = "homedecor_4_bottles_multi_inv.png", + description = S("Four misc brown/green bottles"), + mesh = "homedecor_4_bottles.obj", + groups = {snappy=3}, + walkable = false, + sounds = default.node_sound_glass_defaults(), + selection_box = fbottle_cbox +}) + +local wine_cbox = homedecor.nodebox.slab_z(-0.75) +homedecor.register("wine_rack", { + description = S("Wine rack"), + mesh = "homedecor_wine_rack.obj", + tiles = { + "homedecor_generic_wood_red.png", + "homedecor_bottle_brown.png", + "homedecor_bottle_brown2.png", + "homedecor_bottle_brown3.png", + "homedecor_bottle_brown4.png" + }, + inventory_image = "homedecor_wine_rack_inv.png", + groups = {choppy=2}, + selection_box = wine_cbox, + collision_box = wine_cbox, + sounds = default.node_sound_defaults(), +}) + +homedecor.register("dartboard", { + description = S("Dartboard"), + mesh = "homedecor_dartboard.obj", + tiles = { "homedecor_dartboard.png" }, + inventory_image = "homedecor_dartboard_inv.png", + wield_image = "homedecor_dartboard_inv.png", + paramtype2 = "wallmounted", + walkable = false, + selection_box = { + type = "wallmounted", + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_wood_defaults(), +}) + +homedecor.register("beer_tap", { + description = S("Beer tap"), + mesh = "homedecor_beer_taps.obj", + tiles = { + "homedecor_generic_metal_bright.png", + { name = "homedecor_generic_metal.png", color = homedecor.color_black } + }, + inventory_image = "homedecor_beertap_inv.png", + groups = { snappy=3 }, + walkable = false, + selection_box = { + type = "fixed", + fixed = { -0.25, -0.5, -0.4375, 0.25, 0.235, 0 } + }, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + local inv = clicker:get_inventory() + + local wieldname = itemstack:get_name() + if wieldname == "vessels:drinking_glass" then + if inv:room_for_item("main", "homedecor:beer_mug 1") then + itemstack:take_item() + clicker:set_wielded_item(itemstack) + inv:add_item("main", "homedecor:beer_mug 1") + minetest.chat_send_player(clicker:get_player_name(), + S("Ahh, a frosty cold beer - look in your inventory for it!")) + else + minetest.chat_send_player(clicker:get_player_name(), + S("No room in your inventory to add a beer mug!")) + end + end + end +}) + +minetest.register_craft({ + output = "homedecor:beer_tap", + recipe = { + { "group:stick","default:steel_ingot","group:stick" }, + { "homedecor:kitchen_faucet","default:steel_ingot","homedecor:kitchen_faucet" }, + { "default:steel_ingot","default:steel_ingot","default:steel_ingot" } + }, +}) + +local beer_cbox = { + type = "fixed", + fixed = { -5/32, -8/16, -9/32 , 7/32, -2/16, 1/32 } +} + +homedecor.register("beer_mug", { + description = S("Beer mug"), + drawtype = "mesh", + mesh = "homedecor_beer_mug.obj", + tiles = { "homedecor_beer_mug.png" }, + inventory_image = "homedecor_beer_mug_inv.png", + groups = { snappy=3, oddly_breakable_by_hand=3 }, + walkable = false, + sounds = default.node_sound_glass_defaults(), + selection_box = beer_cbox, + on_use = function(itemstack, user, pointed_thing) + local inv = user:get_inventory() + if not creative.is_enabled_for(user:get_player_name()) then + if inv:room_for_item("main", "vessels:drinking_glass 1") then + inv:add_item("main", "vessels:drinking_glass 1") + else + local pos = user:get_pos() + local dir = user:get_look_dir() + local fdir = minetest.dir_to_facedir(dir) + local pos_fwd = { x = pos.x + homedecor.fdir_to_fwd[fdir+1][1], + y = pos.y + 1, + z = pos.z + homedecor.fdir_to_fwd[fdir+1][2] } + minetest.add_item(pos_fwd, "vessels:drinking_glass 1") + end + minetest.do_item_eat(2, nil, itemstack, user, pointed_thing) + return itemstack + end + end +}) + +local svm_cbox = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 1.5, 0.5} +} + +homedecor.register("soda_machine", { + description = S("Soda vending machine"), + mesh = "homedecor_soda_machine.obj", + tiles = {"homedecor_soda_machine.png"}, + groups = {snappy=3}, + selection_box = svm_cbox, + collision_box = svm_cbox, + expand = { top="placeholder" }, + sounds = default.node_sound_wood_defaults(), + on_rotate = screwdriver.rotate_simple, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + local playername = clicker:get_player_name() + local wielditem = clicker:get_wielded_item() + local wieldname = wielditem:get_name() + local fdir_to_fwd = { {0, -1}, {-1, 0}, {0, 1}, {1, 0} } + 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] } + if wieldname == "homedecor:coin" then + minetest.spawn_item(pos_drop, "homedecor:soda_can") + minetest.sound_play("insert_coin", { + 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 + minetest.chat_send_player(playername, S("Please insert a coin in the machine.")) + end + end +}) diff --git a/patches/subgame-basis/mods/homedecor_modpack/homedecor/models/homedecor_beer_mug.obj b/patches/subgame-basis/mods/homedecor_modpack/homedecor/models/homedecor_beer_mug.obj new file mode 100644 index 0000000..4e1d6e7 --- /dev/null +++ b/patches/subgame-basis/mods/homedecor_modpack/homedecor/models/homedecor_beer_mug.obj @@ -0,0 +1,421 @@ +# Blender v2.73 (sub 0) OBJ File: 'beer_mug.blend' +# www.blender.org +o Torus.001 +v -0.200872 -0.271336 -0.101373 +v 0.027435 -0.500000 0.013804 +v 0.078127 -0.500000 -0.007193 +v -0.213731 -0.262707 -0.113186 +v 0.116925 -0.500000 -0.045991 +v 0.137922 -0.500000 -0.096683 +v -0.201779 -0.214262 -0.136814 +v 0.137922 -0.500000 -0.151551 +v 0.116925 -0.500000 -0.202243 +v -0.190840 -0.230675 -0.148627 +v 0.078127 -0.500000 -0.241041 +v 0.027435 -0.500000 -0.262038 +v -0.179901 -0.247087 -0.136814 +v -0.027433 -0.500000 -0.262038 +v -0.078125 -0.500000 -0.241041 +v -0.179901 -0.247087 -0.113186 +v -0.116923 -0.500000 -0.202243 +v -0.137920 -0.500000 -0.151551 +v -0.190840 -0.230675 -0.101373 +v -0.137920 -0.500000 -0.096682 +v -0.116923 -0.500000 -0.045991 +v -0.201779 -0.214262 -0.113186 +v -0.078125 -0.500000 -0.007193 +v -0.027433 -0.500000 0.013804 +v -0.183162 -0.175815 -0.136814 +v 0.024062 -0.166667 -0.003152 +v 0.068522 -0.166667 -0.021568 +v -0.175215 -0.198406 -0.148627 +v 0.102550 -0.166667 -0.055596 +v 0.120966 -0.166667 -0.100055 +v -0.167267 -0.220996 -0.136814 +v 0.120966 -0.166667 -0.148178 +v 0.102550 -0.166667 -0.192638 +v -0.167267 -0.220996 -0.113186 +v 0.068522 -0.166667 -0.226666 +v 0.024062 -0.166667 -0.245082 +v -0.175215 -0.198406 -0.101373 +v -0.024061 -0.166667 -0.245082 +v -0.068520 -0.166667 -0.226666 +v -0.183162 -0.175815 -0.113186 +v -0.102548 -0.166667 -0.192638 +v -0.120964 -0.166667 -0.148178 +v -0.159704 -0.151131 -0.136814 +v -0.120964 -0.166667 -0.100055 +v -0.102548 -0.166667 -0.055596 +v -0.155526 -0.177688 -0.148627 +v -0.068520 -0.166667 -0.021568 +v -0.024060 -0.166667 -0.003152 +v -0.151348 -0.204244 -0.136814 +v 0.027435 -0.125001 0.013804 +v 0.078127 -0.125001 -0.007193 +v -0.151348 -0.204244 -0.113186 +v 0.116925 -0.125001 -0.045991 +v 0.137922 -0.125001 -0.096683 +v -0.155526 -0.177688 -0.101373 +v 0.137922 -0.125001 -0.151551 +v 0.116925 -0.125001 -0.202243 +v -0.159704 -0.151131 -0.113186 +v 0.078127 -0.125001 -0.241041 +v 0.027435 -0.125001 -0.262038 +v -0.133701 -0.142626 -0.136814 +v -0.027433 -0.125001 -0.262038 +v -0.078125 -0.125001 -0.241041 +v -0.133701 -0.170549 -0.148627 +v -0.116923 -0.125001 -0.202243 +v -0.137921 -0.125001 -0.151551 +v -0.133701 -0.198472 -0.136814 +v -0.137921 -0.125001 -0.096682 +v -0.116923 -0.125001 -0.045991 +v -0.133701 -0.198472 -0.113186 +v -0.078125 -0.125001 -0.007193 +v -0.027433 -0.125001 0.013804 +v -0.133701 -0.170549 -0.101373 +v 0.024062 -0.125001 -0.003152 +v 0.068522 -0.125001 -0.021568 +v -0.133701 -0.142626 -0.113186 +v 0.102550 -0.125001 -0.055596 +v 0.120966 -0.125001 -0.100055 +v -0.133701 -0.490192 -0.136814 +v 0.120966 -0.125001 -0.148178 +v 0.102550 -0.125001 -0.192638 +v -0.133701 -0.462269 -0.148627 +v 0.068522 -0.125001 -0.226666 +v 0.024062 -0.125001 -0.245082 +v -0.133701 -0.434346 -0.136814 +v -0.024061 -0.125001 -0.245082 +v -0.068520 -0.125001 -0.226666 +v -0.133701 -0.434346 -0.113186 +v -0.102548 -0.125001 -0.192638 +v -0.120964 -0.125001 -0.148178 +v -0.133701 -0.462269 -0.101373 +v -0.120964 -0.125001 -0.100055 +v -0.102548 -0.125001 -0.055596 +v -0.133701 -0.490192 -0.113186 +v -0.068520 -0.125001 -0.021568 +v -0.024061 -0.125001 -0.003152 +v -0.188013 -0.279964 -0.113186 +v -0.188013 -0.279964 -0.136814 +v -0.200872 -0.271336 -0.148627 +v -0.213731 -0.262707 -0.136814 +v -0.217850 -0.316409 -0.113186 +v -0.204329 -0.316409 -0.101373 +v -0.190808 -0.316409 -0.113186 +v -0.190808 -0.316409 -0.136814 +v -0.204329 -0.316409 -0.148627 +v -0.217850 -0.316409 -0.136814 +v -0.213731 -0.370111 -0.113186 +v -0.200872 -0.361482 -0.101373 +v -0.188013 -0.352853 -0.113186 +v -0.188013 -0.352853 -0.136814 +v -0.200872 -0.361482 -0.148627 +v -0.213731 -0.370111 -0.136814 +v -0.201779 -0.418556 -0.113186 +v -0.190840 -0.402143 -0.101373 +v -0.179901 -0.385730 -0.113186 +v -0.179901 -0.385730 -0.136814 +v -0.190840 -0.402143 -0.148627 +v -0.201779 -0.418556 -0.136814 +v -0.183162 -0.457002 -0.113186 +v -0.175215 -0.434412 -0.101373 +v -0.167268 -0.411822 -0.113186 +v -0.167268 -0.411822 -0.136814 +v -0.175215 -0.434412 -0.148627 +v -0.183162 -0.457002 -0.136814 +v -0.159704 -0.481686 -0.113186 +v -0.155526 -0.455130 -0.101373 +v -0.151348 -0.428574 -0.113186 +v -0.151348 -0.428574 -0.136814 +v -0.155526 -0.455130 -0.148627 +v -0.159704 -0.481686 -0.136814 +vt 0.156250 0.218750 +vt 0.156250 0.187500 +vt 0.218750 0.187500 +vt 0.218750 0.218750 +vt 0.465889 0.405864 +vt 0.537350 0.405864 +vt 0.603372 0.433211 +vt 0.653903 0.483742 +vt 0.681251 0.549764 +vt 0.681251 0.621226 +vt 0.653904 0.687248 +vt 0.603372 0.737779 +vt 0.537350 0.765126 +vt 0.465889 0.765126 +vt 0.399867 0.737779 +vt 0.349335 0.687248 +vt 0.321988 0.621226 +vt 0.321988 0.549764 +vt 0.349335 0.483742 +vt 0.399867 0.433211 +vt 0.625000 0.906250 +vt 0.687500 0.906250 +vt 0.687500 0.937500 +vt 0.625000 0.937500 +vt 0.937500 0.906250 +vt 1.000000 0.906250 +vt 1.000000 0.937500 +vt 0.937500 0.937500 +vt 0.250000 0.906250 +vt 0.312500 0.906250 +vt 0.312500 0.937500 +vt 0.250000 0.937500 +vt 0.562500 0.906250 +vt 0.562500 0.937500 +vt 0.875000 0.906250 +vt 0.875000 0.937500 +vt 0.187500 0.906250 +vt 0.187500 0.937500 +vt 0.812500 0.906250 +vt 0.812500 0.937500 +vt 0.437500 0.906250 +vt 0.500000 0.906250 +vt 0.500000 0.937500 +vt 0.437500 0.937500 +vt 0.125000 0.906250 +vt 0.125000 0.937500 +vt 0.750000 0.906250 +vt 0.750000 0.937500 +vt 0.375000 0.906250 +vt 0.375000 0.937500 +vt 0.062500 0.906250 +vt 0.062500 0.937500 +vt -0.000000 0.906250 +vt -0.000000 0.937500 +vt 0.281250 0.312500 +vt 0.281250 0.281250 +vt 0.343750 0.281250 +vt 0.343750 0.312500 +vt 0.093750 0.218750 +vt 0.156250 0.250000 +vt 0.093750 0.250000 +vt 0.375000 1.000000 +vt 0.312500 1.000000 +vt 0.281250 0.250000 +vt 0.343750 0.250000 +vt 0.156250 0.312500 +vt 0.156250 0.281250 +vt 0.218750 0.281250 +vt 0.218750 0.312500 +vt 0.531250 0.187500 +vt 0.593750 0.187500 +vt 0.593750 0.218750 +vt 0.531250 0.218750 +vt 0.656250 0.187500 +vt 0.656250 0.218750 +vt 0.093750 0.187500 +vt 0.218750 0.250000 +vt 0.125000 0.406250 +vt 0.187500 0.406250 +vt 0.687500 1.000000 +vt 0.625000 1.000000 +vt 0.937500 0.406250 +vt 1.000000 0.406250 +vt 0.062500 1.000000 +vt 0.125000 1.000000 +vt 0.375000 0.406250 +vt 0.437500 0.406250 +vt 0.687500 0.406250 +vt 0.750000 0.406250 +vt 0.937500 1.000000 +vt 0.875000 1.000000 +vt 0.250000 0.406250 +vt 0.187500 1.000000 +vt 0.093750 0.343750 +vt 0.093750 0.312500 +vt 0.156250 0.343750 +vt 0.500000 0.406250 +vt 0.812500 0.406250 +vt 0.437500 1.000000 +vt 0.218750 0.156250 +vt 0.281250 0.156250 +vt 0.281250 0.187500 +vt 0.750000 1.000000 +vt 0.031250 0.250000 +vt 0.031250 0.218750 +vt 0.562500 0.406250 +vt -0.000000 0.406250 +vt 0.062500 0.406250 +vt 1.000000 1.000000 +vt 0.343750 0.187500 +vt 0.343750 0.156250 +vt 0.406250 0.156250 +vt 0.406250 0.187500 +vt 0.312500 0.406250 +vt 0.625000 0.406250 +vt 0.250000 1.000000 +vt 0.406250 0.343750 +vt 0.406250 0.312500 +vt 0.468750 0.312500 +vt 0.468750 0.343750 +vt 0.875000 0.406250 +vt 0.468750 0.156250 +vt 0.468750 0.187500 +vt 0.500000 1.000000 +vt 0.812500 1.000000 +vt 0.406250 0.281250 +vt 0.406250 0.250000 +vt 0.562500 1.000000 +vt -0.000000 1.000000 +vt 0.218750 0.343750 +vt 0.531250 0.312500 +vt 0.531250 0.281250 +vt 0.593750 0.281250 +vt 0.593750 0.312500 +vt 0.468750 0.281250 +vt 0.468750 0.250000 +vt 0.531250 0.250000 +vt 0.281250 0.343750 +vt 0.593750 0.250000 +vt 0.281250 0.218750 +vt 0.343750 0.218750 +vt 0.031250 0.156250 +vt 0.093750 0.156250 +vt 0.031250 0.187500 +vt 0.813063 0.373140 +vt 0.756333 0.349641 +vt 0.712914 0.306222 +vt 0.689415 0.249492 +vt 0.689415 0.188087 +vt 0.712914 0.131357 +vt 0.756333 0.087938 +vt 0.813063 0.064439 +vt 0.874467 0.064439 +vt 0.931197 0.087938 +vt 0.974617 0.131357 +vt 0.998115 0.188088 +vt 0.998115 0.249492 +vt 0.974617 0.306222 +vt 0.931197 0.349641 +vt 0.874467 0.373140 +vt 0.156250 0.156250 +vt 0.656250 0.250000 +vt 0.031250 0.312500 +vt 0.031250 0.281250 +vt 0.093750 0.281250 +vt 0.656250 0.281250 +vt 0.656250 0.312500 +vt 0.406250 0.218750 +vt 0.468750 0.218750 +vt 0.031250 0.343750 +vt 0.656250 0.343750 +vt 0.593750 0.343750 +vt 0.531250 0.343750 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.343750 0.343750 +vt 0.656250 0.156250 +s 1 +f 120/1 121/2 115/3 114/4 +f 2/5 24/6 23/7 21/8 20/9 18/10 17/11 15/12 14/13 12/14 11/15 9/16 8/17 6/18 5/19 3/20 +f 51/21 53/22 77/23 75/24 +f 59/25 60/26 84/27 83/28 +f 66/29 68/30 92/31 90/32 +f 50/33 51/21 75/24 74/34 +f 57/35 59/25 83/28 81/36 +f 65/37 66/29 90/32 89/38 +f 56/39 57/35 81/36 80/40 +f 71/41 72/42 96/43 95/44 +f 63/45 65/37 89/38 87/46 +f 54/47 56/39 80/40 78/48 +f 69/49 71/41 95/44 93/50 +f 62/51 63/45 87/46 86/52 +f 53/22 54/47 78/48 77/23 +f 60/53 62/51 86/52 84/54 +f 111/55 112/56 106/57 105/58 +f 72/42 50/33 74/34 96/43 +f 126/59 120/1 119/60 125/61 +f 45/62 44/63 92/31 93/50 +f 106/57 112/56 107/64 101/65 +f 123/66 124/67 118/68 117/69 +f 34/70 52/71 55/72 37/73 +f 55/72 52/71 70/74 73/75 +f 126/59 127/76 121/2 120/1 +f 112/56 118/68 113/77 107/64 +f 15/78 17/79 65/37 63/45 +f 29/80 27/81 75/24 77/23 +f 11/82 12/83 60/26 59/25 +f 38/84 86/52 87/46 39/85 +f 21/86 23/87 71/41 69/49 +f 5/88 6/89 54/47 53/22 +f 35/90 33/91 81/36 83/28 +f 17/79 18/92 66/29 65/37 +f 41/93 39/85 87/46 89/38 +f 128/94 129/95 123/66 122/96 +f 23/87 24/97 72/42 71/41 +f 6/89 8/98 56/39 54/47 +f 47/99 45/62 93/50 95/44 +f 115/3 116/100 110/101 109/102 +f 30/103 29/80 77/23 78/48 +f 94/104 91/105 126/59 125/61 +f 24/97 2/106 50/33 72/42 +f 12/107 14/108 62/51 60/53 +f 36/109 35/90 83/28 84/27 +f 103/110 104/111 98/112 97/113 +f 18/92 20/114 68/30 66/29 +f 2/106 3/115 51/21 50/33 +f 42/116 41/93 89/38 90/32 +f 98/117 99/118 10/119 13/120 +f 8/98 9/121 57/35 56/39 +f 97/113 98/112 13/122 16/123 +f 48/124 47/99 95/44 96/43 +f 32/125 30/103 78/48 80/40 +f 100/126 106/57 101/65 4/127 +f 14/108 15/78 63/45 62/51 +f 118/68 112/56 111/55 117/69 +f 26/128 48/124 96/43 74/34 +f 38/84 36/129 84/54 86/52 +f 20/114 21/86 69/49 68/30 +f 122/96 123/66 117/69 116/130 +f 3/115 5/88 53/22 51/21 +f 44/63 42/116 90/32 92/31 +f 27/81 26/128 74/34 75/24 +f 28/131 25/132 43/133 46/134 +f 9/121 11/82 59/25 57/35 +f 33/91 32/125 80/40 81/36 +f 25/132 7/135 22/136 40/137 +f 116/130 117/69 111/55 110/138 +f 40/137 37/73 55/72 58/139 +f 107/64 108/140 102/141 101/65 +f 105/58 106/57 100/126 99/118 +f 43/133 25/132 40/137 58/139 +f 85/142 128/143 127/76 88/144 +f 26/145 27/146 29/147 30/148 32/149 33/150 35/151 36/152 38/153 39/154 41/155 42/156 44/157 45/158 47/159 48/160 +f 68/30 69/49 93/50 92/31 +f 127/76 128/143 122/161 121/2 +f 55/72 73/75 76/162 58/139 +f 99/118 100/126 7/135 10/119 +f 82/163 79/164 130/165 129/95 +f 119/60 120/1 114/4 113/77 +f 118/68 124/67 119/60 113/77 +f 43/133 61/166 64/167 46/134 +f 10/119 7/135 25/132 28/131 +f 130/165 124/67 123/66 129/95 +f 4/127 1/168 19/169 22/136 +f 124/67 130/165 125/61 119/60 +f 61/166 43/133 58/139 76/162 +f 110/101 104/111 103/110 109/102 +f 108/140 109/102 103/110 102/141 +f 88/144 127/76 126/59 91/105 +f 97/113 16/123 19/169 1/168 +f 82/163 129/95 128/94 85/170 +f 19/169 16/123 34/70 37/73 +f 19/169 37/73 40/137 22/136 +f 46/134 64/167 67/171 49/172 +f 114/4 108/140 107/64 113/77 +f 115/3 109/102 108/140 114/4 +f 101/65 102/141 1/168 4/127 +f 10/119 28/131 31/173 13/120 +f 16/123 13/122 31/174 34/70 +f 102/141 103/110 97/113 1/168 +f 31/174 49/175 52/71 34/70 +f 111/55 105/58 104/176 110/138 +f 7/135 100/126 4/127 22/136 +f 122/161 116/100 115/3 121/2 +f 105/58 99/118 98/117 104/176 +f 31/173 28/131 46/134 49/172 +f 130/165 79/164 94/104 125/61 +f 52/71 49/175 67/177 70/74 diff --git a/patches/subgame-basis/mods/homedecor_modpack/homedecor/textures/homedecor_beer_mug.png b/patches/subgame-basis/mods/homedecor_modpack/homedecor/textures/homedecor_beer_mug.png new file mode 100644 index 0000000000000000000000000000000000000000..2a8092467764c967355400a816270821a6058f57 GIT binary patch literal 1300 zcmV+v1?&2WP)sxVgExy1Kf%y1Bc%yS%rnyt}%*yu7`+t-ZXvy}iA@y}Z7@zQ4MzzrMY{zrVns zOu)dv!Mv}*!NJ0!Ov1ge!=g>Yvx&u}PQ|59#-&fjrccJk#>b{k$EHumw~NT9PspfG z$f!`ss87kLP|3KA$;rvesZh$w%FC!w%c)SysZq(5_O@u2a#jQ_-(e(b3V;uT#>n zQ_|AX)38(1uvF8rRMXSb)Uj05)YR3nRMoOn)v{I9)z#LrRMxUp*0WXC*4EdvRoAmt z*R)mFv{u-(RoJvv*tJ&J*x1>%R@t>z+1c6JwpQA?}6S>U``;NallyIJA9 zS>fT~;=Nhoy;|bp;^V$rlq(=H}<;=jg&*=;-L_!d>a<>FVn0 z>+9?6?CkBvUG44d?(XjI@9*&N@bU5S^78WY^Yiuf_4fAm_xJbs`1twx`TP6({QUg= z{r&#_{{R2~4PCe%0008-NklQLVsKMam zYcfF5fSgjzU=-_==!_uH@-+lOg7~mOFlNjT8qnAMD?nlT-gWh})Hk{~f3PxX!j>Ef9+#FGl>l237~u$8I8F>^gejzhT+T&QIPI5(2*o{^YIjVF z3nvv$-fWZPRMjum;715kl#a)+|Ef zi@Ar<&e+;hIvFU$vpasQR!QH8-DJzZR^IHL$g&F+Xc+y)rjqC7It*){4}#Ez5<_9GbU;Ji&MR$MiTzuj@i8sBx@VEOWk^{1(TJWTv_ zbOIQ87z!pR;V58o0+hqUFl3cVnG_HN6;>`+NO*jKHB-VhR{#hde{FtJ8opC-zNd}* zY=yJd!gK%i#v8BL`>A;V2!90}{uag}n2d@h&K<|$R){bRNZ@J}6;O>VAJhrkAmo&< z2BoM-;jZudq)d4Bh9HpNyZ-u%_OD<6v{<%mi8?F_0Cztc4)5bRXlW}D3JsHpET}A7`8MWxF3aWeC@|>6S#{xsXa8{Bx~KRB7yMbv zA>mFwS$;D~ESvRV_T{iaBh(V zs#L11R4T)J5e+9=dM;!4P*4sNPo+y|oR$5z|1D}(74-HwbDTCsM;qx%twQCO> z92^3r)}m`gtZ>)$;2!Ou*bE#ytS6!p#=#hKFS_V#dB_#8X3fS|#>NU?MS$a6vpIA6 zU}ETsS@zk__OYIx4mNvsFYD|~oCqCbc(}|kUQr0oah8y^qZ z{{7>mj5av&YhODVo+BVk7sj_ z@4>+VAV80>ci-I#!YdLCM%@AKrjMM^a2zR zuW4&D)5>NUJLZ`A?7Z{NW!>G~v1eguffCT-c&E{WQGh#L#70*{(873p{q;A%RX-+y za8kKk8+gY&2$R`t?%ekHnqpCr2MrFENk~+V>-sS<@_mQAsk=K<_pGro1)(&;wr%?a zyrT%uu7ZLxDPSZ8DEL@~_}~4~ORpo_3J$3PBC6V;5Jd#1r>C2BbhJ~>M+*-OjKgF< zB2XJ0Er23=L8w`T?iM^3ESL{M3|U%CmV}fBVbf3d92gj)dzDHRP>K)A@xTM}QML(V ztgxxr_l4*Cylc~@=daD@Gi#ATA5stm67<`hJGY&LuHHyejy?8hP(oKkfNC@_#bIj0 z_r;>2!q(DOp=oYpKV!;7VSOKuE_sLv1rrW7<(d@e#MfhHK}EQ(gZy9se!Jxx-#F=? zUw-)wamp!QRtN0?3l}bWYxnM*Cn*)wd4ffI>mg<^!UUWw0wcaWC+;WWV+K_P|0 z3c<-9_F4P@B)w1=2X85n$3S?^?(OaQ*~X2V-vZ%(eMmqM+)rT4+PF*jyN+`@uwsT- zWQYrk-Zw9Dnui&u6r1K4youyC?(yEJWV}CO#K=g2ybW-I@7mQL?%liZ`Ntl6X3-&0 z0Lp=+1LJfez2yg{Y?v<#vnWwLDOPGnx40}cX1)SFZcKFUv>4>7s{Xfp9FNcG>goo{eH1X!MU;Be z3NYtM0OwgD@R7e+z51^CH{5WAK8Q4^1586<#9GWG1?2lh?8qbgh$syV41yv?!NOIt zjuA>up;tbkIby&sv9M7NS{SLcAb`X=pr>bcq-+V-I??wXfB|EXH(+T_Ug30fbZV$$ z{tBB(Ei0hb|Lp(r?3c(BPKVjbj^o19&~A zNkd_IoPAND5XNwiELju<#ew%m?6F>kx36%Y=;D0O!ayz8TO7b*hFTf@R62?JWDFfo}yP);_PqdoEj z7FBf$h|og19?Rh*n{aUJS#%wyL!{g0J}xNSr@A5uHH!}naA^VC{_*=kr7C@FSAaKg z6JjztUkfOjPU!8O*9Z6MM|;i~1GsQ>dGD`4MIBgl#mx`w{FuD$5E$VDQ4wkOm>xJO z8_U=)MCyzcT^5Kw9?@G2-k5tCEa0}{qwfvf&Qo!f1(w*=*~Y%u_t7Rmr|Uq`Jk3SS zeFBahlUy$Qol7r0x7HE}QZEDquWr8!{I61%i;=4K^z=Z{Gnaq~C)XIuRsjiq7@-m} zWl>+m*}}j=avxOC{P~}OXY`ofBA)ML+5QjLv$4G|zxVy?m;D^#{&Aa;khCFYVYuPF z9mo4o%UJ+HmB>Ia!fHG3VZp%DOa^1%89vi0j5Mu?2cX-}nl%sje=jKn>i`5T9G#t5 zH*__FS#o)7rj|NL(%@@g_2*bv?q|a5!Z|38 z9GbB`5swtn8p00nnj_HqW*~o|*|(+uG_DC@PSIf9QbZvzzVA&|EWgU20A%G50IudT zp8p)n%=!Xr>p7koPNSKV=GL()(bWaza{=DM-7Mp($b!NSCRG8zat9l)ZU-&Z$l`c2 z;kFw^X|f7@$%dmf1i5nMHG0*mUpxk%|Js5we9t2Vf4;?*7~^_kSde9PLT6|`7^7iW zWwm`Tv%=mN*ggsA%xh<^-yM6hmzzWQK}vDaTXHO{4FIm}Wq}@rkbxQ>LjlsE2jJ(q z88{O?$*F(7`M(DLm2fI3eDv!>Fs>upY3<^I4g4H{l0VmCN2va(=}8dv#Y#|{c9udM zz`g-Dbv$$03@QiXNk^$xsJj>7J}Ahc-W&JxCKKR#iz|%J>0qMrW9MW=n8QHqn%E;> zdClwK1>m*VE0Qka6B0y#k7HZP0xs}?No#UafJt>Bxi-94s>y75JOsKsD98>Dioy^u zG!IWv2}*Fyrp!(NG>b2Pv{?&mH%{H~52{X4zOI%Opm0U1K?8NU9=uaVv4GyD53tP0 z8-})Vg!$k07x?6jDxP?yvKl_)vPX48AM+&`j;SZ8Zon(DE%pQS5ZoiQYl3MdC_9U& z0V1hIuV&PD6C`*e`QcN~)L0*vo1UBGtluX^m5izd;s`TW0MHKPeYhq#!68Kyi72zu zQDrb7MnUyyL@sG zj9h#&ND@3Dt4g)7L@x}X;C0jBbtxFT#&#}on~k<6@ZD1@z^pi7IUt&~qo<<)X;O$t zd#jbxmY>=R(897LPje0I4McrFQY=q|k9z^|FXIc1o_FfS8~R^*;5%*;;LcgxfQk?^ zvk&)tucZ(uSHcmv&ptr?*>FSBqC|eISkwhJZmgQ1pK6R>KJhJH%Y?488oGaDGn6)D z2yV+|CkPY)V4#}9?w{Ig5Cft-zPGh30P!XxNgBJes0fRBnz5#UHF=R4GwQmcQ^a;o zJVTLZBnpuREDOykDlNWrBx@LiMi`#IYK;lHf;KCqfyH%r0~?IGKxw8klQhUv#3o7fijWN~4@FjV>j7Pmx`7t{f`Jq1@&sSn^np#k@PvE`0X z4g3w4_o%hx+IE-$Z)9*`&9tGFKJYpoo`cw7hoUUP38_&qRHdi~Gx|N_yUa;>o$(5` z(_qMi$9xGq)_HL)KggC8FuyGmYU*#XSP<)a65=(8 zHZ4rZ09r>#&XdukDvZ@3h*l++^W<{~C2bJOXdi&kkPa1uV;PqL?D;EJTot_b+N)>6 z+oO^8N89Zr7~!q+&p&-g+Xaf5D&WKuW~0ztrbvs8I~|dt5a@D1TzCqg6H_y`dPWpC zxT)V@I|PV1xr~EP8EVV8BN;a#5Klez=8<6Sr(s4l;{l$8`1fGyx8mpY2JaauV9UE@ zTK`iR=b?_>9BTx#5UN?)_&oZTUd*IgLh7c1Q!@ooJZ2M;L1 zC8dyc>j&0s%#GKyvvup1SEUSS*NjJhTIP_n-wmrwC|@)8WMj3-z&>ln~WcZPHwSu_Ib zs#vh-gt=ASbzQMoIeyQcU5)K9f-A88?fCi1EB|s@+h^SaY+or?0RZwjkNGg2Dk8Ei zm06k>G**)J;hfJoOs53{fqaZ@A5vCSS6i?&DUjEd*{Ix)cZY1;DYJ^&uPdSB36V{8 ze&ULE_wwZzJ$gv?2$}gxfhmuGj3*DWi#deW@GnCf8F*9HYXGl7OXTwri1H-*UEDPW zqp`nSs|Bo3$wGx%K_KR+G@V%9c7q%+%;~FF-z^TA0)Tb>kB6*6r8lCO&W(!Lh|Odk zOe&iZ_TPK$uT)1wcE@PC-Zw2JR$FUph%}~I~_Uz{vKcvq;knFG?vg($N;rc zsfb(lm#tiR^_Eg;Y(}(n$~1A~uB>B;tXzyK^7TGNnRkM%riPxV%vuLm~uLq_WK~jaPx$M zlw7r&D6Y8k&RgzdExac6fP4P_On%$_ZCDEzh8u5?>b zz?2?v??0S{f}aWkz0d%TL}FZ?gtpQN53s~8REd&AR8-*~d^l0KWTD!_86deLPz2@X z^DZ$z1j>BYC2)M_4+DDJ0ED=h$11v;mC7}zT#@gA2cGlb+IzRMgLq91f?8u*`7JYl z*QZ4U=9um(_~$QR4Z{!gB+F|i?lF6ybt`aw8IA@tqm9(*LP;3fi=az=Vo=&xsix=l zr>IFj`D0ZB^65bEj9(9t&(m%t6N!1n}U27ZTsK{5th7pyH8%{~xgY~dj;XLUL^7N*NRL96Jfkhk2lkZdhXwsYxlv!lz^Zh`|+u*BlyO51uizzLOia1b=r8*;yrGH3`P2a%wMuArF z73W>Q=_Js{E_N7Se5M!Nf6G|{l%Vdo=`>t-KLe`5tJ?G4SrHCaFu6yqCjp5-`z>E<<=i})Dmg=ek#QkIN^I{PE>+sz+{Pl1P-;xJ3zJ7Yc z*PV_wpI`ao&7mPsi~k%1!A%Lr5}A|oj{)eA8XkqugWTT@%64k$sgPwDml%F2Lw*29kr00000NkvXXu0mjf7)5X! literal 0 HcmV?d00001 diff --git a/patches/subgame/mods/bones/init-0.4.15 or lower.lua b/patches/subgame/mods/bones/init-0.4.15 or lower.lua new file mode 100644 index 0000000..38dc61c --- /dev/null +++ b/patches/subgame/mods/bones/init-0.4.15 or lower.lua @@ -0,0 +1,258 @@ +-- Minetest 0.4 mod: bones +-- See README.txt for licensing and other information. + +local function is_owner(pos, name) + local owner = minetest.get_meta(pos):get_string("owner") + if owner == "" or owner == name or minetest.check_player_privs(name, "protection_bypass") then + return true + end + return false +end + +local bones_formspec = + "size[8,9]" .. + default.gui_bg .. + default.gui_bg_img .. + default.gui_slots .. + "list[current_name;main;0,0.3;8,4;]" .. + "list[current_player;main;0,4.85;8,1;]" .. + "list[current_player;main;0,6.08;8,3;8]" .. + "listring[current_name;main]" .. + "listring[current_player;main]" .. + default.get_hotbar_bg(0,4.85) + +local share_bones_time = tonumber(minetest.setting_get("share_bones_time")) or 1200 +local share_bones_time_early = tonumber(minetest.setting_get("share_bones_time_early")) or share_bones_time / 4 + +minetest.register_node("bones:bones", { + description = "Bones", + tiles = { + "bones_top.png^[transform2", + "bones_bottom.png", + "bones_side.png", + "bones_side.png", + "bones_rear.png", + "bones_front.png" + }, + paramtype2 = "facedir", + groups = {dig_immediate = 2}, + sounds = default.node_sound_gravel_defaults(), + + can_dig = function(pos, player) + local inv = minetest.get_meta(pos):get_inventory() + local name = "" + if player then + name = player:get_player_name() + end + return is_owner(pos, name) and inv:is_empty("main") + end, + + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + if is_owner(pos, player:get_player_name()) then + return count + end + return 0 + end, + + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + return 0 + end, + + allow_metadata_inventory_take = function(pos, listname, index, stack, player) + if is_owner(pos, player:get_player_name()) then + return stack:get_count() + end + return 0 + end, + + on_metadata_inventory_take = function(pos, listname, index, stack, player) + local meta = minetest.get_meta(pos) + if meta:get_inventory():is_empty("main") then + minetest.remove_node(pos) + end + end, + + on_punch = function(pos, node, player) + if not is_owner(pos, player:get_player_name()) then + return + end + + if minetest.get_meta(pos):get_string("infotext") == "" then + return + end + + local inv = minetest.get_meta(pos):get_inventory() + local player_inv = player:get_inventory() + local has_space = true + + for i = 1, inv:get_size("main") do + local stk = inv:get_stack("main", i) + if player_inv:room_for_item("main", stk) then + inv:set_stack("main", i, nil) + player_inv:add_item("main", stk) + else + has_space = false + break + end + end + + -- remove bones if player emptied them + if has_space then + if player_inv:room_for_item("main", {name = "bones:bones"}) then + player_inv:add_item("main", {name = "bones:bones"}) + else + minetest.add_item(pos,"bones:bones") + end + minetest.remove_node(pos) + end + end, + + on_timer = function(pos, elapsed) + local meta = minetest.get_meta(pos) + local time = meta:get_int("time") + elapsed + if time >= share_bones_time then + meta:set_string("infotext", meta:get_string("owner") .. "'s old bones") + meta:set_string("owner", "") + else + meta:set_int("time", time) + return true + end + end, + on_blast = function(pos) + end, +}) + +local function may_replace(pos, player) + local node_name = minetest.get_node(pos).name + local node_definition = minetest.registered_nodes[node_name] + + -- if the node is unknown, we return false + if not node_definition then + return false + end + + -- allow replacing air and liquids + if node_name == "air" or node_definition.liquidtype ~= "none" then + return true + end + + -- don't replace filled chests and other nodes that don't allow it + local can_dig_func = node_definition.can_dig + if can_dig_func and not can_dig_func(pos, player) then + return false + end + + -- default to each nodes buildable_to; if a placed block would replace it, why shouldn't bones? + -- flowers being squished by bones are more realistical than a squished stone, too + -- exception are of course any protected buildable_to + return node_definition.buildable_to and not minetest.is_protected(pos, player:get_player_name()) +end + +local drop = function(pos, itemstack) + local obj = minetest.add_item(pos, itemstack:take_item(itemstack:get_count())) + if obj then + obj:setvelocity({ + x = math.random(-10, 10) / 9, + y = 5, + z = math.random(-10, 10) / 9, + }) + end +end + +minetest.register_on_dieplayer(function(player) + + local bones_mode = minetest.setting_get("bones_mode") or "bones" + if bones_mode ~= "bones" and bones_mode ~= "drop" and bones_mode ~= "keep" then + bones_mode = "bones" + end + + local pos = vector.round(player:getpos()) + -- return if keep inventory set or in creative mode + if bones_mode == "keep" or minetest.setting_getbool("creative_mode") then + minetest.log("action", "[bones] " .. player:get_player_name() .. "'s bones do not remain since in creative_mode -- died at " .. minetest.pos_to_string(vector.round(player:getpos()))) + minetest.chat_send_player(player:get_player_name(), player:get_player_name() .. "'s bones do not remain since in creative_mode -- died at " .. minetest.pos_to_string(pos)) --formerly ("Bones placed at %s."):format(pos) + return + end + + local player_inv = player:get_inventory() + if player_inv:is_empty("main") and + player_inv:is_empty("craft") then + minetest.log("action", "[bones] " .. player:get_player_name() .. "'s bones do not remain since inventory and craft are empty -- died at " .. minetest.pos_to_string(vector.round(player:getpos()))) + minetest.chat_send_player(player:get_player_name(), player:get_player_name() .. "'s bones do not remain since inventory and craft are empty -- died at " .. minetest.pos_to_string(pos)) --formerly ("Bones placed at %s."):format(pos) + return + end + + local pos = vector.round(player:getpos()) + local player_name = player:get_player_name() + + -- check if it's possible to place bones, if not find space near player + if bones_mode == "bones" and not may_replace(pos, player) then + local air = minetest.find_node_near(pos, 1, {"air"}) + if air and not minetest.is_protected(air, player_name) then + pos = air + else + bones_mode = "drop" + end + end + + if bones_mode == "drop" then + + -- drop inventory items + for i = 1, player_inv:get_size("main") do + drop(pos, player_inv:get_stack("main", i)) + end + player_inv:set_list("main", {}) + + -- drop crafting grid items + for i = 1, player_inv:get_size("craft") do + drop(pos, player_inv:get_stack("craft", i)) + end + player_inv:set_list("craft", {}) + + drop(pos, ItemStack("bones:bones")) + + minetest.log("action", "[bones] " .. player:get_player_name() .. "'s bones do not remain since area is_protected -- died at " .. minetest.pos_to_string(pos)) + minetest.chat_send_player(player:get_player_name(), player:get_player_name() .. "'s do not remain since area is_protected -- died at " .. minetest.pos_to_string(pos)) --formerly ("Bones placed at %s."):format(pos) + return + end + + local param2 = minetest.dir_to_facedir(player:get_look_dir()) + minetest.set_node(pos, {name = "bones:bones", param2 = param2}) + minetest.log("action", "[bones] " .. player:get_player_name() .. "'s bones remain where died at " .. minetest.pos_to_string(pos)) + minetest.chat_send_player(player:get_player_name(), player:get_player_name() .. "'s bones remain where died at " .. minetest.pos_to_string(pos)) --formerly ("Bones placed at %s."):format(pos) + + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_size("main", 8 * 4) + inv:set_list("main", player_inv:get_list("main")) + + for i = 1, player_inv:get_size("craft") do + local stack = player_inv:get_stack("craft", i) + if inv:room_for_item("main", stack) then + inv:add_item("main", stack) + else + --drop if no space left + drop(pos, stack) + end + end + + player_inv:set_list("main", {}) + player_inv:set_list("craft", {}) + + meta:set_string("formspec", bones_formspec) + meta:set_string("owner", player_name) + + if share_bones_time ~= 0 then + meta:set_string("infotext", player_name .. "'s fresh bones") + + if share_bones_time_early == 0 or not minetest.is_protected(pos, player_name) then + meta:set_int("time", 0) + else + meta:set_int("time", (share_bones_time - share_bones_time_early)) + end + + minetest.get_node_timer(pos):start(10) + else + meta:set_string("infotext", player_name.."'s bones") + end +end) diff --git a/patches/subgame/mods/bones/init.lua b/patches/subgame/mods/bones/init.lua index 38dc61c..f1fe190 100644 --- a/patches/subgame/mods/bones/init.lua +++ b/patches/subgame/mods/bones/init.lua @@ -21,8 +21,8 @@ local bones_formspec = "listring[current_player;main]" .. default.get_hotbar_bg(0,4.85) -local share_bones_time = tonumber(minetest.setting_get("share_bones_time")) or 1200 -local share_bones_time_early = tonumber(minetest.setting_get("share_bones_time_early")) or share_bones_time / 4 +local share_bones_time = tonumber(minetest.settings:get("share_bones_time")) or 1200 +local share_bones_time_early = tonumber(minetest.settings:get("share_bones_time_early")) or share_bones_time / 4 minetest.register_node("bones:bones", { description = "Bones", @@ -161,14 +161,15 @@ end minetest.register_on_dieplayer(function(player) - local bones_mode = minetest.setting_get("bones_mode") or "bones" + local bones_mode = minetest.settings:get("bones_mode") or "bones" if bones_mode ~= "bones" and bones_mode ~= "drop" and bones_mode ~= "keep" then bones_mode = "bones" end local pos = vector.round(player:getpos()) -- return if keep inventory set or in creative mode - if bones_mode == "keep" or minetest.setting_getbool("creative_mode") then + if bones_mode == "keep" or (creative and creative.is_enabled_for + and creative.is_enabled_for(player:get_player_name())) then minetest.log("action", "[bones] " .. player:get_player_name() .. "'s bones do not remain since in creative_mode -- died at " .. minetest.pos_to_string(vector.round(player:getpos()))) minetest.chat_send_player(player:get_player_name(), player:get_player_name() .. "'s bones do not remain since in creative_mode -- died at " .. minetest.pos_to_string(pos)) --formerly ("Bones placed at %s."):format(pos) return diff --git a/patches/subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/crafts.lua b/patches/subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/crafts.lua new file mode 100644 index 0000000..5f445f3 --- /dev/null +++ b/patches/subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/crafts.lua @@ -0,0 +1,3343 @@ +-- Crafting for homedecor mod (includes folding) by Vanessa Ezekowitz +-- +-- Mostly my own code; overall template borrowed from game default + +local S = homedecor_i18n.gettext + +-- misc craftitems + +minetest.register_craftitem("homedecor:terracotta_base", { + description = S("Uncooked Terracotta Base"), + inventory_image = "homedecor_terracotta_base.png", +}) + +minetest.register_craftitem("homedecor:roof_tile_terracotta", { + description = S("Terracotta Roof Tile"), + inventory_image = "homedecor_roof_tile_terracotta.png", +}) + +minetest.register_craftitem("homedecor:oil_extract", { + description = S("Oil extract"), + inventory_image = "homedecor_oil_extract.png", +}) + +minetest.register_craftitem("homedecor:paraffin", { + description = S("Unprocessed paraffin"), + inventory_image = "homedecor_paraffin.png", +}) + +minetest.register_alias("homedecor:plastic_base", "homedecor:paraffin") + +minetest.register_craftitem("homedecor:plastic_sheeting", { + description = S("Plastic sheet"), + inventory_image = "homedecor_plastic_sheeting.png", +}) + +minetest.register_craftitem("homedecor:plastic_strips", { + description = S("Plastic strips"), + inventory_image = "homedecor_plastic_strips.png", +}) + +minetest.register_craftitem("homedecor:drawer_small", { + description = S("Small Wooden Drawer"), + inventory_image = "homedecor_drawer_small.png", +}) + +minetest.register_craftitem("homedecor:ic", { + description = S("Simple Integrated Circuit"), + inventory_image = "homedecor_ic.png", +}) + +minetest.register_craftitem("homedecor:heating_element", { + description = S("Heating element"), + inventory_image = "homedecor_heating_element.png", +}) + +minetest.register_craftitem("homedecor:motor", { + description = S("Motor"), + inventory_image = "homedecor_motor.png", +}) + +minetest.register_craftitem("homedecor:power_crystal", { + description = S("Power Crystal"), + inventory_image = "homedecor_power_crystal.png", +}) + +minetest.register_craftitem("homedecor:blank_canvas", { + description = S("Blank Canvas"), + inventory_image = "homedecor_blank_canvas.png" +}) + +minetest.register_craftitem("homedecor:vcr", { + description = S("VCR"), + inventory_image = "homedecor_vcr.png" +}) + +minetest.register_craftitem("homedecor:dvd_player", { + description = S("DVD Player"), + inventory_image = "homedecor_dvd_player.png" +}) + +minetest.register_craftitem("homedecor:copper_wire", { + description = S("Spool of copper wire"), + inventory_image = "homedecor_copper_wire.png" +}) + +minetest.register_craftitem("homedecor:steel_wire", { + description = S("Spool of steel wire"), + inventory_image = "homedecor_steel_wire.png" +}) + +minetest.register_craftitem("homedecor:speaker_driver", { + description = S("Speaker driver"), + inventory_image = "homedecor_speaker_driver_inv.png" +}) + +minetest.register_craftitem("homedecor:fan_blades", { + description = S("Fan blades"), + inventory_image = "homedecor_fan_blades.png" +}) + +minetest.register_craftitem("homedecor:copper_strip", { + description = S("Copper Strip"), + inventory_image = "homedecor_copper_strip.png" +}) + +minetest.register_craftitem("homedecor:steel_strip", { + description = S("Steel Strip"), + inventory_image = "homedecor_steel_strip.png" +}) + +minetest.register_craftitem(":glooptest:chainlink", { + description = S("Steel chainlink"), + inventory_image = "homedecor_chainlink_steel.png" +}) + +minetest.register_craftitem("homedecor:chainlink_brass", { + description = S("Brass chainlink"), + inventory_image = "homedecor_chainlink_brass.png" +}) + +minetest.register_craftitem("homedecor:soda_can", { + description = S("Soda Can"), + inventory_image = "homedecor_soda_can.png", + on_use = minetest.item_eat(2), +}) + +minetest.register_craftitem("homedecor:coin", { + description = S("Gold Coin (for soda vending machine)"), + inventory_image = "homedecor_coin.png", +}) + +-- alternate crafting if mesecons is/isn't installed + +if not minetest.get_modpath("mesecons") then + + minetest.register_craftitem(":mesecons_materials:silicon", { + description = S("Silicon lump"), + inventory_image = "homedecor_silicon.png", + }) + + minetest.register_craft( { + output = "mesecons_materials:silicon 4", + recipe = { + { "default:sand", "default:sand" }, + { "default:sand", "default:steel_ingot" }, + }, + }) + +end + +-- alternate crafting if technic is/isn't installed +if not minetest.get_modpath("technic") then + minetest.register_craftitem(":technic:brass_ingot", { + description = S("Brass Ingot"), + inventory_image = "homedecor_brass_ingot.png", + }) + + if minetest.get_modpath("moreores") then + minetest.register_craft( { + type = "shapeless", + output = "technic:brass_ingot 2", + recipe = { + "moreores:silver_ingot", + "default:copper_ingot", + }, + }) + else + minetest.register_craft( { + type = "shapeless", + output = "technic:brass_ingot 3", + recipe = { + "default:steel_ingot", + "default:copper_ingot", + "default:gold_ingot", + }, + }) + end +end + +minetest.register_alias("homedecor:brass_ingot", "technic:brass_ingot") + +-- the actual crafts + +minetest.register_craft( { + output = "homedecor:copper_strip 12", + recipe = { + { "", "default:copper_ingot", "" }, + { "default:copper_ingot", "", "" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:steel_strip 12", + recipe = { + { "", "default:steel_ingot", "" }, + { "default:steel_ingot", "", "" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:fan_blades 2", + recipe = { + { "", "homedecor:plastic_sheeting", "" }, + { "", "default:steel_ingot", "" }, + { "homedecor:plastic_sheeting", "", "homedecor:plastic_sheeting" } + }, +}) + +minetest.register_craft( { + output = "homedecor:steel_wire 4", + recipe = { + { "", "homedecor:plastic_sheeting", "" }, + { "default:steel_ingot", "homedecor:plastic_sheeting", "default:steel_ingot" }, + { "", "homedecor:plastic_sheeting", "" } + }, +}) + +minetest.register_craft( { + output = "homedecor:copper_wire 4", + recipe = { + { "", "homedecor:plastic_sheeting", "" }, + { "default:copper_ingot", "homedecor:plastic_sheeting", "default:copper_ingot" }, + { "", "homedecor:plastic_sheeting", "" } + }, +}) + +minetest.register_craft( { + output = "homedecor:plastic_strips 3", + recipe = { + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" } + }, +}) + +minetest.register_craft( { + output = "homedecor:heating_element 2", + recipe = { + { "default:copper_ingot", "default:mese_crystal_fragment", "default:copper_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:motor 2", + recipe = { + { "default:mese_crystal_fragment", "homedecor:copper_wire", "homedecor:plastic_sheeting" }, + { "default:copper_ingot", "default:steel_ingot", "default:steel_ingot" }, + { "default:mese_crystal_fragment", "homedecor:copper_wire", "homedecor:plastic_sheeting" } + }, +}) + +minetest.register_craft({ + --type = "shapeless", + output = "homedecor:power_crystal 2", + recipe = { + { "default:mese_crystal_fragment", "default:torch", "default:mese_crystal_fragment" }, + { "default:diamond", "default:gold_ingot", "default:diamond" } + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:power_crystal", + burntime = 50, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:terracotta_base 8", + recipe = { + "default:dirt", + "default:clay_lump", + "bucket:bucket_water" + }, + replacements = { {"bucket:bucket_water", "bucket:bucket_empty"}, }, +}) + +minetest.register_craft({ + type = "cooking", + output = "homedecor:roof_tile_terracotta", + recipe = "homedecor:terracotta_base", +}) + +minetest.register_craft( { + output = "homedecor:shingles_terracotta", + recipe = { + { "homedecor:roof_tile_terracotta", "homedecor:roof_tile_terracotta"}, + { "homedecor:roof_tile_terracotta", "homedecor:roof_tile_terracotta"}, + }, +}) + +minetest.register_craft( { + output = "homedecor:roof_tile_terracotta 8", + recipe = { + { "homedecor:shingles_terracotta", "homedecor:shingles_terracotta" } + } +}) + +minetest.register_craft( { + output = "homedecor:flower_pot_terracotta", + recipe = { + { "homedecor:roof_tile_terracotta", "default:dirt", "homedecor:roof_tile_terracotta" }, + { "homedecor:roof_tile_terracotta", "homedecor:roof_tile_terracotta", "homedecor:roof_tile_terracotta" }, + }, +}) + +-- + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:oil_extract 4", + recipe = { + "group:leaves", + "group:leaves", + "group:leaves", + "group:leaves", + "group:leaves", + "group:leaves" + } +}) + +minetest.register_craft({ + type = "cooking", + output = "homedecor:paraffin", + recipe = "homedecor:oil_extract", +}) + +minetest.register_craft({ + type = "cooking", + output = "homedecor:plastic_sheeting", + recipe = "homedecor:paraffin", +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:oil_extract", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:paraffin", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:plastic_sheeting", + burntime = 30, +}) + +minetest.register_craft( { + output = "homedecor:flower_pot_green", + recipe = { + { "", "dye:dark_green", "" }, + { "homedecor:plastic_sheeting", "default:dirt", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:flower_pot_black", + recipe = { + { "dye:black", "dye:black", "dye:black" }, + { "homedecor:plastic_sheeting", "default:dirt", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + }, +}) + +-- + +minetest.register_craft( { + output = "homedecor:projection_screen 3", + recipe = { + { "", "default:glass", "" }, + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:projection_screen", + burntime = 30, +}) + +-- + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:ceiling_paint 20", + recipe = { + "dye:white", + "dye:white", + "default:sand", + "bucket:bucket_water", + }, + replacements = { { "bucket:bucket_water","bucket:bucket_empty" } } +}) + +minetest.register_craft( { + output = "homedecor:ceiling_tile 10", + recipe = { + { "", "dye:white", "" }, + { "default:steel_ingot", "default:stone", "default:steel_ingot" }, + + }, +}) + + +-- ======================================================= +-- Items/recipes not requiring smelting of anything new + +minetest.register_craft( { + output = "homedecor:glass_table_small_round_b 15", + recipe = { + { "", "default:glass", "" }, + { "default:glass", "default:glass", "default:glass" }, + { "", "default:glass", "" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:glass_table_small_square_b 2", + recipe = { + {"homedecor:glass_table_small_round", "homedecor:glass_table_small_round" }, + } +}) + +minetest.register_craft( { + output = "homedecor:glass_table_large_b 2", + recipe = { + { "homedecor:glass_table_small_square", "homedecor:glass_table_small_square" }, + } +}) + +-- + +minetest.register_craft( { + output = "homedecor:wood_table_small_round_b 15", + recipe = { + { "", "group:wood", "" }, + { "group:wood", "group:wood", "group:wood" }, + { "", "group:wood", "" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:wood_table_small_square_b 2", + recipe = { + { "homedecor:wood_table_small_round","homedecor:wood_table_small_round" }, + } +}) + +minetest.register_craft( { + output = "homedecor:wood_table_large_b 2", + recipe = { + { "homedecor:wood_table_small_square", "homedecor:wood_table_small_square" }, + } +}) + +-- + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:wood_table_small_round_b", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:wood_table_small_square_b", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:wood_table_large_b", + burntime = 30, +}) + +-- + +minetest.register_craft( { + output = "homedecor:shingles_asphalt 6", + recipe = { + { "building_blocks:gravel_spread", "dye:black", "building_blocks:gravel_spread" }, + { "group:sand", "dye:black", "group:sand" }, + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + }, +}) + +-- + +minetest.register_craft( { + output = "homedecor:shingles_wood 12", + recipe = { + { "group:stick", "group:wood"}, + { "group:wood", "group:stick"}, + }, +}) + +minetest.register_craft( { + output = "homedecor:shingles_wood 12", + recipe = { + { "group:wood", "group:stick"}, + { "group:stick", "group:wood"}, + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shingles_wood", + burntime = 30, +}) + +-- + +minetest.register_craft( { + output = "homedecor:skylight 4", + recipe = { + { "homedecor:glass_table_large", "homedecor:glass_table_large" }, + { "homedecor:glass_table_large", "homedecor:glass_table_large" }, + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:skylight_frosted", + recipe = { + "dye:white", + "homedecor:skylight" + }, +}) + +minetest.register_craft({ + type = "cooking", + output = "homedecor:skylight", + recipe = "homedecor:skylight_frosted", +}) + +-- Various colors of shutters + +minetest.register_craft( { + output = "homedecor:shutter_oak 2", + recipe = { + { "group:stick", "group:stick" }, + { "group:stick", "group:stick" }, + { "group:stick", "group:stick" }, + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_oak", + burntime = 30, +}) + +-- + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:shutter_black 4", + recipe = { + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "dye:black" + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_black", + burntime = 30, +}) + +-- + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:shutter_dark_grey 4", + recipe = { + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "dye:dark_grey" + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_dark_grey", + burntime = 30, +}) + +-- + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:shutter_grey 4", + recipe = { + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "dye:grey" + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_grey", + burntime = 30, +}) + +-- + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:shutter_white 4", + recipe = { + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "dye:white" + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_white", + burntime = 30, +}) + +-- + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:shutter_mahogany 4", + recipe = { + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "dye:brown" + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_mahogany", + burntime = 30, +}) +minetest.register_craft( { + type = "shapeless", + output = "homedecor:shutter_red 4", + recipe = { + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "dye:red" + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_red", + burntime = 30, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:shutter_yellow 4", + recipe = { + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "dye:yellow" + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_yellow", + burntime = 30, +}) + +-- + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:shutter_forest_green 4", + recipe = { + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "dye:dark_green" + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_forest_green", + burntime = 30, +}) + +-- + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:shutter_light_blue 4", + recipe = { + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "unifieddyes:light_blue" + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_light_blue", + burntime = 30, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:shutter_violet 4", + recipe = { + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "homedecor:shutter_oak", + "dye:violet" + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:shutter_violet", + burntime = 30, +}) + +-- + +minetest.register_craft( { + output = "homedecor:drawer_small", + recipe = { + { "group:wood", "default:steel_ingot", "group:wood" }, + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:drawer_small", + burntime = 30, +}) + +-- + +minetest.register_craft( { + output = "homedecor:nightstand_oak_one_drawer", + recipe = { + { "homedecor:drawer_small" }, + { "group:wood" }, + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:nightstand_oak_one_drawer", + burntime = 30, +}) + +minetest.register_craft( { + output = "homedecor:nightstand_oak_two_drawers", + recipe = { + { "homedecor:drawer_small" }, + { "homedecor:drawer_small" }, + { "group:wood" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:nightstand_oak_two_drawers", + recipe = { + { "homedecor:nightstand_oak_one_drawer" }, + { "homedecor:drawer_small" }, + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:nightstand_oak_two_drawers", + burntime = 30, +}) + +-- + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:nightstand_mahogany_one_drawer", + recipe = { + "homedecor:nightstand_oak_one_drawer", + "dye:brown", + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:nightstand_mahogany_one_drawer", + burntime = 30, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:nightstand_mahogany_two_drawers", + recipe = { + "homedecor:nightstand_oak_two_drawers", + "dye:brown", + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:nightstand_mahogany_two_drawers", + burntime = 30, +}) + +-- Table legs + +minetest.register_craft( { + output = "homedecor:table_legs_wrought_iron 3", + recipe = { + { "", "default:iron_lump", "" }, + { "", "default:iron_lump", "" }, + { "default:iron_lump", "default:iron_lump", "default:iron_lump" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:table_legs_brass 3", + recipe = { + { "", "technic:brass_ingot", "" }, + { "", "technic:brass_ingot", "" }, + { "technic:brass_ingot", "technic:brass_ingot", "technic:brass_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:utility_table_legs", + recipe = { + { "group:stick", "group:stick", "group:stick" }, + { "group:stick", "", "group:stick" }, + { "group:stick", "", "group:stick" }, + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:utility_table_legs", + burntime = 30, +}) + +-- vertical poles/lampposts + +minetest.register_craft( { + output = "homedecor:pole_brass 4", + recipe = { + { "", "technic:brass_ingot", "" }, + { "", "technic:brass_ingot", "" }, + { "", "technic:brass_ingot", "" } + }, +}) + +minetest.register_craft( { + output = "homedecor:pole_wrought_iron 4", + recipe = { + { "default:iron_lump", }, + { "default:iron_lump", }, + { "default:iron_lump", }, + }, +}) + +-- Home electronics + +minetest.register_craft( { + output = "homedecor:ic 4", + recipe = { + { "mesecons_materials:silicon", "mesecons_materials:silicon" }, + { "mesecons_materials:silicon", "default:copper_ingot" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:television", + recipe = { + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "moreblocks:glow_glass", "homedecor:plastic_sheeting" }, + { "homedecor:ic", "homedecor:ic", "homedecor:ic" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:television", + recipe = { + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "default:glass", "homedecor:plastic_sheeting" }, + { "homedecor:ic", "homedecor:power_crystal", "homedecor:ic" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:stereo", + recipe = { + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:ic", "homedecor:plastic_sheeting" }, + { "default:steel_ingot", "homedecor:ic", "default:steel_ingot" }, + }, +}) + +-- =========================================================== +-- Recipes that require materials from wool (cotton alternate) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:rug_small 8", + recipe = { + "wool:red", + "wool:yellow", + "wool:blue", + "wool:black" + }, +}) + +minetest.register_craft( { + output = "homedecor:rug_persian 8", + recipe = { + { "", "wool:yellow", "" }, + { "wool:red", "wool:blue", "wool:red" }, + { "", "wool:yellow", "" } + }, +}) + +-- cotton versions: + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:rug_small 8", + recipe = { + "cotton:red", + "cotton:yellow", + "cotton:blue", + "cotton:black" + }, +}) + +minetest.register_craft( { + output = "homedecor:rug_persian 8", + recipe = { + { "", "cotton:yellow", "" }, + { "cotton:red", "cotton:blue", "cotton:red" }, + { "", "cotton:yellow", "" } + }, +}) + +-- fuel recipes for same + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:rug_small", + burntime = 30, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:rug_large 2", + recipe = { + "homedecor:rug_small", + "homedecor:rug_small", + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:rug_large", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:rug_persian", + burntime = 30, +}) + +-- Speakers + +minetest.register_craft( { + output = "homedecor:speaker_driver 2", + recipe = { + { "", "default:steel_ingot", "" }, + { "default:paper", "homedecor:copper_wire", "default:iron_lump" }, + { "", "default:steel_ingot", "" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:speaker_small", + recipe = { + { "wool:black", "homedecor:speaker_driver", "group:wood" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:speaker", + recipe = { + { "wool:black", "homedecor:speaker_driver", "group:wood" }, + { "wool:black", "homedecor:speaker_driver", "group:wood" }, + { "wool:black", "group:wood", "group:wood" }, + }, +}) + +-- cotton version + +minetest.register_craft( { + output = "homedecor:speaker_small", + recipe = { + { "cotton:black", "homedecor:speaker_driver", "group:wood" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:speaker", + recipe = { + { "cotton:black", "homedecor:speaker_driver", "group:wood" }, + { "cotton:black", "homedecor:speaker_driver", "group:wood" }, + { "cotton:black", "group:wood", "group:wood" }, + }, +}) + +-- Curtains + +minetest.register_craft( { + output = "homedecor:curtain_closed 4", + recipe = { + { "wool:white", "", ""}, + { "wool:white", "", ""}, + { "wool:white", "", ""}, + }, +}) + +minetest.register_craft( { + output = "homedecor:curtain_closed 4", + recipe = { + { "cottages:wool", "", ""}, + { "cottages:wool", "", ""}, + { "cottages:wool", "", ""}, + }, +}) + +local mats = { + { "brass", "homedecor:pole_brass" }, + { "wrought_iron", "homedecor:pole_wrought_iron" }, + { "wood", "group:stick" } +} + +for i in ipairs(mats) do + local material = mats[i][1] + local ingredient = mats[i][2] + minetest.register_craft( { + output = "homedecor:curtainrod_"..material.." 3", + recipe = { + { ingredient, ingredient, ingredient }, + }, + }) +end + +-- Recycling recipes + +-- Some glass objects recycle via the glass fragments item/recipe in the Vessels mod. + +minetest.register_craft({ + type = "shapeless", + output = "vessels:glass_fragments", + recipe = { + "homedecor:glass_table_small_round", + "homedecor:glass_table_small_round", + "homedecor:glass_table_small_round" + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "vessels:glass_fragments", + recipe = { + "homedecor:glass_table_small_square", + "homedecor:glass_table_small_square", + "homedecor:glass_table_small_square" + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "vessels:glass_fragments", + recipe = { + "homedecor:glass_table_large", + "homedecor:glass_table_large", + "homedecor:glass_table_large" + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "vessels:glass_fragments 2", + recipe = { + "homedecor:skylight", + "homedecor:skylight", + "homedecor:skylight", + "homedecor:skylight", + "homedecor:skylight", + "homedecor:skylight" + } +}) + +-- Wooden tabletops can turn into sticks + +minetest.register_craft({ + type = "shapeless", + output = "default:stick 4", + recipe = { + "homedecor:wood_table_small_round", + "homedecor:wood_table_small_round", + "homedecor:wood_table_small_round" + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "default:stick 4", + recipe = { + "homedecor:wood_table_small_square", + "homedecor:wood_table_small_square", + "homedecor:wood_table_small_square" + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "default:stick 4", + recipe = { + "homedecor:wood_table_large", + "homedecor:wood_table_large", + "homedecor:wood_table_large" + } +}) + +-- Kitchen stuff + +minetest.register_craft({ + output = "homedecor:oven_steel", + recipe = { + {"homedecor:heating_element", "default:steel_ingot", "homedecor:heating_element", }, + {"default:steel_ingot", "moreblocks:iron_glass", "default:steel_ingot", }, + {"default:steel_ingot", "homedecor:heating_element", "default:steel_ingot", }, + } +}) + +minetest.register_craft({ + output = "homedecor:oven_steel", + recipe = { + {"homedecor:heating_element", "default:steel_ingot", "homedecor:heating_element", }, + {"default:steel_ingot", "default:glass", "default:steel_ingot", }, + {"default:steel_ingot", "homedecor:heating_element", "default:steel_ingot", }, + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:oven", + recipe = { + "homedecor:oven_steel", + "dye:white", + "dye:white", + } +}) + +minetest.register_craft({ + output = "homedecor:microwave_oven 2", + recipe = { + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot", }, + {"default:steel_ingot", "moreblocks:iron_glass", "homedecor:ic", }, + {"default:steel_ingot", "default:copper_ingot", "homedecor:power_crystal", }, + } +}) + +minetest.register_craft({ + output = "homedecor:microwave_oven 2", + recipe = { + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot", }, + {"default:steel_ingot", "default:glass", "homedecor:ic", }, + {"default:steel_ingot", "default:copper_ingot", "homedecor:power_crystal", }, + } +}) + +minetest.register_craft({ + output = "homedecor:refrigerator_steel", + recipe = { + {"default:steel_ingot", "homedecor:glowlight_small_cube", "default:steel_ingot", }, + {"default:steel_ingot", "default:copperblock", "default:steel_ingot", }, + {"default:steel_ingot", "default:clay", "default:steel_ingot", }, + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:refrigerator_white", + recipe = { + "homedecor:refrigerator_steel", + "dye:white", + "dye:white", + "dye:white", + } +}) + +minetest.register_craft({ + output = "homedecor:kitchen_cabinet", + recipe = { + {"group:wood", "group:stick", "group:wood", }, + {"group:wood", "group:stick", "group:wood", }, + {"group:wood", "group:stick", "group:wood", }, + } +}) + +minetest.register_craft({ + output = "homedecor:kitchen_cabinet_steel", + recipe = { + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"", "homedecor:kitchen_cabinet", ""}, + } +}) + +minetest.register_craft({ + output = "homedecor:kitchen_cabinet_steel", + recipe = { + {"moreblocks:slab_steelblock_1"}, + { "homedecor:kitchen_cabinet" }, + } +}) + +minetest.register_craft({ + output = "homedecor:kitchen_cabinet_marble", + recipe = { + {"building_blocks:slab_marble"}, + {"homedecor:kitchen_cabinet"}, + } +}) + +minetest.register_craft({ + output = "homedecor:kitchen_cabinet_marble", + recipe = { + {"technic:slab_marble_1"}, + {"homedecor:kitchen_cabinet"}, + } +}) + +minetest.register_craft({ + output = "homedecor:kitchen_cabinet_granite", + recipe = { + {"technic:slab_granite_1"}, + {"homedecor:kitchen_cabinet"}, + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:kitchen_cabinet_half 2", + recipe = { "homedecor:kitchen_cabinet" } +}) + +minetest.register_craft({ + output = "homedecor:kitchen_cabinet_with_sink", + recipe = { + {"group:wood", "default:steel_ingot", "group:wood", }, + {"group:wood", "default:steel_ingot", "group:wood", }, + {"group:wood", "group:stick", "group:wood", }, + } +}) + +------- Lighting + +-- candles + +minetest.register_craft({ + output = "homedecor:candle_thin 4", + recipe = { + {"farming:string" }, + {"homedecor:paraffin" } + } +}) + +minetest.register_craft({ + output = "homedecor:candle 2", + recipe = { + {"farming:string" }, + {"homedecor:paraffin" }, + {"homedecor:paraffin" } + } +}) + +minetest.register_craft({ + output = "homedecor:wall_sconce 2", + recipe = { + {"default:iron_lump", "", ""}, + {"default:iron_lump", "homedecor:candle", ""}, + {"default:iron_lump", "", ""}, + } +}) + +minetest.register_craft({ + output = "homedecor:candlestick_wrought_iron", + recipe = { + {""}, + {"homedecor:candle_thin"}, + {"default:iron_lump"}, + } +}) + +minetest.register_craft({ + output = "homedecor:candlestick_brass", + recipe = { + {""}, + {"homedecor:candle_thin"}, + {"technic:brass_ingot"}, + } +}) + +minetest.register_craft({ + output = "homedecor:oil_lamp", + recipe = { + { "", "vessels:glass_bottle", "" }, + { "", "farming:string", "" }, + { "default:steel_ingot", "homedecor:oil_extract", "default:steel_ingot" } + } +}) + +minetest.register_craft({ + output = "homedecor:oil_lamp_tabletop", + recipe = { + { "", "vessels:glass_bottle", "" }, + { "", "farming:string", "" }, + { "default:iron_lump", "homedecor:oil_extract", "default:iron_lump" } + } +}) + +-- Wrought-iron wall latern + +minetest.register_craft({ + output = "homedecor:ground_lantern", + recipe = { + { "default:iron_lump", "default:iron_lump", "default:iron_lump" }, + { "default:iron_lump", "default:torch", "default:iron_lump" }, + { "", "default:iron_lump", "" } + } +}) + +-- wood-lattice lamps + +minetest.register_craft( { + output = "homedecor:lattice_lantern_large 2", + recipe = { + { "dye:black", "dye:yellow", "dye:black" }, + { "group:stick", "building_blocks:woodglass", "group:stick" }, + { "group:stick", "homedecor:power_crystal", "group:stick" } + }, +}) + +minetest.register_craft( { + output = "homedecor:lattice_lantern_small 8", + recipe = { + { "homedecor:lattice_lantern_large" }, + }, +}) + +-- glowlights + +minetest.register_craft({ + output = "homedecor:glowlight_half 6", + recipe = { + { "dye:white", "dye:white", "dye:white" }, + { "default:glass", "homedecor:power_crystal", "default:glass", }, + } +}) + +minetest.register_craft({ + output = "homedecor:glowlight_half 6", + recipe = { + { "dye:white", "dye:white", "dye:white" }, + {"moreblocks:super_glow_glass", "moreblocks:glow_glass", "moreblocks:super_glow_glass", }, + } +}) + +minetest.register_craft({ + output = "homedecor:glowlight_quarter 6", + recipe = { + {"homedecor:glowlight_half", "homedecor:glowlight_half", "homedecor:glowlight_half", }, + } +}) + +minetest.register_craft({ + output = "homedecor:glowlight_small_cube 8", + recipe = { + { "dye:white" }, + { "default:glass" }, + { "homedecor:power_crystal" }, + } +}) + +minetest.register_craft({ + output = "homedecor:glowlight_small_cube 8", + recipe = { + {"dye:white" }, + {"moreblocks:super_glow_glass" }, + } +}) + +minetest.register_craft({ + output = "homedecor:glowlight_small_cube 4", + recipe = { + {"homedecor:glowlight_half" }, + } +}) + +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" + } +}) + +---- + +minetest.register_craft({ + output = "homedecor:plasma_lamp", + recipe = { + {"", "default:glass", ""}, + {"default:glass", "homedecor:power_crystal", "default:glass"}, + {"", "default:glass", ""} + } +}) + +minetest.register_craft({ + output = "homedecor:plasma_ball 2", + recipe = { + {"", "default:glass", ""}, + {"default:glass", "default:copper_ingot", "default:glass"}, + {"homedecor:plastic_sheeting", "homedecor:power_crystal", "homedecor:plastic_sheeting"} + } +}) + +-- Brass/wrought iron fences + + +minetest.register_craft( { + output = "homedecor:fence_brass 6", + recipe = { + { "technic:brass_ingot", "technic:brass_ingot", "technic:brass_ingot" }, + { "technic:brass_ingot", "technic:brass_ingot", "technic:brass_ingot" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:fence_wrought_iron 6", + recipe = { + { "default:iron_lump","default:iron_lump","default:iron_lump" }, + { "default:iron_lump","default:iron_lump","default:iron_lump" }, + }, +}) + +-- other types of fences + +minetest.register_craft( { + output = "homedecor:fence_wrought_iron_2 2", + 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 = { + { "homedecor:pole_wrought_iron", "default:iron_lump" }, + { "homedecor:pole_wrought_iron", "default:iron_lump" }, + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_wrought_iron_2_corner", + recipe = { + "homedecor:fence_wrought_iron_2", + "homedecor:fence_wrought_iron_2" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_wrought_iron_2 2", + recipe = { + "homedecor:fence_wrought_iron_2_corner", + }, +}) + +-- + +minetest.register_craft( { + output = "homedecor:fence_picket 6", + recipe = { + { "group:stick", "group:stick", "group:stick" }, + { "group:stick", "", "group:stick" }, + { "group:stick", "group:stick", "group:stick" } + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_picket_corner", + recipe = { + "homedecor:fence_picket", + "homedecor:fence_picket" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_picket 2", + recipe = { + "homedecor:fence_picket_corner" + }, +}) + +-- + + +minetest.register_craft( { + output = "homedecor:fence_picket_white 6", + recipe = { + { "group:stick", "group:stick", "group:stick" }, + { "group:stick", "dye:white", "group:stick" }, + { "group:stick", "group:stick", "group:stick" } + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_picket_corner_white", + recipe = { + "homedecor:fence_picket_white", + "homedecor:fence_picket_white" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_picket_white 2", + recipe = { + "homedecor:fence_picket_corner_white" + }, +}) + +-- + + +minetest.register_craft( { + output = "homedecor:fence_privacy 6", + recipe = { + { "group:wood", "group:stick", "group:wood" }, + { "group:wood", "", "group:wood" }, + { "group:wood", "group:stick", "group:wood" } + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_privacy_corner", + recipe = { + "homedecor:fence_privacy", + "homedecor:fence_privacy" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_privacy 2", + recipe = { + "homedecor:fence_privacy_corner" + }, +}) + +-- + + +minetest.register_craft( { + output = "homedecor:fence_barbed_wire 6", + recipe = { + { "group:stick", "homedecor:steel_wire", "group:stick" }, + { "group:stick", "", "group:stick" }, + { "group:stick", "homedecor:steel_wire", "group:stick" } + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_barbed_wire_corner", + recipe = { "homedecor:fence_barbed_wire", "homedecor:fence_barbed_wire" }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_barbed_wire 2", + recipe = { "homedecor:fence_barbed_wire_corner" }, +}) + +-- + + +minetest.register_craft( { + output = "homedecor:fence_chainlink 9", + recipe = { + { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }, + { "homedecor:steel_wire", "homedecor:steel_wire", "default:steel_ingot" }, + { "homedecor:steel_wire", "homedecor:steel_wire", "default:steel_ingot" } + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_chainlink_corner", + recipe = { "homedecor:fence_chainlink", "homedecor:fence_chainlink" }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_chainlink 2", + recipe = { "homedecor:fence_chainlink_corner" }, +}) + + +-- Gates + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:gate_picket_white_closed", + recipe = { + "homedecor:fence_picket_white" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_picket_white", + recipe = { + "homedecor:gate_picket_white_closed" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:gate_picket_closed", + recipe = { + "homedecor:fence_picket" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_picket", + recipe = { + "homedecor:gate_picket_closed" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:gate_barbed_wire_closed", + recipe = { + "homedecor:fence_barbed_wire" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_barbed_wire", + recipe = { + "homedecor:gate_barbed_wire_closed" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:gate_chainlink_closed", + recipe = { + "homedecor:fence_chainlink" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:fence_chainlink", + recipe = { + "homedecor:gate_chainlink_closed" + }, +}) + +------ Doors + +-- plain wood, non-windowed + +minetest.register_craft( { + output = "homedecor:door_wood_plain_left 2", + recipe = { + { "group:wood", "group:wood", "" }, + { "group:wood", "group:wood", "default:steel_ingot" }, + { "group:wood", "group:wood", "" }, + }, +}) + +-- fancy exterior + +minetest.register_craft( { + output = "homedecor:door_exterior_fancy_left 2", + recipe = { + { "group:wood", "default:glass" }, + { "group:wood", "group:wood" }, + { "group:wood", "group:wood" }, + }, +}) + +-- wood and glass (grid style) + +-- bare + +minetest.register_craft( { + output = "homedecor:door_wood_glass_oak_left 2", + recipe = { + { "default:glass", "group:wood" }, + { "group:wood", "default:glass" }, + { "default:glass", "group:wood" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:door_wood_glass_oak_left 2", + recipe = { + { "group:wood", "default:glass" }, + { "default:glass", "group:wood" }, + { "group:wood", "default:glass" }, + }, +}) + +-- mahogany + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:door_wood_glass_mahogany_left 2", + recipe = { + "default:dirt", + "default:coal_lump", + "homedecor:door_wood_glass_oak_left", + "homedecor:door_wood_glass_oak_left" + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:door_wood_glass_mahogany_left 2", + recipe = { + "dye:brown", + "homedecor:door_wood_glass_oak_left", + "homedecor:door_wood_glass_oak_left" + }, +}) + +-- white + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:door_wood_glass_white_left 2", + recipe = { + "dye:white", + "homedecor:door_wood_glass_oak_left", + "homedecor:door_wood_glass_oak_left" + }, +}) + +-- Solid glass with metal handle + +minetest.register_craft( { + output = "homedecor:door_glass_left 2", + recipe = { + { "default:glass", "default:glass" }, + { "default:glass", "default:steel_ingot" }, + { "default:glass", "default:glass" }, + }, +}) + +-- Closet doors + +-- oak + +minetest.register_craft( { + output = "homedecor:door_closet_oak_left 2", + recipe = { + { "", "group:stick", "group:stick" }, + { "default:steel_ingot", "group:stick", "group:stick" }, + { "", "group:stick", "group:stick" }, + }, +}) + +-- mahogany + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:door_closet_mahogany_left 2", + recipe = { + "homedecor:door_closet_oak_left", + "homedecor:door_closet_oak_left", + "default:dirt", + "default:coal_lump", + }, +}) + +minetest.register_craft( { + type = "shapeless", + output = "homedecor:door_closet_mahogany_left 2", + recipe = { + "homedecor:door_closet_oak_left", + "homedecor:door_closet_oak_left", + "dye:brown" + }, +}) + +-- wrought fence-like door + +minetest.register_craft( { + output = "homedecor:door_wrought_iron_left 2", + recipe = { + { "homedecor:pole_wrought_iron", "default:iron_lump" }, + { "homedecor:pole_wrought_iron", "default:iron_lump" }, + { "homedecor:pole_wrought_iron", "default:iron_lump" } + }, +}) + +-- bedroom door + +minetest.register_craft( { + output = "homedecor:door_bedroom_left", + recipe = { + { "dye:white", "dye:white", "" }, + { "homedecor:door_wood_plain_left", "technic:brass_ingot", "" }, + { "", "", "" }, + }, +}) + +-- woodglass door + +minetest.register_craft( { + output = "homedecor:door_woodglass_left", + recipe = { + { "group:wood", "default:glass", "" }, + { "group:wood", "default:glass", "technic:brass_ingot" }, + { "group:wood", "group:wood", "" }, + }, +}) + +-- woodglass door type 2 + +minetest.register_craft( { + output = "homedecor:door_woodglass2_left", + recipe = { + { "default:glass", "default:glass", "" }, + { "group:wood", "group:wood", "default:iron_lump" }, + { "group:wood", "group:wood", "" }, + }, +}) + +-- laundry stuff + +minetest.register_craft( { + output = "homedecor:washing_machine", + recipe = { + { "default:steel_ingot", "default:steel_ingot", "homedecor:ic" }, + { "default:steel_ingot", "bucket:bucket_water", "default:steel_ingot" }, + { "default:steel_ingot", "homedecor:motor", "default:steel_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:washing_machine", + recipe = { + { "default:steel_ingot", "default:steel_ingot", "homedecor:ic" }, + { "default:steel_ingot", "bucket:bucket_water", "default:steel_ingot" }, + { "default:steel_ingot", "technic:motor", "default:steel_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:dryer", + recipe = { + { "default:steel_ingot", "default:steel_ingot", "homedecor:ic" }, + { "default:steel_ingot", "bucket:bucket_empty", "homedecor:motor" }, + { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:dryer", + recipe = { + { "default:steel_ingot", "default:steel_ingot", "homedecor:ic" }, + { "default:steel_ingot", "bucket:bucket_empty", "technic:motor" }, + { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:ironing_board", + recipe = { + { "wool:grey", "wool:grey", "wool:grey"}, + { "", "default:steel_ingot", "" }, + { "default:steel_ingot", "", "default:steel_ingot" } + }, +}) + +-- dishwashers + +minetest.register_craft( { + output = "homedecor:dishwasher", + recipe = { + { "homedecor:ic", "homedecor:fence_chainlink", "default:steel_ingot", }, + { "default:steel_ingot", "homedecor:shower_head", "homedecor:motor" }, + { "default:steel_ingot", "homedecor:heating_element", "bucket:bucket_water" } + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher", + recipe = { + { "homedecor:ic", "homedecor:fence_chainlink", "default:steel_ingot", }, + { "default:steel_ingot", "homedecor:shower_head", "technic:motor" }, + { "default:steel_ingot", "homedecor:heating_element", "bucket:bucket_water" } + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_wood", + recipe = { + { "stairs:slab_wood" }, + { "homedecor:dishwasher" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_wood", + recipe = { + { "moreblocks:slab_wood" }, + { "homedecor:dishwasher" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_wood", + recipe = { + { "moreblocks:slab_wood_1" }, + { "homedecor:dishwasher" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_steel", + recipe = { + { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }, + { "", "homedecor:dishwasher", "" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_steel", + recipe = { + { "moreblocks:slab_steelblock_1" }, + { "homedecor:dishwasher" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_marble", + recipe = { + { "building_blocks:slab_marble" }, + { "homedecor:dishwasher" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_marble", + recipe = { + { "technic:slab_marble_1" }, + { "homedecor:dishwasher" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:dishwasher_granite", + recipe = { + { "technic:slab_granite_1" }, + { "homedecor:dishwasher" }, + }, +}) + +-- paintings + +minetest.register_craft({ + output = "homedecor:blank_canvas", + recipe = { + { "", "group:stick", "" }, + { "group:stick", "wool:white", "group:stick" }, + { "", "group:stick", "" }, + } +}) + +local painting_patterns = { + [1] = { { "brown", "red", "brown" }, + { "dark_green", "red", "green" } }, + + [2] = { { "green", "yellow", "green" }, + { "green", "yellow", "green" } }, + + [3] = { { "green", "pink", "green" }, + { "brown", "pink", "brown" } }, + + [4] = { { "black", "orange", "grey" }, + { "dark_green", "orange", "orange" } }, + + [5] = { { "blue", "orange", "yellow" }, + { "green", "red", "brown" } }, + + [6] = { { "green", "red", "orange" }, + { "orange", "yellow", "green" } }, + + [7] = { { "blue", "dark_green", "dark_green" }, + { "green", "grey", "green" } }, + + [8] = { { "blue", "blue", "blue" }, + { "green", "green", "green" } }, + + [9] = { { "blue", "blue", "dark_green" }, + { "green", "grey", "dark_green" } }, + + [10] = { { "green", "white", "green" }, + { "dark_green", "white", "dark_green" } }, + + [11] = { { "blue", "white", "blue" }, + { "blue", "grey", "dark_green" } }, + + [12] = { { "green", "green", "green" }, + { "grey", "grey", "green" } }, + + [13] = { { "blue", "blue", "grey" }, + { "dark_green", "white", "white" } }, + + [14] = { { "red", "yellow", "blue" }, + { "blue", "green", "violet" } }, + + [15] = { { "blue", "yellow", "blue" }, + { "black", "black", "black" } }, + + [16] = { { "red", "orange", "blue" }, + { "black", "dark_grey", "grey" } }, + + [17] = { { "orange", "yellow", "orange" }, + { "black", "black", "black" } }, + + [18] = { { "grey", "dark_green", "grey" }, + { "white", "white", "white" } }, + + [19] = { { "white", "brown", "green" }, + { "green", "brown", "brown" } }, + + [20] = { { "blue", "blue", "blue" }, + { "red", "brown", "grey" } } +} + +for i,recipe in pairs(painting_patterns) do + + local item1 = "dye:"..recipe[1][1] + local item2 = "dye:"..recipe[1][2] + local item3 = "dye:"..recipe[1][3] + local item4 = "dye:"..recipe[2][1] + local item5 = "dye:"..recipe[2][2] + local item6 = "dye:"..recipe[2][3] + + minetest.register_craft({ + output = "homedecor:painting_"..i, + recipe = { + { item1, item2, item3 }, + { item4, item5, item6 }, + {"", "homedecor:blank_canvas", "" } + } + }) +end + +-- more misc stuff here + +minetest.register_craft({ + output = "homedecor:chimney 2", + recipe = { + { "default:clay_brick", "", "default:clay_brick" }, + { "default:clay_brick", "", "default:clay_brick" }, + { "default:clay_brick", "", "default:clay_brick" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:fishtank", + recipe = { + { "homedecor:plastic_sheeting", "homedecor:glowlight_small_cube", "homedecor:plastic_sheeting" }, + { "default:glass", "bucket:bucket_water", "default:glass" }, + { "default:glass", "building_blocks:gravel_spread", "default:glass" }, + }, + replacements = { {"bucket:bucket_water", "bucket:bucket_empty"} } +}) + +minetest.register_craft({ + output = "homedecor:towel_rod", + recipe = { + { "group:wood", "group:stick", "group:wood" }, + { "", "building_blocks:terrycloth_towel", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:toilet_paper", + recipe = { + { "", "default:paper", "default:paper" }, + { "group:wood", "group:stick", "default:paper" }, + { "", "default:paper", "default:paper" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:medicine_cabinet", + recipe = { + { "group:stick", "default:glass", "group:stick" }, + { "group:stick", "default:glass", "group:stick" }, + { "group:stick", "default:glass", "group:stick" } + }, +}) + +minetest.register_craft({ + output = "homedecor:cardboard_box 2", + recipe = { + { "default:paper", "", "default:paper" }, + { "default:paper", "default:paper", "default:paper" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:cardboard_box_big 2", + recipe = { + { "default:paper", "", "default:paper" }, + { "default:paper", "", "default:paper" }, + { "default:paper", "default:paper", "default:paper" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:desk", + recipe = { + { "stairs:slab_wood", "stairs:slab_wood", "stairs:slab_wood" }, + { "homedecor:drawer_small", "default:wood", "default:wood" }, + { "homedecor:drawer_small", "", "default:wood" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:desk", + recipe = { + { "moreblocks:slab_wood", "moreblocks:slab_wood", "moreblocks:slab_wood" }, + { "homedecor:drawer_small", "default:wood", "default:wood" }, + { "homedecor:drawer_small", "", "default:wood" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:filing_cabinet", + recipe = { + { "", "default:wood", "" }, + { "default:wood", "homedecor:drawer_small", "default:wood" }, + { "", "default:wood", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:analog_clock_plastic 2", + recipe = { + { "homedecor:plastic_sheeting", "dye:black", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:ic", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "dye:black", "homedecor:plastic_sheeting" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:analog_clock_wood 2", + recipe = { + { "group:stick", "dye:black", "group:stick" }, + { "group:stick", "homedecor:ic", "group:stick" }, + { "group:stick", "dye:black", "group:stick" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:digital_clock 2", + recipe = { + { "homedecor:plastic_sheeting", "default:paper", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:ic", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:power_crystal", "homedecor:plastic_sheeting" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:alarm_clock", + recipe = { + { "homedecor:plastic_sheeting", "homedecor:speaker_driver", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:digital_clock", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:power_crystal", "homedecor:plastic_sheeting" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:air_conditioner", + recipe = { + { "default:steel_ingot", "building_blocks:grate", "default:steel_ingot" }, + { "default:steel_ingot", "homedecor:fan_blades", "homedecor:motor" }, + { "default:steel_ingot", "homedecor:motor", "default:steel_ingot" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:air_conditioner", + recipe = { + { "default:steel_ingot", "building_blocks:grate", "default:steel_ingot" }, + { "default:steel_ingot", "technic:motor", "default:steel_ingot" }, + { "default:steel_ingot", "technic:motor", "default:steel_ingot" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:ceiling_fan", + recipe = { + { "homedecor:motor" }, + { "homedecor:fan_blades" }, + { "homedecor:glowlight_small_cube" } + } +}) + +minetest.register_craft({ + output = "homedecor:ceiling_fan", + recipe = { + { "technic:motor" }, + { "homedecor:fan_blades" }, + { "homedecor:glowlight_small_cube" } + } +}) + +minetest.register_craft({ + output = "homedecor:welcome_mat_grey 2", + recipe = { + { "", "dye:black", "" }, + { "wool:grey", "wool:grey", "wool:grey" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:welcome_mat_brown 2", + recipe = { + { "", "dye:black", "" }, + { "wool:brown", "wool:brown", "wool:brown" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:welcome_mat_green 2", + recipe = { + { "", "dye:white", "" }, + { "wool:dark_green", "wool:dark_green", "wool:dark_green" }, + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:window_plain 8", + recipe = { + "dye:white", + "dye:white", + "dye:white", + "dye:white", + "building_blocks:woodglass" + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:window_quartered", + recipe = { + "dye:white", + "group:stick", + "group:stick", + "homedecor:window_plain" + } +}) + +minetest.register_craft({ + output = "homedecor:vcr 2", + recipe = { + { "homedecor:ic", "default:steel_ingot", "homedecor:plastic_sheeting" }, + { "default:iron_lump", "default:iron_lump", "default:iron_lump" }, + { "homedecor:plastic_sheeting", "", "homedecor:plastic_sheeting" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:dvd_player 2", + recipe = { + { "", "homedecor:plastic_sheeting", "" }, + { "default:obsidian_glass", "homedecor:motor", "homedecor:motor" }, + { "default:mese_crystal_fragment", "homedecor:ic", "homedecor:power_crystal" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:dvd_player 2", + recipe = { + { "", "homedecor:plastic_sheeting", "" }, + { "default:obsidian_glass", "technic:motor", "technic:motor" }, + { "default:mese_crystal_fragment", "homedecor:ic", "homedecor:power_crystal" }, + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:dvd_vcr", + recipe = { + "homedecor:vcr", + "homedecor:dvd_player" + }, +}) + +minetest.register_craft({ + output = "homedecor:blinds_thin", + recipe = { + { "group:stick", "homedecor:plastic_sheeting", "group:stick" }, + { "farming:string", "homedecor:plastic_strips", "" }, + { "", "homedecor:plastic_strips", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:blinds_thick", + recipe = { + { "group:stick", "homedecor:plastic_sheeting", "group:stick" }, + { "farming:string", "homedecor:plastic_strips", "homedecor:plastic_strips" }, + { "", "homedecor:plastic_strips", "homedecor:plastic_strips" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:openframe_bookshelf", + recipe = { + {"group:wood", "", "group:wood"}, + {"default:book", "default:book", "default:book"}, + {"group:wood", "", "group:wood"}, + }, +}) + +minetest.register_craft( { + output = "homedecor:desk_fan", + recipe = { + {"default:steel_ingot", "homedecor:fan_blades", "homedecor:motor"}, + {"", "default:steel_ingot", ""} + }, +}) + +minetest.register_craft( { + output = "homedecor:space_heater", + recipe = { + {"homedecor:plastic_sheeting", "homedecor:heating_element", "homedecor:plastic_sheeting"}, + {"homedecor:plastic_sheeting", "homedecor:fan_blades", "homedecor:motor"}, + {"homedecor:plastic_sheeting", "homedecor:heating_element", "homedecor:plastic_sheeting"} + }, +}) + +minetest.register_craft( { + output = "homedecor:radiator", + recipe = { + { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" }, + { "homedecor:ic", "homedecor:heating_element", "" }, + { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" } + }, +}) + +-- bathroom/kitchen tiles + +local color_pairings = { + { "grey", "white", "1" }, + { "dark_grey", "white", "2" }, + { "black", "white", "3" }, + { "black", "dark_grey", "4" }, + { "red", "white", "red" }, + { "green", "white", "green" }, + { "blue", "white", "blue" }, + { "yellow", "white", "yellow" }, + { "brown", "white", "tan" } +} + +for i in ipairs(color_pairings) do + local dye1 = color_pairings[i][1] + local dye2 = color_pairings[i][2] + local result = color_pairings[i][3] + minetest.register_craft( { + output = "homedecor:tiles_"..result.." 2", + recipe = { + { "group:marble", "dye:"..dye1 }, + { "group:marble", "dye:"..dye2 } + }, + }) +end + +-- misc electrical + +minetest.register_craft( { + output = "homedecor:power_outlet", + recipe = { + {"homedecor:plastic_sheeting", "homedecor:copper_strip"}, + {"homedecor:plastic_sheeting", ""}, + {"homedecor:plastic_sheeting", "homedecor:copper_strip"} + }, +}) + +minetest.register_craft( { + output = "homedecor:light_switch", + recipe = { + {"", "homedecor:plastic_sheeting", "homedecor:copper_strip"}, + {"homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:copper_strip"}, + {"", "homedecor:plastic_sheeting", "homedecor:copper_strip"} + }, +}) + +-- doghouse + +minetest.register_craft( { + output = "homedecor:doghouse", + recipe = { + {"homedecor:shingles_terracotta", "homedecor:shingles_terracotta", "homedecor:shingles_terracotta"}, + {"group:wood", "", "group:wood"}, + {"group:wood", "building_blocks:terrycloth_towel", "group:wood"} + }, +}) + +-- japanese walls and mat + +minetest.register_craft( { + output = "homedecor:japanese_wall_top", + recipe = { + {"group:stick", "default:paper"}, + {"default:paper", "group:stick"}, + {"group:stick", "default:paper"} + }, +}) + +minetest.register_craft( { + output = "homedecor:japanese_wall_top", + recipe = { + {"default:paper", "group:stick"}, + {"group:stick", "default:paper"}, + {"default:paper", "group:stick"} + }, +}) + +minetest.register_craft( { + output = "homedecor:japanese_wall_middle", + recipe = { + {"homedecor:japanese_wall_top"} + }, +}) + +minetest.register_craft( { + output = "homedecor:japanese_wall_bottom", + recipe = { + {"homedecor:japanese_wall_middle"} + }, +}) + +minetest.register_craft( { + output = "homedecor:japanese_wall_top", + recipe = { + {"homedecor:japanese_wall_bottom"} + }, +}) + +minetest.register_craft( { + output = "homedecor:tatami_mat", + recipe = { + {"farming:wheat", "farming:wheat", "farming:wheat"} + }, +}) + +minetest.register_craft( { + output = "homedecor:wardrobe", + recipe = { + { "homedecor:drawer_small", "homedecor:kitchen_cabinet" }, + { "homedecor:drawer_small", "default:wood" }, + { "homedecor:drawer_small", "default:wood" } + }, +}) + +minetest.register_craft( { + output = "homedecor:pool_table", + recipe = { + { "wool:dark_green", "wool:dark_green", "wool:dark_green" }, + { "building_blocks:hardwood", "building_blocks:hardwood", "building_blocks:hardwood" }, + { "building_blocks:slab_hardwood", "", "building_blocks:slab_hardwood" } + }, +}) + +minetest.register_craft( { + output = "homedecor:trash_can 3", + recipe = { + { "homedecor:steel_wire", "", "homedecor:steel_wire" }, + { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:telephone", + recipe = { + { "homedecor:speaker_driver", "homedecor:copper_wire", "homedecor:speaker_driver" }, + { "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting" }, + { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:cobweb_corner 5", + recipe = { + { "farming:string", "", "farming:string" }, + { "", "farming:string", "" }, + { "farming:string", "", "farming:string" } + }, +}) + +minetest.register_craft( { + output = "homedecor:well", + recipe = { + { "homedecor:shingles_wood", "homedecor:shingles_wood", "homedecor:shingles_wood" }, + { "group:wood", "group:stick", "group:wood" }, + { "group:stone", "", "group:stone" } + }, +}) + +minetest.register_craft( { + output = "homedecor:coat_tree", + recipe = { + { "group:stick", "group:stick", "group:stick" }, + { "", "group:stick", "" }, + { "", "group:wood", "" } + }, +}) + +minetest.register_craft( { + output = "homedecor:coatrack_wallmount", + recipe = { + { "group:stick", "homedecor:curtainrod_wood", "group:stick" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:doorbell", + recipe = { + { "homedecor:light_switch", "homedecor:power_crystal", "homedecor:speaker_driver" } + }, +}) + + +minetest.register_craft( { + output = "homedecor:bench_large_1", + recipe = { + { "group:wood", "group:wood", "group:wood" }, + { "group:wood", "group:wood", "group:wood" }, + { "homedecor:pole_wrought_iron", "", "homedecor:pole_wrought_iron" } + }, +}) + +minetest.register_craft( { + output = "homedecor:bench_large_2_left", + recipe = { + { "homedecor:shutter_oak", "homedecor:shutter_oak", "homedecor:shutter_oak" }, + { "group:wood", "group:wood", "group:wood" }, + { "stairs:slab_wood", "", "stairs:slab_wood" } + }, +}) + +minetest.register_craft( { + output = "homedecor:bench_large_2_left", + recipe = { + { "homedecor:shutter_oak", "homedecor:shutter_oak", "homedecor:shutter_oak" }, + { "group:wood", "group:wood", "group:wood" }, + { "moreblocks:slab_wood", "", "moreblocks:slab_wood" } + }, +}) + +minetest.register_craft( { + output = "homedecor:kitchen_faucet", + recipe = { + { "", "default:steel_ingot" }, + { "default:steel_ingot", "" }, + { "homedecor:taps", "" } + }, +}) + +minetest.register_craft( { + output = "homedecor:cutlery_set", + recipe = { + { "", "vessels:drinking_glass", "" }, + { "homedecor:steel_strip", "building_blocks:slab_marble", "homedecor:steel_strip" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:cutlery_set", + recipe = { + { "", "vessels:drinking_glass", "" }, + { "homedecor:steel_strip", "building_blocks:micro_marble_1", "homedecor:steel_strip" }, + }, +}) + +minetest.register_craft( { + output = "homedecor:simple_bench", + recipe = { + { "stairs:slab_wood", "stairs:slab_wood", "stairs:slab_wood" }, + { "stairs:slab_wood", "", "stairs:slab_wood" } + }, +}) + +minetest.register_craft( { + output = "homedecor:simple_bench", + recipe = { + { "moreblocks:slab_wood", "moreblocks:slab_wood", "moreblocks:slab_wood" }, + { "moreblocks:slab_wood", "", "moreblocks:slab_wood" } + }, +}) + +local bedcolors = { + { "red", "red"}, + { "orange", "orange" }, + { "yellow", "yellow"}, + { "green", "dark_green"}, + { "blue", "blue"}, + { "violet", "violet"}, + { "pink", "pink"}, + { "darkgrey", "dark_grey"}, + { "brown", "brown" }, +} + +for c in ipairs(bedcolors) do + local color = bedcolors[c][1] + local woolcolor = bedcolors[c][2] + + minetest.register_craft( { + output = "homedecor:bed_"..color.."_regular", + recipe = { + { "group:stick", "", "group:stick" }, + { "wool:white", "wool:"..woolcolor, "wool:"..woolcolor }, + { "group:wood", "", "group:wood" }, + }, + }) + + minetest.register_craft( { + output = "homedecor:bed_"..color.."_kingsize", + recipe = { + { "homedecor:bed_"..color.."_regular", "homedecor:bed_"..color.."_regular" } + }, + }) + +end + +minetest.register_craft( { + output = "homedecor:bottle_green", + recipe = { + { "vessels:glass_bottle", "dye:green" } + }, +}) + +minetest.register_craft( { + output = "homedecor:bottle_brown", + recipe = { + { "vessels:glass_bottle", "dye:brown" } + }, +}) + +if not minetest.get_modpath("glooptest") then + + minetest.register_craft({ + output = "glooptest:chainlink 12", + recipe = { + {"", "default:steel_ingot", "default:steel_ingot"}, + { "default:steel_ingot", "", "default:steel_ingot" }, + { "default:steel_ingot", "default:steel_ingot", "" }, + }, + }) + +end + +minetest.register_alias("homedecor:chainlink_steel", "glooptest:chainlink") + +minetest.register_craft({ + output = "homedecor:chains 4", + recipe = { + { "default:steel_ingot", "", "default:steel_ingot"}, + { "glooptest:chainlink", "", "glooptest:chainlink" }, + { "glooptest:chainlink", "", "glooptest:chainlink" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:chainlink_brass 12", + recipe = { + {"", "technic:brass_ingot", "technic:brass_ingot"}, + { "technic:brass_ingot", "", "technic:brass_ingot" }, + { "technic:brass_ingot", "technic:brass_ingot", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:coffee_maker", + recipe = { + {"homedecor:plastic_sheeting", "bucket:bucket_water", "homedecor:plastic_sheeting"}, + {"homedecor:plastic_sheeting", "default:glass", "homedecor:plastic_sheeting"}, + {"homedecor:plastic_sheeting", "homedecor:heating_element", "homedecor:plastic_sheeting"} + }, +}) + +minetest.register_craft({ + output = "homedecor:dartboard", + recipe = { + {"dye:black", "homedecor:plastic_sheeting", "dye:white"}, + {"homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting"}, + {"dye:dark_green", "homedecor:plastic_sheeting", "dye:red"} + }, +}) + +minetest.register_craft({ + output = "homedecor:piano", + recipe = { + { "", "homedecor:steel_wire", "building_blocks:hardwood" }, + { "homedecor:plastic_strips", "homedecor:steel_wire", "building_blocks:hardwood" }, + { "technic:brass_ingot", "default:steelblock", "building_blocks:hardwood" } + }, +}) + +minetest.register_craft({ + output = "homedecor:toaster", + recipe = { + { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" }, + { "default:steel_ingot", "homedecor:heating_element", "default:steel_ingot" } + }, +}) + +minetest.register_craft({ + output = "homedecor:deckchair", + recipe = { + { "group:stick", "building_blocks:terrycloth_towel", "group:stick" }, + { "group:stick", "building_blocks:terrycloth_towel", "group:stick" }, + { "group:stick", "building_blocks:terrycloth_towel", "group:stick" } + }, +}) + +minetest.register_craft({ + output = "homedecor:deckchair_striped_blue", + type = "shapeless", + recipe = { + "homedecor:deckchair", + "dye:blue" + } +}) + +minetest.register_craft({ + output = "homedecor:office_chair_basic", + recipe = { + { "", "", "wool:black" }, + { "", "wool:black", "default:steel_ingot" }, + { "group:stick", "homedecor:pole_wrought_iron", "group:stick" } + }, +}) + +minetest.register_craft({ + output = "homedecor:office_chair_upscale", + recipe = { + { "dye:black", "building_blocks:sticks", "group:wool" }, + { "homedecor:plastic_sheeting", "group:wool", "default:steel_ingot" }, + { "building_blocks:sticks", "homedecor:pole_wrought_iron", "building_blocks:sticks" } + }, +}) + +minetest.register_craft({ + output = "homedecor:wall_shelf 2", + recipe = { + { "homedecor:wood_table_small_square", "homedecor:curtainrod_wood", "homedecor:curtainrod_wood" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:trophy 3", + recipe = { + { "default:gold_ingot","","default:gold_ingot" }, + { "","default:gold_ingot","" }, + { "group:wood","default:gold_ingot","group:wood" } + }, +}) + +minetest.register_craft({ + output = "homedecor:grandfather_clock", + recipe = { + { "building_blocks:slab_hardwood","homedecor:analog_clock_wood","building_blocks:slab_hardwood" }, + { "building_blocks:slab_hardwood","technic:brass_ingot","building_blocks:slab_hardwood" }, + { "building_blocks:slab_hardwood","technic:brass_ingot","building_blocks:slab_hardwood" } + }, +}) + +minetest.register_craft({ + output = "homedecor:sportbench", + recipe = { + { "stairs:slab_steelblock","homedecor:pole_wrought_iron","stairs:slab_steelblock" }, + { "default:steel_ingot","wool:black","default:steel_ingot" }, + { "default:steel_ingot","wool:black","default:steel_ingot" } + }, +}) + +minetest.register_craft({ + output = "homedecor:skateboard", + recipe = { + { "dye:yellow","dye:green","dye:blue" }, + { "homedecor:wood_table_small_square","homedecor:wood_table_small_square","homedecor:wood_table_small_square" }, + { "default:steel_ingot","","default:steel_ingot" } + }, +}) + +minetest.register_craft({ + output = "homedecor:copper_pans", + recipe = { + { "homedecor:copper_strip","","homedecor:copper_strip" }, + { "default:copper_ingot","","default:copper_ingot" }, + { "default:copper_ingot","","default:copper_ingot" } + }, +}) + +minetest.register_craft( { + output = "homedecor:window_flowerbox", + recipe = { + { "homedecor:roof_tile_terracotta", "default:dirt", "homedecor:roof_tile_terracotta" }, + { "", "homedecor:roof_tile_terracotta", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:paper_towel", + recipe = { + { "homedecor:toilet_paper", "homedecor:toilet_paper" } + }, +}) + +minetest.register_craft({ + output = "homedecor:stonepath 16", + recipe = { + { "stairs:slab_stone","","stairs:slab_stone" }, + { "","stairs:slab_stone","" }, + { "stairs:slab_stone","","stairs:slab_stone" } + }, +}) + +minetest.register_craft({ + output = "homedecor:stonepath 16", + recipe = { + { "moreblocks:slab_stone","","moreblocks:slab_stone" }, + { "","moreblocks:slab_stone","" }, + { "moreblocks:slab_stone","","moreblocks:slab_stone" } + }, +}) + +minetest.register_craft({ + output = "homedecor:stonepath 3", + recipe = { + { "moreblocks:micro_stone_1","","moreblocks:micro_stone_1" }, + { "","moreblocks:micro_stone_1","" }, + { "moreblocks:micro_stone_1","","moreblocks:micro_stone_1" } + }, +}) + +minetest.register_craft({ + output = "homedecor:barbecue", + recipe = { + { "","homedecor:fence_chainlink","" }, + { "default:steel_ingot","fake_fire:embers","default:steel_ingot" }, + { "homedecor:pole_wrought_iron","default:steel_ingot","homedecor:pole_wrought_iron" } + }, +}) + +minetest.register_craft({ + output = "homedecor:drink_tap", + recipe = { + { "group:stick","default:steel_ingot","group:stick" }, + { "homedecor:kitchen_faucet","default:steel_ingot","homedecor:kitchen_faucet" }, + { "default:steel_ingot","default:steel_ingot","default:steel_ingot" } + }, +}) +-- already done in gastronomy.lua: minetest.register_alias("homedecor:beer_tap", "homedecor:drink_tap") + +minetest.register_craft({ + output = "homedecor:swing", + recipe = { + { "farming:string","","farming:string" }, + { "farming:string","","farming:string" }, + { "farming:string","stairs:slab_wood","farming:string" } + }, +}) + +minetest.register_craft({ + output = "homedecor:swing", + recipe = { + { "farming:string","","farming:string" }, + { "farming:string","","farming:string" }, + { "farming:string","moreblocks:slab_wood","farming:string" } + }, +}) + +minetest.register_craft({ + output = "homedecor:swing", + recipe = { + { "farming:string","","farming:string" }, + { "farming:string","","farming:string" }, + { "farming:string","moreblocks:panel_wood_1","farming:string" } + }, +}) + +local bookcolors = { + "red", + "green", + "blue", + "violet", + "grey", + "brown" +} + +for _, color in ipairs(bookcolors) do + minetest.register_craft({ + type = "shapeless", + output = "homedecor:book_"..color, + recipe = { + "dye:"..color, + "default:book" + }, + }) +end + +minetest.register_craft({ + output = "homedecor:door_japanese_closed", + recipe = { + { "homedecor:japanese_wall_top" }, + { "homedecor:japanese_wall_bottom" } + }, +}) + +minetest.register_craft({ + output = "homedecor:calendar", + recipe = { + { "","dye:red","" }, + { "","dye:black","" }, + { "","default:paper","" } + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:4_bottles_brown", + recipe = { + "homedecor:bottle_brown", + "homedecor:bottle_brown", + "homedecor:bottle_brown", + "homedecor:bottle_brown" + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:4_bottles_green", + recipe = { + "homedecor:bottle_green", + "homedecor:bottle_green", + "homedecor:bottle_green", + "homedecor:bottle_green" + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:4_bottles_multi", + recipe = { + "homedecor:bottle_brown", + "homedecor:bottle_brown", + "homedecor:bottle_green", + "homedecor:bottle_green", + }, +}) + +minetest.register_craft({ + output = "homedecor:drink_rack", + recipe = { + { "homedecor:4_bottles_brown", "group:wood", "homedecor:4_bottles_brown" }, + { "homedecor:4_bottles_brown", "group:wood", "homedecor:4_bottles_brown" }, + { "homedecor:4_bottles_brown", "group:wood", "homedecor:4_bottles_brown" }, + }, +}) +minetest.register_alias("homedecor:wine_rack", "homedecor:drink_rack") + + +local picture_dyes = { + {"dye:brown", "dye:green"}, -- the figure sitting by the tree, wielding a pick + {"dye:green", "dye:blue"} -- the "family photo" +} + +for i in ipairs(picture_dyes) do + minetest.register_craft({ + output = "homedecor:picture_frame"..i, + recipe = { + { picture_dyes[i][1], picture_dyes[i][2] }, + { "homedecor:blank_canvas", "group:stick" }, + }, + }) +end + +local dlamp_colors = { "red","blue","green","violet" } + +for _, color in ipairs(dlamp_colors) do + minetest.register_craft({ + output = "homedecor:desk_lamp_"..color, + recipe = { + { "", "homedecor:steel_strip", "homedecor:glowlight_small_cube" }, + { "", "homedecor:copper_wire", "" }, + { "homedecor:plastic_sheeting", "dye:"..color, "homedecor:plastic_sheeting" }, + }, + }) +end + +minetest.register_craft({ + output = "homedecor:hanging_lantern 2", + recipe = { + { "default:iron_lump", "default:iron_lump", "" }, + { "default:iron_lump", "homedecor:lattice_lantern_large", "" }, + { "default:iron_lump", "", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:ceiling_lantern 2", + recipe = { + { "default:iron_lump", "default:iron_lump", "default:iron_lump" }, + { "default:iron_lump", "homedecor:lattice_lantern_large", "default:iron_lump" }, + { "", "default:iron_lump", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:wall_lamp 2", + recipe = { + { "", "homedecor:lattice_lantern_large", "" }, + { "default:iron_lump", "group:stick", "" }, + { "default:iron_lump", "group:stick", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:desk_globe", + recipe = { + { "group:stick", "homedecor:plastic_sheeting", "dye:green" }, + { "group:stick", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + { "group:stick", "stairs:slab_wood", "dye:blue" } + }, +}) + +minetest.register_craft({ + output = "homedecor:desk_globe", + recipe = { + { "group:stick", "homedecor:plastic_sheeting", "dye:green" }, + { "group:stick", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + { "group:stick", "moreblocks:slab_wood", "dye:blue" } + }, +}) + +minetest.register_craft({ + output = "homedecor:tool_cabinet", + recipe = { + { "homedecor:motor", "default:axe_steel", "default:pick_steel" }, + { "default:steel_ingot", "homedecor:drawer_small", "default:steel_ingot" }, + { "default:steel_ingot", "homedecor:drawer_small", "default:steel_ingot" } + }, +}) + +minetest.register_craft({ + output = "homedecor:bathroom_set", + recipe = { + { "", "homedecor:glass_table_small_round", "" }, + { "homedecor:plastic_sheeting", "homedecor:glass_table_small_round", "homedecor:plastic_sheeting" }, + { "group:stick", "homedecor:plastic_sheeting", "group:stick" } + }, +}) + +minetest.register_craft({ + output = "homedecor:trash_can_green", + recipe = { + { "homedecor:plastic_sheeting", "", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "dye:green", "homedecor:plastic_sheeting" }, + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" } + }, +}) + +minetest.register_craft({ + output = "homedecor:ceiling_lamp", + recipe = { + { "", "technic:brass_ingot", ""}, + { "", "homedecor:chainlink_brass", ""}, + { "default:glass", "homedecor:glowlight_small", "default:glass"} + }, +}) + +minetest.register_craft({ + output = "homedecor:ceiling_lamp", + recipe = { + { "", "chains:chain_top_brass", ""}, + { "default:glass", "homedecor:glowlight_small", "default:glass"} + }, +}) + +minetest.register_craft({ + output = "homedecor:spiral_staircase", + recipe = { + { "default:steelblock", "homedecor:pole_wrought_iron", "" }, + { "", "homedecor:pole_wrought_iron", "default:steelblock" }, + { "default:steelblock", "homedecor:pole_wrought_iron", "" } + }, +}) + +minetest.register_craft({ + output = "homedecor:soda_machine", + recipe = { + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "dye:red", "default:steel_ingot"}, + {"default:steel_ingot", "default:copperblock", "default:steel_ingot"}, + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:coin 5", + recipe = {"moreblocks:micro_goldblock_1", "default:sword_stone"} +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:coin 15", + recipe = {"default:gold_ingot", "default:sword_steel"} +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:coin 50", + recipe = {"default:goldblock", "default:sword_mese"} +}) + +minetest.register_craft({ + output = "homedecor:lattice_wood 8", + recipe = { + {"group:stick", "group:wood", "group:stick"}, + {"group:wood", "", "group:wood"}, + {"group:stick", "group:wood", "group:stick"}, + }, +}) + +minetest.register_craft({ + output = "homedecor:lattice_white_wood 8", + recipe = { + {"group:stick", "group:wood", "group:stick"}, + {"group:wood", "dye:white", "group:wood"}, + {"group:stick", "group:wood", "group:stick"}, + }, +}) + +minetest.register_craft({ + output = "homedecor:lattice_wood_vegetal 8", + recipe = { + {"group:stick", "group:wood", "group:stick"}, + {"group:wood", "group:leaves", "group:wood"}, + {"group:stick", "group:wood", "group:stick"}, + }, +}) + +minetest.register_craft({ + output = "homedecor:lattice_white_wood_vegetal 8", + recipe = { + {"group:stick", "group:wood", "group:stick"}, + {"group:wood", "group:leaves", "group:wood"}, + {"group:stick", "dye:white", "group:stick"}, + }, +}) + +minetest.register_craft({ + output = "homedecor:stained_glass 8", + recipe = { + {"", "dye:blue", ""}, + {"dye:red", "default:glass", "dye:green"}, + {"", "dye:yellow", ""}, + }, +}) + +minetest.register_craft({ + output = "homedecor:stained_glass", + recipe = { + {"", "dye:blue", ""}, + {"dye:red", "xpanes:pane", "dye:green"}, + {"", "dye:yellow", ""}, + }, +}) + +minetest.register_craftitem("homedecor:flower_pot_small", { + description = S("Small Flower Pot"), + inventory_image = "homedecor_flowerpot_small_inv.png" +}) + +minetest.register_craft( { + output = "homedecor:flower_pot_small", + recipe = { + { "default:clay_brick", "", "default:clay_brick" }, + { "", "default:clay_brick", "" } + } +}) + +minetest.register_craft( { + output = "homedecor:flower_pot_small 3", + recipe = { { "homedecor:flower_pot_terracotta" } } +}) + +minetest.register_craft({ + output = "homedecor:shrubbery_green 3", + recipe = { + { "group:leaves", "group:leaves", "group:leaves" }, + { "group:leaves", "group:leaves", "group:leaves" }, + { "group:stick", "group:stick", "group:stick" } + } +}) + +for _, color in ipairs(homedecor.shrub_colors) do + + minetest.register_craft({ + type = "shapeless", + output = "homedecor:shrubbery_large_"..color, + recipe = { + "homedecor:shrubbery_"..color + } + }) + + minetest.register_craft({ + type = "shapeless", + output = "homedecor:shrubbery_"..color, + recipe = { + "homedecor:shrubbery_large_"..color + } + }) + + if color ~= "green" then + minetest.register_craft({ + type = "shapeless", + output = "homedecor:shrubbery_large_"..color, + recipe = { + "homedecor:shrubbery_large_green", + "dye:"..color + } + }) + + minetest.register_craft({ + type = "shapeless", + output = "homedecor:shrubbery_"..color, + recipe = { + "homedecor:shrubbery_green", + "dye:"..color + } + }) + + end +end + +for i in ipairs(homedecor.banister_materials) do + + local name = homedecor.banister_materials[i][1] + local topmat = homedecor.banister_materials[i][5] + local vertmat = homedecor.banister_materials[i][6] + local dye1 = homedecor.banister_materials[i][7] + local dye2 = homedecor.banister_materials[i][8] + + minetest.register_craft({ + output = "homedecor:banister_"..name.."_horizontal 2", + recipe = { + { topmat, "", dye1 }, + { vertmat, topmat, "" }, + { dye2, vertmat, topmat } + }, + }) +end + +if (minetest.get_modpath("technic") and minetest.get_modpath("dye") and minetest.get_modpath("bees")) then + technic.register_separating_recipe({ input = {"bees:wax 1"}, output = {"homedecor:oil_extract 2","dye:yellow 1"} }) +end diff --git a/patches/subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/gastronomy.lua b/patches/subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/gastronomy.lua new file mode 100644 index 0000000..81a29d1 --- /dev/null +++ b/patches/subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/gastronomy.lua @@ -0,0 +1,209 @@ + +local cutlery_cbox = { + type = "fixed", + fixed = { + { -5/16, -8/16, -6/16, 5/16, -7/16, 2/16 }, + { -2/16, -8/16, 2/16, 2/16, -4/16, 6/16 } + } +} + +homedecor.register("cutlery_set", { + drawtype = "mesh", + mesh = "homedecor_cutlery_set.obj", + tiles = { "homedecor_cutlery_set.png" }, + inventory_image = "homedecor_cutlery_set_inv.png", + description = "Cutlery set", + groups = {snappy=3}, + selection_box = cutlery_cbox, + walkable = false, + sounds = default.node_sound_glass_defaults(), +}) + +local bottle_cbox = { + type = "fixed", + fixed = { + { -0.125, -0.5, -0.125, 0.125, 0, 0.125} + } +} + +local fbottle_cbox = { + type = "fixed", + fixed = { + { -0.375, -0.5, -0.3125, 0.375, 0, 0.3125 } + } +} + +local bottle_colors = {"brown", "green"} + +for _, b in ipairs(bottle_colors) do + + homedecor.register("bottle_"..b, { + tiles = { "homedecor_bottle_"..b..".png" }, + inventory_image = "homedecor_bottle_"..b.."_inv.png", + description = "Bottle ("..b..")", + mesh = "homedecor_bottle.obj", + walkable = false, + groups = {snappy=3}, + sounds = default.node_sound_glass_defaults(), + selection_box = bottle_cbox + }) + + -- 4-bottle sets + + homedecor.register("4_bottles_"..b, { + tiles = { + "homedecor_bottle_"..b..".png", + "homedecor_bottle_"..b..".png" + }, + inventory_image = "homedecor_4_bottles_"..b.."_inv.png", + description = "Four "..b.." bottles", + mesh = "homedecor_4_bottles.obj", + walkable = false, + groups = {snappy=3}, + sounds = default.node_sound_glass_defaults(), + selection_box = fbottle_cbox + }) +end + +homedecor.register("4_bottles_multi", { + tiles = { + "homedecor_bottle_brown.png", + "homedecor_bottle_green.png" + }, + inventory_image = "homedecor_4_bottles_multi_inv.png", + description = "Four misc brown/green bottles", + mesh = "homedecor_4_bottles.obj", + groups = {snappy=3}, + walkable = false, + sounds = default.node_sound_glass_defaults(), + selection_box = fbottle_cbox +}) + +local wine_cbox = homedecor.nodebox.slab_z(-0.75) +homedecor.register("drink_rack", { + description = "Drink rack", + mesh = "homedecor_wine_rack.obj", + tiles = { + "homedecor_generic_wood_red.png", + "homedecor_bottle_brown.png", + "homedecor_bottle_brown2.png", + "homedecor_bottle_brown3.png", + "homedecor_bottle_brown4.png" + }, + inventory_image = "homedecor_wine_rack_inv.png", + groups = {choppy=2}, + selection_box = wine_cbox, + collision_box = wine_cbox, + sounds = default.node_sound_defaults(), +}) + +homedecor.register("dartboard", { + description = "Dartboard", + mesh = "homedecor_dartboard.obj", + tiles = { "homedecor_dartboard.png" }, + inventory_image = "homedecor_dartboard_inv.png", + wield_image = "homedecor_dartboard_inv.png", + paramtype2 = "wallmounted", + walkable = false, + selection_box = { + type = "wallmounted", + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_wood_defaults(), +}) + +homedecor.register("drink_tap", { + description = "Drink tap", + mesh = "homedecor_beer_taps.obj", + tiles = { + "homedecor_generic_metal_bright.png", + { name = "homedecor_generic_metal.png", color = homedecor.color_black } + }, + inventory_image = "homedecor_beertap_inv.png", + groups = { snappy=3 }, + walkable = false, + selection_box = { + type = "fixed", + fixed = { -0.25, -0.5, -0.4375, 0.25, 0.235, 0 } + }, + on_punch = function(pos, node, puncher, pointed_thing) + local wielditem = puncher:get_wielded_item() + local inv = puncher:get_inventory() + + local wieldname = wielditem:get_name() + if wieldname == "vessels:drinking_glass" then + if inv:room_for_item("main", "homedecor:drink_mug 1") then + wielditem:take_item() + puncher:set_wielded_item(wielditem) + inv:add_item("main", "homedecor:drink_mug 1") + minetest.chat_send_player(puncher:get_player_name(), "Ahh, a nice cold drink - look in your inventory for it!") + else + minetest.chat_send_player(puncher:get_player_name(), "No room in your inventory to add a drink mug!") + end + end + end +}) +minetest.register_alias("homedecor:beer_tap", "homedecor:drink_tap") + +minetest.register_craft({ + output = "homedecor:drink_tap", + recipe = { + { "group:stick","default:steel_ingot","group:stick" }, + { "homedecor:kitchen_faucet","default:steel_ingot","homedecor:kitchen_faucet" }, + { "default:steel_ingot","default:steel_ingot","default:steel_ingot" } + }, +}) + +local beer_cbox = { + type = "fixed", + fixed = { -5/32, -8/16, -9/32 , 7/32, -2/16, 1/32 } +} + +homedecor.register("drink_mug", { + description = "Drink mug", + drawtype = "mesh", + mesh = "homedecor_beer_mug.obj", + tiles = { "homedecor_beer_mug.png" }, + inventory_image = "homedecor_beer_mug_inv.png", + groups = { snappy=3, oddly_breakable_by_hand=3 }, + walkable = false, + sounds = default.node_sound_glass_defaults(), + selection_box = beer_cbox, + on_use = minetest.item_eat(2) +}) +minetest.register_alias("homedecor:beer_mug", "homedecor:drink_mug") + +local svm_cbox = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 1.5, 0.5} +} + +homedecor.register("soda_machine", { + description = "Soda Vending Machine", + mesh = "homedecor_soda_machine.obj", + tiles = {"homedecor_soda_machine.png"}, + groups = {snappy=3}, + selection_box = svm_cbox, + collision_box = svm_cbox, + expand = { top="placeholder" }, + sounds = default.node_sound_wood_defaults(), + on_rotate = screwdriver.rotate_simple, + on_punch = function(pos, node, puncher, pointed_thing) + local wielditem = puncher:get_wielded_item() + local wieldname = wielditem:get_name() + local fdir_to_fwd = { {0, -1}, {-1, 0}, {0, 1}, {1, 0} } + 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] } + if wieldname == "homedecor:coin" then + wielditem:take_item() + puncher:set_wielded_item(wielditem) + minetest.spawn_item(pos_drop, "homedecor:soda_can") + minetest.sound_play("insert_coin", { + pos=pos, max_hear_distance = 5 + }) + else + minetest.chat_send_player(puncher:get_player_name(), "Please insert a coin in the machine.") + end + end +}) diff --git a/patches/subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/models/homedecor_beer_mug.obj b/patches/subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/models/homedecor_beer_mug.obj new file mode 100644 index 0000000..4e1d6e7 --- /dev/null +++ b/patches/subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/models/homedecor_beer_mug.obj @@ -0,0 +1,421 @@ +# Blender v2.73 (sub 0) OBJ File: 'beer_mug.blend' +# www.blender.org +o Torus.001 +v -0.200872 -0.271336 -0.101373 +v 0.027435 -0.500000 0.013804 +v 0.078127 -0.500000 -0.007193 +v -0.213731 -0.262707 -0.113186 +v 0.116925 -0.500000 -0.045991 +v 0.137922 -0.500000 -0.096683 +v -0.201779 -0.214262 -0.136814 +v 0.137922 -0.500000 -0.151551 +v 0.116925 -0.500000 -0.202243 +v -0.190840 -0.230675 -0.148627 +v 0.078127 -0.500000 -0.241041 +v 0.027435 -0.500000 -0.262038 +v -0.179901 -0.247087 -0.136814 +v -0.027433 -0.500000 -0.262038 +v -0.078125 -0.500000 -0.241041 +v -0.179901 -0.247087 -0.113186 +v -0.116923 -0.500000 -0.202243 +v -0.137920 -0.500000 -0.151551 +v -0.190840 -0.230675 -0.101373 +v -0.137920 -0.500000 -0.096682 +v -0.116923 -0.500000 -0.045991 +v -0.201779 -0.214262 -0.113186 +v -0.078125 -0.500000 -0.007193 +v -0.027433 -0.500000 0.013804 +v -0.183162 -0.175815 -0.136814 +v 0.024062 -0.166667 -0.003152 +v 0.068522 -0.166667 -0.021568 +v -0.175215 -0.198406 -0.148627 +v 0.102550 -0.166667 -0.055596 +v 0.120966 -0.166667 -0.100055 +v -0.167267 -0.220996 -0.136814 +v 0.120966 -0.166667 -0.148178 +v 0.102550 -0.166667 -0.192638 +v -0.167267 -0.220996 -0.113186 +v 0.068522 -0.166667 -0.226666 +v 0.024062 -0.166667 -0.245082 +v -0.175215 -0.198406 -0.101373 +v -0.024061 -0.166667 -0.245082 +v -0.068520 -0.166667 -0.226666 +v -0.183162 -0.175815 -0.113186 +v -0.102548 -0.166667 -0.192638 +v -0.120964 -0.166667 -0.148178 +v -0.159704 -0.151131 -0.136814 +v -0.120964 -0.166667 -0.100055 +v -0.102548 -0.166667 -0.055596 +v -0.155526 -0.177688 -0.148627 +v -0.068520 -0.166667 -0.021568 +v -0.024060 -0.166667 -0.003152 +v -0.151348 -0.204244 -0.136814 +v 0.027435 -0.125001 0.013804 +v 0.078127 -0.125001 -0.007193 +v -0.151348 -0.204244 -0.113186 +v 0.116925 -0.125001 -0.045991 +v 0.137922 -0.125001 -0.096683 +v -0.155526 -0.177688 -0.101373 +v 0.137922 -0.125001 -0.151551 +v 0.116925 -0.125001 -0.202243 +v -0.159704 -0.151131 -0.113186 +v 0.078127 -0.125001 -0.241041 +v 0.027435 -0.125001 -0.262038 +v -0.133701 -0.142626 -0.136814 +v -0.027433 -0.125001 -0.262038 +v -0.078125 -0.125001 -0.241041 +v -0.133701 -0.170549 -0.148627 +v -0.116923 -0.125001 -0.202243 +v -0.137921 -0.125001 -0.151551 +v -0.133701 -0.198472 -0.136814 +v -0.137921 -0.125001 -0.096682 +v -0.116923 -0.125001 -0.045991 +v -0.133701 -0.198472 -0.113186 +v -0.078125 -0.125001 -0.007193 +v -0.027433 -0.125001 0.013804 +v -0.133701 -0.170549 -0.101373 +v 0.024062 -0.125001 -0.003152 +v 0.068522 -0.125001 -0.021568 +v -0.133701 -0.142626 -0.113186 +v 0.102550 -0.125001 -0.055596 +v 0.120966 -0.125001 -0.100055 +v -0.133701 -0.490192 -0.136814 +v 0.120966 -0.125001 -0.148178 +v 0.102550 -0.125001 -0.192638 +v -0.133701 -0.462269 -0.148627 +v 0.068522 -0.125001 -0.226666 +v 0.024062 -0.125001 -0.245082 +v -0.133701 -0.434346 -0.136814 +v -0.024061 -0.125001 -0.245082 +v -0.068520 -0.125001 -0.226666 +v -0.133701 -0.434346 -0.113186 +v -0.102548 -0.125001 -0.192638 +v -0.120964 -0.125001 -0.148178 +v -0.133701 -0.462269 -0.101373 +v -0.120964 -0.125001 -0.100055 +v -0.102548 -0.125001 -0.055596 +v -0.133701 -0.490192 -0.113186 +v -0.068520 -0.125001 -0.021568 +v -0.024061 -0.125001 -0.003152 +v -0.188013 -0.279964 -0.113186 +v -0.188013 -0.279964 -0.136814 +v -0.200872 -0.271336 -0.148627 +v -0.213731 -0.262707 -0.136814 +v -0.217850 -0.316409 -0.113186 +v -0.204329 -0.316409 -0.101373 +v -0.190808 -0.316409 -0.113186 +v -0.190808 -0.316409 -0.136814 +v -0.204329 -0.316409 -0.148627 +v -0.217850 -0.316409 -0.136814 +v -0.213731 -0.370111 -0.113186 +v -0.200872 -0.361482 -0.101373 +v -0.188013 -0.352853 -0.113186 +v -0.188013 -0.352853 -0.136814 +v -0.200872 -0.361482 -0.148627 +v -0.213731 -0.370111 -0.136814 +v -0.201779 -0.418556 -0.113186 +v -0.190840 -0.402143 -0.101373 +v -0.179901 -0.385730 -0.113186 +v -0.179901 -0.385730 -0.136814 +v -0.190840 -0.402143 -0.148627 +v -0.201779 -0.418556 -0.136814 +v -0.183162 -0.457002 -0.113186 +v -0.175215 -0.434412 -0.101373 +v -0.167268 -0.411822 -0.113186 +v -0.167268 -0.411822 -0.136814 +v -0.175215 -0.434412 -0.148627 +v -0.183162 -0.457002 -0.136814 +v -0.159704 -0.481686 -0.113186 +v -0.155526 -0.455130 -0.101373 +v -0.151348 -0.428574 -0.113186 +v -0.151348 -0.428574 -0.136814 +v -0.155526 -0.455130 -0.148627 +v -0.159704 -0.481686 -0.136814 +vt 0.156250 0.218750 +vt 0.156250 0.187500 +vt 0.218750 0.187500 +vt 0.218750 0.218750 +vt 0.465889 0.405864 +vt 0.537350 0.405864 +vt 0.603372 0.433211 +vt 0.653903 0.483742 +vt 0.681251 0.549764 +vt 0.681251 0.621226 +vt 0.653904 0.687248 +vt 0.603372 0.737779 +vt 0.537350 0.765126 +vt 0.465889 0.765126 +vt 0.399867 0.737779 +vt 0.349335 0.687248 +vt 0.321988 0.621226 +vt 0.321988 0.549764 +vt 0.349335 0.483742 +vt 0.399867 0.433211 +vt 0.625000 0.906250 +vt 0.687500 0.906250 +vt 0.687500 0.937500 +vt 0.625000 0.937500 +vt 0.937500 0.906250 +vt 1.000000 0.906250 +vt 1.000000 0.937500 +vt 0.937500 0.937500 +vt 0.250000 0.906250 +vt 0.312500 0.906250 +vt 0.312500 0.937500 +vt 0.250000 0.937500 +vt 0.562500 0.906250 +vt 0.562500 0.937500 +vt 0.875000 0.906250 +vt 0.875000 0.937500 +vt 0.187500 0.906250 +vt 0.187500 0.937500 +vt 0.812500 0.906250 +vt 0.812500 0.937500 +vt 0.437500 0.906250 +vt 0.500000 0.906250 +vt 0.500000 0.937500 +vt 0.437500 0.937500 +vt 0.125000 0.906250 +vt 0.125000 0.937500 +vt 0.750000 0.906250 +vt 0.750000 0.937500 +vt 0.375000 0.906250 +vt 0.375000 0.937500 +vt 0.062500 0.906250 +vt 0.062500 0.937500 +vt -0.000000 0.906250 +vt -0.000000 0.937500 +vt 0.281250 0.312500 +vt 0.281250 0.281250 +vt 0.343750 0.281250 +vt 0.343750 0.312500 +vt 0.093750 0.218750 +vt 0.156250 0.250000 +vt 0.093750 0.250000 +vt 0.375000 1.000000 +vt 0.312500 1.000000 +vt 0.281250 0.250000 +vt 0.343750 0.250000 +vt 0.156250 0.312500 +vt 0.156250 0.281250 +vt 0.218750 0.281250 +vt 0.218750 0.312500 +vt 0.531250 0.187500 +vt 0.593750 0.187500 +vt 0.593750 0.218750 +vt 0.531250 0.218750 +vt 0.656250 0.187500 +vt 0.656250 0.218750 +vt 0.093750 0.187500 +vt 0.218750 0.250000 +vt 0.125000 0.406250 +vt 0.187500 0.406250 +vt 0.687500 1.000000 +vt 0.625000 1.000000 +vt 0.937500 0.406250 +vt 1.000000 0.406250 +vt 0.062500 1.000000 +vt 0.125000 1.000000 +vt 0.375000 0.406250 +vt 0.437500 0.406250 +vt 0.687500 0.406250 +vt 0.750000 0.406250 +vt 0.937500 1.000000 +vt 0.875000 1.000000 +vt 0.250000 0.406250 +vt 0.187500 1.000000 +vt 0.093750 0.343750 +vt 0.093750 0.312500 +vt 0.156250 0.343750 +vt 0.500000 0.406250 +vt 0.812500 0.406250 +vt 0.437500 1.000000 +vt 0.218750 0.156250 +vt 0.281250 0.156250 +vt 0.281250 0.187500 +vt 0.750000 1.000000 +vt 0.031250 0.250000 +vt 0.031250 0.218750 +vt 0.562500 0.406250 +vt -0.000000 0.406250 +vt 0.062500 0.406250 +vt 1.000000 1.000000 +vt 0.343750 0.187500 +vt 0.343750 0.156250 +vt 0.406250 0.156250 +vt 0.406250 0.187500 +vt 0.312500 0.406250 +vt 0.625000 0.406250 +vt 0.250000 1.000000 +vt 0.406250 0.343750 +vt 0.406250 0.312500 +vt 0.468750 0.312500 +vt 0.468750 0.343750 +vt 0.875000 0.406250 +vt 0.468750 0.156250 +vt 0.468750 0.187500 +vt 0.500000 1.000000 +vt 0.812500 1.000000 +vt 0.406250 0.281250 +vt 0.406250 0.250000 +vt 0.562500 1.000000 +vt -0.000000 1.000000 +vt 0.218750 0.343750 +vt 0.531250 0.312500 +vt 0.531250 0.281250 +vt 0.593750 0.281250 +vt 0.593750 0.312500 +vt 0.468750 0.281250 +vt 0.468750 0.250000 +vt 0.531250 0.250000 +vt 0.281250 0.343750 +vt 0.593750 0.250000 +vt 0.281250 0.218750 +vt 0.343750 0.218750 +vt 0.031250 0.156250 +vt 0.093750 0.156250 +vt 0.031250 0.187500 +vt 0.813063 0.373140 +vt 0.756333 0.349641 +vt 0.712914 0.306222 +vt 0.689415 0.249492 +vt 0.689415 0.188087 +vt 0.712914 0.131357 +vt 0.756333 0.087938 +vt 0.813063 0.064439 +vt 0.874467 0.064439 +vt 0.931197 0.087938 +vt 0.974617 0.131357 +vt 0.998115 0.188088 +vt 0.998115 0.249492 +vt 0.974617 0.306222 +vt 0.931197 0.349641 +vt 0.874467 0.373140 +vt 0.156250 0.156250 +vt 0.656250 0.250000 +vt 0.031250 0.312500 +vt 0.031250 0.281250 +vt 0.093750 0.281250 +vt 0.656250 0.281250 +vt 0.656250 0.312500 +vt 0.406250 0.218750 +vt 0.468750 0.218750 +vt 0.031250 0.343750 +vt 0.656250 0.343750 +vt 0.593750 0.343750 +vt 0.531250 0.343750 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.343750 0.343750 +vt 0.656250 0.156250 +s 1 +f 120/1 121/2 115/3 114/4 +f 2/5 24/6 23/7 21/8 20/9 18/10 17/11 15/12 14/13 12/14 11/15 9/16 8/17 6/18 5/19 3/20 +f 51/21 53/22 77/23 75/24 +f 59/25 60/26 84/27 83/28 +f 66/29 68/30 92/31 90/32 +f 50/33 51/21 75/24 74/34 +f 57/35 59/25 83/28 81/36 +f 65/37 66/29 90/32 89/38 +f 56/39 57/35 81/36 80/40 +f 71/41 72/42 96/43 95/44 +f 63/45 65/37 89/38 87/46 +f 54/47 56/39 80/40 78/48 +f 69/49 71/41 95/44 93/50 +f 62/51 63/45 87/46 86/52 +f 53/22 54/47 78/48 77/23 +f 60/53 62/51 86/52 84/54 +f 111/55 112/56 106/57 105/58 +f 72/42 50/33 74/34 96/43 +f 126/59 120/1 119/60 125/61 +f 45/62 44/63 92/31 93/50 +f 106/57 112/56 107/64 101/65 +f 123/66 124/67 118/68 117/69 +f 34/70 52/71 55/72 37/73 +f 55/72 52/71 70/74 73/75 +f 126/59 127/76 121/2 120/1 +f 112/56 118/68 113/77 107/64 +f 15/78 17/79 65/37 63/45 +f 29/80 27/81 75/24 77/23 +f 11/82 12/83 60/26 59/25 +f 38/84 86/52 87/46 39/85 +f 21/86 23/87 71/41 69/49 +f 5/88 6/89 54/47 53/22 +f 35/90 33/91 81/36 83/28 +f 17/79 18/92 66/29 65/37 +f 41/93 39/85 87/46 89/38 +f 128/94 129/95 123/66 122/96 +f 23/87 24/97 72/42 71/41 +f 6/89 8/98 56/39 54/47 +f 47/99 45/62 93/50 95/44 +f 115/3 116/100 110/101 109/102 +f 30/103 29/80 77/23 78/48 +f 94/104 91/105 126/59 125/61 +f 24/97 2/106 50/33 72/42 +f 12/107 14/108 62/51 60/53 +f 36/109 35/90 83/28 84/27 +f 103/110 104/111 98/112 97/113 +f 18/92 20/114 68/30 66/29 +f 2/106 3/115 51/21 50/33 +f 42/116 41/93 89/38 90/32 +f 98/117 99/118 10/119 13/120 +f 8/98 9/121 57/35 56/39 +f 97/113 98/112 13/122 16/123 +f 48/124 47/99 95/44 96/43 +f 32/125 30/103 78/48 80/40 +f 100/126 106/57 101/65 4/127 +f 14/108 15/78 63/45 62/51 +f 118/68 112/56 111/55 117/69 +f 26/128 48/124 96/43 74/34 +f 38/84 36/129 84/54 86/52 +f 20/114 21/86 69/49 68/30 +f 122/96 123/66 117/69 116/130 +f 3/115 5/88 53/22 51/21 +f 44/63 42/116 90/32 92/31 +f 27/81 26/128 74/34 75/24 +f 28/131 25/132 43/133 46/134 +f 9/121 11/82 59/25 57/35 +f 33/91 32/125 80/40 81/36 +f 25/132 7/135 22/136 40/137 +f 116/130 117/69 111/55 110/138 +f 40/137 37/73 55/72 58/139 +f 107/64 108/140 102/141 101/65 +f 105/58 106/57 100/126 99/118 +f 43/133 25/132 40/137 58/139 +f 85/142 128/143 127/76 88/144 +f 26/145 27/146 29/147 30/148 32/149 33/150 35/151 36/152 38/153 39/154 41/155 42/156 44/157 45/158 47/159 48/160 +f 68/30 69/49 93/50 92/31 +f 127/76 128/143 122/161 121/2 +f 55/72 73/75 76/162 58/139 +f 99/118 100/126 7/135 10/119 +f 82/163 79/164 130/165 129/95 +f 119/60 120/1 114/4 113/77 +f 118/68 124/67 119/60 113/77 +f 43/133 61/166 64/167 46/134 +f 10/119 7/135 25/132 28/131 +f 130/165 124/67 123/66 129/95 +f 4/127 1/168 19/169 22/136 +f 124/67 130/165 125/61 119/60 +f 61/166 43/133 58/139 76/162 +f 110/101 104/111 103/110 109/102 +f 108/140 109/102 103/110 102/141 +f 88/144 127/76 126/59 91/105 +f 97/113 16/123 19/169 1/168 +f 82/163 129/95 128/94 85/170 +f 19/169 16/123 34/70 37/73 +f 19/169 37/73 40/137 22/136 +f 46/134 64/167 67/171 49/172 +f 114/4 108/140 107/64 113/77 +f 115/3 109/102 108/140 114/4 +f 101/65 102/141 1/168 4/127 +f 10/119 28/131 31/173 13/120 +f 16/123 13/122 31/174 34/70 +f 102/141 103/110 97/113 1/168 +f 31/174 49/175 52/71 34/70 +f 111/55 105/58 104/176 110/138 +f 7/135 100/126 4/127 22/136 +f 122/161 116/100 115/3 121/2 +f 105/58 99/118 98/117 104/176 +f 31/173 28/131 46/134 49/172 +f 130/165 79/164 94/104 125/61 +f 52/71 49/175 67/177 70/74 diff --git a/patches/subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/textures/homedecor_beer_mug.png b/patches/subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/textures/homedecor_beer_mug.png new file mode 100644 index 0000000000000000000000000000000000000000..0b4b20a9a427ff4a042f6c62544231d26fe8e18b GIT binary patch literal 1516 zcmV7YrU53?Lm3Cms(d9}g%Y5h@}QEG82(CKNR(6g4s$ zLo^#iHXKDgAW)M`z?4kFl}*E!PsNx|$C^*cm{7)I=AQqZ1L&7V`xpi|MIQ`4YS(4kb)p;XhNRMewX)}mF@qgBLcR@kRj+ND?5p;^zOSK~w&!b(@tXbirUeBXm&#YSDq+ZdjTH>u*8y<)vWJrC`#gV9=yt(4}F|uUzD%VbG>w(Xm|Tree{w zTqh{-@LrMy}Z85w%NVCy}rG_ zzP`S{zrVo1z|gte!NI}Qx#P~i*vZMs+`#S1%F4~n&C$=%)6dk=(b3q`+S=ILPF|^e z00001VoOIv0Eh)0NB{r;32;bRa{vGf6951U69E94oEQKA00(qQO+^Rc0uK~38Mr{_ z?EnA+0!c(cR5;6pllgnpL>R|M)FL2=f=Julg*{@j#OaK|v0=B66j&%rsdbk^p|!=T z9Nu6770L~w+^2Y;atM@5*$|jAI!u;&)bn5B-SzRe?L(gY@V@VS-fzB7@(n6V5eVsf zzVC^^=e|->2p&kzxm3y%NR)@7sJM~^DFyJ-6Qw0UJjns@6z6a*d|xOz$U#fO4LVBt ziX#rIfr6?q7=U5`y_8;{B=@E8l|Z0XC<%guDDXgVu2c~;;M_0%01BW55@5g&RLKqO zD-Z;u@C*+WzIV>+3nx$|`tv#awoKby@qQf5eZ+jM|qkwzNMB-^lMBoG*j zx9Mr3RpWR^L<`kK!loX!@}$+tWYUg~LQ!3_34J|GjkML;=+0_PyU}ElL?@>^v}$+{ zHI#%i7(e4oai~l39bIpmR%>n7sx>&ZC~7lz7+}fL<jxmPwEMDh5^3wI%39I_ceCLzo6 z){k4?Xzs~%u71Do3-EC4{7>++D39|%6{Y77{qfiDyI)v#J zK~#9!y_Wh>;X**(gR2$dYjUAYd%)V9OX3Bug+F%}l@Uy;XJ2 z**kw!-Rj#tJ)@Z(iRx9W`*!!Oszl4Jp5#NG=pSyqdw-#-`E?guq_^F3%d3D_0?z}!-^`w2W{3z) z)6g^xbzM`B8|tPa=Zr5rXm>N&xSg3{y3GSQ9&^qe0looz(#$^dmdmbO0eJ7nZYVdZbzpSY43uRg23r}!if6VdCzxw)phxXrj zvwPhI7wJ=CfZOi5<=MbL0AglNL@={{acUXOMpHG6M-wL1n4B|a)-TF*W8oswdw{Ca z?d&G65FD6+$gEf3oMT~OfwC-_pPyI2iI;a?^va8`{?unbDgW*jzqsR&2*~$Ah^qy1k0C%iEpU^er>J+O7)Cb<5b#(j?u zozXUBhS_VO6d^ENm}l?OUY>r=_wtOhpTXXxz0_63+WKlRv0YC5i}&Aovpne`U}8m# zkpl+~usGPoo;`bb&e=bRK27<@(5fbgaIxsdM0V_|50nCghH8}BDj2t|4koEC8!{Lx;J^eZCUfj*; zd(LPRH_GDTB9qAkRc#57_l&DCAq2el8@YeWu{d00QcrL==I7@b&d)Pn4w*D#oOli$ zImD=0XKro|=iKad6tViESG@kwFMR2~0*Ftl0TiWa8U)9nEOE{;nM{~WCY-VNOv+GV z0mBM&pFC(O;ylPxhA3{Y)3 zLz5bE&J?aJLN1o>`21&nbvQS?5mHGfd%m3TG_=P{Ir(}Q+-t>Ms^J!;(?cr}d{NpIZ z7>O|wb_FyWYHi-nnus})QlgFxYvY=_uBoc(D0eT4;%J<44n*+YgCiR0<@tAQnMsq&nw7sXl_mA)Sqp!U9g+KX)Q%-}to~ zX?H$pLTPh*PkfFM=Kwk9qt2uWhwB&XoNJA-1&gNSYsy4bl_SfCSzcXcG+t+Yye^L( zcqD!2vG08T5AXW)Gf&w7RaF(MtE+p>3~_CWnx(igw;oZ~bz2W~UXYWLRX64KCp!An z*oDNVlxWu8C)S%X$#^_wb#;}dX?o*_5W=_``-i{%@c+2+4?auVVx(zWpqfQ}!J(Fqs{f0!y-raSgb*+>QXMI6Guu?vKAVULyLT-y z*;}!)yt=8VvTU4o`rfp9WbHSu`@l8tK9SPd9U}v1IVg^7Ds0S{o10^4_nx+3F(a#z zQfiAFg@lo_5pyPIBU}4g(e8Cd%}_H8`tM1VWEoAJ$7SmmJ`KHTCYbK_U@%}|aoBsN znUORB_{H6eHrze@_dCu4^#IfAwUX%GeW6QDoC4Fr?@j4203S9jAmxc&(F(vGU@?1 zHc95^=kwy?;%lyb|2yA(+8L+mrLVh8Ps#uf|Iefg3xh`&UowwbjYhC6tUn&nNhA~= z873xciSc@-8b@MOViIB$vIcAx480*mo8J|XuEb5=qt20iYpLK2?~F8zXk(PSjlrOp zMk67F-qpp#6m=qE-g}vPOc$DNFc|#vGtN5W>`;aSKyxeuY>Sll{{8Ko`^;bbv9)hk zKePM!M!jsLRZl$Z86B=5d&rJ@J<*Iasm{d4$YUjqj64ynnms*M3tBm}5_Ig*u|p>w z9SOSDo^b`zx+71F91ZWKEiN&9*hrC+YC`^}-S?+mEAO%>7o?oPf%l%m7X%-~dFPzC zN8a#rzx<~=VuCnweMC6;*^MBu>GdV(vkS0Q!gblQIx>4}B zR_xeN$Xb?|fvm3Q8_q)>w^0%oK`_El@E$C5=wB5q|BZcFUl`vT3jeQxSD~QMNJXMa z4Rc`*U-;hwetSoH0AQky>Y#AwUXP7hS2R^DL2Q&9ja(bCQc?xEX+y=bv~^l+f7U2a zd$bm)98?aggi+B7R9=iYFg}^G1 zQ;t1jG_wpW?Z5Npy*o94^uUuG<8Kw@WruiaIlBk~gn=Ld#0%!F-F2rMTA~(UJ&o`1Hlgj7aXW#@^=IBqjTt}cw84o?&<&RGy#4b@Ty8` z5;V$oby+vq(@P#7Meo^vKoozSUhJAze|WYBJ-JMtS~mBGcJ=%E4Cw+hvf7l(VqI@zJ?Av|Qt z_f2WGYF|h_5BT$w*8|WDkj3!UY1B!vR8arZ9FyfmY7=zcaHj>rLXF=gR8=I^hBcsB zAWK*3wrSD&dINmn@xf6HeJgpFP!0-;G>1JjWc6%(pkgvS_ zD!cXr*L)iIPdR5|j;N}1So6a>13{3j0_8N1JM&0WLQ14bCLPJd5NXsw6G+)8hKk!I z;H};1;1LsC_IU4cCFGHiRvmF15Ooa7Ici@p@B@4(k<`^8^@ia@FpLJVF(!89<$b&C zCSYI7uPmslh)KlrLpwDTu895eNofm>dTq zH<}x%)%MMfQ}K1`u=fxg1V`|K6W^D?n4nXY*yQ*HB-Fol+xgo`V2=U;?ZOpxz|xKk zpsH?bSzF9hgerze?(${s+1l|$*4Z!XGQhOl2Jq9&vCUKIhTN{55!iR@dA6modY`y9 z8)VB^LV&p)8NkdA8=9s)!C4~+ilF4F0HO+d{KX#?TGCZ_xISgt6F;Z{^T6kh@o!)4 zy|XRCtm6nLZvf{-FmWOxdQ|tuk-9dQp{N+j$@M7RmY#s4?JBt~3e=`9^2YBE9OJTo zIjb9V*K|8FfT+VzOH;vNOV`F|rLf#}d!_{EWDo0lfl9Y)V%s)O`cN~YDCfSh?X?s& zZKVw791_qjU7mavh}!fu`Bp2ruA$kVZX*P=bMLLFC0iDh%_vZ?j8g}WZ2_>A)N`v4 zBj(*eB->XxK80;D$wZ$>EoCRNLdK30f7!_0g?6hTJ2xHYp)p0eTI`6w&f z7H`UCcr$DU`@?n}V>4WrF`S5xIUZ<#AGdS6e>HuN7mpV&z;|{Af+D7!ZyzOdTi!ea zU?&~|+I`K2lj|}|f3K;~+Ktdm@1HGW=;{o#Z0%?4ntGL@hBs98k9TAM?}C|b++@}* zw`PNua&l6^;AR!$8EIqcwfConNT7yX@uSXo^rWCP8x6OGxw4RnNM{xLQ*J}>%gF#W3HSd%=8I!&S05r`ODY+!XFLZ@&`Y=)dD}!saQUQfC~=i++DZbbIV|7 zAwU=f+_D$3*=5Q2K|zYQ$Qv|>A11I!PemK3dZ3jpf0EuNZ9^L{gY zwdeI)Q`)Si(9ZyFc?z4(2?CZ9DYso=?}9n;>cvmI`2MDEx$MgLf4=yomjTa~P8xT? zW#`;iUVZL`hdXifc0CR^W|Qyx_%q z5&8P7&%N-zo9_68>=*?9@56VrSx$sTt9G|%<9&-q%$CYq4Y2i$R`+;uEMT0bzkckt zZGJ8P+O02J-}ig3%R5-upJvrX~2Yv*XT*~Y1%{Q2vD=9j+Q@v9vVNO1k2DOU`$jauWe^#52Nuj39^7X75~1HVy`ZVY5T`sRzTxb2i@gl5V*mo;@vZS&-( zcHV$0rJEyk%s9uQA1&*}2#K z?lta7Gk}u*rU+$-maTVZ=e93-rJ!_kZRSV~DaSsCZ{-BjaG8$T6mE_p3@QBpnfU;P zbyH|5M;N9J-r+Vh$Q*Ms9*-HVuV3`mH(m9>cx_@Qmx_;by#57moj>RF=Zv#i4mjVH zqZF=e2NyMgWeQhrFguGh-BedsRkASHwb`*qEe7}jgZE8K_yXq~F|{?ulwz-q zR#-p#L5khV@N7fNL}N9nN>o)v&iT?C-u|AC?o60D#_^jk`;grDSJzFz{aGO`DGx5- zJ3!o+*z!cnn@N%xopjP^d2ZXAPOnktNYaKXjcHP|kr{9d%f(IUu}P7&BkO79(25;A zaFDf?wRhg|_V;{r-`lPTJ2AjYFG|ELFk%FO=P?C(=2W(r}0t@Xg?2vg?R5hy1G ze&*vZPCSL1V-V(g0k#Y!NWm}+`ww5tg(2RA2M*qENBo0Ye2?PyRE(RkuhRHy+49fc z_~9GB$tfJi#Q-xCRs9Rv&-Iz$Y|02zs)%VFv$$;yKh+OJgp_NlG^S1!b*d=b9NvXZ z)nGR1X|bU=lz?L#*KGIjtkL1eS8rWjJ-q+$F50VCa4%u6G_`C^W2TWPYKV|Bi5>AtK&pOgo|JGqN}$) z)046I6E?s#cV9aG&GSAe3oO1Acn{#stWgt7CInyfqQ<6rf156^;Yc$&!c_9!(hiG; z3h+hm{SPd>)@7cexGPg`C6^51vwxa$(#_tG1dfb)RM=8J`wcYm&dqDzTx zS~*UOC=($#$FST(;R2-}WJNW&V8Itdfq?28UipNh9bx z?z&`}@K=G`-*@k?Uyv;q!1XiNbDN5%sTgV*@4^NT=*C4dtP1YaW_JF*ThDt5@F2ib zz4#q@z}Dl6mt60M<)U1B&l?lKmFIu>=Mp*xJQv8C;}5Fk2s{gr5a#wQ7Q6n|yKukv xgTJ;M|L(us@tVHf{l3?H&hNYRyv%p$`2Y2sS0lNZ3b6nH002ovPDHLkV1nT){Wkyr literal 0 HcmV?d00001 diff --git a/patches/subgame/mods/homedecor_modpack/homedecor/LICENSE b/patches/subgame/mods/homedecor_modpack/homedecor/LICENSE new file mode 100644 index 0000000..0a3df5e --- /dev/null +++ b/patches/subgame/mods/homedecor_modpack/homedecor/LICENSE @@ -0,0 +1,199 @@ +For the Lua code: LGPL 3.0 or higher +For all models, all textures, and all sounds: CC-by-SA 3.0 or higher +For everything else: WTFPL + +Exceptions to the above: + +Fancy mesh fire model and texture by NathanS (CC-0). + +=============================================================================== + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + +=============================================================================== + +This work is licensed under the Creative Commons Attribution-ShareAlike +4.0 International License. To view a copy of this license, visit +http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to +Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. + +=============================================================================== + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. + diff --git a/patches/subgame/mods/homedecor_modpack/homedecor/crafts.lua b/patches/subgame/mods/homedecor_modpack/homedecor/crafts.lua index 5f445f3..a339240 100644 --- a/patches/subgame/mods/homedecor_modpack/homedecor/crafts.lua +++ b/patches/subgame/mods/homedecor_modpack/homedecor/crafts.lua @@ -537,218 +537,21 @@ minetest.register_craft({ recipe = "homedecor:skylight_frosted", }) --- Various colors of shutters - minetest.register_craft( { - output = "homedecor:shutter_oak 2", - recipe = { + output = "homedecor:shutter 2", + recipe = { { "group:stick", "group:stick" }, { "group:stick", "group:stick" }, { "group:stick", "group:stick" }, - }, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "homedecor:shutter_oak", - burntime = 30, -}) - --- - -minetest.register_craft( { - type = "shapeless", - output = "homedecor:shutter_black 4", - recipe = { - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "dye:black" - }, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "homedecor:shutter_black", - burntime = 30, -}) - --- - -minetest.register_craft( { - type = "shapeless", - output = "homedecor:shutter_dark_grey 4", - recipe = { - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "dye:dark_grey" - }, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "homedecor:shutter_dark_grey", - burntime = 30, -}) - --- - -minetest.register_craft( { - type = "shapeless", - output = "homedecor:shutter_grey 4", - recipe = { - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "dye:grey" - }, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "homedecor:shutter_grey", - burntime = 30, -}) - --- - -minetest.register_craft( { - type = "shapeless", - output = "homedecor:shutter_white 4", - recipe = { - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "dye:white" - }, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "homedecor:shutter_white", - burntime = 30, -}) - --- - -minetest.register_craft( { - type = "shapeless", - output = "homedecor:shutter_mahogany 4", - recipe = { - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "dye:brown" }, }) -minetest.register_craft({ - type = "fuel", - recipe = "homedecor:shutter_mahogany", - burntime = 30, -}) -minetest.register_craft( { - type = "shapeless", - output = "homedecor:shutter_red 4", - recipe = { - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "dye:red" - }, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "homedecor:shutter_red", - burntime = 30, -}) - -minetest.register_craft( { - type = "shapeless", - output = "homedecor:shutter_yellow 4", - recipe = { - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "dye:yellow" - }, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "homedecor:shutter_yellow", - burntime = 30, -}) - --- - -minetest.register_craft( { - type = "shapeless", - output = "homedecor:shutter_forest_green 4", - recipe = { - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "dye:dark_green" - }, -}) - minetest.register_craft({ type = "fuel", - recipe = "homedecor:shutter_forest_green", + recipe = "homedecor:shutter_oak", burntime = 30, }) --- - -minetest.register_craft( { - type = "shapeless", - output = "homedecor:shutter_light_blue 4", - recipe = { - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "unifieddyes:light_blue" - }, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "homedecor:shutter_light_blue", - burntime = 30, -}) - -minetest.register_craft( { - type = "shapeless", - output = "homedecor:shutter_violet 4", - recipe = { - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "homedecor:shutter_oak", - "dye:violet" - }, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "homedecor:shutter_violet", - burntime = 30, -}) - --- - minetest.register_craft( { output = "homedecor:drawer_small", recipe = { @@ -1495,15 +1298,7 @@ minetest.register_craft( { -- other types of fences minetest.register_craft( { - output = "homedecor:fence_wrought_iron_2 2", - 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", + output = "homedecor:fence_wrought_iron_2 4", recipe = { { "homedecor:pole_wrought_iron", "default:iron_lump" }, { "homedecor:pole_wrought_iron", "default:iron_lump" }, @@ -2424,30 +2219,29 @@ minetest.register_craft( { -- bathroom/kitchen tiles -local color_pairings = { - { "grey", "white", "1" }, - { "dark_grey", "white", "2" }, - { "black", "white", "3" }, - { "black", "dark_grey", "4" }, - { "red", "white", "red" }, - { "green", "white", "green" }, - { "blue", "white", "blue" }, - { "yellow", "white", "yellow" }, - { "brown", "white", "tan" } -} +minetest.register_craft( { + output = "homedecor:bathroom_tiles_light 4", + recipe = { + { "group:marble", "group:marble", "" }, + { "group:marble", "group:marble", "dye:white" } + }, +}) -for i in ipairs(color_pairings) do - local dye1 = color_pairings[i][1] - local dye2 = color_pairings[i][2] - local result = color_pairings[i][3] - minetest.register_craft( { - output = "homedecor:tiles_"..result.." 2", - recipe = { - { "group:marble", "dye:"..dye1 }, - { "group:marble", "dye:"..dye2 } - }, - }) -end +minetest.register_craft( { + output = "homedecor:bathroom_tiles_medium 4", + recipe = { + { "group:marble", "group:marble", "" }, + { "group:marble", "group:marble", "dye:grey" } + }, +}) + +minetest.register_craft( { + output = "homedecor:bathroom_tiles_dark 4", + recipe = { + { "group:marble", "group:marble", "" }, + { "group:marble", "group:marble", "dye:dark_grey" } + }, +}) -- misc electrical @@ -2673,39 +2467,21 @@ minetest.register_craft( { }, }) -local bedcolors = { - { "red", "red"}, - { "orange", "orange" }, - { "yellow", "yellow"}, - { "green", "dark_green"}, - { "blue", "blue"}, - { "violet", "violet"}, - { "pink", "pink"}, - { "darkgrey", "dark_grey"}, - { "brown", "brown" }, -} - -for c in ipairs(bedcolors) do - local color = bedcolors[c][1] - local woolcolor = bedcolors[c][2] - - minetest.register_craft( { - output = "homedecor:bed_"..color.."_regular", - recipe = { - { "group:stick", "", "group:stick" }, - { "wool:white", "wool:"..woolcolor, "wool:"..woolcolor }, - { "group:wood", "", "group:wood" }, - }, - }) - - minetest.register_craft( { - output = "homedecor:bed_"..color.."_kingsize", - recipe = { - { "homedecor:bed_"..color.."_regular", "homedecor:bed_"..color.."_regular" } - }, - }) +minetest.register_craft( { + output = "homedecor:bed_regular", + recipe = { + { "group:stick", "", "group:stick" }, + { "wool:white", "wool:white", "wool:white" }, + { "group:wood", "", "group:wood" }, + }, +}) -end +minetest.register_craft( { + output = "homedecor:bed_kingsize", + recipe = { + { "homedecor:bed_regular", "homedecor:bed_regular" } + }, +}) minetest.register_craft( { output = "homedecor:bottle_green", @@ -3045,7 +2821,6 @@ minetest.register_craft({ }) minetest.register_alias("homedecor:wine_rack", "homedecor:drink_rack") - local picture_dyes = { {"dye:brown", "dye:green"}, -- the figure sitting by the tree, wielding a pick {"dye:green", "dye:blue"} -- the "family photo" @@ -3061,18 +2836,14 @@ for i in ipairs(picture_dyes) do }) end -local dlamp_colors = { "red","blue","green","violet" } - -for _, color in ipairs(dlamp_colors) do - minetest.register_craft({ - output = "homedecor:desk_lamp_"..color, - recipe = { - { "", "homedecor:steel_strip", "homedecor:glowlight_small_cube" }, - { "", "homedecor:copper_wire", "" }, - { "homedecor:plastic_sheeting", "dye:"..color, "homedecor:plastic_sheeting" }, - }, - }) -end +minetest.register_craft({ + output = "homedecor:desk_lamp 2", + recipe = { + { "", "default:steel_ingot", "homedecor:glowlight_small_cube" }, + { "", "homedecor:steel_strip", "" }, + { "homedecor:plastic_sheeting", "homedecor:copper_wire", "homedecor:plastic_sheeting" }, + }, +}) minetest.register_craft({ output = "homedecor:hanging_lantern 2", @@ -3245,10 +3016,28 @@ minetest.register_craft({ }) minetest.register_craft({ - output = "homedecor:stained_glass", + output = "homedecor:stained_glass 3", + recipe = { + {"", "dye:blue", ""}, + {"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", "xpanes:pane", "dye:green"}, + {"dye:red", "cottages:glass_pane", "dye:green"}, {"", "dye:yellow", ""}, }, }) diff --git a/patches/subgame/mods/homedecor_modpack/homedecor/gastronomy.lua b/patches/subgame/mods/homedecor_modpack/homedecor/gastronomy.lua index b5a9f66..bee7b10 100644 --- a/patches/subgame/mods/homedecor_modpack/homedecor/gastronomy.lua +++ b/patches/subgame/mods/homedecor_modpack/homedecor/gastronomy.lua @@ -1,4 +1,6 @@ +local S = homedecor_i18n.gettext + local cutlery_cbox = { type = "fixed", fixed = { @@ -12,7 +14,7 @@ homedecor.register("cutlery_set", { mesh = "homedecor_cutlery_set.obj", tiles = { "homedecor_cutlery_set.png" }, inventory_image = "homedecor_cutlery_set_inv.png", - description = "Cutlery set", + description = S("Cutlery set"), groups = {snappy=3}, selection_box = cutlery_cbox, walkable = false, @@ -33,14 +35,19 @@ local fbottle_cbox = { } } -local bottle_colors = {"brown", "green"} +local bottle_colors = { + { "brown", S("Brown bottle"), S("Four brown bottles") }, + { "green", S("Green bottle"), S("Four green bottles") }, +} for _, b in ipairs(bottle_colors) do - homedecor.register("bottle_"..b, { - tiles = { "homedecor_bottle_"..b..".png" }, - inventory_image = "homedecor_bottle_"..b.."_inv.png", - description = "Bottle ("..b..")", + local name, desc, desc4 = unpack(b) + + homedecor.register("bottle_"..name, { + tiles = { "homedecor_bottle_"..name..".png" }, + inventory_image = "homedecor_bottle_"..name.."_inv.png", + description = desc, mesh = "homedecor_bottle.obj", walkable = false, groups = {snappy=3}, @@ -50,13 +57,13 @@ for _, b in ipairs(bottle_colors) do -- 4-bottle sets - homedecor.register("4_bottles_"..b, { + homedecor.register("4_bottles_"..name, { tiles = { - "homedecor_bottle_"..b..".png", - "homedecor_bottle_"..b..".png" + "homedecor_bottle_"..name..".png", + "homedecor_bottle_"..name..".png" }, - inventory_image = "homedecor_4_bottles_"..b.."_inv.png", - description = "Four "..b.." bottles", + inventory_image = "homedecor_4_bottles_"..name.."_inv.png", + description = desc4, mesh = "homedecor_4_bottles.obj", walkable = false, groups = {snappy=3}, @@ -71,7 +78,7 @@ homedecor.register("4_bottles_multi", { "homedecor_bottle_green.png" }, inventory_image = "homedecor_4_bottles_multi_inv.png", - description = "Four misc brown/green bottles", + description = S("Four misc brown/green bottles"), mesh = "homedecor_4_bottles.obj", groups = {snappy=3}, walkable = false, @@ -81,7 +88,7 @@ homedecor.register("4_bottles_multi", { local wine_cbox = homedecor.nodebox.slab_z(-0.75) homedecor.register("drink_rack", { - description = "Drink rack", + description = S("Drink rack"), mesh = "homedecor_wine_rack.obj", tiles = { "homedecor_generic_wood_red.png", @@ -98,7 +105,7 @@ homedecor.register("drink_rack", { }) homedecor.register("dartboard", { - description = "Dartboard", + description = S("Dartboard"), mesh = "homedecor_dartboard.obj", tiles = { "homedecor_dartboard.png" }, inventory_image = "homedecor_dartboard_inv.png", @@ -114,7 +121,7 @@ homedecor.register("dartboard", { }) homedecor.register("drink_tap", { - description = "Drink tap", + description = S("drink tap"), mesh = "homedecor_beer_taps.obj", tiles = { "homedecor_generic_metal_bright.png", @@ -127,26 +134,26 @@ homedecor.register("drink_tap", { type = "fixed", fixed = { -0.25, -0.5, -0.4375, 0.25, 0.235, 0 } }, - on_punch = function(pos, node, puncher, pointed_thing) - local wielditem = puncher:get_wielded_item() - local inv = puncher:get_inventory() + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + local inv = clicker:get_inventory() - local wieldname = wielditem:get_name() + local wieldname = itemstack:get_name() if wieldname == "vessels:drinking_glass" then if inv:room_for_item("main", "homedecor:drink_mug 1") then - wielditem:take_item() - puncher:set_wielded_item(wielditem) + itemstack:take_item() + clicker:set_wielded_item(itemstack) inv:add_item("main", "homedecor:drink_mug 1") - minetest.chat_send_player(puncher:get_player_name(), "Ahh, a nice cold drink - look in your inventory for it!") + minetest.chat_send_player(clicker:get_player_name(), + S("Ahh, a nice cold drink - look in your inventory for it!")) else - minetest.chat_send_player(puncher:get_player_name(), "No room in your inventory to add a drink mug!") + minetest.chat_send_player(clicker:get_player_name(), + S("No room in your inventory to add a drink mug!")) end end end }) minetest.register_alias("homedecor:beer_tap", "homedecor:drink_tap") - minetest.register_craft({ output = "homedecor:drink_tap", recipe = { @@ -162,7 +169,7 @@ local beer_cbox = { } homedecor.register("drink_mug", { - description = "Drink mug", + description = S("Drink mug"), drawtype = "mesh", mesh = "homedecor_beer_mug.obj", tiles = { "homedecor_beer_mug.png" }, @@ -171,7 +178,24 @@ homedecor.register("drink_mug", { walkable = false, sounds = default.node_sound_glass_defaults(), selection_box = beer_cbox, - on_use = minetest.item_eat(2) + on_use = function(itemstack, user, pointed_thing) + local inv = user:get_inventory() + if not creative.is_enabled_for(user:get_player_name()) then + if inv:room_for_item("main", "vessels:drinking_glass 1") then + inv:add_item("main", "vessels:drinking_glass 1") + else + local pos = user:get_pos() + local dir = user:get_look_dir() + local fdir = minetest.dir_to_facedir(dir) + local pos_fwd = { x = pos.x + homedecor.fdir_to_fwd[fdir+1][1], + y = pos.y + 1, + z = pos.z + homedecor.fdir_to_fwd[fdir+1][2] } + minetest.add_item(pos_fwd, "vessels:drinking_glass 1") + end + minetest.do_item_eat(2, nil, itemstack, user, pointed_thing) + return itemstack + end + end }) minetest.register_alias("homedecor:beer_mug", "homedecor:drink_mug") @@ -181,7 +205,7 @@ local svm_cbox = { } homedecor.register("soda_machine", { - description = "Soda Vending Machine", + description = S("Soda vending machine"), mesh = "homedecor_soda_machine.obj", tiles = {"homedecor_soda_machine.png"}, groups = {snappy=3}, @@ -190,21 +214,25 @@ homedecor.register("soda_machine", { expand = { top="placeholder" }, sounds = default.node_sound_wood_defaults(), on_rotate = screwdriver.rotate_simple, - on_punch = function(pos, node, puncher, pointed_thing) - local wielditem = puncher:get_wielded_item() + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + local playername = clicker:get_player_name() + local wielditem = clicker:get_wielded_item() local wieldname = wielditem:get_name() local fdir_to_fwd = { {0, -1}, {-1, 0}, {0, 1}, {1, 0} } 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] } if wieldname == "homedecor:coin" then - wielditem:take_item() - puncher:set_wielded_item(wielditem) minetest.spawn_item(pos_drop, "homedecor:soda_can") minetest.sound_play("insert_coin", { 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 - minetest.chat_send_player(puncher:get_player_name(), "Please insert a coin in the machine.") + minetest.chat_send_player(playername, S("Please insert a coin in the machine.")) end end })