pax_global_header00006660000000000000000000000064122073347120014513gustar00rootroot0000000000000052 comment=ee1b3025cc05e94b7311ed42b08142edbfe977e5 moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/000077500000000000000000000000001220733471200207255ustar00rootroot00000000000000moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/LICENSE.txt000066400000000000000000000015451220733471200225550ustar00rootroot00000000000000+---- zlib/libpng license ----+ Copyright (c) 2013 Calinou This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/README.txt000066400000000000000000000015701220733471200224260ustar00rootroot00000000000000Calinou's Minetest Mods ===================== Calinou's Mods for Minetest [http://minetest.net], a free and opensource Minecraft-like game. This Git repository is mostly made for servers; it allows easy updating. To install, just clone this repository somewhere, then copy the "calinou_mods" folder in the "mods/minetest" folder of Minetest's installation folder. Misc stuff ===================== All these mods' source codes, except More Ores are under the zlib/libpng license. More Ores is under the GNU GPLv3; the mods' textures are under the CC BY-SA 3.0 Unported. Mods' forum threads: More Blocks: http://minetest.net/forum/viewtopic.php?id=509 More Ores: http://minetest.net/forum/viewtopic.php?id=549 Map Tools: http://minetest.net/forum/viewtopic.php?id=1882 Doors+: http://minetest.net/forum/viewtopic.php?id=2059 Stairs+: http://minetest.net/forum/viewtopic.php?id=2092 moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/_config.txt000066400000000000000000000010661220733471200230750ustar00rootroot00000000000000------------------------------------------------------------------------------ ------------------------------ CONFIGURATION --------------------------------- ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ -------- Change settings by changing the values after the "=". --------------- ------------------------------------------------------------------------------ -- Whether to direct wood based on player yaw when placing the block wood_facedir = true moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/aliases.lua000066400000000000000000000235401220733471200230550ustar00rootroot00000000000000-- Aliases (some of them are about the default mod, some about moreblocks) -- Additional default aliases minetest.register_alias("woodpick", "default:pick_wood") minetest.register_alias("woodenpick", "default:pick_wood") minetest.register_alias("stonepick", "default:pick_stone") minetest.register_alias("steelpick", "default:pick_steel") minetest.register_alias("ironpick", "default:pick_steel") minetest.register_alias("mesepick", "default:pick_mese") minetest.register_alias("woodaxe", "default:axe_wood") minetest.register_alias("woodenaxe", "default:axe_wood") minetest.register_alias("stoneaxe", "default:axe_stone") minetest.register_alias("steelaxe", "default:axe_steel") minetest.register_alias("ironaxe", "default:axe_steel") minetest.register_alias("woodshovel", "default:shovel_wood") minetest.register_alias("woodenshovel", "default:shovel_wood") minetest.register_alias("stoneshovel", "default:shovel_stone") minetest.register_alias("steelshovel", "default:shovel_steel") minetest.register_alias("ironshovel", "default:shovel_steel") minetest.register_alias("woodsword", "default:sword_wood") minetest.register_alias("woodensword", "default:sword_wood") minetest.register_alias("stonesword", "default:sword_stone") minetest.register_alias("steelsword", "default:sword_steel") minetest.register_alias("ironsword", "default:sword_steel") minetest.register_alias("grass", "default:dirt_with_grass") minetest.register_alias("grassblock", "default:dirt_with_grass") minetest.register_alias("grass_block", "default:dirt_with_grass") minetest.register_alias("grassfootsteps", "default:dirt_with_grass_footsteps") minetest.register_alias("grass_footsteps", "default:dirt_with_grass_footsteps") minetest.register_alias("jungle_tree", "default:jungletree") minetest.register_alias("stick", "default:stick") minetest.register_alias("sign", "default:sign_wall") minetest.register_alias("fence", "default:fence_wood") minetest.register_alias("coal", "default:coal_lump") minetest.register_alias("iron", "default:iron_lump") minetest.register_alias("clay", "default:clay_lump") minetest.register_alias("steel", "default:steel_ingot") minetest.register_alias("steel_block", "default:steelblock") minetest.register_alias("stonebrick", "default:stonebrick") minetest.register_alias("stonebricks", "default:stonebrick") minetest.register_alias("stone_brick", "default:stonebrick") minetest.register_alias("stone_bricks", "default:stonebrick") minetest.register_alias("sweeper", "moreblocks:sweeper") minetest.register_alias("circularsaw", "moreblocks:circular_saw") minetest.register_alias("circular_saw", "moreblocks:circular_saw") minetest.register_alias("screwdriver", "moreblocks:screwdriver") minetest.register_alias("screw_driver", "moreblocks:screw_driver") minetest.register_alias("screwdrive", "moreblocks:screw_driver") minetest.register_alias("screw_drive", "moreblocks:screw_driver") minetest.register_alias("sweep", "moreblocks:sweeper") minetest.register_alias("junglestick", "moreblocks:jungle_stick") minetest.register_alias("jungle_stick", "moreblocks:jungle_stick") minetest.register_alias("obsidian", "default:obsidian") minetest.register_alias("obsidianglass", "default:obsidian_glass") minetest.register_alias("obsidian_glass", "default:obsidian_glass") -- More Blocks aliases minetest.register_alias("circlestonebrick", "moreblocks:circle_stone_bricks") minetest.register_alias("circlestonebricks", "moreblocks:circle_stone_bricks") minetest.register_alias("circlestone_brick", "moreblocks:circle_stone_bricks") minetest.register_alias("circlestone_bricks", "moreblocks:circle_stone_bricks") minetest.register_alias("circle_stonebrick", "moreblocks:circle_stone_bricks") minetest.register_alias("circle_stonebricks", "moreblocks:circle_stone_bricks") minetest.register_alias("circle_stone_brick", "moreblocks:circle_stone_bricks") minetest.register_alias("circle_stone_bricks", "moreblocks:circle_stone_bricks") minetest.register_alias("stonesquare", "moreblocks:stone_tile") minetest.register_alias("stonesquares", "moreblocks:stone_tile") minetest.register_alias("stone_square", "moreblocks:stone_tile") minetest.register_alias("stone_squares", "moreblocks:stone_tile") minetest.register_alias("stonetile", "moreblocks:stone_tile") minetest.register_alias("stonetiles", "moreblocks:stone_tile") minetest.register_alias("stone_tile", "moreblocks:stone_tile") minetest.register_alias("stone_tiles", "moreblocks:stone_tile") minetest.register_alias("splitstonesquare", "moreblocks:split_stone_tile") minetest.register_alias("splitstonesquares", "moreblocks:split_stone_tile") minetest.register_alias("split_stone_square", "moreblocks:split_stone_tile") minetest.register_alias("split_stone_squares", "moreblocks:split_stone_tile") minetest.register_alias("split_stonesquare", "moreblocks:split_stone_tile") minetest.register_alias("split_stonesquares", "moreblocks:split_stone_tile") minetest.register_alias("coalstone", "moreblocks:coal_stone") minetest.register_alias("coal_stone", "moreblocks:coal_stone") minetest.register_alias("ironstone", "moreblocks:iron_stone") minetest.register_alias("iron_stone", "moreblocks:iron_stone") minetest.register_alias("coalglass", "moreblocks:coal_glass") minetest.register_alias("coal_glass", "moreblocks:coal_glass") minetest.register_alias("ironglass", "moreblocks:iron_glass") minetest.register_alias("iron_glass", "moreblocks:iron_glass") minetest.register_alias("glowglass", "moreblocks:glow_glass") minetest.register_alias("glow_glass", "moreblocks:glow_glass") minetest.register_alias("superglowglass", "moreblocks:super_glow_glass") minetest.register_alias("super_glowglass", "moreblocks:super_glow_glass") minetest.register_alias("super_glow_glass", "moreblocks:super_glow_glass") minetest.register_alias("plankstone", "moreblocks:plankstone") minetest.register_alias("cactusbrick", "moreblocks:cactus_brick") minetest.register_alias("cactus_brick", "moreblocks:cactus_brick") minetest.register_alias("cactuschecker", "moreblocks:cactus_checker") minetest.register_alias("cactus_checker", "moreblocks:cactus_checker") minetest.register_alias("coalchecker", "moreblocks:coal_checker") minetest.register_alias("coal_checker", "moreblocks:coal_checker") minetest.register_alias("ironchecker", "moreblocks:iron_checker") minetest.register_alias("iron_checker", "moreblocks:iron_checker") minetest.register_alias("woodtile", "moreblocks:wood_tile") minetest.register_alias("woodentile", "moreblocks:wood_tile") minetest.register_alias("wood_tile", "moreblocks:wood_tile") minetest.register_alias("wooden_tile", "moreblocks:wood_tile") minetest.register_alias("woodtile_full", "moreblocks:wood_tile_full") minetest.register_alias("woodentile_full", "moreblocks:wood_tile_full") minetest.register_alias("wood_tile_full", "moreblocks:wood_tile_full") minetest.register_alias("wooden_tile_full", "moreblocks:wood_tile_full") minetest.register_alias("full_woodtile", "moreblocks:wood_tile_full") minetest.register_alias("full_woodentile", "moreblocks:wood_tile_full") minetest.register_alias("full_wood_tile", "moreblocks:wood_tile_full") minetest.register_alias("full_wooden_tile", "moreblocks:wood_tile_full") -- Old block/item replacement minetest.register_alias("moreblocks:oerkkiblock", "default:mossycobble") minetest.register_alias("moreblocks:screwdriver", "screwdriver:screwdriver") -- Node and item renaming minetest.register_alias("moreblocks:stone_bricks", "default:stonebrick") minetest.register_alias("moreblocks:stonebrick", "default:stonebrick") minetest.register_alias("moreblocks:junglewood", "default:junglewood") minetest.register_alias("moreblocks:jungle_wood", "default:junglewood") minetest.register_alias("moreblocks:horizontaltree", "moreblocks:horizontal_tree") minetest.register_alias("moreblocks:horizontaljungletree", "moreblocks:horizontal_jungle_tree") minetest.register_alias("moreblocks:stonesquare", "moreblocks:stone_tile") minetest.register_alias("moreblocks:circlestonebrick", "moreblocks:circle_stone_bricks") minetest.register_alias("moreblocks:ironstonebrick", "moreblocks:iron_stone_bricks") minetest.register_alias("moreblocks:fence_junglewood", "moreblocks:fence_jungle_wood") minetest.register_alias("moreblocks:coalstone", "moreblocks:coal_stone") minetest.register_alias("moreblocks:ironstone", "moreblocks:iron_stone") minetest.register_alias("moreblocks:woodtile", "moreblocks:wood_tile") minetest.register_alias("moreblocks:woodtile_full", "moreblocks:wood_tile_full") minetest.register_alias("moreblocks:woodtile_centered", "moreblocks:wood_tile_centered") minetest.register_alias("moreblocks:woodtile_up", "moreblocks:wood_tile_up") minetest.register_alias("moreblocks:woodtile_down", "moreblocks:wood_tile_down") minetest.register_alias("moreblocks:woodtile_left", "moreblocks:wood_tile_left") minetest.register_alias("moreblocks:woodtile_right", "moreblocks:wood_tile_right") minetest.register_alias("moreblocks:coalglass", "moreblocks:coal_glass") minetest.register_alias("moreblocks:ironglass", "moreblocks:iron_glass") minetest.register_alias("moreblocks:glowglass", "moreblocks:glow_glass") minetest.register_alias("moreblocks:superglowglass", "moreblocks:super_glow_glass") minetest.register_alias("moreblocks:trapglass", "moreblocks:trap_glass") minetest.register_alias("moreblocks:trapstone", "moreblocks:trap_stone") minetest.register_alias("moreblocks:cactuschecker", "moreblocks:cactus_checker") minetest.register_alias("moreblocks:coalchecker", "moreblocks:coal_checker") minetest.register_alias("moreblocks:ironchecker", "moreblocks:iron_checker") minetest.register_alias("moreblocks:cactusbrick", "moreblocks:cactus_brick") minetest.register_alias("moreblocks:cleanglass", "moreblocks:clean_glass") minetest.register_alias("moreblocks:emptybookshelf", "moreblocks:empty_bookshelf") minetest.register_alias("moreblocks:junglestick", "moreblocks:jungle_stick") minetest.register_alias("moreblocks:splitstonesquare","moreblocks:split_stone_tile") minetest.register_alias("moreblocks:allfacestree","moreblocks:all_faces_tree") moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/circular_saw.lua000066400000000000000000000332571220733471200241200ustar00rootroot00000000000000-- Load translation library if intllib is installed local S if (minetest.get_modpath("intllib")) then dofile(minetest.get_modpath("intllib").."/intllib.lua") S = intllib.Getter(minetest.get_current_modname()) else S = function ( s ) return s end end circular_saw = {}; circular_saw.known_stairs = {} -- Register known moreblocks stairs for i,v in ipairs({"default:wood", "default:stone", "default:cobble", "default:mossycobble", "default:brick", "default:sandstone", "default:steelblock", "default:desert_stone", "default:glass", "default:tree", "default:jungletree", "default:stonebrick", "default:obsidian", "default:obsidian_glass", "default:stone_bricks", "default:junglewood", "default:goldblock", "default:copperblock", "default:bronzeblock", "default:diamondblock", "default:desert_stonebrick", "default:sandstonebrick", "moreblocks:coal_stone", "moreblocks:iron_stone", "moreblocks:coal_checker", "moreblocks:iron_checker", "moreblocks:cactus_checker", "moreblocks:coal_glass", "moreblocks:iron_glass", "moreblocks:glow_glass", "moreblocks:super_glow_glass", "moreblocks:wooden_tile", "moreblocks:stone_tile", "moreblocks:split_stone_tile", "moreblocks:iron_stone_bricks", "moreblocks:circle_stone_bricks", "moreblocks:wood_tile_centered", "moreblocks:wood_tile_full", "moreblocks:plank_stone"}) do table.insert(circular_saw.known_stairs, v); end -- How many microblocks does this shape at the output inventory cost? circular_saw.cost_in_microblocks = { 6, 7, 5, 3, 2, 4, 6, 2, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; -- anz: amount of input material in microblocks circular_saw.get_stair_output_inv = function(modname, material, anz, max) local max_offered = 99; if(not(max) or (max == nil) or tonumber(max) > 99 or tonumber(max) < 1) then max_offered = 99; else max_offered = tonumber(max); end -- If there is nothing inside display empty inventory if(anz < 1) then return { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""}; end return { modname .. ":stair_" .. material .. " " .. math.min(math.floor(anz/6), max_offered), modname .. ":stair_" .. material .. "_inner " .. math.min(math.floor(anz/7), max_offered), modname .. ":stair_" .. material .. "_outer " .. math.min(math.floor(anz/5), max_offered), modname .. ":stair_" .. material .. "_half " .. math.min(math.floor(anz/3), max_offered), modname .. ":slab_" .. material .. "_quarter " .. math.min(math.floor(anz/2), max_offered), modname .. ":slab_" .. material .. " " .. math.min(math.floor(anz/4), max_offered), modname .. ":slab_" .. material .. "_three_quarter " .. math.min(math.floor(anz/6), max_offered), modname .. ":panel_" .. material .. "_bottom " .. math.min(math.floor(anz/2), max_offered), modname .. ":micro_" .. material .. "_bottom " .. math.min(math.floor(anz/1), max_offered), modname .. ":stair_" .. material .. "_alt " .. math.min(math.floor(anz/4), max_offered), "", } end -- Reset empty circular_saw after last full block has been taken out (or the circular_saw has been placed the first tiem); note: max_offered is not reset circular_saw.reset_circular_saw = function(pos) local meta = minetest.env:get_meta(pos); local inv = meta:get_inventory(); inv:set_list("input", { "" }); inv:set_list("micro", { "" }); inv:set_list("output", circular_saw.get_stair_output_inv("", "", 0, meta:get_string("max_offered"))); meta:set_int("anz", 0); meta:set_string("infotext", "Circular saw, empty (owned by " .. (meta:get_string("owner") or "") .. ")"); end -- Player has taken something out of the box or placed something inside; that amounts to count microblocks circular_saw.update_inventory = function(pos, amount) local meta = minetest.env:get_meta(pos); local inv = meta:get_inventory(); local akt = meta:get_int("anz"); -- The material is receicled automaticly inv:set_list("recycle", { "" }); if(akt + amount < 1) then -- If the last block is taken out circular_saw.reset_circular_saw(pos); return; end local stack = inv:get_stack("input", 1); -- At least one "normal" block is necessary to see what kind of stairs are requested if(stack:is_empty()) then -- Any microblocks not taken out yet are now lost (covers material loss in the machine) circular_saw.reset_circular_saw(pos); return; end local node_name = stack:get_name(); local liste = node_name:split(":"); local modname = liste[1]; local material = liste[2]; -- Display as many full blocks as possible inv:set_list("input", { modname.. ":" .. material .. " " .. math.floor( (akt + amount) / 8) }); -- The stairnodes made of default nodes use moreblocks namespace, other mods keep own. if(modname == "default") then modname = "moreblocks"; end --print("circular_saw set to " ..modname.. " : " ..material.. " with " .. (akt+amount) .. " microblocks."); -- 0-7 microblocks may remain as a rest inv:set_list("micro", { modname.. ":micro_" .. material .. "_bottom " .. ((akt + amount) % 8) }); -- Display inv:set_list("output", circular_saw.get_stair_output_inv(modname, material, (akt + amount), meta:get_string("max_offered"))); -- Store how many microblocks are available meta:set_int("anz", (akt+amount)); meta:set_string("infotext", "Circular saw, working with " ..material.. " (owned by " .. (meta:get_string("owner") or "") .. ")"); end -- The amount of items offered per shape can be configured circular_saw.on_receive_fields = function(pos, formname, fields, sender) local meta = minetest.env:get_meta(pos); if tonumber(fields.max_offered) and tonumber(fields.max_offered) > 0 and tonumber(fields.max_offered) < 99 then meta:set_string("max_offered", fields.max_offered); circular_saw.update_inventory(pos, 0); -- update to show the correct number of items end end -- Moving the inventory of the circular_saw around is not allowed because it is a fictional inventory circular_saw.allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) -- Moving inventory around would be rather immpractical and make things more difficult to calculate return 0; end -- Only input- and recycle-slot are intended as input slots circular_saw.allow_metadata_inventory_put = function(pos, listname, index, stack, player) -- The player is not allowed to put something in there if(listname == "output" or listname == "micro") then return 0; end local meta = minetest.env:get_meta(pos); local inv = meta:get_inventory(); -- Only alow those items that are offered in the output inventory to be recycled if(listname == "recycle" and not(inv:contains_item("output", stack:get_name()))) then return 0; end -- Only accept certain blocks as input which are known to be craftable into stairs if(listname == "input") then for i,v in ipairs(circular_saw.known_stairs) do if(circular_saw.known_stairs[ i ] == stack:get_name()) then return stack:get_count(); end end return 0; end return stack:get_count() end -- Taking is allowed from all slots (even the internal microblock slot) -- Putting something in is slightly more complicated than taking anything because we have to make sure it is of a suitable material circular_saw.on_metadata_inventory_put = function(pos, listname, index, stack, player) -- We need to find out if the circular_saw is already set to a specific material or not local meta = minetest.env:get_meta(pos); local inv = meta:get_inventory(); -- Putting something into the input slot is only possible if that had been empty before or did contain something of the same material if( listname=="input") then -- Each new block is worth 8 microblocks circular_saw.update_inventory(pos, 8 * stack:get_count()); elseif(listname=="recycle") then -- Lets look which shape this represents for i,v in ipairs(inv:get_list("output")) do if(v:get_name() == stack:get_name()) then local value = circular_saw.cost_in_microblocks[ i ] * stack:get_count(); --print("\nRecycling " .. (v:get_name()) .. " into " ..value.. " microblocks."); -- We get value microblocks back circular_saw.update_inventory(pos, value); end end end end -- The player takes something circular_saw.on_metadata_inventory_take = function(pos, listname, index, stack, player) -- If it is one of the offered stairs: find out how many microblocks have to be substracted if(listname=="output") then -- We do know how much each block at each position costs local cost = circular_saw.cost_in_microblocks[ index ] * stack:get_count(); circular_saw.update_inventory(pos, -1 * cost); elseif(listname=="mikro") then -- Each microblock costs 1 microblock circular_saw.update_inventory(pos, -1 * 1 * stack:get_count()); elseif(listname=="input") then -- Each normal (= full) block taken costs 8 microblocks circular_saw.update_inventory(pos, -1 * 8 * stack:get_count()); end -- The recycle field plays no role here since it is processed immediately end circular_saw.on_construct_init = function(pos, formspec) local meta = minetest.env:get_meta(pos) meta:set_string("formspec", formspec); meta:set_int( "anz", 0); -- No microblocks inside yet meta:set_string("max_offered", 99); -- How many items of this kind are offered by default? meta:set_string("infotext", "Circular saw, empty") local inv = meta:get_inventory() inv:set_size("input", 1) -- Input slot for full blocks of material x inv:set_size("micro", 1) -- Storage for 1-7 surplus microblocks inv:set_size("recycle", 1) -- Surplus partial blocks can be placed here inv:set_size("output", 28) -- 4*7 versions of stair-parts of material x circular_saw.reset_circular_saw(pos); end circular_saw.can_dig = function(pos,player) local meta = minetest.env:get_meta(pos); local inv = meta:get_inventory() if not inv:is_empty("input") then return false elseif not inv:is_empty("micro") then return false elseif not inv:is_empty("recycle") then return false end -- Can be digged by anyone when empty (not only by the owner) return true end, minetest.register_node("moreblocks:circular_saw", { description = S("Circular Saw"), drawtype = "nodebox", node_box = { type = "fixed", fixed = { {-0.4, -0.5, -0.4, -0.25, 0.25, -0.25}, -- Leg {0.25, -0.5, 0.25, 0.4, 0.25, 0.4}, -- Leg {-0.4, -0.5, 0.25, -0.25, 0.25, 0.4}, -- Leg {0.25, -0.5, -0.4, 0.4, 0.25, -0.25}, -- Leg {-0.5, 0.25, -0.5, 0.5, 0.375, 0.5}, -- Tabletop {-0.01, 0.4375, -0.125, 0.01, 0.5, 0.125}, -- Saw blade (top) {-0.01, 0.375, -0.1875, 0.01, 0.4375, 0.1875}, -- Saw blade (bottom) {-0.25, -0.0625, -0.25, 0.25, 0.25, 0.25}, -- Motor case }, }, selection_box = { type = "fixed", fixed = { {-0.4, -0.5, -0.4, -0.25, 0.25, -0.25}, -- Leg {0.25, -0.5, 0.25, 0.4, 0.25, 0.4}, -- Leg {-0.4, -0.5, 0.25, -0.25, 0.25, 0.4}, -- Leg {0.25, -0.5, -0.4, 0.4, 0.25, -0.25}, -- Leg {-0.5, 0.25, -0.5, 0.5, 0.375, 0.5}, -- Tabletop {-0.01, 0.4375, -0.125, 0.01, 0.5, 0.125}, -- Saw blade (top) {-0.01, 0.375, -0.1875, 0.01, 0.4375, 0.1875}, -- Saw blade (bottom) {-0.25, -0.0625, -0.25, 0.25, 0.25, 0.25}, -- Motor case }, }, tiles = {"moreblocks_circular_saw_top.png", "moreblocks_circular_saw_bottom.png", "moreblocks_circular_saw_side.png"}, paramtype = "light", sunlight_propagates = true, paramtype2 = "facedir", groups = {cracky=2}, on_construct = function(pos) return circular_saw.on_construct_init(pos, "size[10,9]" .. "list[current_name;input;0,0;1,1;]" .. "label[0,0;Input material]" .. "list[current_name;micro;0,1;1,1;]" .. "label[0,1;Rest/microblocks]" .. "field[0.3,2.5;1,1;max_offered;Max:;${max_offered}]" .. "button[1,2;1,1;Set;Set]" .. "list[current_name;recycle;0,3;1,1;]" .. "label[0,3;Recycle output]" .. "list[current_name;output;2,0;7,4;]" .. "list[current_player;main;1,5;8,4;]"); end, can_dig = function(pos,player) return circular_saw.can_dig(pos, player); end, -- Set owner of this circular saw after_place_node = function(pos, placer) local meta = minetest.env:get_meta(pos); meta:set_string("owner", (placer:get_player_name() or "")); meta:set_string("infotext", "Circular saw is empty (owned by " .. (placer:get_player_name() or "") .. ")"); end, -- The amount of items offered per shape can be configured on_receive_fields = function(pos, formname, fields, sender) return circular_saw.on_receive_fields(pos, formname, fields, sender); end, allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) return circular_saw.allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player); end, -- Only input- and recycle-slot are intended as input slots allow_metadata_inventory_put = function(pos, listname, index, stack, player) return circular_saw.allow_metadata_inventory_put(pos, listname, index, stack, player); end, -- Taking is allowed from all slots (even the internal microblock slot); moving is forbidden -- Putting something in is slightly more complicated than taking anything because we have to make sure it is of a suitable material on_metadata_inventory_put = function(pos, listname, index, stack, player) return circular_saw.on_metadata_inventory_put(pos, listname, index, stack, player); end, on_metadata_inventory_take = function(pos, listname, index, stack, player) return circular_saw.on_metadata_inventory_take(pos, listname, index, stack, player); end }) moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/crafting.lua000066400000000000000000000172071220733471200232340ustar00rootroot00000000000000-- Crafting minetest.register_craft({ output = "default:stick 1", recipe = { {"default:dry_shrub"}, } }) minetest.register_craft({ output = "default:dirt_with_grass 1", recipe = { {"default:junglegrass"}, {"default:dirt"}, } }) minetest.register_craft({ output = "default:dirt_with_grass 1", recipe = { {"default:mese"}, {"default:dirt"}, } }) minetest.register_craft({ output = "default:mossycobble 1", recipe = { {"default:junglegrass"}, {"default:cobble"}, } }) minetest.register_craft({ output = "default:mossycobble 1", recipe = { {"default:mese"}, {"default:cobble"}, } }) minetest.register_craft({ output = "moreblocks:woodtile 9", recipe = { {"default:wood", "default:wood", "default:wood"}, {"default:wood", "default:wood", "default:wood"}, {"default:wood", "default:wood", "default:wood"}, } }) minetest.register_craft({ output = "moreblocks:woodtile_flipped 1", recipe = { {"moreblocks:woodtile"}, } }) minetest.register_craft({ output = "moreblocks:woodtile_center 9", recipe = { {"default:wood", "default:wood", "default:wood"}, {"default:wood", "moreblocks:woodtile", "default:wood"}, {"default:wood", "default:wood", "default:wood"}, } }) minetest.register_craft({ output = "moreblocks:woodtile_full 4", recipe = { {"moreblocks:woodtile", "moreblocks:woodtile"}, {"moreblocks:woodtile", "moreblocks:woodtile"}, } }) minetest.register_craft({ output = "moreblocks:woodtile_up 1", recipe = { {"default:stick"}, {"moreblocks:woodtile_center"}, } }) minetest.register_craft({ output = "moreblocks:woodtile_down 1", recipe = { {"moreblocks:woodtile_center"}, {"default:stick"}, } }) minetest.register_craft({ output = "moreblocks:woodtile_left 1", recipe = { {"default:stick", "moreblocks:woodtile_center"}, } }) minetest.register_craft({ output = "moreblocks:woodtile_right 1", recipe = { {"moreblocks:woodtile_center", "default:stick"}, } }) minetest.register_craft({ output = "moreblocks:junglestick 4", recipe = { {"default:junglewood"}, } }) minetest.register_craft({ output = "moreblocks:fence_jungle_wood 2", recipe = { {"moreblocks:jungle_stick", "moreblocks:jungle_stick", "moreblocks:jungle_stick"}, {"moreblocks:jungle_stick", "moreblocks:jungle_stick", "moreblocks:jungle_stick"}, } }) minetest.register_craft({ output = "moreblocks:circle_stone_bricks 8", recipe = { {"default:stone", "default:stone", "default:stone"}, {"default:stone", "", "default:stone"}, {"default:stone", "default:stone", "default:stone"}, } }) minetest.register_craft({ output = "moreblocks:all_faces_tree 8", recipe = { {"default:tree", "default:tree", "default:tree"}, {"default:tree", "", "default:tree"}, {"default:tree", "default:tree", "default:tree"}, } }) minetest.register_craft({ output = "moreblocks:all_faces_jungle_tree 8", recipe = { {"default:jungletree", "default:jungletree", "default:jungletree"}, {"default:jungletree", "", "default:jungletree"}, {"default:jungletree", "default:jungletree", "default:jungletree"}, } }) minetest.register_craft({ output = "moreblocks:sweeper 3", recipe = { {"default:junglegrass"}, {"default:stick"}, } }) minetest.register_craft({ output = "moreblocks:stone_tile 4", recipe = { {"default:cobble", "default:cobble"}, {"default:cobble", "default:cobble"}, } }) minetest.register_craft({ output = "moreblocks:split_stone_tile 1", recipe = { {"moreblocks:stone_tile"}, } }) minetest.register_craft({ output = "moreblocks:empty_bookshelf 1", recipe = { {"moreblocks:sweeper"}, {"default:bookshelf"}, } }) minetest.register_craft({ output = "moreblocks:iron_stone_bricks 1", type = "shapeless", recipe = {"default:steel_ingot", "default:stonebrick"}, }) minetest.register_craft({ output = "default:wood 4", recipe = { {"moreblocks:horizontal_tree"}, } }) minetest.register_craft({ output = "default:junglewood 4", recipe = { {"moreblocks:horizontal_jungle_tree"}, } }) minetest.register_craft({ output = "moreblocks:plankstone 4", recipe = { {"default:stone", "default:wood"}, {"default:wood", "default:stone"}, } }) minetest.register_craft({ output = "moreblocks:plankstone 4", recipe = { {"default:wood", "default:stone"}, {"default:stone", "default:wood"}, } }) minetest.register_craft({ output = "moreblocks:coal_checker 4", recipe = { {"default:stone", "default:coal_lump"}, {"default:coal_lump", "default:stone"}, } }) minetest.register_craft({ output = "moreblocks:coal_checker 4", recipe = { {"default:coal_lump", "default:stone"}, {"default:stone", "default:coal_lump"}, } }) minetest.register_craft({ output = "moreblocks:iron_checker 4", recipe = { {"default:steel_ingot", "default:stone"}, {"default:stone", "default:steel_ingot"}, } }) minetest.register_craft({ output = "moreblocks:iron_checker 4", recipe = { {"default:stone", "default:steel_ingot"}, {"default:steel_ingot", "default:stone"}, } }) minetest.register_craft({ output = "default:chest_locked 1", type = "shapeless", recipe = {"default:steel_ingot", "default:chest"}, }) minetest.register_craft({ output = "moreblocks:iron_glass 1", type = "shapeless", recipe = {"default:steel_ingot", "default:glass"}, }) minetest.register_craft({ output = "moreblocks:coal_glass 1", type = "shapeless", recipe = {"default:coal_lump", "default:glass"}, }) minetest.register_craft({ output = "moreblocks:clean_glass 1", type = "shapeless", recipe = {"moreblocks:sweeper", "default:glass"}, }) minetest.register_craft({ output = "moreblocks:glow_glass 1", type = "shapeless", recipe = {"default:torch", "default:glass"}, }) minetest.register_craft({ output = "moreblocks:super_glow_glass 1", type = "shapeless", recipe = {"default:torch", "default:torch", "default:glass"}, }) minetest.register_craft({ output = "moreblocks:coal_stone 1", type = "shapeless", recipe = {"default:coal_lump", "default:stone"}, }) minetest.register_craft({ output = "moreblocks:iron_stone 1", type = "shapeless", recipe = {"default:iron_lump", "default:stone"}, }) minetest.register_craft({ output = "moreblocks:trap_stone 12", type = "shapeless", recipe = {"default:mese", "default:stone"}, }) minetest.register_craft({ output = "moreblocks:trap_glass 12", type = "shapeless", recipe = {"default:mese", "default:glass"}, }) minetest.register_craft({ output = "moreblocks:cactus_brick 1", type = "shapeless", recipe = {"default:cactus", "default:brick"}, }) minetest.register_craft({ output = "moreblocks:cactus_checker 4", recipe = { {"default:cactus", "default:stone"}, {"default:stone", "default:cactus"}, } }) minetest.register_craft({ output = "moreblocks:cactuschecker 4", recipe = { {"default:stone", "default:cactus"}, {"default:cactus", "default:stone"}, } }) minetest.register_craft({ output = "moreblocks:rope 2", recipe = { {"default:junglegrass"}, {"default:junglegrass"}, {"default:junglegrass"}, } }) minetest.register_craft({ output = "moreblocks:horizontal_tree 2", recipe = { {"default:tree", "", "default:tree"}, } }) minetest.register_craft({ output = "default:tree 2", recipe = { {"moreblocks:horizontal_tree"}, {"moreblocks:horizontal_tree"}, } }) minetest.register_craft({ output = "moreblocks:horizontal_jungle_tree 2", recipe = { {"default:jungletree", "", "default:jungletree"}, } }) minetest.register_craft({ output = "default:jungletree 2", recipe = { {"moreblocks:horizontal_jungle_tree"}, {"moreblocks:horizontal_jungle_tree"}, } }) minetest.register_craft({ output = "moreblocks:circular_saw 1", recipe = { { "", "default:steel_ingot", "" }, { "default:tree", "default:tree", "default:tree"}, { "default:tree", "", "default:tree"}, } }) moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/depends.txt000066400000000000000000000000111220733471200231000ustar00rootroot00000000000000default moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/init.lua000066400000000000000000000334761220733471200224100ustar00rootroot00000000000000-- Load translation library if intllib is installed local S if (minetest.get_modpath("intllib")) then dofile(minetest.get_modpath("intllib").."/intllib.lua") S = intllib.Getter(minetest.get_current_modname()) else S = function ( s ) return s end end dofile(minetest.get_modpath("moreblocks").."/_config.txt") dofile(minetest.get_modpath("moreblocks").."/redefinitions.lua") dofile(minetest.get_modpath("moreblocks").."/crafting.lua") dofile(minetest.get_modpath("moreblocks").."/aliases.lua") dofile(minetest.get_modpath("moreblocks").."/stairsplus_convert.lua") dofile(minetest.get_modpath("moreblocks").."/stairsplus/stairs.lua") dofile(minetest.get_modpath("moreblocks").."/stairsplus/slabs.lua") dofile(minetest.get_modpath("moreblocks").."/stairsplus/panels.lua") dofile(minetest.get_modpath("moreblocks").."/stairsplus/microblocks.lua") dofile(minetest.get_modpath("moreblocks").."/stairsplus/aliases.lua") dofile(minetest.get_modpath("moreblocks").."/stairsplus.lua") dofile(minetest.get_modpath("moreblocks").."/circular_saw.lua") --[[ **** More Blocks by Calinou Licensed under the zlib/libpng license for code and CC BY-SA for textures, see LICENSE.txt for info. **** --]] -- Blocks minetest.register_node("moreblocks:wood_tile", { description = S("Wooden Tile"), tiles = {"moreblocks_wood_tile.png", "moreblocks_wood_tile.png", "moreblocks_wood_tile.png", "moreblocks_wood_tile.png", "moreblocks_wood_tile.png^[transformR90", "moreblocks_wood_tile.png^[transformR90"}, paramtype2 = "facedir", groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, sounds = default.node_sound_wood_defaults(), }) minetest.register_node("moreblocks:wood_tile_flipped", { description = S("Wooden Tile"), tiles = {"moreblocks_wood_tile_flipped.png", "moreblocks_wood_tile_flipped.png", "moreblocks_wood_tile_flipped.png", "moreblocks_wood_tile_flipped.png", "moreblocks_wood_tile_flipped.png^[transformR90", "moreblocks_wood_tile_flipped.png^[transformR90"}, paramtype2 = "facedir", groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, sounds = default.node_sound_wood_defaults(), }) minetest.register_node("moreblocks:wood_tile_center", { description = S("Centered Wooden Tile"), tiles = {"moreblocks_wood_tile_center.png", "moreblocks_wood_tile_center.png", "moreblocks_wood_tile_center.png", "moreblocks_wood_tile_center.png", "moreblocks_wood_tile_center.png^[transformR90", "moreblocks_wood_tile_center.png^[transformR90"}, paramtype2 = "facedir", groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, sounds = default.node_sound_wood_defaults(), }) minetest.register_node("moreblocks:wood_tile_full", { description = S("Full Wooden Tile"), tiles = {"moreblocks_wood_tile_full.png", "moreblocks_wood_tile_full.png", "moreblocks_wood_tile_full.png", "moreblocks_wood_tile_full.png", "moreblocks_wood_tile_full.png^[transformR90", "moreblocks_wood_tile_full.png^[transformR90"}, paramtype2 = "facedir", groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, sounds = default.node_sound_wood_defaults(), }) minetest.register_node("moreblocks:wood_tile_up", { description = S("Up Wooden Tile"), tiles = {"moreblocks_wood_tile_up.png", "moreblocks_wood_tile_up.png", "moreblocks_wood_tile_up.png", "moreblocks_wood_tile_up.png", "moreblocks_wood_tile_up.png^[transformR90", "moreblocks_wood_tile_up.png^[transformR90"}, paramtype2 = "facedir", groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, sounds = default.node_sound_wood_defaults(), }) minetest.register_node("moreblocks:wood_tile_down", { description = S("Down Wooden Tile"), tiles = {"moreblocks_wood_tile_down.png", "moreblocks_wood_tile_down.png", "moreblocks_wood_tile_down.png", "moreblocks_wood_tile_down.png", "moreblocks_wood_tile_down.png^[transformR90", "moreblocks_wood_tile_down.png^[transformR90"}, paramtype2 = "facedir", groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, sounds = default.node_sound_wood_defaults(), }) minetest.register_node("moreblocks:wood_tile_left", { description = S("Left Wooden Tile"), tiles = {"moreblocks_wood_tile_left.png", "moreblocks_wood_tile_left.png", "moreblocks_wood_tile_left.png", "moreblocks_wood_tile_left.png", "moreblocks_wood_tile_left.png^[transformR90", "moreblocks_wood_tile_left.png^[transformR90"}, paramtype2 = "facedir", groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, sounds = default.node_sound_wood_defaults(), }) minetest.register_node("moreblocks:wood_tile_right", { description = S("Right Wooden Tile"), tiles = {"moreblocks_wood_tile_right.png", "moreblocks_wood_tile_right.png", "moreblocks_wood_tile_right.png", "moreblocks_wood_tile_right.png", "moreblocks_wood_tile_right.png^[transformR90", "moreblocks_wood_tile_right.png^[transformR90"}, paramtype2 = "facedir", groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, sounds = default.node_sound_wood_defaults(), }) minetest.register_node("moreblocks:circle_stone_bricks", { description = S("Circle Stone Bricks"), tiles = {"moreblocks_circle_stone_bricks.png"}, groups = {cracky=3}, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("moreblocks:iron_stone_bricks", { description = S("Iron Stone Bricks"), tiles = {"moreblocks_iron_stone_bricks.png"}, groups = {cracky=3}, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("moreblocks:stone_tile", { description = S("Stone Tile"), tiles = {"moreblocks_stone_tile.png"}, groups = {cracky=3}, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("moreblocks:split_stone_tile", { description = S("Split Stone Tile"), tiles = {"moreblocks_split_stone_tile_top.png", "moreblocks_split_stone_tile.png"}, groups = {cracky=3}, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("moreblocks:plankstone", { description = S("Plankstone"), tiles = {"moreblocks_plankstone.png", "moreblocks_plankstone.png", "moreblocks_plankstone.png", "moreblocks_plankstone.png", "moreblocks_plankstone.png^[transformR90", "moreblocks_plankstone.png^[transformR90"}, groups = {cracky=3}, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("moreblocks:iron_glass", { description = S("Iron Glass"), drawtype = "glasslike", tiles = {"moreblocks_iron_glass.png"}, inventory_image = minetest.inventorycube("moreblocks_iron_glass.png"), paramtype = "light", sunlight_propagates = true, groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, sounds = default.node_sound_glass_defaults(), }) minetest.register_node("moreblocks:coal_glass", { description = S("Coal Glass"), drawtype = "glasslike", tiles = {"moreblocks_coal_glass.png"}, inventory_image = minetest.inventorycube("moreblocks_coal_glass.png"), paramtype = "light", sunlight_propagates = true, groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, sounds = default.node_sound_glass_defaults(), }) minetest.register_node("moreblocks:clean_glass", { description = S("Clean Glass"), drawtype = "glasslike", tiles = {"moreblocks_clean_glass.png"}, inventory_image = minetest.inventorycube("moreblocks_clean_glass.png"), paramtype = "light", sunlight_propagates = true, groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, sounds = default.node_sound_glass_defaults(), }) minetest.register_node("moreblocks:cactus_brick", { description = S("Cactus Brick"), tiles = {"moreblocks_cactus_brick.png"}, groups = {cracky=3}, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("moreblocks:cactus_checker", { description = S("Cactus Checker"), tiles = {"moreblocks_cactus_checker.png", "moreblocks_cactus_checker.png", "moreblocks_cactus_checker.png", "moreblocks_cactus_checker.png", "moreblocks_cactus_checker.png^[transformR90", "moreblocks_cactus_checker.png^[transformR90"}, paramtype2 = "facedir", groups = {cracky=3}, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("moreblocks:empty_bookshelf", { description = S("Empty Bookshelf"), tiles = {"default_wood.png", "default_wood.png", "moreblocks_empty_bookshelf.png"}, groups = {snappy=2,choppy=3,oddly_breakable_by_hand=2,flammable=3}, sounds = default.node_sound_wood_defaults(), }) minetest.register_node("moreblocks:coal_stone", { description = S("Coal Stone"), tiles = {"moreblocks_coal_stone.png"}, groups = {cracky=3}, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("moreblocks:iron_stone", { description = S("Iron Stone"), tiles = {"moreblocks_iron_stone.png"}, groups = {cracky=3}, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("moreblocks:coal_checker", { description = S("Coal Checker"), tiles = {"moreblocks_coal_checker.png", "moreblocks_coal_checker.png", "moreblocks_coal_checker.png", "moreblocks_coal_checker.png", "moreblocks_coal_checker.png^[transformR90", "moreblocks_coal_checker.png^[transformR90"}, paramtype2 = "facedir", groups = {cracky=3}, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("moreblocks:iron_checker", { description = S("Iron Checker"), tiles = {"moreblocks_iron_checker.png", "moreblocks_iron_checker.png", "moreblocks_iron_checker.png", "moreblocks_iron_checker.png", "moreblocks_iron_checker.png^[transformR90", "moreblocks_iron_checker.png^[transformR90"}, paramtype2 = "facedir", groups = {cracky=3}, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("moreblocks:trap_stone", { description = S("Trap Stone"), tiles = {"moreblocks_trap_stone.png"}, walkable = false, groups = {cracky=3}, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("moreblocks:trap_glass", { description = S("Trap Glass"), drawtype = "glasslike", tiles = {"moreblocks_trap_glass.png"}, inventory_image = minetest.inventorycube("moreblocks_trap_glass.png"), paramtype = "light", sunlight_propagates = true, walkable = false, groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, sounds = default.node_sound_glass_defaults(), }) minetest.register_node("moreblocks:fence_jungle_wood", { description = S("Jungle Wood Fence"), drawtype = "fencelike", tiles = {"moreblocks_jungle_wood.png"}, inventory_image = "moreblocks_fence_jungle_wood.png", wield_image = "moreblocks_fence_jungle_wood.png", paramtype = "light", selection_box = { type = "fixed", fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7}, }, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=2}, sounds = default.node_sound_wood_defaults(), }) minetest.register_node("moreblocks:horizontal_tree", { description = S("Horizontal Tree"), tiles = {"default_tree.png", "default_tree.png", "default_tree.png^[transformR90", "default_tree.png^[transformR90", "default_tree_top.png", "default_tree_top.png"}, paramtype2 = "facedir", groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2}, sounds = default.node_sound_wood_defaults(), furnace_burntime = 30, }) minetest.register_node("moreblocks:horizontal_jungle_tree", { description = S("Horizontal Jungle Tree"), tiles = {"default_jungletree.png", "default_jungletree.png", "default_jungletree.png^[transformR90", "default_jungletree.png^[transformR90", "default_jungletree_top.png", "default_jungletree_top.png"}, paramtype2 = "facedir", groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2}, sounds = default.node_sound_wood_defaults(), furnace_burntime = 30, }) minetest.register_node("moreblocks:all_faces_tree", { description = S("All-faces Tree"), tiles = {"default_tree_top.png"}, groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2}, sounds = default.node_sound_wood_defaults(), furnace_burntime = 30, }) minetest.register_node("moreblocks:all_faces_jungle_tree", { description = S("All-faces Tree"), tiles = {"default_jungletree_top.png"}, groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2}, sounds = default.node_sound_wood_defaults(), furnace_burntime = 30, }) minetest.register_node("moreblocks:glow_glass", { description = S("Glow Glass"), drawtype = "glasslike", tiles = {"moreblocks_glow_glass.png"}, inventory_image = minetest.inventorycube("moreblocks_glow_glass.png"), paramtype = "light", sunlight_propagates = true, light_source = 11, groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, sounds = default.node_sound_glass_defaults(), }) minetest.register_node("moreblocks:super_glow_glass", { description = S("Super Glow Glass"), drawtype = "glasslike", tiles = {"moreblocks_super_glow_glass.png"}, inventory_image = minetest.inventorycube("moreblocks_super_glow_glass.png"), paramtype = "light", sunlight_propagates = true, light_source = 15, groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, sounds = default.node_sound_glass_defaults(), }) minetest.register_node("moreblocks:rope", { description = S("Rope"), drawtype = "signlike", tiles = {"moreblocks_rope.png"}, inventory_image = "moreblocks_rope.png", wield_image = "moreblocks_rope.png", paramtype = "light", paramtype2 = "wallmounted", walkable = false, climbable = true, selection_box = { type = "wallmounted", }, groups = {snappy=3,flammable=2}, sounds = default.node_sound_leaves_defaults(), }) -- Items minetest.register_craftitem("moreblocks:sweeper", { description = S("Sweeper"), inventory_image = "moreblocks_sweeper.png", }) minetest.register_craftitem("moreblocks:jungle_stick", { description = S("Jungle Stick"), inventory_image = "moreblocks_junglestick.png", }) minetest.register_craftitem("moreblocks:nothing", { inventory_image = "invisible.png", on_use = minetest.item_eat(0), }) print(S("[moreblocks] loaded.")) moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/locale/000077500000000000000000000000001220733471200221645ustar00rootroot00000000000000moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/locale/es.txt000066400000000000000000000027701220733471200233420ustar00rootroot00000000000000# Translation by kaeza [moreblocks] loaded. = [moreblocks] cargado. Jungle Wooden Planks = Tablones de madera de jungla Empty Bookshelf = Estante para libros vacío Clean Glass = Cristal Limpio Plankstone = Tablones de piedra Wooden Tile = Parquet Full Wooden Tile = Parquet Completo Centered Wooden Tile = Parquet Centrado Up Wooden Tile = Parquet Superior Down Wooden Tile = Parquet Inferior Left Wooden Tile = Parquet Izquierdo Right Wooden Tile = Parquet Derecho Circle Stone Bricks = Bloques de Piedra Circulares Stone Tile = Baldosa de Piedra Split Stone Tile = Baldosas de Piedra Partida Glow Glass = Cristal Brillante Super Glow Glass = Cristal Súper Brillante Coal Glass = Cristal con Carbón Iron Glass = Cristal con Hierro Coal Checker = Cuadros de Carbón Iron Checker = Cuadros de Hierro Trap Stone = Piedra Trampa Trap Glass = Cristal Trampa Coal Stone = Carbón y Piedra Iron Stone = Hierro y Piedra Cactus Checker = Cuadros de Cactus Cactus Brick = Ladrillos de Cactus Sweeper = Limpiador Jungle Stick = Varita de Madera de Jungla Horizontal Tree = Tronco de árbol horizontal Horizontal Jungle Tree = Tronco de árbol de la jungla horizontal Rope = Soga All-faces Tree = Tronco de Árbol %s Stairs = Escalera de %s %s Slab = Losa de %s %s Panel = Panel de %s %s Microblock = Microbloque de %s Wooden = Madera Papyrus = Papiro Dry Shrub = Arbusto Desértico Sapling = Brote de Árbol Wooden Planks = Tablones de Madera Ladder = Escalera de Mano Glass = Cristal %s Pane = Panel de %s %s Fence = Valla de %s moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/locale/fr.txt000066400000000000000000000030311220733471200233310ustar00rootroot00000000000000# Translation by Calinou [moreblocks] loaded. = [moreblocks] a été chargé. Jungle Wooden Planks = Planches de bois de jungle Empty Bookshelf = Étagère vide Clean Glass = Verre propre Plankstone = Pierre-bois Wooden Tile = Dalle en bois Full Wooden Tile = Dalle en bois complète Centered Wooden Tile = Dalle en bois centrée Up Wooden Tile = Dalle en bois vers le haut Down Wooden Tile = Dalle en bois vers le bas Left Wooden Tile = Dalle en bois vers la gauche Right Wooden Tile = Dalle en bois vers la droite Circle Stone Bricks = Briques en pierre circulaires Stone Tile = Dalle en pierre Split Stone Tile = Dalle en pierre découpée Glow Glass = Verre brillant Super Glow Glass = Verre très brillant Coal Glass = Verre en charbon Iron Glass = Verre en fer Coal Checker = Damier en charbon Iron Checker = Damier en fer Trap Stone = Pierre à piège Trap Glass = Verre à piège Coal Stone = Pierre en charbon Iron Stone = Pierre en fer Cactus Checker = Damier en cactus Cactus Brick = Briques en cactus Sweeper = Balai Jungle Stick = Bâton en bois de jungle Horizontal Tree = Tronc d'arbre horizontal Horizontal Jungle Tree = Tronc d'arbre de jungle horizontal Rope = Corde All-faces Tree = Tronc d'arbre Wooden = bois Papyrus = Papyrus Dry Shrub = Buisson mort Sapling = Pousse d'arbre Wooden Planks = Planches de bois Ladder = Échelle Glass = Verre Circular Saw = Scie circulaire %s Stairs = Escaliers en %s %s Slab = Demi-dalle en %s %s Panel = Barre en %s %s Microblock = Microbloc en %s %s Pane = Panneau en %s %s Fence = Barrière en %s moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/redefinitions.lua000066400000000000000000000157131220733471200243010ustar00rootroot00000000000000-- Redefinitions of some default crafting recipes minetest.register_craft({ output = "default:sign_wall 4", recipe = { {"default:wood", "default:wood", "default:wood"}, {"default:wood", "default:wood", "default:wood"}, {"", "default:stick", ""}, } }) minetest.register_craft({ output = "default:ladder 3", recipe = { {"default:stick", "", "default:stick"}, {"default:stick", "default:stick", "default:stick"}, {"default:stick", "", "default:stick"}, } }) minetest.register_craft({ output = "default:paper 3", recipe = { {"default:papyrus", "default:papyrus", "default:papyrus"}, } }) minetest.register_craft({ output = "default:rail 16", recipe = { {"default:steel_ingot", "", "default:steel_ingot"}, {"default:steel_ingot", "default:stick", "default:steel_ingot"}, {"default:steel_ingot", "", "default:steel_ingot"}, } }) minetest.register_craft({ output = "default:axe_wood", recipe = { {"default:wood", "default:wood"}, {"default:stick", "default:wood"}, {"default:stick", ""}, } }) minetest.register_craft({ output = "default:axe_stone", recipe = { {"default:cobble", "default:cobble"}, {"default:stick", "default:cobble"}, {"default:stick", ""}, } }) minetest.register_craft({ output = "default:axe_steel", recipe = { {"default:steel_ingot", "default:steel_ingot"}, {"default:stick", "default:steel_ingot"}, {"default:stick", ""}, } }) -- Tool repair buff (15% bonus instead of 2%) minetest.register_craft({ type = "toolrepair", additional_wear = -0.15, }) -- Redefinitions of some default nodes minetest.register_node(":default:ladder", { description = "Ladder", drawtype = "signlike", tiles = {"default_ladder.png"}, inventory_image = "default_ladder.png", wield_image = "default_ladder.png", paramtype = "light", sunlight_propagates = true, paramtype2 = "wallmounted", walkable = false, climbable = true, selection_box = { type = "wallmounted", }, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=3,flammable=2}, legacy_wallmounted = true, sounds = default.node_sound_wood_defaults(), }) if wood_facedir == true then minetest.register_node(":default:wood", { description = "Wooden Planks", tiles = {"default_wood.png"}, paramtype2 = "facedir", groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1}, sounds = default.node_sound_wood_defaults(), }) end minetest.register_node(":default:sapling", { description = "Sapling", drawtype = "plantlike", visual_scale = 1.0, tiles = {"default_sapling.png"}, inventory_image = "default_sapling.png", wield_image = "default_sapling.png", paramtype = "light", sunlight_propagates = true, walkable = false, selection_box = { type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} }, groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1}, sounds = default.node_sound_defaults(), }) minetest.register_node(":default:dry_shrub", { description = "Dry Shrub", drawtype = "plantlike", visual_scale = 1.0, tiles = {"default_dry_shrub.png"}, inventory_image = "default_dry_shrub.png", wield_image = "default_dry_shrub.png", paramtype = "light", sunlight_propagates = true, walkable = false, groups = {snappy=3,flammable=3,attached_node=1}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-1/3, -1/2, -1/3, 1/3, 1/6, 1/3}, }, }) minetest.register_node(":default:papyrus", { description = "Papyrus", drawtype = "plantlike", tiles = {"default_papyrus.png"}, inventory_image = "default_papyrus.png", wield_image = "default_papyrus.png", paramtype = "light", sunlight_propagates = true, walkable = false, selection_box = { type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} }, groups = {snappy=3,flammable=2}, sounds = default.node_sound_leaves_defaults(), }) minetest.register_node(":default:fence_wood", { description = "Wooden Fence", drawtype = "fencelike", tiles = {"default_wood.png"}, inventory_image = "default_fence.png", wield_image = "default_fence.png", paramtype = "light", sunlight_propagates = true, selection_box = { type = "fixed", fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7}, }, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2}, sounds = default.node_sound_wood_defaults(), }) minetest.register_node(":default:junglegrass", { description = "Jungle Grass", drawtype = "plantlike", visual_scale = 1.3, tiles = {"default_junglegrass.png"}, inventory_image = "default_junglegrass.png", wield_image = "default_junglegrass.png", paramtype = "light", walkable = false, buildable_to = true, is_ground_content = true, sunlight_propagates = true, drop = { max_items = 1, items = { {items = {'farming:seed_cotton'},rarity = 8}, {items = {'default:junglegrass'}}, } }, groups = {snappy=3,flammable=2,flora=1,attached_node=1}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, }, }) minetest.register_node(":default:junglesapling", { description = "Jungle Sapling", drawtype = "plantlike", sunlight_propagates = true, tiles = {"default_junglesapling.png"}, paramtype = "light", walkable = false, selection_box = { type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} }, groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1}, sounds = default.node_sound_defaults(), }) minetest.register_node(":default:grass_1", { description = "Grass", drawtype = "plantlike", tiles = {"default_grass_1.png"}, -- use a bigger inventory image inventory_image = "default_grass_3.png", wield_image = "default_grass_3.png", paramtype = "light", sunlight_propagates = true, walkable = false, buildable_to = true, drop = { max_items = 1, items = { {items = {'farming:seed_wheat'},rarity = 5}, {items = {'default:grass_1'}}, } }, groups = {snappy=3,flammable=3,flora=1,attached_node=1}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, }, on_place = function(itemstack, placer, pointed_thing) -- place a random grass node local stack = ItemStack("default:grass_"..math.random(1,5)) local ret = minetest.item_place(stack, placer, pointed_thing) return ItemStack("default:grass_1 "..itemstack:get_count()-(1-ret:get_count())) end, }) for i=2,5 do minetest.register_node(":default:grass_"..i, { description = "Grass", drawtype = "plantlike", tiles = {"default_grass_"..i..".png"}, inventory_image = "default_grass_"..i..".png", wield_image = "default_grass_"..i..".png", paramtype = "light", sunlight_propagates = true, walkable = false, buildable_to = true, is_ground_content = true, drop = { max_items = 1, items = { {items = {'farming:seed_wheat'},rarity = 5}, {items = {'default:grass_1'}}, } }, groups = {snappy=3,flammable=3,flora=1,attached_node=1,not_in_creative_inventory=1}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, }, }) end moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/stairsplus.lua000066400000000000000000000354071220733471200236520ustar00rootroot00000000000000-- Nodes will be called :{stair,slab,panel,micro}_ if minetest.get_modpath("unified_inventory") or not minetest.setting_getbool("creative_mode") then stairsplus_expect_infinite_stacks = false else stairsplus_expect_infinite_stacks = true end -- these vales are in order: facedir in degrees = 90, 0, 270, 180, 90 local dirs1 = { 21, 20, 23, 22, 21 } local dirs2 = { 15, 8, 17, 6, 15 } local dirs3 = { 14, 11, 16, 5, 14 } stairsplus_players_onwall = {} minetest.register_chatcommand("st", { params = "", description = "Toggle stairsplus between placing wall/vertical stairs/panels and normal.", func = function(name, param) stairsplus_players_onwall[name] = not stairsplus_players_onwall[name] if stairsplus_players_onwall[name] then minetest.chat_send_player(name, "Stairsplus: Placing wall stairs/vertical panels.") else minetest.chat_send_player(name, "Stairsplus: Placing floor/ceiling stairs/panels.") end end }) stairsplus_can_it_stack = function(itemstack, placer, pointed_thing) return false --[[ if pointed_thing.type ~= "node" then return itemstack end -- If it's being placed on an another similar one, replace it with -- a full block local slabpos = nil local slabnode = nil local p1 = pointed_thing.above p1 = {x = p1.x, y = p1.y - 1, z = p1.z} local n1 = minetest.env:get_node(p1) if n1.name == modname .. ":slab_" .. subname then slabpos = p1 slabnode = n1 end if slabpos then -- Remove the slab at slabpos minetest.env:remove_node(slabpos) -- Make a fake stack of a single item and try to place it local fakestack = ItemStack(recipeitem) pointed_thing.above = slabpos fakestack = minetest.item_place(fakestack, placer, pointed_thing) -- If the item was taken from the fake stack, decrement original if not fakestack or fakestack:is_empty() then itemstack:take_item(1) -- Else put old node back else minetest.env:set_node(slabpos, slabnode) end return itemstack end if n1.name == modname .. ":slab_" .. subname .. "_quarter" then slabpos = p1 slabnode = n1 end if slabpos then -- Remove the slab at slabpos minetest.env:remove_node(slabpos) -- Make a fake stack of a single item and try to place it local fakestack = ItemStack(modname .. ":slab_" .. subname .. "_three_quarter") pointed_thing.above = slabpos fakestack = minetest.item_place(fakestack, placer, pointed_thing) -- If the item was taken from the fake stack, decrement original if not fakestack or fakestack:is_empty() then itemstack:take_item(1) -- Else put old node back else minetest.env:set_node(slabpos, slabnode) end return itemstack end -- Otherwise place regularly return minetest.item_place(itemstack, placer, pointed_thing) ]]-- end local function get_nodedef_field(nodename, fieldname) if not minetest.registered_nodes[nodename] then return nil end return minetest.registered_nodes[nodename][fieldname] end function stairsplus_rotate_and_place(itemstack, placer, pointed_thing, onwall) local node = minetest.env:get_node(pointed_thing.under) if not minetest.registered_nodes[node.name] or not minetest.registered_nodes[node.name].on_rightclick then local above = pointed_thing.above local under = pointed_thing.under local top = {x=under.x, y=under.y+1, z=under.z} local pitch = placer:get_look_pitch() local node = minetest.env:get_node(above) local fdir = minetest.dir_to_facedir(placer:get_look_dir()) local wield_name = itemstack:get_name() local slab = string.find(wield_name, "slab") local panel = string.find(wield_name, "panel") local micro = string.find(wield_name, "micro") local iswall = (above.x ~= under.x) or (above.z ~= under.z) local isceiling = (above.x == under.x) and (above.z == under.z) and (pitch > 0) if get_nodedef_field(minetest.env:get_node(under).name, "buildable_to") then if slab then fdir = 0 end minetest.env:add_node(under, {name = wield_name, param2 = fdir }) -- place right side up elseif not get_nodedef_field(minetest.env:get_node(above).name, "buildable_to") then return elseif onwall or (iswall and (slab or panel)) then if slab then minetest.env:add_node(above, {name = wield_name, param2 = dirs2[fdir+2] }) -- place with wall slab rotation else minetest.env:add_node(above, {name = wield_name, param2 = dirs3[fdir+2] }) -- place with wall panel/micro rotation end elseif isceiling then local nfdir = dirs1[fdir+2] if slab then nfdir = 22 end minetest.env:add_node(above, {name = wield_name, param2 = nfdir }) -- place upside down variant else if slab then fdir = 0 end minetest.env:add_node(above, {name = wield_name, param2 = fdir }) -- place right side up end if not stairsplus_expect_infinite_stacks then itemstack:take_item() return itemstack end else minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer) end end function register_stair_slab_panel_micro(modname, subname, recipeitem, groups, images, description, drop, light) register_stair(modname, subname, recipeitem, groups, images, description, drop, light) register_slab( modname, subname, recipeitem, groups, images, description, drop, light) register_panel(modname, subname, recipeitem, groups, images, description, drop, light) register_micro(modname, subname, recipeitem, groups, images, description, drop, light) register_6dfacedir_conversion(modname, subname) end -- Default stairs/slabs/panels/microblocks register_stair_slab_panel_micro("moreblocks", "wood", "default:wood", {not_in_creative_inventory=1,snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, {"default_wood.png"}, "Wooden", "wood", 0) register_stair_slab_panel_micro("moreblocks", "stone", "default:stone", {not_in_creative_inventory=1,cracky=3}, {"default_stone.png"}, "Stone", "cobble", 0) register_stair_slab_panel_micro("moreblocks", "cobble", "default:cobble", {not_in_creative_inventory=1,cracky=3}, {"default_cobble.png"}, "Cobblestone", "cobble", 0) register_stair_slab_panel_micro("moreblocks", "mossycobble", "default:mossycobble", {not_in_creative_inventory=1,cracky=3}, {"default_mossycobble.png"}, "Mossy Cobblestone", "mossycobble", 0) register_stair_slab_panel_micro("moreblocks", "brick", "default:brick", {not_in_creative_inventory=1,cracky=3}, {"default_brick.png"}, "Brick", "brick", 0) register_stair_slab_panel_micro("moreblocks", "sandstone", "default:sandstone", {not_in_creative_inventory=1,crumbly=2,cracky=2}, {"default_sandstone.png"}, "Sandstone", "sandstone", 0) register_stair_slab_panel_micro("moreblocks", "steelblock", "default:steelblock", {not_in_creative_inventory=1,cracky=1,level=2}, {"default_steel_block.png"}, "Steel Block", "steelblock", 0) register_stair_slab_panel_micro("moreblocks", "goldblock", "default:goldblock", {not_in_creative_inventory=1,cracky=1}, {"default_gold_block.png"}, "Gold Block", "goldblock", 0) register_stair_slab_panel_micro("moreblocks", "copperblock", "default:copperblock", {not_in_creative_inventory=1,cracky=1,level=2}, {"default_copper_block.png"}, "Copper Block", "copperblock", 0) register_stair_slab_panel_micro("moreblocks", "bronzeblock", "default:bronzeblock", {not_in_creative_inventory=1,cracky=1,level=2}, {"default_bronze_block.png"}, "Bronze Block", "bronzeblock", 0) register_stair_slab_panel_micro("moreblocks", "diamondblock", "default:diamondblock", {not_in_creative_inventory=1,cracky=1,level=3}, {"default_diamond_block.png"}, "Diamond Block", "diamondblock", 0) register_stair_slab_panel_micro("moreblocks", "desert_stone", "default:desert_stone", {not_in_creative_inventory=1,cracky=3}, {"default_desert_stone.png"}, "Desert Stone", "desert_stone", 0) register_stair_slab_panel_micro("moreblocks", "glass", "default:glass", {not_in_creative_inventory=1,snappy=2,cracky=3,oddly_breakable_by_hand=3}, {"moreblocks_glass_stairsplus.png"}, "Glass", "glass", 0) register_stair_slab_panel_micro("moreblocks", "tree", "default:tree", {not_in_creative_inventory=1,tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2}, {"default_tree_top.png", "default_tree_top.png", "default_tree.png"}, "Tree", "tree", 0) register_stair_slab_panel_micro("moreblocks", "jungletree", "default:jungletree", {not_in_creative_inventory=1,tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2}, {"default_jungletree_top.png", "default_jungletree_top.png", "default_jungletree.png"}, "Jungle Tree", "jungletree", 0) register_stair_slab_panel_micro("moreblocks", "obsidian", "default:obsidian", {not_in_creative_inventory=1,cracky=1,level=2}, {"default_obsidian.png"}, "Obsidian", "obsidian", 0) register_stair_slab_panel_micro("moreblocks", "obsidian_glass", "default:obsidian_glass", {not_in_creative_inventory=1,cracky=3,oddly_breakable_by_hand=3}, {"moreblocks_obsidian_glass_stairsplus.png"}, "Obsidian Glass", "obsidian_glass", 0) register_stair_slab_panel_micro("moreblocks", "stonebrick", "default:stonebrick", {not_in_creative_inventory=1,cracky=3}, {"default_stone_brick.png"}, "Stone Bricks", "stone_bricks", 0) register_stair_slab_panel_micro("moreblocks", "desert_stonebrick", "default:desert_stonebrick", {not_in_creative_inventory=1,cracky=3}, {"default_desert_stone_brick.png"}, "Desert Stone Bricks", "desert_stonebrick", 0) register_stair_slab_panel_micro("moreblocks", "sandstonebrick", "default:sandstonebrick", {not_in_creative_inventory=1,cracky=3}, {"default_sandstone_brick.png"}, "Sandstone Bricks", "sandstonebrick", 0) -- More Blocks stairs/slabs/panels/microblocks register_stair_slab_panel_micro("moreblocks", "circle_stone_bricks", "moreblocks:circle_stone_bricks", {not_in_creative_inventory=1,cracky=3}, {"moreblocks_circle_stone_bricks.png"}, "Circle Stone Bricks", "circle_stone_bricks", 0) register_stair_slab_panel_micro("moreblocks", "iron_stone_bricks", "moreblocks:iron_stone_bricks", {not_in_creative_inventory=1,cracky=3}, {"moreblocks_iron_stone_bricks.png"}, "Iron Stone Bricks", "iron_stone_bricks", 0) register_stair_slab_panel_micro("moreblocks", "stone_tile", "moreblocks:stone_tile", {not_in_creative_inventory=1,cracky=3}, {"moreblocks_stone_tile.png"}, "Stonesquare", "stone_tile", 0) register_stair_slab_panel_micro("moreblocks", "split_stone_tile", "moreblocks:split_stone_tile", {not_in_creative_inventory=1,cracky=3}, {"moreblocks_split_stone_tile_top.png", "moreblocks_split_stone_tile.png"}, "Split Stonesquare", "split_stone_tile", 0) register_stair_slab_panel_micro("moreblocks", "jungle_wood", "default:junglewood", {not_in_creative_inventory=1,snappy=1, choppy=2, oddly_breakable_by_hand=2,flammable=3}, {"default_junglewood.png"}, "Jungle Wood", "jungle_wood", 0) register_stair_slab_panel_micro("moreblocks", "plankstone", "moreblocks:plankstone", {not_in_creative_inventory=1,cracky=3}, {"moreblocks_plankstone.png", "moreblocks_plankstone.png", "moreblocks_plankstone.png", "moreblocks_plankstone.png", "moreblocks_plankstone.png^[transformR90", "moreblocks_plankstone.png^[transformR90"}, "Plankstone", "plankstone", 0) register_stair_slab_panel_micro("moreblocks", "coal_checker", "moreblocks:coal_checker", {not_in_creative_inventory=1,cracky=3}, {"moreblocks_coal_checker.png", "moreblocks_coal_checker.png", "moreblocks_coal_checker.png", "moreblocks_coal_checker.png", "moreblocks_coal_checker.png^[transformR90", "moreblocks_coal_checker.png^[transformR90"}, "Coal Checker", "coal_checker", 0) register_stair_slab_panel_micro("moreblocks", "iron_checker", "moreblocks:iron_checker", {not_in_creative_inventory=1,cracky=3}, {"moreblocks_iron_checker.png", "moreblocks_iron_checker.png", "moreblocks_iron_checker.png", "moreblocks_iron_checker.png", "moreblocks_iron_checker.png^[transformR90", "moreblocks_iron_checker.png^[transformR90"}, "Iron Checker", "iron_checker", 0) register_stair_slab_panel_micro("moreblocks", "cactus_checker", "moreblocks:cactus_checker", {not_in_creative_inventory=1,cracky=3}, {"moreblocks_cactus_checker.png", "moreblocks_cactus_checker.png", "moreblocks_cactus_checker.png", "moreblocks_cactus_checker.png", "moreblocks_cactus_checker.png^[transformR90", "moreblocks_cactus_checker.png^[transformR90"}, "Cactus Checker", "cactus_checker", 0) register_stair_slab_panel_micro("moreblocks", "coal_stone", "moreblocks:coal_stone", {not_in_creative_inventory=1,cracky=3}, {"moreblocks_coal_stone.png"}, "Coal Stone", "coal_stone", 0) register_stair_slab_panel_micro("moreblocks", "iron_stone", "moreblocks:iron_stone", {not_in_creative_inventory=1,cracky=3}, {"moreblocks_iron_stone.png"}, "Iron Stone", "iron_stone", 0) register_stair_slab_panel_micro("moreblocks", "glow_glass", "moreblocks:glow_glass", {not_in_creative_inventory=1,snappy=2,cracky=3,oddly_breakable_by_hand=3}, {"moreblocks_glow_glass_stairsplus.png"}, "Glow Glass", "glow_glass", 11) register_stair_slab_panel_micro("moreblocks", "super_glow_glass", "moreblocks:super_glow_glass", {not_in_creative_inventory=1,snappy=2, cracky=3, oddly_breakable_by_hand=3}, {"moreblocks_super_glow_glass_stairsplus.png"}, "Super Glow Glass", "super_glow_glass", 15) register_stair_slab_panel_micro("moreblocks", "coal_glass", "moreblocks:coal_glass", {not_in_creative_inventory=1,snappy=2, cracky=3, oddly_breakable_by_hand=3}, {"moreblocks_coal_glass_stairsplus.png"}, "Coal Glass", "coal_glass", 0) register_stair_slab_panel_micro("moreblocks", "iron_glass", "moreblocks:iron_glass", {not_in_creative_inventory=1,snappy=2,cracky=3,oddly_breakable_by_hand=3}, {"moreblocks_iron_glass_stairsplus.png"}, "Iron Glass", "iron_glass", 0) register_stair_slab_panel_micro("moreblocks", "wood_tile", "moreblocks:wood_tile", {not_in_creative_inventory=1,snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, {"moreblocks_wood_tile.png", "moreblocks_wood_tile.png", "moreblocks_wood_tile.png", "moreblocks_wood_tile.png", "moreblocks_wood_tile.png^[transformR90", "moreblocks_wood_tile.png^[transformR90"}, "Wooden Tile", "wood_tile", 0) register_stair_slab_panel_micro("moreblocks", "wood_tile_center", "moreblocks:wood_tile_center", {not_in_creative_inventory=1,snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, {"moreblocks_wood_tile_center.png", "moreblocks_wood_tile_center.png", "moreblocks_wood_tile_center.png", "moreblocks_wood_tile_center.png", "moreblocks_wood_tile_center.png^[transformR90", "moreblocks_wood_tile_center.png^[transformR90"}, "Centered Wooden Tile", "wood_tile_center", 0) register_stair_slab_panel_micro("moreblocks", "wood_tile_full", "moreblocks:wood_tile_full", {not_in_creative_inventory=1,snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, {"moreblocks_wood_tile_full.png", "moreblocks_wood_tile_full.png", "moreblocks_wood_tile_full.png", "moreblocks_wood_tile_full.png", "moreblocks_wood_tile_full.png^[transformR90", "moreblocks_wood_tile_full.png^[transformR90"}, "Full Wooden Tile", "wood_tile_full", 0) moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/stairsplus/000077500000000000000000000000001220733471200231365ustar00rootroot00000000000000moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/stairsplus/aliases.lua000066400000000000000000000126121220733471200252640ustar00rootroot00000000000000function register_stairsplus_alias(modname, origname, newname) minetest.register_alias(modname .. ":slab_" .. origname, "moreblocks:slab_" .. newname) minetest.register_alias(modname .. ":slab_" .. origname .. "_inverted", "moreblocks:slab_" .. newname .. "_inverted") minetest.register_alias(modname .. ":slab_" .. origname .. "_wall", "moreblocks:slab_" .. newname .. "_wall") minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter", "moreblocks:slab_" .. newname .. "_quarter") minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_inverted", "moreblocks:slab_" .. newname .. "_quarter_inverted") minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_wall", "moreblocks:slab_" .. newname .. "_quarter_wall") minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter", "moreblocks:slab_" .. newname .. "_three_quarter") minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_inverted", "moreblocks:slab_" .. newname .. "_three_quarter_inverted") minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_wall", "moreblocks:slab_" .. newname .. "_three_quarter_wall") minetest.register_alias(modname .. ":stair_" .. origname, "moreblocks:stair_" .. newname) minetest.register_alias(modname .. ":stair_" .. origname .. "_inverted", "moreblocks:stair_" .. newname .. "_inverted") minetest.register_alias(modname .. ":stair_" .. origname .. "_wall", "moreblocks:stair_" .. newname .. "_wall") minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", "moreblocks:stair_" .. newname .. "_wall_half") minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", "moreblocks:stair_" .. newname .. "_wall_half_inverted") minetest.register_alias(modname .. ":stair_" .. origname .. "_half", "moreblocks:stair_" .. newname .. "_half") minetest.register_alias(modname .. ":stair_" .. origname .. "_half_inverted", "moreblocks:stair_" .. newname .. "_half_inverted") minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half", "moreblocks:stair_" .. newname .. "_right_half") minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half_inverted", "moreblocks:stair_" .. newname .. "_right_half_inverted") minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", "moreblocks:stair_" .. newname .. "_wall_half") minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", "moreblocks:stair_" .. newname .. "_wall_half_inverted") minetest.register_alias(modname .. ":stair_" .. origname .. "_inner", "moreblocks:stair_" .. newname .. "_inner") minetest.register_alias(modname .. ":stair_" .. origname .. "_inner_inverted", "moreblocks:stair_" .. newname .. "_inner_inverted") minetest.register_alias(modname .. ":stair_" .. origname .. "_outer", "moreblocks:stair_" .. newname .. "_outer") minetest.register_alias(modname .. ":stair_" .. origname .. "_outer_inverted", "moreblocks:stair_" .. newname .. "_outer_inverted") minetest.register_alias(modname .. ":panel_" .. origname .. "_bottom", "moreblocks:panel_" .. newname .. "_bottom") minetest.register_alias(modname .. ":panel_" .. origname .. "_top", "moreblocks:panel_" .. newname .. "_top") minetest.register_alias(modname .. ":panel_" .. origname .. "_vertical", "moreblocks:panel_" .. newname .. "_vertical") minetest.register_alias(modname .. ":micro_" .. origname .. "_bottom", "moreblocks:micro_" .. newname .. "_bottom") minetest.register_alias(modname .. ":micro_" .. origname .. "_top", "moreblocks:micro_" .. newname .. "_top") end register_stairsplus_alias("stairsplus", "stone", "stone") register_stairsplus_alias("stairsplus", "wood", "wood") register_stairsplus_alias("stairsplus", "cobble", "cobble") register_stairsplus_alias("stairsplus", "brick", "brick") register_stairsplus_alias("stairsplus", "sandstone", "sandstone") register_stairsplus_alias("stairsplus", "glass", "glass") register_stairsplus_alias("stairsplus", "tree", "tree") register_stairsplus_alias("stairsplus", "jungletree", "jungletree") register_stairsplus_alias("stairsplus", "desert_stone", "desert_stone") register_stairsplus_alias("stairsplus", "steelblock", "steelblock") register_stairsplus_alias("stairsplus", "mossycobble", "mossycobble") register_stairsplus_alias("moreblocks", "coalstone", "coal_stone") register_stairsplus_alias("moreblocks", "junglewood", "jungle_wood") register_stairsplus_alias("moreblocks", "circlestonebrick", "circle_stone_bricks") register_stairsplus_alias("moreblocks", "ironstone", "iron_stone") register_stairsplus_alias("moreblocks", "coalglass", "coal_glass") register_stairsplus_alias("moreblocks", "ironglass", "iron_glass") register_stairsplus_alias("moreblocks", "glowglass", "glow_glass") register_stairsplus_alias("moreblocks", "superglowglass", "super_glow_glass") register_stairsplus_alias("moreblocks", "coalchecker", "coal_checker") register_stairsplus_alias("moreblocks", "ironchecker", "iron_checker") register_stairsplus_alias("moreblocks", "cactuschecker", "cactus_checker") register_stairsplus_alias("moreblocks", "ironstonebrick", "iron_stone_bricks") register_stairsplus_alias("moreblocks", "stonesquare", "stone_tile") register_stairsplus_alias("moreblocks", "splitstonesquare", "split_stone_tile") register_stairsplus_alias("moreblocks", "woodtile", "wood_tile") register_stairsplus_alias("moreblocks", "woodtile_centered", "wood_tile_centered") register_stairsplus_alias("moreblocks", "woodtile_full", "wood_tile_full") moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/stairsplus/microblocks.lua000066400000000000000000000023351220733471200261530ustar00rootroot00000000000000-- Load translation library if intllib is installed local S if (minetest.get_modpath("intllib")) then dofile(minetest.get_modpath("intllib").."/intllib.lua") S = intllib.Getter(minetest.get_current_modname()) else S = function ( s ) return s end end -- Node will be called micro_ function register_micro(modname, subname, recipeitem, groups, images, description, drop, light) minetest.register_node(":"..modname .. ":micro_" .. subname, { description = S("%s Microblock"):format(S(description)), drawtype = "nodebox", tiles = images, light_source = light, drop = modname .. ":micro_" .. drop, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, groups = groups, node_box = { type = "fixed", fixed = {-0.5, -0.5, 0, 0, 0, 0.5}, }, selection_box = { type = "fixed", fixed = {-0.5, -0.5, 0, 0, 0, 0.5}, }, sounds = default.node_sound_stone_defaults(), on_place = function(itemstack, placer, pointed_thing) local keys=placer:get_player_control() stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"]) return itemstack end }) minetest.register_alias(modname..":micro_"..subname.."_bottom", modname..":micro_"..subname) end moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/stairsplus/panels.lua000066400000000000000000000022561220733471200251300ustar00rootroot00000000000000-- Load translation library if intllib is installed local S if (minetest.get_modpath("intllib")) then dofile(minetest.get_modpath("intllib").."/intllib.lua") S = intllib.Getter(minetest.get_current_modname()) else S = function ( s ) return s end end -- Node will be called panel_ function register_panel(modname, subname, recipeitem, groups, images, description, drop, light) minetest.register_node(":" .. modname .. ":panel_" .. subname, { description = S("%s Panel"):format(S(description)), drawtype = "nodebox", tiles = images, light_source = light, drop = modname .. ":panel_" .. drop, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, groups = groups, node_box = { type = "fixed", fixed = {-0.5, -0.5, 0, 0.5, 0, 0.5}, }, selection_box = { type = "fixed", fixed = {-0.5, -0.5, 0, 0.5, 0, 0.5}, }, on_place = function(itemstack, placer, pointed_thing) local keys=placer:get_player_control() stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"]) return itemstack end }) minetest.register_alias(modname..":panel_"..subname.."_bottom", modname..":panel_"..subname) end moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/stairsplus/slabs.lua000066400000000000000000000070151220733471200247500ustar00rootroot00000000000000-- Load translation library if intllib is installed local S if (minetest.get_modpath("intllib")) then dofile(minetest.get_modpath("intllib").."/intllib.lua") S = intllib.Getter(minetest.get_current_modname()) else S = function ( s ) return s end end -- Node will be called slab_ function register_slab(modname, subname, recipeitem, groups, images, description, drop, light) minetest.register_node(":" .. modname .. ":slab_" .. subname, { description = S("%s Slab"):format(S(description)), drawtype = "nodebox", tiles = images, light_source = light, drop = modname .. ":slab_" .. drop, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, groups = groups, node_box = { type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, }, selection_box = { type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, }, sounds = default.node_sound_stone_defaults(), on_place = function(itemstack, placer, pointed_thing) local keys=placer:get_player_control() stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"]) return itemstack end }) minetest.register_node(":stairs:slab_" .. subname, { description = S("%s Slab"):format(S(description)), drawtype = "nodebox", tiles = images, drop = modname .. ":slab_" .. drop, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, groups = groups, node_box = { type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, }, selection_box = { type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, }, sounds = default.node_sound_stone_defaults(), on_place = function(itemstack, placer, pointed_thing) local keys=placer:get_player_control() stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"]) return itemstack end }) minetest.register_node(":"..modname .. ":slab_" .. subname .. "_quarter", { description = S("%s Slab"):format(S(description)), drawtype = "nodebox", tiles = images, light_source = light, drop = modname .. ":slab_" .. drop .. "_quarter", paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, groups = groups, node_box = { type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}, }, selection_box = { type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}, }, sounds = default.node_sound_stone_defaults(), on_place = function(itemstack, placer, pointed_thing) local keys=placer:get_player_control() stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"]) return itemstack end }) minetest.register_node(":"..modname .. ":slab_" .. subname .. "_three_quarter", { description = S("%s Slab"):format(S(description)), drawtype = "nodebox", tiles = images, light_source = light, drop = modname .. ":slab_" .. drop .. "_three_quarter", paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, groups = groups, node_box = { type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, 0.25, 0.5}, }, selection_box = { type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, 0.25, 0.5}, }, sounds = default.node_sound_stone_defaults(), on_place = function(itemstack, placer, pointed_thing) local keys=placer:get_player_control() stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"]) return itemstack end }) -- Unregister default recipes minetest.register_craft({ output = "moreblocks:nothing 1", recipe = { {recipeitem, recipeitem, recipeitem}, }, }) end moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/stairsplus/stairs.lua000066400000000000000000000145311220733471200251520ustar00rootroot00000000000000-- Load translation library if intllib is installed local S if (minetest.get_modpath("intllib")) then dofile(minetest.get_modpath("intllib").."/intllib.lua") S = intllib.Getter(minetest.get_current_modname()) else S = function ( s ) return s end end -- Node will be called :stair_ function register_stair(modname, subname, recipeitem, groups, images, description, drop, light) minetest.register_node(":" .. modname .. ":stair_" .. subname, { description = S("%s Stairs"):format(S(description)), drawtype = "nodebox", tiles = images, light_source = light, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, groups = groups, node_box = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, {-0.5, 0, 0, 0.5, 0.5, 0.5}, }, }, selection_box = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, {-0.5, 0, 0, 0.5, 0.5, 0.5}, }, }, sounds = default.node_sound_stone_defaults(), on_place = function(itemstack, placer, pointed_thing) local keys=placer:get_player_control() stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"]) return itemstack end }) minetest.register_node(":stairs:stair_" .. subname, { description = S("%s Stairs"):format(S(description)), drawtype = "nodebox", tiles = images, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, groups = {cracky=3, not_in_creative_inventory=1}, node_box = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, {-0.5, 0, 0, 0.5, 0.5, 0.5}, }, }, selection_box = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, {-0.5, 0, 0, 0.5, 0.5, 0.5}, }, }, sounds = default.node_sound_stone_defaults(), on_place = function(itemstack, placer, pointed_thing) local keys=placer:get_player_control() stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"]) return itemstack end }) minetest.register_node(":" .. modname .. ":stair_" .. subname .. "_half", { description = S("%s Stairs"):format(S(description)), drawtype = "nodebox", tiles = images, light_source = light, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, groups = groups, node_box = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0, 0, 0.5}, {-0.5, 0, 0, 0, 0.5, 0.5}, }, }, selection_box = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0, 0, 0.5}, {-0.5, 0, 0, 0, 0.5, 0.5}, }, }, sounds = default.node_sound_stone_defaults(), on_place = function(itemstack, placer, pointed_thing) local keys=placer:get_player_control() stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"]) return itemstack end }) minetest.register_node(":"..modname .. ":stair_" .. subname .. "_right_half", { description = S("%s Stairs"):format(S(description)), drawtype = "nodebox", tiles = images, light_source = light, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, groups = groups, node_box = { type = "fixed", fixed = { {0, -0.5, -0.5, 0.5, 0, 0.5}, {0, 0, 0, 0.5, 0.5, 0.5}, }, }, selection_box = { type = "fixed", fixed = { {0, -0.5, -0.5, 0.5, 0, 0.5}, {0, 0, 0, 0.5, 0.5, 0.5}, }, }, sounds = default.node_sound_stone_defaults(), on_place = function(itemstack, placer, pointed_thing) local keys=placer:get_player_control() stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"]) return itemstack end }) minetest.register_node(":"..modname .. ":stair_" .. subname .. "_inner", { description = S("%s Stairs"):format(S(description)), drawtype = "nodebox", tiles = images, light_source = light, drop = modname .. ":stair_" .. drop .. "_inner", paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, groups = groups, node_box = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, {-0.5, 0, 0, 0.5, 0.5, 0.5}, {-0.5, 0, -0.5, 0, 0.5, 0}, }, }, selection_box = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, {-0.5, 0, 0, 0.5, 0.5, 0.5}, {-0.5, 0, -0.5, 0, 0.5, 0}, }, }, sounds = default.node_sound_stone_defaults(), on_place = function(itemstack, placer, pointed_thing) local keys=placer:get_player_control() stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"]) return itemstack end }) minetest.register_node(":"..modname .. ":stair_" .. subname .. "_outer", { description = S("%s Stairs"):format(S(description)), drawtype = "nodebox", tiles = images, light_source = light, drop = modname .. ":stair_" .. drop .. "_outer", paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, groups = groups, node_box = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, {-0.5, 0, 0, 0, 0.5, 0.5}, }, }, selection_box = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, {-0.5, 0, 0, 0, 0.5, 0.5}, }, }, sounds = default.node_sound_stone_defaults(), on_place = function(itemstack, placer, pointed_thing) local keys=placer:get_player_control() stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"]) return itemstack end }) minetest.register_node(":" .. modname .. ":stair_" .. subname .. "_alt", { description = S("%s Stairs"):format(S(description)), drawtype = "nodebox", tiles = images, light_source = light, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, groups = groups, node_box = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, 0, 0}, {-0.5, 0, 0, 0.5, 0.5, 0.5}, }, }, sounds = default.node_sound_stone_defaults(), on_place = function(itemstack, placer, pointed_thing) local keys=placer:get_player_control() stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"]) return itemstack end }) -- Unregister default recipes minetest.register_craft({ output = "moreblocks:nothing 1", recipe = { {recipeitem, "", ""}, {recipeitem, recipeitem, ""}, {recipeitem, recipeitem, recipeitem}, }, }) minetest.register_craft({ output = "moreblocks:nothing 1", recipe = { {"", "", recipeitem}, {"", recipeitem, recipeitem}, {recipeitem, recipeitem, recipeitem}, }, }) end moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/stairsplus_convert.lua000066400000000000000000000077241220733471200254130ustar00rootroot00000000000000-- Function to convert all stairs/slabs/etc nodes from -- inverted, wall, etc to regular + 6d facedir local dirs1 = { 21, 20, 23, 22, 21 } local dirs2 = { 15, 8, 17, 6, 15 } local dirs3 = { 14, 11, 16, 5, 14 } function register_6dfacedir_conversion(modname, material) --print("Register stairsplus 6d facedir conversion") --print('ABM for '..modname..' "'..material..'"') local objects_list1 = { modname..":slab_" .. material .. "_inverted", modname..":slab_" .. material .. "_quarter_inverted", modname..":slab_" .. material .. "_three_quarter_inverted", modname..":stair_" .. material .. "_inverted", modname..":stair_" .. material .. "_wall", modname..":stair_" .. material .. "_wall_half", modname..":stair_" .. material .. "_wall_half_inverted", modname..":stair_" .. material .. "_half_inverted", modname..":stair_" .. material .. "_right_half_inverted", modname..":panel_" .. material .. "_vertical", modname..":panel_" .. material .. "_top", } local objects_list2 = { modname..":slab_" .. material .. "_wall", modname..":slab_" .. material .. "_quarter_wall", modname..":slab_" .. material .. "_three_quarter_wall", modname..":stair_" .. material .. "_inner_inverted", modname..":stair_" .. material .. "_outer_inverted", modname..":micro_" .. material .. "_top" } for j in ipairs(objects_list1) do local flip_upside_down = false local flip_to_wall = false local object = objects_list1[j] local dest_object = objects_list1[j] if string.find(dest_object, "_inverted") then flip_upside_down = true dest_object = string.gsub(dest_object, "_inverted", "") end if string.find(dest_object, "_top") then flip_upside_down = true dest_object = string.gsub(dest_object, "_top", "") end if string.find(dest_object, "_wall") then flip_to_wall = true dest_object = string.gsub(dest_object, "_wall", "") end if string.find(dest_object, "_vertical") then flip_to_wall = true dest_object = string.gsub(dest_object, "_vertical", "") end if string.find(dest_object, "_half") and not string.find(dest_object, "_right_half") then dest_object = string.gsub(dest_object, "_half", "_right_half") elseif string.find(dest_object, "_right_half") then dest_object = string.gsub(dest_object, "_right_half", "_half") end --print(" +---> convert "..object) --print(" | to "..dest_object) minetest.register_abm({ nodenames = { object }, interval = 1, chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local fdir = node.param2 or 0 if flip_upside_down and not flip_to_wall then nfdir = dirs1[fdir+2] elseif flip_to_wall and not flip_upside_down then nfdir = dirs2[fdir+1] elseif flip_to_wall and flip_upside_down then nfdir = dirs3[fdir+2] end minetest.env:add_node(pos, {name = dest_object, param2 = nfdir}) end }) end for j in ipairs(objects_list2) do local flip_upside_down = false local flip_to_wall = false local object = objects_list2[j] local dest_object = objects_list2[j] if string.find(dest_object, "_inverted") then flip_upside_down = true dest_object = string.gsub(dest_object, "_inverted", "") end if string.find(dest_object, "_top") then flip_upside_down = true dest_object = string.gsub(dest_object, "_top", "") end if string.find(dest_object, "_wall") then flip_to_wall = true dest_object = string.gsub(dest_object, "_wall", "") end --print(" +---> convert "..object) --print(" | to "..dest_object) minetest.register_abm({ nodenames = { object }, interval = 1, chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local fdir = node.param2 local nfdir = 20 if flip_upside_down and not flip_to_wall then nfdir = dirs1[fdir+1] elseif flip_to_wall and not flip_upside_down then nfdir = dirs2[fdir+2] end minetest.env:add_node(pos, {name = dest_object, param2 = nfdir}) end }) end end moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/000077500000000000000000000000001220733471200226105ustar00rootroot00000000000000moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_cactus_brick.png000066400000000000000000000013371220733471200301760ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME  #@tEXtCommentCreated with GIMPWLIDAT8UOOSQs${`aĵq'paWai"  1F&ca`J񵯗7w7s̜3gFm40vee. "Fx{Ow2KEpLX@0JKFW9$rqp;0o C `ސo?X&is$Ip?'1"BYxɲ P{Lb3Ɓu%<@){+$ԫ"VP1o,5 Z5@'ݣTU$Z4$JEX"?#o;QUɲ @`l6t:,-/qr|_lW.-( ZU̠"PpT1 V, :0h@(vi6T*ys4Me5!1n/=2wc<ϑF&ۥ# 70;kS*h̡b~}btY4lMର} b ,t]ͦfObN({IENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_circle_stone_bricks.png000066400000000000000000000012061220733471200315430ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME14rIDAT8mR1?-+YSs B!* d+ ŖTMЕ +l`?YkBǿEꆸq%K 8v]w\cggg"t%g[I$P z|.j<66D9?}lKeM~]חl^F<˲<ݢ+dbJӴjYvWUBﶃ0SƘju}}\.$Ͳ,I=A%;积vriۙNNGk}ss̃ M/0;˦rvAB)6c-Q Ba.W:燞3O'.N޴#wJ|8;z|iM+z :Lea@^5 zR,e(0{)A>m҄7Q@]V tۮzM:uRIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_circular_saw_side.png000066400000000000000000000011131220733471200312140ustar00rootroot00000000000000PNG  IHDRh6 pHYsodtIME)2zIDAT(ϕo@xgI(@T"uT4_COED.|ou{̣ \^^Oo"\=!BH qz| vVqi)Zv5C2Zf}}~WJ\NksrLkqM@̼ZED)ooo]DG&|Du]*uJ 3q"%UUI(\]]us1V"<$j^[kRJi5Rlj7wK'Y}xpq JynjulCZ8?dtZ?$)nvh}3VhB5DZí᳥ 1ϖn̪3lr̋ 篿>Mi:<_) <V:ʼ#FU623AAG: q%xjӴW-f":GP\ dr@ٛɇQ&I-M,~ʖTM:-Pn@ÚT$гxKwƓ"*/=PIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_clean_glass.png000066400000000000000000000003711220733471200300120ustar00rootroot00000000000000PNG  IHDRasRGBbKGDB" e| pHYs  ~tIME )jdyIDAT8œ= û= ҩ'k IjQ[|1ADiZY'yWj=V`nVRڠX&  р( ƦM#Z)8k_Ql䙴IENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_coal_checker.png000066400000000000000000000016061220733471200301430ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME  6\oƩtEXtCommentCreated with GIMPWIDAT8=J\EW'!dƈwAAlEEM|Re*A 2)Ĺ_L6oVP(8!BEضi|syymz=#t]h@)iJ),"Nטxu]pza)%RJ8FkM*oLIJ,DQp8Z$Rky!mضh4*q3==Mߧn3B|AA^q!Ǽp{{:EqMzkkfhiZr98L&uݿca JB\ץ^W-B)0 F\]]!a"E<{D{gIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_coal_glass.png000066400000000000000000000003651220733471200276510ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME  0{tEXtCommentCreated with GIMPWbIDAT8cljjπ1CD)£R삩St|^ªN\BI!RS(@J hmm<q&jDգ,/kzLOlhIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_coal_glass_stairsplus.png000066400000000000000000000004261220733471200321400ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME UZtEXtCommentCreated with GIMPW~IDAT8˥A ! g?PuObڛN$E03YD6sbgpcrs2b-'[5n,?ylFf&U=]U!vٲ?߸#4/Ej6KIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_coal_stone.png000066400000000000000000000010411220733471200276600ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME +uKIDAT8uK@&LALdƱ;TEHLwܚ)qy8k-łiXDPJFDx<$I|@D(24ij84M|У(bZu}8iJ8km}%|v52Du`<) Q[uI [&\ұBWSd7Gr0tW7IyY")y`jX7|^P6/GGY3zqE8h!;QԒX݉w޼}g92scbƝQGE( k[2Y|eV ?$]rsf &Ϗ㰚>^Kwh]ztGy|MF\}ё (Iޟ"}Do%s}u|R3|5ЊLJ"Aq"UDQz2h)x_p0!AIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_fence_jungle_wood.png000066400000000000000000000006101220733471200312070ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME 4zIDAT8cdd 0Qafן:60du s141000|A[Zm0u.7EPo~f````bcYn?pk M!bfbca```P`bc2qEaP]A Жf-y(0B,Y79taO#+1`tl"]}yQb xӷ(v! 14BK0 %ʁ_AIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_fence_wood.png000066400000000000000000000010331220733471200276430ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME4IDAT8͑?oPG؁H)( *R_1130 k VX` "ŎU܆f=1 NW)n꺷aכIDATc^`e@!lQL/BDD\@Z$5DX7{mAIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_glass_stairsplus.png000066400000000000000000000017151220733471200311440ustar00rootroot00000000000000PNG  IHDR(-SPLTEɦΩɨ̪ͣԢդԭڵݸ޺tRNS@fbKGDH pHYs  ~tIME 1IIDAT} E X%.| "FAx'6'p/V./ ;acIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_glow_glass.png000066400000000000000000000004111220733471200276730ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME  /,tEXtCommentCreated with GIMPWdIDAT8c?(LjK^&J ?/|^ªOk?5Bq,PRbw<.B4"E5>m,/k/eCIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_glow_glass_stairsplus.png000066400000000000000000000004371220733471200321740ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME +tEXtCommentCreated with GIMPWIDAT8˥K Di!t%F#-C˷;|D kH13xqJ$qPN&;]0oqf=;"ǠF,y9Ysnǚ5^2>XVlUF;K>nN}IENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_iron_checker.png000066400000000000000000000015641220733471200301770ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME  MtEXtCommentCreated with GIMPWIDAT8=?OlB[ `p1?!茟{87G%$N:@'I>-=ܹsq{{ )%ah4rhjl6|>@mjڏh6mJ4nKףn J1[I0uuX.yJe1FA$aH:FfY|g0T-Jq3y||D48FAH)4 l67I DJ(rX,p|N!cfRJ< Y,L&l6X,!}|>O$r9Rt:EulۦX,"1M~`Y4WRe `ZyR)EPZB((JhR ut]* L(0M0Rry04M @Aӡl69>>F~}}!2L $I'a$ L&m#P(ptt4q]0Z-* wO)iX.,K|bR$ X`|ʇIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_iron_glass.png000066400000000000000000000003701220733471200276760ustar00rootroot00000000000000PNG  IHDRasRGB pHYs  tIME  3tEXtCommentCreated with GIMPWeIDAT8˵A@Egz?X 4a!Bx)˒5k-u]+Zk~~~04M*֦)%rp8pBp8IMι/9@9mbM>E_ Z"2+8P5ZeY\T4% :%SU_ kmj`IT]%8(*@H˸Fk֚(ض-ǯ)Qs4vQLb]W늊]^/,r}/Df}߳,KR{SK̿o`O xپIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_iron_stone_bricks.png000066400000000000000000000013451220733471200312550ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME -$K_ %eIDAT8UKoP{kd'qe$)UXT,PA (+ UUY RUJkƣ\7v~A3ϮTZ4Op֠iFXS lӴ`g@6Ƌ{H$r6iKZ-%$)7QD< 鞖u].SCu.FE5.rv.Ym6Z֌AZAR}gs 1OFbގ3Cqi)+W٘dŚYu%OZLlD/T@s~+]qij$SVB!åCq,+Gqn 4KWmlIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_junglestick.png000066400000000000000000000003271220733471200300620ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs+tIME 7rmWIDAT8c`r FT~Bc$GI2f 458 V3VHьaQ G3ArLy39IENDB`moreblocks_obsidian_glass_stairsplus.png000066400000000000000000000003211220733471200327250ustar00rootroot00000000000000moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/texturesPNG  IHDRabKGD pHYs  tIME,PqŅ^IDAT8cπ)2||u eLN^<>Éq!)#DB^dbPl % ]@y D#xФLtHiv,&;CIIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_plankstone.png000066400000000000000000000011261220733471200277140ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME 4{ξIDAT8}?o@N)i$IP T6V _g@X@*J`#T:Iې6=?gO@npUtb*݇/I5dF|?>}CL,ONP* KTu~zioXk"BU1Lg 558IMu*;@Z:k&f @6T^( ̫5MS˧ÍKS) 3,؋ l|aܲ o^fx#SzbPȣ ll jzr3c$_)Hzm?5?䃎c&g8I.+"~ Bj^ iQ(V\芼lAvZ,K rӾѕ|ϩ@㘿YFqMx|n#lLyْMIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_plankstone_2.png000066400000000000000000000011341220733471200301340ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME 8#IIDAT8u;oA>g;TM%wQS" ACH(+#2]{m?ӌ{e|+onB`eb̭DOZ|?:ںy'* Zk(w]8[oC!NS\' &!7^ZRA2c6=Lg dnRW~wu`+ } vx 8&&  DJnȳ#r ;[m]`2hĴ(|LQV-laq넞)ʺ0pS<{zߺNs.( 烽֏vk+@XW ׫ʌa6V *w^e&%"(媵&c>>1w9ܤHShB@)Ee^^Wq 9-Be,jUY;i&'ܤ4|A)Ew [!abQ4DEuD=ًgv^P̖;d‹WIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_rope.png000066400000000000000000000010051220733471200264770ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME  )OitEXtCommentCreated with GIMPW`IDAT8˕Jpƿ.Դ,Vl"H)38>C^;y ڛI\CAD)?}pJqx\_ 8Dԫϊ {k;`2CE֙HG xLR\)DG\!Ho]ba;Dn_fuBT>0y wARѸdLb%؄zV$ R hQhkZzp#$)S. WQ|!Q3 0L,jB acocl|I!>cEV9ϐ<tvi1HKovW6IENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_split_stone_tile.png000066400000000000000000000013361220733471200311210ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME R&iTXtCommentCreated with GIMPd.e5IDAT8UIR0D[@p.pM3bpxe  NR2+k c UU!DkͲ,xJ=#1FF {bwY׵uZ>>>)%m(u]s>0pssZ@k#۶a!X~ֲ, 8r:9#irΌTJ"֚iRrJ)3)%BཿK)Z[朑Rcڿ麎UUa&q71FREJc }ce&RJ!I8pα+B}82<:r޶ 5Ӊ˔SJ\sea{9g1gb]WB(PJa)HRJscguc 4s.ZڶeFu]b1bϲRJ.C1r:$0q!ֲmM `Gb}ߙ=___m,¶m8s{{[ cLA֒skH)9/u]c:A/m@L۶ޫSUUfB_IENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_split_stone_tile_top.png000066400000000000000000000013601220733471200320000ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME-,LiTXtCommentCreated with GIMPd.eGIDAT8UKN:?;vcBXkeĘq :$q҉?h;]NGx}}91hRbg{=#1FʲD 3{֬'; ]aRbY,Kٻ___#*lۆR &<Ϥ1&LYx9NH)9#k8"؋J))K)iBB!_PJaݩ朑RR"Rj1u)%֨q1#~~~1R9grG1})%iB{kyn/^S , Z,KO3۶a{B1<>>|>B( )%OOOLӴ' UUEQp<sn7-siۖqwy}_RZ4 0N9g,˂s!)%RJE !}uu0 c1[kYB0#1F亮|ж-˲;g<<<\dcZreIUU!pΡt:Q%yyy4Ѷ-www}뼮+ZRJ{RZknymIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_stone_bricks.png000066400000000000000000000012121220733471200302170ustar00rootroot00000000000000PNG  IHDRasRGBbKGD pHYs  tIME3 @L[ IDAT8UO1&MinAJUH r,*IZuw7la.d?ϼycJv"vhȷ8JE~k-]R4OOXkAT{sZ,(no38zBL8o68Pyb^P]Lhd"Bq`=R "۾ 5x>{?<`LS +jnw ja2popBRmgھOS`-w%{j[26Y՞ma.=?b4Lz#|}R%eY+ {։XKd;E iy}4<<> $I0ȶisnf1rt>nGa:}~4 9zii4p8ǜR ۶={R(lۆ1RQJC)=Gkxt:۶E))%J, )%bn7ӋRyy'r<#9׵1c$D'`w8uBD>!p:=⽯ѽԹ7ꜣR !Rr>iۖB4Xk^t]^וoq`y6s䜉1zd 4IENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_super_glow_glass.png000066400000000000000000000003711220733471200311160ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  tIME 4;vtKtEXtCommentCreated with GIMPWaIDAT8c?K^&J >/aUMx YDJM8k)1'j"&ʲ6l0ia\IENDB`moreblocks_super_glow_glass_stairsplus.png000066400000000000000000000004401220733471200333250ustar00rootroot00000000000000moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/texturesPNG  IHDRabKGD pHYs  tIME QZtEXtCommentCreated with GIMPWIDAT8˥ 0 D{-),@B-}GA) beMY,NFJ[eI8R~g`VWD3`T csݘ_:bL 1OƎy ZKncO[Q}EIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_sweeper.png000066400000000000000000000007351220733471200272150ustar00rootroot00000000000000PNG  IHDRasRGBbKGDB" e| pHYs+tIME 4)H]IDAT8͒JQ{ՙ M-"hⲧ{UPnz=GM-;Egmgu;/tW\+P(fU>!ˌz~ limU**B<ƪP^CdϜyY?g>v4" CY4nRueYb{$IeeYPYAp˲$umvEiBh!,˚9JӴn{WU( @eGGej}B`9sUUe9Lva`4l(IB4M:MS۶O0 dt[Iɲ} PFE{^5?XYTenp)k4͊<`6:||=(ܛpviIGIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_wood_tile.png000066400000000000000000000011261220733471200275230ustar00rootroot00000000000000PNG  IHDRabKGD pHYsodtIME : 07IDAT8}nAxb*Cax.%xxDD%iĂD^{vg=ޡX_8ɩf9?#޾~5TסduG qc(`2-/ݫ!gsnBW)1#Qo=x8h-C_ a:J'MtZbk(Ֆ>˰h2ʓe|?9 p6R&ϡ_aޑۂv}oYPA%!RZY_>N2@`H /QS"FDI{'ýd}7@ǐ d4&w6 $ֆ݂)$"|aocKQ*?-"ݴq<쮃#!\u%k*ju ұuvGPBzVt-b-Aҋ) FmcJp B%%P"Vd+HEx O%Z!v[{Þ' }\pѕ&J^coDUV oKe;gF>FȓI \G$M\48(k~ǚIr4WkF঵7dd=cV3:+7N8+~qEy̧/a9S ~齳OIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_wood_tile_down.png000066400000000000000000000010121220733471200305440ustar00rootroot00000000000000PNG  IHDRabKGD pHYsodtIME%(IDAT8u1n@EߒKQ"um؅SRs"M&O2Uoa@q0lHZkWHN ~3;gV}>;6 "zq*_Ax_CFGP_=wO"gM#9lp4Ao'o隆J>}81M2V;!IoTU]M wOu`k ߮~-/VP(r%u06jEHL<1xmvKcQ9I!PS`&8_ǚ!TdYہ7V]h%U.D)`ͬfhoI݊IdeR0fF';kGÁ}JX @9i;qlkU9gEU4qtޓ~IENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_wood_tile_flipped.png000066400000000000000000000010521220733471200312240ustar00rootroot00000000000000PNG  IHDRh6 pHYsodtIME8> IDAT(mRM@}=N'48*Ex.E;Yq\3餓Yߩ ޫWݫS\ ISE[f@i/xt﨏q|;56d :rTl Ioc>ZFBPOr $T[e>|d60&mmX hEƔ̇J ܲ1e9ktS};黷a$Jb Η4$$[E'>reXDQ UUAp®"Jto-"$Xolе@e{Av&*~y?اcc$%7;Oqre=?]&bgYo,[LVy!EQBoweHb G쨫axqhJ(}f l7UIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_wood_tile_full.png000066400000000000000000000011221220733471200305410ustar00rootroot00000000000000PNG  IHDRh6 pHYsodtIME&+[IDAT(=A6E_IEz r 1LZ"٤TY(I~W@} fm: ?=E-w{?<}8 mu[àki&mJ't2J(l{ v[s+kS8(VLtP 6zi/P2jWXWG~c/9 qsCx:۸YI 5`g+8 (C~QraD ޾`gJ\T9F V"qD$}u <: OT@KDsPlqp0NЗQ RhO&LS&T몀U!ˀ19Xv^5=lAO&'s9**."sj"/Dhw3kgqR,v^p<-wZ8θ<=/=OQIENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_wood_tile_right.png000066400000000000000000000010251220733471200307160ustar00rootroot00000000000000PNG  IHDRabKGD pHYsodtIME%3m9|IDAT8ˍ?oAۻ;$R9(i QKC&mI$> 5H / [BX-r Yͼ}fF 5PB^Avw_xh6ԋG YJ٭I0\W_`4Hzb)u(%񞴍۷zXWO4Y?;xg1IFeث) F*0T5db45 1DJ,+Еi̓H qD)``x}>B7IY2Ӌ58+7M):!⒤k@ |6Gl!o?e>[)S!<t 6u֗M8xgSض,ݧ9_)G:IENDB`moreblocks-ee1b3025cc05e94b7311ed42b08142edbfe977e5/textures/moreblocks_wood_tile_up.png000066400000000000000000000010251220733471200302250ustar00rootroot00000000000000PNG  IHDRabKGD pHYsodtIME%#p`)IDAT8˕o@g6Y jҨ e@bGb`ҁ U!).wC@N=Ͻ'^<;1Xd ^chp-ŷGdfI˒?2r[o>Nip $1&%8_/t*%QaV%T^S5v=UV, { +T%Pe `tߗKscI ps:.H_iNVTkIVa4ݧ(0YDAF92*cLg